-
2022-03-28 11:55:39
1、报文格式
前几篇总结过较多网络层的知识,ARP,ip地址、子网掩码等等。这次总结一下IP数据报的报文格式
IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述的。
wireshark中IP数据报文呈现
一个IP数据报文由首部和数据两部分组成。首部的前一部分是固定长度,共20字节。是所有IP数据报文必须具有的。在首部的固定部分的后面是一些可选字段,其长度可变。
2、首部个字段意义
1、版本占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。版本号为6(即IPv6)
2、首部长度占4位,可表示的最大十进制数值是15。首部长度字段所表示的单位是32位(4字节,与TCP首部中长度字端单位一致)。因为IP首部的固定长度是20字节,因此首部长度字段的最小值为5(0101)。当首部长度为15(1111)时,表示的长度为60字节当IP分组的首部长度不是4的整数倍时,必须利用最后的填充字段加以填充达到4的整数倍。
3、区分服务占1字节,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。只有在区分服务时,这个字段才起作用。在一般情况下都不使用这个字段。
4、总长度占2字节,指首部和数据之和的长度,单位为字节。能表示的最大长度为65535字节。在IP层下面的链路层协议规定了一个数据帧的数据字段的最大长度,这称为最大传输单元MTU(maximum transfer unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的链路层所规定的的MTU值。以太网规定MTU为1500字节。若所传送的数据报长度超过链路层的MTU值,就必须把过长的数据进行分片处理。
虽然使用尽可能长的IP数据报会使传输效率得到提高(载荷利用率高)。但数据报短些也有好处。每个IP数据报越短,路由器转发的速度就越快。
5、标识(identification)占2字节。网络层软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不同于TCP首部中的序号,因为IP是无连接的服务,数据报不存在按序接收的问题。当数据报长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有被分片报文片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装层原来的数据。
6、标志占3位,目前只有两位有意义。标志字段中间的一位记为DF(dongt fragment),意思是“不能分片”。当DF=0时才允许分片。
标志字段最低位MF(more fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。7、片偏移占13位。片偏移指出:较长的IP报文在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。没片的长度一定是8字节的整数倍。
例如:一数据报的总长度为3820字节,数据部分为3800字节(IP首部为固定20字节),需要分片传输。假设每片IP报文长度不超过1420字节。去掉固定首部长度20字节,每片报文数据部分长度不超过1400。于是分成3个数据报片,其数据部分长度分别为1400、1400、100字节。原始数据报首部被复制为各数据报片的首部,只需要改变有关字段的值。
数据分片举例:
报文首部中与分片有关的字段中数值,标识部分是任意给定的值:总长度 标识 DF MF 片偏移 原始数据报 3820 123 0 0 0 分片1 1420 123 0 1 0 分片2 1420 123 0 1 175 分片3 1020 123 0 0 350 8、生存时间占8位,英文缩写TTL(Time To Live),表明数据报在网络中的寿命。由发出数据报的源点设置这个字段。目的是防止无法交付的数据无限制地在互联网中兜圈子。路由器在每次转发数据报之前就把TTL值减1。若TTL值减小到零,就丢弃此报文,不在转发。
9、协议占8位,协议字段指出此数据报携带的数据是使用何种协议(上面数据包中协议字段为6表示使用TCP协议),以便使用的目的主机的IP层知道应将数据部分上交给哪个协议进行处理。
常见的协议号:协议名 ICMP IGMP IP TCP IPv6 UDP 协议字段值 1 2 4 6 41 17 10、首部检验和占16位,也常成为校验和。这个字段只检验数据报的首部,但不包括数据部分(与UDP、TCP中的检验和不同)。IP数据报每经过一个路由器,路由器都需要重新计算一下首部检验和(IP首部中的TTL、标志、片偏移等都可能发生变化)。检验和的计算方式这里就不总结了。
11、源地址占32位。
12、目的地址占32位更多相关内容 -
以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解 - - 博客园.pdf
2019-05-10 13:28:07以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解 -
【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分
2022-04-14 13:44:40IP数据报格式 版本:占4位,指ip协议的版本 首部长度:表示IP数据报中报头的长度,可表示的最大的十进制位是15。首部长度表示的基本单位是4个字节,因此首部长度的最小值是5,也就是报头最小长度是20个字节。当...- 💂 个人主页:努力学习的少年
- 🤟 版权: 本文由【努力学习的少年】原创、在CSDN首发、需要转载请联系博主
- 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
🚀 IP数据报格式
- 版本:占4位,指ip协议的版本
- 首部长度:表示IP数据报中报头的长度,可表示的最大的十进制位是15。首部长度表示的基本单位是4个字节,因此首部长度的最小值是5,也就是报头最小长度是20个字节。当首部长度是1111时,表示的是报头最大是60个字节。
- 区分服务:占8位,用来获得更好的服务,但实际上一直没被用过。
- 总长度:指的是一个IP数据报总的长度,也就是报头+数据。
- 标识:占16位,在IP软件在存储器中维持着一个计数器,每产生一个数据报,计数器就+1,并将此值赋值给标识字段。当IP数据报长度超过MTU而必须进行分片,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各个数据报片最后的能正确地重装成为原来的数据。
- 标志:占3位,但目前只有两位有意义
- 标志字段中的最低位为MF。MF=1即表示后面“还有分片”的数据报。MF=0表示的是这个数据报的最后一个。
- 标志字段中的中间一位记为DF,当DF记为1时,表示的是“不能分片”。
- 片偏移: 占13位。片偏移指出,较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,相对于用户的数据字段,该片从何开始。片偏移以8字节为单位。这就是说,每个分片长度一定是8字节的整数倍。
- 生存时间 :占8位,生存时间字段常用英文缩写是TTL(Time to Live),表明的是数据报在网络中的寿命。由发出数据报圆点设置这个字段,目的是防止无法交付的数据报无限制地在因特网中兜圈子,占用网络资源。TTL以跳数作为基本单位,路由器在转发数据报中,TTL值就会-1,当TTL为0时,该数据报就会被丢弃。显然数据报能在因特网中经过的路由器的最大数值是255。若把TTL的初始值设置为1,就表示该数据报只能在本局域网中传送。
- 协议:占8位,协议字段指出此数据携带的数据是使用何种协议,以便让使目的的IP层知道将数据部分上交到哪个处理过程。如TCP,UDP等等
- 首部检验和: 占16位,这个字段只检验数据报的首部,不包括数据部分。
- 源IP地址:占32位。
- 目的IP地址:占32位。
🚀 IP数据报分片问题
在了解IP数据报分片之前,我们先思考一下IP数据报为什么要进行分片?
- 在数据链路层当中MAC层规定了MAC帧中最多能携带数据是MTU个字节(默认的MTU值是1500个字节),那么MAC中能携带最大能携带1500个字节。如果IP层向下传递一个超过1500个字节IP数据报给mac帧,则MAC帧是不会将数据报发送出去的,所以如果在IP层中是不能将一个大小是超过MTU的IP数据报传递到MAC层,如果检测到一个IP数据报的大小是超过MTU,则IP层会将IP数据报中的数据部分进行切片。
IP层是如何将IP数据报进行分片呢?
- 假设一个数据报的总长度为3820,其数据部分是3800,如果MTU是1420个字节,为了能让我们的MAC层能将IP报发出去,所以分片后的IP数据报不能超过1420个字节,因为IP报头是固定的20个字节,所以分片后的IP报中数据部分不能超过1400个字节,于是如下分成3片,其数据部分1400,1400,1000个字节。
接受方主机是如何判断收到的IP报中的数据被分片过呢?
- 如果收到一个IP数据报中的MF标志位是1,则说明该IP数据报中的数据部分被分片过,需要对数据部分进行组装。或者收到一个IP数据报中的MF标志位是0,且偏移量不是0的IP数据报,也说明该IP数据报中的数据部分也被分片过。
接收方主机是如何判断IP数据报中数据部分组装完成或者IP数据报中的数据不需要进行组装了呢?
- 如果接收方的IP层收到一个IP数据报中的MF标志位是0,且偏移量是0,说明该IP中的数据部分不需要进行组装,如果收到是一个IP数据报中的MF标志位是0,且偏移量不是0,那么就会检测组装数据部分中是否存在缺失的情况(根据偏移量进行检测),如果组装的数据部分是连续的,那么就说明被切片的数据字段已经组装完成。
如果IP数据报中的数据部分被切片后,其中某些分片缺失后会怎么样?
- 如果某些分片在网络中丢失后,那么接收方中的数据部分组装后是不完整的,所以代表被切分的IP数据报丢失了,所以其它的相同标识分片的数据报是会被丢弃掉,因此发送过来的数据字段就丢失了,如果上层是TCP协议,则会进行超时重传一个IP报,当然效率是会减低很多的。因此,如果将一个IP报中的数据字段被切分多个分片,是会增加该IP报丢失几率的(IP协议是没有可靠协议的),只要其中一个切片丢了,则被切分的IP报就丢了,因此是不建议将IP报进行切分。
TCP协议为了减少IP报被切分的概率,双方主机在握手阶段会交换自己的MSS,那么MSS是什么呢?
- MSS是TCP层交互给IP层最大分段大小,不包含TCP报头,只包含数据。由于在MAC层中规定了一个最大传输单元MTU,所有的MAC帧的数据部分不能超过该MTU,因此就要求IP层不能传输超过MTU字节的IP报,但IP报中报IP报头和IP数据部分,IP数据部分是由TCP层面决定的因此,所以TCP为了减少被切分的概率,就确定一个MSS限制每一次交互给IP层的数据大小。MSS数据大小去掉IP报头和TCP报头,IP报头和TCP报头都是20个字节(不考虑扩展项)。因此:MSS数据大小=MTU-20-20.(MTU默认值是1500个字节,也可以是其它值)。
- 所以双方主机在建立连接的时候会交换自己的MSS大小值,最终大小取决于双方主机的较小值,如果一台主机的MSS是1200个字节,另一台主机的MSS是1300个字节,所以双方主机MSS都取1200个字节,那么双方通信的时候TCP层面发送的数据都是1200个字节。
Ip层是如何将 IP数据报中的报头和数据部分分开的?
- Ip层收到一个数据报,会先读取前20个字节,因为前20个字节是固定的,然后再找到首部长度判断报头中是否存在选项,如果首部长度是0101,则说明报头为20个字节,所以刚刚读取的20个字节就是报头,然后再找到总长度,数据大小=总长度-首部长度,所以接下来再读取数据大小个字节就是该数据报的数据部分。
-
ip数据报格式详解
2018-12-19 11:57:34IP数据报 一、 固定部分 (1)版本 占4位 (2)首部长度 占4位 (3)区分服务 占8位 (4)总长度 占16位 (5)标识(identification) 占16位 (6)标志(flag) 占3位 (7)片偏移 占13位 (8)生存时间 占8位 (9)...目录
IP数据报
TCP/IP协议定义了一个在因特网上传输的包,称为IP数据包,而IP数据报(IP Datagram)是个比较抽象的内容,是对数据包的结构进行分析。 由首部和数据两部分组成,其格式如图所示。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的(1~40)。首部中的源地址和目的地址都是IP协议地址。
一、 固定部分
(1)版本 占4位
指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。
(2)首部长度 占4位
可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务 占8位
用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(1)—优先权(0-7)数越大,表示该数据报优先权越高。网络中路由器可以使用优先权进行拥塞控制,如当网络发生拥塞时可以根据数据报的优先权来决定数据报的取舍。
(2)—短延迟位D(Delay):该位置1时,数据报请求以短延迟信道传输,0表示正常延时。
(3)—高吞吐量位T(Throughput):该位置1时,数据报请求以高吞吐量信道传输,0表示普通。
(4)—高可靠位R(Reliability):该位置1时,数据报请求以高可靠性信道传输,0表示普通。
(5)—保留位。
目前在Internet中使用的TCP/IP协议大多数情况下网络并未对TOS进行处理,但在实际编程时,有专门的函数来设置该字段的各域。一些重要的网际应用协议中都设置了建议使用的TOS值:
从上表可以看出,对于与用户直接交互的应用,一般使用短延时;对于有大量数据需要进行传输的应用,一般选用高吞吐量;对于数据报要传输控制信息的应用,一般选用高可靠性。在数据报的生存期内不支持TOS的,TOS字段就设置为0x00。
(4)总长度 占16位
总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。IP协议规定,在互联网中所有的主机和路由器,必须能够接受长度不超过576字节的数据报。(为了路由转发的速度考虑)
(5)标识(identification) 占16位
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位
但目前只有2位有意义。
● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。(7)片偏移 占13位
片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间 占8位
生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL值减少到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255(因为占8位,所以2^8-1).若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送。
(9)协议 占8位
协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和 占16位
这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
检验和前面有个5个16位字(参见IP数据报格式)后面有4个16位字。
原理:!!!!!!!!!!!!!!
(1)发送时 检验和=将检验和置零了后再计算将首部中的所有16位做反码求和运算(注意反码求和运算不是求反码后再求和,而是0和0相加为0,0和1相加是1,1和1相加是0但是要产生一个进位1);
(2)接受时 先做检验!!!!!!! 检验和=所有16位反码求和(包括检验和) 如果这时候数据没传输错误 那么 除了检验和部分16位字,其他16位字做反码求和运算的结果=发送过来的检验和,但是注意了最后还要加上检验和的反码,那么 一个数的和他的反码求和必定为零。因此,如果头部在传输过程中没有发生任何差错,那么接收方计算的结果应该0。
(3)如果没错,则接受数据,如果当前地址不是目的地址,需要再次发送,那么再次发送,将检验和置零,如此重复(1)(2)(3),直到到达目的地址
IP数据报首部校验和算法 详细 非代码 https://www.cnblogs.com/fhefh/archive/2011/10/18/2216885.html
(11)源地址 占32位 (12)目的地址 占32位
二、IP数据报可变部分
IP首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。
目前,这些任选项定义如下:
- (1)安全和处理限制(用于军事领域)
- (2)记录路径(让每个路由器都记下它的IP地址)
- (3)时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)
- (4)宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)
- (5)严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)
这些选项很少被使用,并非所有主机和路由器都支持这些选项。
IP数据报“选项”主要有两大功能:
1)用来实现对数据报传输过程中的控制,如规定数据报要经过的路由;
2)进行网络测试,如一个数据报传输过程中经过了哪些路由器。
IP“选项“域共分为四大类,每类分为若干个选项,每个选项有确定的编号:
IP数据报“选项”由三个部分组成:选项码、选项长度和选项数据。选项码和选项长度各占一个字节,中,选项长度用于确定整个选项部分的长度;选项码又分为复制、选项类和选项号:
复制:占一位,用来控制一个带有选项的IP数据报被分片后对选项的处理方式。该位置1时将选项复制到所有分片中;置0时将选项仅复制到第一个分片中。
选项类和选项号用于确定该选项是哪类选项中的哪个选项,其实就是确定该选项的功能。
1)源路由选择:
是指IP数据报在互联网中传输时,所经过的路由是由发出IP数据报的源主机指定的,以区别于数据报在互联网中传输时由路由器的IP层自动寻径所得到的路由。
通过设置源路由选择选项,可以测试网络中指定路由的连通性,以使数据报绕开出错的网络,也可用于测试特定网络的吞吐量。源路由选择可分为两类:严格源路由选择和宽松源路由选择。
(1)—严格源路由选择:有发送端规定IP数据报必须经过的路径上的每一个路由器,相邻路由器之间不得有中间路由器,并且所经过的路由器的顺序不可更改。如果一个路由器发送源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源路由失败”的ICMP差错报文。严格源路由选择选项格式如下:
选项码字段为100 01001(0x89),即为0类9号选项。选项长度最大为39,可存放9个IP地址。因为IP头部长度字段只有4位二进制数,所以整个IP头部最长只能包括15(<24)个32位长的字(即60个字节)。由于IP头部固定长度为20字节,选项码、选项长度和指针共用去3个字节,因此剩下60-20-3=37个字节来存放IP地址清单,因而只能存放9个IP地址。
(2)—宽松源路由选择:由发送方指明一个数据报经过的IP地址清单,但是在数据报传输的路径上,在选项中指定的两个IP地址之间可以有其他IP地址的路由器。格式与严格的相同,只是选项码字段值为0x83。
2)记录路由:
通过设置记录路由选项,IP数据报就可以记录数据报从源主机传输到目标主机时,所经过路径上的各个路由器的IP地址。记录路由选项的数据格式和严格源路由选择格式相同,但选项码字段值为0x87,指针初值为4,指向存放第一个IP地址的位置。每个路由器的IP地址存入选项的数据区中,指针字段的值也随着增加(从4开始到8,12,16,最大到36),它始终指向下一个存放IP地址的位置。当记录了9个IP地址后,指针字段的值为40,表示数据区已满。
3)记录时间戳:
就是IP数据报每经过一个路由器都记下它的IP地址和时间。时间戳中的时间以ms为单位,时间戳取值一般为格林威治时间(UT,Universal Time)自午夜开始计时的毫秒数时间戳选项格式如下:
时间戳选项的选项码是0x44。选项长度表示选项的总长度(一般为36或40),指针指向下一个可用空间的指针(值为5、9、13等)。
“溢出OF”字段表示因时间戳选项数据区空间不够而未能记录下来的时间戳个数;
“标志FL”字段用于控制时间戳选项的格式,取值如下:
参考文献
《计算机网络》(第7版) 谢希仁
IP数据报格式详解 https://blog.csdn.net/wangzhen209/article/details/74453548
-
IP数据报格式分析
2019-04-07 17:50:27文章目录前言NAT网络地址转换IP数据报 前言 在前面的文章中,我们知道,如果一个主机(开发板)想要访问外网,那必须经过NAT地址转换,就拿我们的电脑来说,它想要访问外网,那就必须将电脑的IP地址转换为公网的IP...
前言
在前面的文章中,我们知道,如果一个主机(开发板)想要访问外网,那必须经过NAT地址转换,就拿我们的电脑来说,它想要访问外网,那就必须将电脑的IP地址转换为公网的IP地址。我们电脑目前使用的IP地址是专用地址,如
192.168.0.66
等,大家可以结合前面的文章了解一下什么是专用地址,什么是公网的IP地址。而让IP地址发生转换的就是NAT——网络地址转换协议。NAT网络地址转换
科普一下NAT。IP地址只有32位,满打满算只有
42.9
亿个地址,去掉保留的IP地址、组播地址,能用的IP地址大约还剩36亿左右,IPv4早就不够用了,不过呢感谢有NAT这项技术,不然现在出生的我们早就没法上网了,那我还怎么写文章!!!其实我们使用的基本上是专用网络地址,比如公司的局域网、机构的局域网、个人的局域网(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16),其实这些局域网是不能上网的,依赖电信、移动、联通这些通信机构,在各个局域网的边界WAN-IP使用一个或多个公网IPv4进行一对多的转换。如果IP地址是一对一转换,那根本节省不了IPv4地址空间;所以一般NAT都是一对多的,即一个公网IPv4映射多个私网IPv4。
它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,因此NAT在一定程度上,能够有效的解决IP地址不足的问题。简单来说,就是你的IP地址不能上网,得转换成能上网的IP地址!!!不过既然是一对多的,在一定程度上,会降低通信的效率,不过这个对应个人来说压根就没啥感觉吧。
算了,不多说这
垃圾东西,还是整点有意义的~。IP数据报
其实在很多书中,IP数据报都被称作IP分组,(小声bb:分啥组啊,又不是上学),咳咳咳,其实我更喜欢称为IP数据报,当然,IP分片也是很好听的,当然,这些名字都是正确的,叫哪个任君喜欢。
IP数据报与ARP报文都是一种报文格式,都有自己的组织形式,与ARP报文一样,由两部分组成,一部分是首部,另一部分是数据区域,一个IP数据报的首部长度是不定的,通常为20~60字节,根据选项决定。而数据区域理论上可以多达65535个字节,但是很少有数据是那么大的,并且在发送数据的时候受限于网卡硬件。
版本,4bit。规定了数据报的IP协议版本,对于IPv4,该值为4;对于IPv6,该值为6。通过查看版本号,路由器能够确定如何解释IP数据报的其他部分,不同的IP版本使用不同的数据报格式。IPv4与IPv6数据报是不一样的,千万不要混淆。部首长度,记录IP首部的数据的长度,因为IP首部中包含了一些可变的数据选项(如果存在),故需要记录首部的长度,以便区分数据部分的起始位置,部首长度单位是字,只有这样子才能最大记录60个字节的数据(15*4=60) 。
服务类型(TOS)占据8bit空间,服务类型包含在IPv4首部中,以便使不同类型的IP数据报,例如,一些特别要求低时延、高吞吐量或可靠性的数据报,能相互区别开来。提供特定等级的服务是一个由路由器管理员决定的策略问题,简单来说就路由器根据是这个字段的值来为数据报提供(选择)最合理的路径。
数据报长度字段占据16bit空间。记录IP数据报的总长度(首部加上数据区域),以字节为单位。因为该字段长为16bit,所以整个IP数据报的理论最大长度为65535字节,然而,数据报很少有超过1500字节的,这是因为底层链路硬件不允许那么大的数据报出现在链路上,以太网数据帧的最大长度为1500个字节,当有一个很大的IP数据报出现的时候,就需要进行分片处理;而如果IP数据报的数据很少的时候,比如少于46个字节,那么在以太网进行发送数据的时候会填充一定的字节以满足以太网帧最小长度,那么在接收方就要根据这个字段的内容进行提取有效数据。
标识、标志、分片偏移量这三个字段与IP数据报分片有关,暂时不说,稍微有点麻烦。
生存时间(TTL),用来确保数据报不会永远在网络中循环(例如由于长时间的路由选择环路)。每当IP数据报由一台路由器处理时,该字段的值减1,若TTL字段减为0,则该数据报必须丢弃,同时会返回一个ICMP差错报文给源主机,这样子数据就不会永远在网络中漂流。
上层协议。该字段仅在一个IP数据报到达其最终目的地才会有用。该字段的值指示了IP数据报的数据部分应交给哪个特定的传输层协议。例如,值为6表明数据部分要交给TCP,而值为17表明数据要交给UDP。如果没有它。将无法准确递交到层协议,ICMP会返回一个协议不可达错误。
首部校验和太麻烦了,不讲。
源IP地址与目标IP地址就太简单了,源主机在生成IP数据报的时候会在源IP地址字段中插入它的IP地址,在目标IP地址字段中插入其想要发送的最终目标IP地址。
选项字段占据0~40个字节。它允许IP首部被扩展,首部选项在嵌入式网络协议栈中还是比较少使用的,当它不存在就行了,整个IP数据报首部只有20字节。
数据区域,也称之为有效载荷,这是IP数据报的最后的一个字段,也是最重要的内容,在大多数情况下,IP数据报中的数据字段包含要交付给目标IP地址的运输层(TCP协议或UDP协议),当然,数据区域也可承载其他类型的报文,如ICMP报文。
来用wireshark抓个包验证一下IP数据报是不是这样子的:
-
图解IP数据报格式
2020-11-11 16:40:57IP数据报格式详解 IP数据报的首部格式及其内容是实现IP协议的主要功能的基础,因此我们有必要搞清楚这部分的内容。 一个IP数据报由20字节的固定部分和最大40字节的可变部分组成。 固定部分:指每个IP数据报首部... -
王道考研学习笔记IP数据报格式&IP数据报分片(超详细)
2020-05-21 21:34:38二、IP数据报格式 记忆方法: TCP是面向连接的服务,面向连接就非常6。而UDP是不面向连接的,数据就非常容易被“遗弃”(17)。因为如果不建立连接,这个链路是不太可靠的,所以数据会经常产生丢包现象,也就是被... -
IP数据报 格式参数详解
2018-09-10 10:58:04IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。 IP数据报的格式如下: 注意,上图表示的数据,最高位在左边,记为0位;... -
IP数据报格式详解
2017-07-05 16:22:04IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。 IP数据报的格式如下: 注意,上图表示的数据,最高位在左边,记为0位;... -
以太网帧格式 IP数据报格式 TCP数据报格式 MTU MSS
2021-08-18 16:28:42下图摘自《TCP IP详解卷1:协议(第2版)》第3.2.2节以太网帧格式。 以太网帧有最小和最大尺寸。最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节。当有效载荷较小时,填充字节(值为0)被添加到有效... -
以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
2018-08-24 09:53:29感谢原博主的分享,原文链接:以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解 转载只为方便自己梳理知识点,如有侵权请联系本人删除,再次感谢原博主:苍月代表我 图片同为转载 1、ISO开放系统有以下几层... -
ip数据报格式;ip数据报分片
2018-05-28 10:33:29IPv4数据报格式:上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位。由于TCP/IP协议头部中所有的二进制数在网络... -
IP数据报格式及如何判断报文类型
2017-10-23 16:54:07IP数据报 TCP/IP协议定义了一个在因特网上传输的包,称为IP数据包。IP数据报(IP Datagram) 由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些... -
IP协议数据报格式详解
2021-11-04 22:26:50????????写博客的主要原因是为了巩固所学知识???????? IP数据报格式 -
详细说说IP地址(IP数据报格式)
2020-05-04 10:47:07IP地址由网络号和主机号(网络地址和主机地址)两部分构成。网络号部分用于标识所属网络的网络地址,主机号部分用于标识给定网络上的某个特定主机的主机地址。 互联网中每一个物理网络分配唯一的一个网络号,同一个... -
计算机网络(三)--IP数据报格式
2021-06-25 06:30:07提到网络层最重要的协议,当属IP协议莫属。IP协议根据端到端的设计原则,IP只为主机提供一种无连接、不可靠、...一、IP数据报格式 如图所示,IP数据报分为首部与数据部分。1)数据部分:由传输层传下来的TCP或... -
IP数据报格式及分片
2019-10-29 04:10:41IP数据报格式 下面是首部的结构: 这里的长度单位都是位(比特位) 1、版本4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4 2、首部长度4位头部长度(header length):IP头部的长度,单位是4比特,最小... -
IP数据报格式的首部长度
2020-11-02 16:01:50首部长度占4位,能表示0-15,单位是4B,最大是60B。 首部长度是固定的20B(这些固定的东西必须有),所以最少是首部长度最少是5(20/4=5),也即0101,最大是15(1111)也即60B。 因为首部长度的单位是4B,所以实际... -
IP数据报的格式以及分片细节
2022-03-03 16:41:36IPv4网络数据报格式 版本号(4bit):规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。 首部长度(4bit): 因为一个IPv4数据报可包含一些可变数量的选项(这写选项包括在... -
IP协议 (通俗易懂),IP协议的主要功能及实现原理,IP地址分类,IP数据包分片,IP数据报格式。
2022-05-02 11:53:29IP协议的作用?IP协议的主要功能及实现原理,IP地址分类,IP数据报格式 -
IP数据报首部格式及相应练习
2022-04-24 13:54:42IP数据报的格式 一个IP数据报由首部和数据两部分组成 首部分为固定部分和可变部分,固定部分长度为20个字节,可变部分长度不定 版本:IPV4或IPV6 首部长度:占四位,可表示的最大数值为60字节,出去固定部分的20... -
【 TCP/IP 】以太网(RFC 894)帧格式、 ARP数据报格式、 IP数据报格式
2018-03-09 14:45:25以太网(RFC 894)帧格式以太网的帧格式如下所示:其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件... -
MAC帧格式,IP数据报格式和ARP数据报格式
2016-05-15 20:13:56MAC帧格式: 以太网帧格式由5个字段组成,前两个字段分别是6字节长的目的地址和源地址字段...例如,当类型字段的值是0X0800时,就表示上层使用的是IP数据报。第四个字段是数据字段,其长度在46~1500字节之间。最后一... -
网络-----浅析IP数据报格式及TCP/UDP报文段首部格式
2018-05-18 20:52:21IP数据报的格式 先来上张图在解释: 来看看每个字段的具体含义:(只讨论IPV4的情况) 1、版本 占4位,指IP协议的版本。通信双方使用IP协议的版本必须一致。例:使用IPV4即填4 2、首部长度 占4位,顾名思义,... -
ip数据包抓取,分析ip数据报格式
2010-11-11 18:33:20完全采用c语言编写,抓取ip数据报,分析ip数据包头! -
Wireshark分析IP数据报
2020-04-06 19:50:301. IP数据报格式 总概 2. IP数据报首部的固定部分各字段 版本【4位】:IPv4或IPv6 首部长度【4位】:单位是32bit(4字节),比如:首部最小长度为20字节,此时为:0101(5);因此可以推测首部最大长度为15*4...