来源:公众号【网络技术干货圈】
作者:圈圈
ID:wljsghq
IPv4报文格式
上图中各字段的含义如下:
Version版本 4Bit :ip报文中,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4。
Header Length头部长度 4Bit :表示整个ip包头的长度,其中单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。
Type of Service(ToS) 8Bit :差分服务等级的标记。
Total Length总长度 16Bit :该字段表示ip报文的总长度,单位是1字节。能表示的最大字节为2^16-1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头)。
Identification标记位 16Bit :该字段是ip软件实现的时候自动产生的,该字段的目的不是为了接受方的按序接受而设置的,而是在ip分片以后,用来标识同一片分片的。方便ip分片的重组。
Flag标志 3Bit :该字段是与ip分片有关的。其中有三位,第一位保留,其他两位分别为DF,MF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片,如果为1不能分片,但偏移量字段又不为0,那么就会丢弃该报文。
Fragment offset偏移量 13Bit :该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节。比如,一个长度为2000字节的ip报文,到达路由器。这是超过了链路层的MTU,需要进行分片,2000字节中,20字节为包头,1980字节为数据,需要分成2个ip片(链路层MTU为1500),那么第一个分片的片偏移就是0,表示该分片在1980的第0位开始,第1479位结束。第二个ip片的片偏移185(1480/8),表示该分片开始的位置在原来ip的第1480位,结束在2000。
TTL 8Bit :该片表示生存周期,该值占8bit。ip分片每经过一个路由器该值减一,它的出现是为了防止路由环路,浪费带宽的问题。
Protocol协议 8Bit :该值标识上层的协议。其中1标识ICMP、2标识IGMP、6标识TCP、17标识UDP、88标识OSPF。
Header CheckSum校验和 16Bit :该值是对整个数据包的包头进行的校验。
源IP和目的IP各32Bit。
如果有Option字段,但没到32Bit,由Padding补齐(补0)。
什么情况下两主机的子网掩码不同,却可以相互通信?
一台主机为172.31.1.1 255.255.255.0
一台主机为 172.31.1.2 255.255.255.224
测试可以ping通……
问: 为什么,什么情况下两主机的子网掩码不同,却可以相互通信?
答:
因为这两台主机都在百同一网段度172.31.1.0,所以能相互通信问
A机的地址:172.31.1.1 255.255.255.0
转换为:10101100 00011111 00000001 00000001
(对齐)11111111 11111111 11111111 00000000
进行相与运算,1与1为1,0与0为0,1与0为0
等于: 10101100 00011111 00000001 00000000 (172.31.1.0)
B机的地址:172.31.1.2 255.255.255.224
转换为:10101100 00011111 00000001 00000010
(对齐)11111111 11111111 11111111 11100000
等于: 10101100 00011111 00000001 00000000 (172.31.1.0)
总结两地址IP地址和掩码相与结果相同即可通信。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !