前言网络
上一章介绍了网络层——IP地址 如何查询你电脑的IP地址?一文带你搞懂IP地址,本章介绍下IP协议报文头的格式。ide
咱们前面介绍了主机在传输数据以前要进行封装,在网络层封装的就是是IP报文头,下面咱们就一块儿看看IP报文头究竟包含哪些信息,这些信息又有什么做用呢?优化
正文blog
1 IP报文格式
以下图所示即为IP报文头路由
那么IP报文头的长度为多大呢?it
答:IP报文头部长度为20到60字节。其中固定部分为20字节,可变部分为0到40字节io
IP报文头包含哪些信息呢?class
版本字段:用于区分不一样IP版本。如IPv四、IPv五、IPv6,用4bit表示,IPV4=0100。后台
首部长度:由于头部长度不固定(Option可选部分不固定),因此须要标识该分组的头部长度多少,用4bit表示,以4byte为单位,取值范围:5-15,即20-40byte(其余字段也是相似的计算方式,由于bit位是不够表示该字段的值)
DS字段:早期用来表示业务类型,如今用于支持QoS中的差异服务模型,实现网络流量优化。路由器
源和目的IP地址:是分配给主机的逻辑地址,用于在网络层标识报文的发送方和接收方。根据源和目的IP地址能够判断目的端是否与发送端位于同一网段,若是两者不在同一网段,则须要采用路由机制进行跨网段转发。
分片和重组
为何会出现分片?
将报文分割成多个片断的过程叫作分片。
网络中转发的IP报文的长度能够不一样,但若是报文长度超过了数据链路所支持的最大长度,则报文须要分割成若干个较小的片断才可以在链路上传输。
任何一个物理网络都有一个最大的传输单元,物理介质传输的能力是有限制的,不可能一次可传无限的数据帧。
以太网最大的帧长为1518, IP报文1500byte + 帧头18byte = 1518byte
接收方接收到分片后如何重组?
接收端根据分片报文中的标识符(Identification),标志(Flags),及片偏移(Fragment Offset)字段对分片报文进行重组。
标识符:用于识别属于同一个数据包的分片,以区别于同一主机或其余主机发送的其它数据包分片,保证分片被正确的从新组合。
标志字段:用于判断是否已经收到最后一个分片。
第1位没有被使用。
第2位D是不分片位(DF),Do not fragment,顾名思义,不要分片,当DF位设置为1时,表示路由器不能对报文进行分片处理。
第3位M表示还有后继分片(MF),More fragment,多分片,当路由器对报分进行分片时,除了最后一个分片的MF位设置为0外,其余全部分片的MF位均设置1,以便接收者直到收到MF位为0的分片为止。
片偏移字段:标识某个分片在分组中的位置.。第一个分片的片偏移为0,第二个分片的片偏移表示紧跟第一个分片后的第一个比特的位置。好比,若是首片报文包含1259比特,那么第二片报文的片偏移字段值就应该为1260。
解决网络拥塞——TTL
数据包在网络中传输为何会出现拥塞?
报文在网段间转发时,若是网络设备上的路由规划不合理,就可能会出现环路,致使报文在网络中无限循环,没法到达目的端。环路发生后,全部发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
TTL——解决环路致使拥塞
为避免环路致使的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每通过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。
协议字段
目的端的网络层在接收并处理报文之后,须要决定下一步对报文该作如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。
与以太帧头中的Type字段相似,协议字段也是一个十六进制数。该字段能够标识网络层协议,如ICMP(Internet Control Message Protocol,因特网控制报文协议)。
IP报文头中的协议字段也标识上层协议,如TCP(Transmission Control Protocol,传输控制协议,对应值0x06)、UDP(User Datagram Protocol,用户数据报协议,对应值0x11)。
2 IP报文头的做用:
IP报文头部信息用于指导网络设备对报文进行路由和分片。
同一个网段内的数据转发经过链路层便可实现(后续会讲如何经过二层实现同网段的数据通讯),而跨网段的数据转发须要使用网络设备的路由功能。(后续会讲数据包如何经过路由转发的)
3 wireshark抓包看下IP报文头
前面咱们讲了如何在ENSP模拟器上经过wireshark抓包,网络工程师必备技能|如何在华为ENSP模拟器上经过wireshark抓包,本章节就再也不累赘,下面直接看下下图的IP报文头的格式。
从图中的IP报文头中咱们能够获得哪些信息呢?
一、IP协议版本为4,报文头为20个字节,即便固定的20个字节,报文的总长度为56个字节(包括20个字节IP报文头,8个字节的UDP报文头,28个字节的数据)
二、标识符值为33865,惟一标识该数据包;标志字段值为010,表示该报文为不分片;片偏移字段为0,表示是第一个报文
三、TTL值为128,表示该报文还能够在网络中传输128跳,当报文中的TTL降为0时,报文会被丢弃。
四、协议字段为UDP,表示接收端收到该报文后,会上送给传输层UDP协议处理;
五、校验和字段为correct,表示该报文无差错
六、source为192.168.1.2 和destination为192.168.1.3 ,表示数据包从源IP地址192.168.1.2发送给目的IP地址192.168.1.3。
总结
本章主要介绍了IP的报文头格式,IP报文头是网络层封装的内容,IP报文头部主要用于指导网络设备对报文进行路由和分片,你们有疑问能够后台留言交流呀!