【网络协议】【IP】精讲IP报文格式!图解超赞超详细!!!

1. 【精讲网络通信协议】,专栏会持续更新中.....欢迎大家订阅!

目录

1. IP数据报文定义

2. IP头格式分析

2.1 IP 头字段说明(重点关注红色内容,其他作为补充理解)

2.2 IP报文抓包图示

2.3 一图看懂IP报文格式

3. IP头字段说明表格展示


1. IP数据报文定义

        TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

2. IP头格式分析

图片

说明:IPV6将会在后续章节讲解^_^

2.1 IP头字段说明(重点关注红色内容,其他作为补充理解)

  • 版本(Version)字段:占4比特。用来表明IP协议实现的版本号, IPV4:4,IPV6,当前一般为IPv4,即0100。

  • 首部长度(Internet Header Length,IHL)字段:占4比特。因为头部长度不固定(Option可选部分不固定),所以需要标识该分组的头部长度多少,用4bit表示,以4byte为单位,取值范围:5-15,即20(54)-60(154)byte(其他字段也是类似的计算方式,因为bit位是不够表示该字段的值)

  • 服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用(这四者冲突,只能选择一个),可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。RFC2474的ToS取消了IP precedence字段而使用了DSCP,QoS里有描述,给QoS用来打标签。

  • 总长度:占16比特。指明整个数据包的长度(以字节为单位,含头长度)。最大长度为65535字节。可用总长度减去头部长度获得实际报文数据的长度,取值范围0-65535byte,链路只允许1500byte,所以一般都需要MTU分片

  • 标志字段:占16比特。用来唯一的标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。通常与标记字段和分片偏移字段一起用于IP报文的分片。当原始报文大小超过MTU,那么就必须将原始数据进行分片。每个被分片的报文大小不得超过MTU,而这个字段还将在同一原始文件被分片的报文上打上相同的标记,以便接收设备可以识别出属于同一个报文的分片,IP 报文的唯一id,分片报文的id 相同,便于进行重组。“类似于进程号”,有时候电信会用他来识别流量是否是同一台主机(因为做了PAT后源ip都是一样的!)

    • 注意:Ethernet以太网跟802.3以太网有所区别,802.3是由IEEE指定的标准,比较复杂用的比较少,网卡一般两种都支持。IP数据包的MTU值在各种物理线路环境下对应的MTU取值:(注意:不包含帧头和尾)

  • 标志位字段:占3比特。标志一份数据报是否要求分段

    • 第1位没有被使用。

    • 第2位D是不分片位(DF),Do not fragment,顾名思义,不要分片,当DF位设置为1时,表示路由器不能对报文进行分片处理。

    • 第3位M表示还有后继分片(MF),More fragment,多分片,当路由器对报文进行分片时,除了最后一个分片的MF位设置为0外,其他所有分片的MF位均设置1,以便接收者直到收到MF位为0的分片为止

  • 段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节。比如,一个长度为4000字节的ip报文,到达路由器。这是超过了链路层的MTU,需要进行分片,4000字节中,20字节为包头,3980字节为数据,需要分成3个ip片(链路层MTU为1500),那么第一个分片的片偏移就是0,表示该分片在3980的第0位开始,第1479位结束。第二个ip片的片偏移为185(1480/8),表示该分片开始的位置在原来ip的第1480位,结束在2959。第三片的片偏移为370(2960/8),表示开始的时候是2960位,结束的时候在3979位。

  • 生存期(TTL:Time to Live)字段:占8比特。用来设置数据包最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64(win7)、128、255(linux)等。每经过一个路由器,其值减1,直到0时该数据包被丢弃。

  • 协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。

  • 头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。

  • 源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。

  • 可选项字段:占32比特用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。 

2.2 IP报文抓包图示

图片

2.3 一图看懂IP报文格式

图片

3. IP头字段说明表格展示

有同学喜欢表格展示,博主也提供出来啦!

中文名英文名长度 bit(位)解释
版本Version4IP 协议版本号,固定为 4
首部长度Internet Header  Length, IHL4以 4 字节 为单位,最小值  5(20Byte),最大值 15(60Byte)
服务类型Type of Service, TOS8几乎不用
总长度Total Length16 整个数据报的长度,2 16 − 1 = 65535 2^{16} -1 = 655352字节,不过由于链路层的MTU限制,超过 1480 字节后就会被分片(以太帧MTU最大为 1500 - 固定首部 20)
标识Identification16报文的唯一标识
标志Flag3是否分片的标志。DF:Don’t  Fragment;MF:More Fragment
   DF=1:不能分片,DF=0:允许分片
   MF=1:后面还有分片,MF=0:最后一个
片偏移Fragment Offset13分片在原分组中的相对位置,以 8个字节  为偏移单位
生存时间Time To Live,TTL8数据报可以经过的最多路由器数,每经一个,值减1,为0时丢弃该报文
协议Protocol8封装的协议类型
   ICMP(1)、IGMP(2)、TCP(6)、UDP(17)
头部校验和Header CheckSum16仅校验数据报的首部,使用二进制反码求和
源地址Source Address32源 IP 地址
目的地址Destination Address32目标 IP 地址
可选项Options可变主要用于测试
填充Padding填充 0,确保首部长度为 4 字节的整数倍
数据Data报文数据部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风云说通信

支持小编为您创造更多干货,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值