目录
有男子伴问:为何没有配置IP地址就未能上网?IP合同又是啥?
这要从TCP/IP合同说起,互联网使用的是TCP/IP合同,其中IP合同又是最重要的合同之一。IP合同是基于IP地址将数据包发送给目的主机,才能让互联网上任何两台主机进行通讯。
网路层通讯
IP合同坐落OSI参考模型的第三层,即网路层。
网路层
网路层的主要作用是实现终端节点之间的通讯。这些终端节点之间的通讯,也叫点对点通讯。
IP的作用数据怎么传输到目的地?
数据链路层实现两个直连设备之间的数据传输,网路层的IP合同实现没有直连的两个网路之间的数据传输。
以旅行为例,小美要去一个很远的地方旅行,先计划要搭乘的铁路、地铁、公交车,但是订购相应车票,再制订一个详尽行程表,记录乘车时间。
铁路票、地铁票只能在一个区间内联通,如同网路上的数据链路。出发点如同源MAC地址,目的地如同目的MAC地址,整个行程表的作用就相当于网路层,出发点如同源IP地址,目的地如同目的IP地址。
小美的旅行
小美假如只有行程表,没有车票,就难以搭乘交通工具抵达目的地。相反,小美只有车票,不晓得坐哪些车,在那里换乘c类网络ip地址主机数,估计也到不了目的地。只有二者兼具,既有某个区间的车票又有整个旅行的行程表,能够保证抵达目的地。网路中也须要数据链路层和网路层协同工作,能够实现最终目的地址的通讯。
IP地址的基础知识
在TCP/IP通讯中使用IP地址辨识主机和路由器。IP地址是逻辑地址,须要手工配置或手动获取,为了保证正常通讯,每位设备必须配置IP地址。
IP地址IP地址的定义
IP地址由32位二补码数组成。为了便捷记录,将32位的IP地址分为4组,每8位为一组,每组以“.”隔开,再将每组数转换为十补码数。
IP地址表示方式
二补码与十补码如何快速转换?
通过Windows系统自带的估算器,选择程序员,可实现二补码和十补码的快速转换。默认十补码(“DEC”)输入,单击“BIN”切换成二补码输入。同步显示十六补码、十补码、八补码和二补码的数值。
二补码与十补码转换
IP地址一共有多少个?
将IP地址的32位二补码进行估算,得出约43亿个IP地址。
IP地址数目
使用Windows系统自带计算机,选择科学模式,可快速进行次方估算。
实际上,网路的发展出乎想像,互联网上的设备远超43亿,2019年11月25日全球的IPv4地址早已彻底用尽,然而直至现今你们依然还在用IPv4,并没有由于地址没了而未能上网。是由于不仅IPv6之外,我们使用NAT技术减缓了地址不足的问题。这篇文章里的IP全是指的IPv4,非IPv6。
IP地址的组成
IP地址由网路号(网关地址)和主机号(主机地址)两部份组成。
IP地址组成
网路号是设备所在区域的一种标示,网路号相同的设备坐落同一个网关内,网路号不同的设备通过路由器实现通讯。主机号是在同一个网关中不同设备的标示,不容许同一个网关内出现重复的主机号。
IP地址配置举例
路由器是按照目的IP地址的网路号进行路由。
路由器转发原理
这么IP地址哪几位是网路号?哪几位是主机号?初期是以分类地址分辨,现今是以子网网段分辨。
IP地址的分类
IP地址分为四类,分别是A类、B类、C类、D类(还有一个保留的E类)。
分类地址
A类地址
A类IP地址是首位以“0”开头的地址。从第1位到第8位是它的网路号,网路号的范围是0~127。其中0和127属于保留地址,除以两个保留地址,因而有126个可用的A类地址。
A类地址网路号
估算A类地址数目
后24位是主机号,一个A类地址的主机地址数目就是2的24次方,即16777216个主机地址。
A类地址主机号
估算A类主机地址数目
B类地址
B类IP地址是前两位以“10”开头的地址。从第1位到第16位是它的网路号,网路号的范围是128.0~191.255。其中128.0和191.255属于保留地址,除以两个保留地址,因而有16382个可用的B类地址。
B类地址网路号
估算B类地址数目
后16位是主机号,一个B类地址的主机地址的数目就是2的16次方,即65536个主机地址。
B类地址主机号
C类地址
C类IP地址是前三位以“110”开头的地址。从第1位到第24位是它的网路号,网路号的范围是192.0.0~223.255.255。其中192.0.0和223.255.255属于保留地址,除以两个保留地址,因而有2097150个可用的C类地址。
C类地址网路号
估算C类地址数目
后8位是主机号,一个C类地址的主机地址的数目就是2的8次方,即256个主机地址。
C类地址主机号
D类地址
D类IP地址是前四位以“1110”开头的地址。从第1位到第32位是它的网路号,网路号的范围是224.0.0.0~239.255.255.255。D类地址没有主机号,用于组播。
网关地址和广播地址
当主机号全为0时,表示的是网关地址,非主机地址。当主机号全为1时是广播地址,也不是主机地址。因而在分配IP地址过程中,须要排除这两个地址。比如一个C类地址192.168.1.0/24最多只有254个可用主机地址,而不是256个。
网关地址和广播地址广播地址
IP地址中的主机号全部为1的就是广播地址,它是向同一个网关中的所有主机发送数据包。比如一个B类主机地址172.20.1.100的广播地址是172.20.255.255。
广播地址IP组播
组播用于将包发送给特定组内的所有主机。
组播
组播使用D类地址。因而IP地址前四位是“1110”开头的,就是组播地址。剩下的28位就是组播的组编号。组播的地址范围是224.0.0.0~239.255.255.255,其中224.0.0.0~224.0.0.255既可以在同一个网关内实现组播,又可以跨网关给全网所有班委发送组播包。
组播地址格式子网网段
初期网路地址采用固定网路位宽度的方法,使IPv4地址遭受大量浪费。现在网关地址的宽度可变,同时也须要一种标示来获取网关地址,便于路由器对数据包进行转发,这些辨识码就是子网网段。
子网网段用32位的二补码表示,IP地址的网关地址部份设置为1,IP地址的主机地址部份设置为0。换句话说,IP地址有多少位网关地址,子网网段就有多少位取1,其余都取0。为了便捷记录,每8位为一组,以“.”隔开,再转换为十补码数。
比如:201.20.100.25的子网网段是255.255.255.0,算出它的网关地址。
子网网段
将子网网段和IP地址进行与(AND)运算,可得到这个IP地址的网关地址。
与运算
与(AND)运算
IP地址和子网网段的二补码数,逐位进行估算。只有当IP地址和网段都是1时,运算结果为1。其余情况估算结果都为0。
AND运算
Windows系统自带计算机也可以进行二补码与运算。
与运算举例
IP地址的另一种表示方法是在每位IP地址前面追加网路号的位数用“/”隔开。诸如:201.20.100.25/255.255.255.0可表示为201.20.100.25/24。
CIDR与VLSM
解决IP地址浪费问题,不仅使用子网网段,还使用了CIDR和VLSM技术。
CIDR,即无类域间路由,采用任意宽度分割IP地址的网路号和主机号。它有两个作用:
CIDR应用
VLSM,即可变长子网网段,它可以对A、B、C类地址再进行子网界定,以达到充分借助IP地址的目的。
如果一家企业有100台笔记本,按先前的办法,只能分配一个C类地址222.222.222.0。并且VLSM可以在一个C类地址上界定出多个子网地址,再分配其中一个容纳主机数目与稍小于企业需求数目的子网地址给企业,这样就可以实现IP地址的合理使用。
估算子网容量
子网地址界定
CIDR和VLSM的区别
CIDR是主机号向网路号借位,目的是把几个网路汇总成一个大的网路,降低子网主机数目;
VLSM是网路号向主机号借位,目的是把一个标准的网路界定成几个子网,降低子网主机数目。
网段地址与私有地址
IP地址分为网段地址和私有地址。网段地址是在互联网上使用的,私有地址是在局域网中使用的。
网段地址由InternetNIC负责分配,通过它直接访问互联网。
网段地址范围
私有地址是一段保留的IP地址。只在局域网中使用,难以在互联网上使用。并且私有地址可以通过NAT技术,将私有地址转换为网段地址接入互联网。
私有地址范围
网段IP地址在互联网范围内是惟一的,私有IP地址只要在同一个局域网内惟一即可。在不同局域网内出现相同的私有IP不会影响使用。
IP路由
IP路由是设备按照IP地址对数据进行转发的操作。当一个数据包抵达路由器时,路由器按照数据包的目的地址查询路由表,按照查询结果将数据包转发出去,这个过程就是IP路由。
路由控制
路由表
为了将数据包发给目的节点,所有节点都维护着一张路由表。路由表记录IP数据在下一跳应当发给那个路由器。IP包将按照这个路由表在各个数据链路上传输。
路由表
路由表的生成方法有两种:一种是自动设置,也叫静态路由。另一种是路由器之间通过交换信息手动刷新,也叫动态路由。
静态路由与动态路由
下一跳
Hop,英文叫“跳”。它是指网路中的一个区间。IP包就是在网路中一跳一跳的转发,在每一个区间内决定IP包下一跳的路径。
一跳是指数据链路中广播域的区间,也就是说不经过路由器而能直接抵达的相连主机或路由器网卡的一个区间。
多跳路由
IP数据包如同包裹,而送货车如同数据链路。包裹不可能自己联通,必须有送货车承载转运。而一辆送货车只能将包裹送到某个区间范围内。每位不同区间的包裹将由对应的送货车承载、运输。IP的工作原理也是这么。
IP工作原理路由条目类型
默认路由
默认路由是指路由表中任何一个地址都能与之匹配的条目。所有数据包都可以使用默认路由进行数据转发。默认路由为0.0.0.0/0或default。
默认路由
主机路由
“IP地址/32”被称为主机路由,它是路由表中指向单个IP地址或主机名的路由条目。诸如:192.168.153.15/32就是一条主机路由,表示整个IP地址的所有位都将参与路由。
回环地址
以127开头的IP地址都是环回地址,其所在的回环插口可以理解为虚拟网卡。使用回环地址时,数据包会直接被主机的IP层获取,而不经过链路层,也不会流向网路。通常拿来检测主机上运行的网路服务是否正常。
路由汇总
路由汇总主要是为了降低路由条目,把可以聚合的路由凝聚为一个大网路。
路由表越大,查找路由表所需的显存和CPU也就越多,时间也会越长,引起转发IP数据包的性能下滑。假如想要搭建大规模、高性能的网路,就须要尽可能的路由表的大小。
路由汇总IP分片与重组数据链路不同,MTU则不同
每种数据链路的最大传输单元(MTU)不同,网路层的IP是数据链路的上一层,IP通过分片屏蔽数据链路的差别,实现不同数据链路互通。从IP的上一层看,它完全可以忽视各个数据链路上的MTU,只须要根据源IP地址发送的宽度接收数据包。
数据链路MTU表IP报文的分片与重组
当遇见IP数据包小于数据链路MTU时,常常难以直接发送出去,主机或路由器都会对IP数据包进行分片处理。
经过分片后的IP数据,只会在目标主机上进行重组,中途经过路由器时不会进行重组。
IP报文的分片与重组路径MTU发觉
分片机制有两点不足:
为了解决这个问题,要使用路径MTU发觉(PathMTUDiscovery)技术。路径MTU是指从发送端主机到接收端主机之间不须要分片时最大MTU值。即路径中存在的所有数据链路中最小的MTU。路径MTU发觉是从发送主机根据路径MTU的值将数据报分片后进行发送,防止在中途的路由器上进行分片处理。
路径MTU发觉
路径MTU发觉的工作原理如下:
发送端主机发送IP数据包时将其脸部的分片严禁标志位设置为1。按照这个标志位,途中的路由器虽然收到须要分片的小包,也不会分片,而是直接将包扔掉。以后通过一个ICMP不可达消息将数据链路上MTU值给发送端主机。
发送端主机按照收到的MTU值对数据包进行分片处理,再把IP数据包发送给相同的目的主机。这么重复,直至数据包被发送到目标主机为止没有再收到任何ICMP,就觉得最后一次ICMP所通知的MTU即是一个合适的MTU值。MTU值起码可以缓存约10分钟,在这10分钟内使用刚得到的MTU,过了10分钟后就重新做一次路径MTU发觉。
里面的事例是UDP,若果是在TCP的情况下,按照路径MTU的大小估算出最大段宽度(MSS),之后再依据这种信息进行数据包的发送。为此c类网络ip地址主机数,在TCP中若果使用路径MTU发觉,IP层则不会再分片。
路由器三层转发原理
路由器有多个端口,分别联接不同的数据链路。它通过辨识目的IP地址的网路号,再依照路由表进行转发,路由表中有匹配的路由条目才能转发,无匹配的路由条目则直接扔掉。路由条目既可以自动设置静态路由,也可以通过路由合同手动生成动态路由。
路由器怎样进行三层转发?
当一台路由器收到一个数据包时,会执行如下步骤:
对数据包进行解封装。
通过解封装,查看网路层背部信息的目的IP地址。
在路由表中查找匹配的路由条目。
查找匹配的路由条目,就须要将数据包的目的IP地址与各个路由条目的网关地址先进行二补码与(AND)运算,再将运算结果与路由条目的网关地址进行比较,若一致则该条目与目的IP地址相匹配。最后,与所有路由条目完成运算和比较,可得到一条或多条相匹配的路由条目。也可能没有匹配的路由条目,这么遗弃数据包。
查找路由条目流程图
从多个匹配项中选择网段最长的路由条目。
假如路由表中有多条路由条目都匹配数据包的目的IP地址,则路由器会选择网段宽度最长的路由条目,这些匹配方法称为最长匹配原则。
比如:10.1.3.10的网路地址与10.1.3.0/16和10.1.3.0/24两项都匹配,这时应当选择匹配度最长的10.1.3.0/24。
最长匹配原则
将数据包根据相应路由条目进行转发。
路由条目中包含下一跳和出插口。当路由器找到相应的路由条目后,它都会按照对应的下一跳和出插口,将数据包从出插口发送数据给下一跳设备。
路由转发ARP
只要确定了IP地址,就可以向这个目标地址发送IP数据报文。并且在进行实际通讯时,还要晓得每位IP地址所对应的MAC地址。
地址解析合同,简称ARP合同。是按照目的设备的IP地址来查询对应MAC地址的合同。
ARP的工作原理
当主机A向同一个网关内的主机C发送数据,并且不晓得主机C的MAC地址。
ARP工作原理
ARP恳求:主机A以主机C的IP地址为目的IP地址,以广播MAC地址为目的MAC地址,在同网关内发送这个广播报文,这个报文就叫ARP恳求报文。
二层交换机不查看IP地址,依照目的MAC地址将报文除接收端口外的所有端口发送。
ARP恳求报文
ARP响应:主机C发觉目的IP地址是自己的IP地址,于是主机C以自己MAC地址和IP地址作为源MAC地址和源IP地址,以主机A的MAC地址和IP地址作为目的MAC地址和目的IP地址,发送响应报文给主机A,这个报文就叫ARP响应报文。其它主机收到主机A的ARP恳求报文,由于目的IP地址不是自己的IP地址,因而不会进行响应。
当主机A在发送ARP广播恳求报文时,二层交换机早已有主机A的MAC地址表条目。当收到主机C发送的时隙ARP响应报文时,二层交换机将报文从相应端口发送出去。并将主机C的MAC地址和对应端口记录到MAC地址表中。
ARP响应报文
更新ARP缓存表:主机A收到ARP响应报文后,将主机C的IP地址和MAC地址记录到ARP缓存表中。上次再向主机C发送数据时,直接将缓存的目的MAC地址进行封装。
更新ARP缓存表
当主机A向不同网关的主机C发送数据,并且不晓得主机C的MAC地址。
ARP代理
主机A使用主机C的IP地址查询ARP,ARP发觉主机C不在同一个网关,须要通过默认网段(即默认路由的下一跳地址),而且没有网段MAC地址;
默认网段
主机A先将发送给主机C的数据装入缓存中,之后发送ARP恳求报文,主机A以网段IP地址为目的IP地址发送ARP广播恳求报文;
网段ARP恳求报文
路由器收到ARP广播恳求报文后,将主机A的MAC地址和对应端口添加到自己的MAC表中,之后查看目的IP地址发觉是恳求自己的MAC地址,于是时隙发送ARP响应报文;
网段ARP响应报文
主机A收到ARP响应报文后,将发送给主机C的数据封装网段MAC地址为目的MAC地址进行发送;
主机A向主机C发数据
路由器收到报文后,查看目的IP地址,是发送给主机C的,于是查询路由表从相应端口发送数据。因为没有主机C的MAC地址,路由器发送ARP恳求报文,源MAC地址和源IP地址替换为发送端口的MAC地址和IP地址;
主机C的ARP恳求报文
主机C收到ARP恳求报文后,添加路由器的端口和MAC地址到MAC地址表,时隙发送ARP响应报文;
主机C的ARP响应报文
路由器收到主机C的MAC地址后,将其添加到MAC地址表中。将主机A发送给主机C的报文重新封装,以自己的MAC地址为源MAC地址,以主机C的MAC地址为目的MAC地址,发送给主机C;
ARP代理发送数据
主机C收到主机A发送的数据,发送过程结束。
当主机C向主机A发送回复报文时,同主机A向主机C发送数据的步骤一致。
ARP代理
假如ARP请求是从一个网路的主机发往同一公网却不在同一化学网路上的另一台主机,这么联接它们的具有代理ARP功能的设备就可以回答该恳求,这个过程叫做代理ARP。
代理ARP功能屏蔽了分离的化学网路,让用户使用上去,跟在同一个化学网路上一样。
免费ARP
免费ARP是一种特殊的ARP恳求,它并非通过IP找到对应的MAC地址,而是当主机启动的时侯,发送一个免费ARP恳求,即恳求自己的IP地址的MAC地址。
与普通ARP恳求报文的区别在于报文中的目标IP地址。普通ARP报文中的目标IP地址是其它主机的IP地址;而免费ARP的恳求报文中,目标IP地址是自己的IP地址。
免费ARP
免费ARP的作用:
ICMP
IP提供竭力而为的服务,指为了把数据包发送到目的地址尽最大努力。它并不做对端目的主机是否收到数据包的验证,难以保证服务质量。
ICMP(互联网控制消息合同)是提供这类功能的一种合同。ICMP的主要功能包括,确认IP包是否成功送达目的地址,通知发送过程中IP包被遗弃的诱因。
ICMP报文像TCP/UDP一样通过IP进行传输,并且ICMP的功能不是传输层的补充,应当把它当作网路层合同。
ICMP背部封装数组如右图。
ICMP腹部封装格式
通过类型数组和编码数组的取值判定这个ICMP消息的类型。常见的ICMP消息所对应的类型和编码值如右图。
常见ICMP消息类型
从功能上,ICMP的消息分为两类:一类是通知出错缘由的错误消息,另一类是用于确诊的查询消息。
ICMP消息类型ping
我们常用的ping工具就是通过ICMP消息测试网路层连通性的。源主机发出Echorequest消息,目的主机回应Echoreply消息,则两台主机间的网路层通讯正常。也可以通过ping命令来判定目标主机是否启用。
ping附表IPv4背部
IP提供最简单的服务:实现从源到目的的数据转发。不会在传输数据前先与接收方构建联接,也不保证传输的可靠性,它只提供竭力而为的服务。
IP通讯时传输的是IP报文,IP报文由IP颈部和数据两部份组成。IP腹部包含控制报文转发的必要信息。通过IP背部的结构,可以对IP的功能有一个详尽的了解。
IP报文格式
哪些是字节?哪些是比特?
比特,英语名bit,也叫_位_。二补码中最小单位,一个比特的值要么是0要么是1。
字节,英语名Byte。一个字节由八个比特构成。
参考资料:
IP基础知识“全家桶”,45张图一套带走-小林coding
TCP/IP解读卷1:合同-W·RichardStevens
网路基础-田果
图解TCP/IP-竹下隆史
-EOF-