我是靠谱客的博主 老实溪流,最近开发中收集的这篇文章主要介绍IPV4协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ip数据报格式

![[Pasted image 20221115153823.png]]

版本号
占 4 位
指定 IP 协议的版本;通信双方使用的 IP 协议版本必须一致;目前使用最广泛的IP协议版本号为 4,即 IPv4

首部长度
占 4 位
可表示的最大十进制数值是 15,IP 首部长度的单位是 32 位字长 (1 个 32 位字长是 4 字节,也就是 length * 4 的字节数,4bit 表示最大的数字是15),因此,当 IP 的首部长度为 1111 时 (即十进制的 15),首部长度就达到最大长度 60 字节,当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充

数据部分永远在4 字节的整数倍开始,这样在实现 IP 协议时比较方便;首部长度限制为 60 字节的缺点是 长度有时可能不够用,之所以限制长度为 60 字节,是希望用户尽量减少开销;最常用的首部长度就是 20 字节 (即首部长度为 0101),这时不使用任何选项

区分服务 TOS
也被称为服务类型,占 8 位;
3位优先权字段 (已经弃用),4位TOS字段,和1位保留字段(必须置为0);4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本;这四者相互冲突,只能选择一个;对于 ssh / telnet 这样的应用程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要

总长度
首部和数据之和,单位为字节;总长度字段为 16 位
因此数据报的最大长度为 216-1=65535 字节

标识 id
用来标识数据报,占 16 位;
IP 协议在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段;当数据报的长度超过网络的 MTU,而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中;具有相同的标识字段值的分片报文会被重组成原来的数据报 (如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id 都是相同的)

标志 flag
占 3 位
第一位未使用,其值为 0;
第二位称为 DF(不分片),表示是否允许分片;取值为 0 时,表示允许分片;取值为 1 时,表示不允许分片;
第三位称为 MF(更多分片),表示是否还有分片正在传输,设置为 0 时,表示没有更多分片需要发送,或数据报没有分片

片偏移
占 13 位
当报文被分片后,该字段标记该分片在原报文中的相对位置;片偏移以 8 个字节为偏移单位;所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍

生存时间 TTL
表示数据报在网络中的寿命,占 8 位
该字段由发出数据报的源主机设置,其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源

路由器在转发数据报之前,先把 TTL 值减 1,若 TTL 值减少到 0,则丢弃这个数据报,不再转发;因此,TTL 指明数据报在网络中最多可经过多少个路由器;TTL 的最大数值为 255;若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送

协议
表示该数据报文所携带的数据所使用的协议类型,占 8 位
该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分,不同的协议有专门不同的协议号
6代表TCP 17代表UDP

头部校验和
用于校验数据报的首部,占 16 位
数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值

源地址
表示数据报的源 IP 地址,占 32 位

目的地址
表示数据报的目的 IP 地址,占 32 位
该字段用于校验发送是否正确

可选字段
该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的;这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制

填充
由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍

数据部分
数据部分的长度不固定
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据

专用网络(NAT的专用网络)

![[Pasted image 20221115153532.png]]

分片

链路MTU(对于数据链路层而言,MTU是指mac帧的数据部分大小)
以太网中MTU= 1500B
许多广域网MTU = 576B
数据报的长度大于链路的MTU时,就需要分片。

分片以8B的整数,因为片偏移单位是8B。

同一广播域:网络号必须相同,不同主机:主机号必须不同

最后

以上就是老实溪流为你收集整理的IPV4协议的全部内容,希望文章能够帮你解决IPV4协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部