tcp/ip具体解释--udp数据报中的ip分片

zsychanpin zsychanpin     2022-08-29     361

关键词:


1、UDP首部

技术分享
技术分享

2、UDP分片

技术分享
技术分享
在第二章,讲链路层是,提到过以太网。刨除数据帧帧头。最多传输的长度为1500。也就是说,假设一个ip数据报,长度大于1500,则须要分片。
分片方法:
  1. 在ip头中3位标志,13位片偏移,这俩东西就是用来分片的。
  2. 3位标志中:一个很多其他的片标识。除了最后一个分片,其他分片都要有这个标识,另一个不分片标识,假设置上。则即便IP数据报再长。也不分片。可是会将该IP数据报丢弃,并发送一个ICMP差错报文给发送端。
  3. 13位片偏移:用于表示相对于起始的偏移量,就是个offset。
  4. 每一个分片都有一个独立的IP头,20个字节。

  5. IP的分片和组装都是在IP层完毕的,其对UDP/TCP网络层是透明的。
  6. 假设在传输过程中,某个分片丢失,则须要重传整个IP数据报。不能单独传递某个分片,这主要是,假设是中间某个路由器做的分片,起始端也不知道怎样分片的,所以仅仅能重传整个IP数据报。

  7. 至于重不重传。

    则仅仅能有网络层来决定。TCP会丢包重传,可是UDP则不会,IP层是没有丢包重传机制的。

  8. 传输单元,IP层叫IP数据报,链路层叫分组

IP报分片例如以下图所看到的,注意,仅仅有第一个分片有UDP头,可是每一个分片都有IP首部。
技术分享

3、ICMP不可达差错(须要分片)

技术分享

假设在IP首部设置了不可分片标志。可是达到MTU上限,必须分片。则会丢弃该IP报,返回ICMP不可达差错。




U D P长度字段指的是U D P首部和U D P数据的字节长度。该字段的最小值为8字节(发送一
份0字节的U D P数据报是O K)。

这个U D P长度是有冗余的。

I P数据报长度指的是数据报全长
(图3 - 1),因此U D P数据报长度是全长减去I P首部的长度

Host Requirements RFC声明,U D P检验和选项在默认条件下是打开的。

它还声明,
假设发送端已经计算了检验和,那么接收端必须检验接收到的检验和(如接收到检验
和不为0)。可是。很多系统没有遵守这一点,仅仅是在出口检验和选项被打开时才验证
接收到的检验和。


IP分片
     物理网络层一般要限制每次发送数据帧的最大长度。不论什么时候I P层接收到一份要发送的I P数据报时,它要推断向本地哪个接口发送数据(选路),并查询该接口获得其M T U。I P把M T U与数据报长度进行比較。假设须要则进行分片。分片能够发生在原始发送端主机上。也能够发生在中间路由器上。把一份I P数据报分片以后,仅仅有到达目的地才进行又一次组装(这里的又一次组装与其它网
络协议不同。它们要求在下一站就进行进行又一次组装。而不是在终于的目的地)。又一次组装由
目的端的I P层来完毕。其目的是使分片和又一次组装过程对运输层(T C P和U D P)是透明的,
除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。


I P首部中包括的数据为分片和又一次组装提供了足够的信息。

对于发送端发送的每份I P数据报来说,
其标识字段都包括一个唯一值。该值在数据报分片时被拷贝到每一个片中(我们如今已经看到
这个字段的用途)。标志字段用当中一个比特来表示“很多其它的片”。

除了最后一片外。其它每
个组成数据报的片都要把该比特置1。

片偏移字段指的是该片偏移原始数据报開始处的位置。
另外,当数据报被分片后。每一个片的总长度值要改为该片的长度值。


最后,标志字段中有一个比特称作“不分片”位。

假设将这一比特置1,I P将不正确数据报
进行分片。相反把数据报丢弃并发送一个I C M P差错报文(“须要进行分片但设置了不分片比
特”,见图6 - 3)给起始端。

在下一节我们将看到出现这个差错的样例。
当I P数据报被分片后,每一片都成为一个分组,具有自己的I P首部。并在选择路由时与
其它分组独立。这样,当数据报的这些片到达目的端时有可能会失序。可是在I P首部中有足
够的信息让接收端能正确组装这些数据报片。
虽然I P分片过程看起来是透明的,但有一点让人不想使用它:即使仅仅丢失一片数据也要重
传整个数据报。

为什么会发生这样的情况呢?由于I P层本身没有超时重传的机制——由更高层来
负责超时和重传(T C P有超时和重传机制,但U D P没有。

一些U D P应用程序本身也运行超时和
重传)。当来自T C P报文段的某一片丢失后,T C P在超时后会重发整个T C P报文段,该报文段对
应于一份I P数据报。没有办法仅仅重传数据报中的一个数据报片。其实。假设对数据报分片的
是中间路由器。而不是起始端系统,那么起始端系统就无法知道数据报是怎样被分片的。就这
个原因,常常要避免分片。


技术分享

前两份U D P数据报(第1行和第2行)能装入以太网数据帧,没有被分片。可是相应于写
1 4 7 3字节的I P数据报长度为1 5 0 1,就必须进行分片(第3行和第4行)。同理。写1 4 7 4字节产生
的数据报长度为1 5 0 2,它也须要进行分片(第5行和第6行)。


当I P数据报被分片后,t c p d u m p打印出其它的信息。首先,frag 26304(第3行和第4
行)和frag 26313(第5行和第6行)指的是I P首部中标识字段的值。
分片信息中的下一个数字。即第3行中位于冒号和@号之间的1 4 8 0,是除I P首部外的片长。
两份数据报第一片的长度均为1 4 8 0:U D P首部占8字节。用户数据占1 4 7 2字节(加上I P首部的
2 0字节分组长度正好为1 5 0 0字节)。第1份数据报的第2片(第4行)仅仅包括1字节数据—剩下
的用户数据。第2份数据报的第2片(第6行)包括剩下的2字节用户数据。
在分片时,除最后一片外,其它每一片中的数据部分(除I P首部外的其余部分)必须是8
字节的整数倍。在本例中,1 4 8 0是8的整数倍。
位于@符号后的数字是从数据报開始处计算的片偏移值。两份数据报第1片的偏移值均为0(第3行
和第5行),第2片的偏移值为1 4 8 0(第4行和第6行)。跟在偏移值后面的加号相应于I P首部中3 bit标志
字段中的“很多其它片”比特。

设置这一比特的目的是让接收端知道在什么时候完毕全部的分片组装。


最后。注意第4行和第6行(不是第1片)省略了协议名(U D P)、源port号和目的port号。


协议名是能够打印出来的。由于它在I P首部并被拷贝到各个片中。

可是,port号在U D P首部,
仅仅能在第1片中被发现。


发送的第3份数据报(用户数据为1 4 7 3字节)分片情况如图11 - 8所看到的。

须要重申的是。任
何运输层首部仅仅出如今第1片数据中。


另外须要解释几个术语:I P数据报是指I P层端到端的传输单元(在分片之前和又一次组装
之后)。分组是指在I P层和链路层之间传送的数据单元。

一个分组能够是一个完整的I P数据报。
也能够是I P数据报的一个分片。


理论上,I P数据报的最大长度是6 5 5 3 5字节。这是由I P首部(图3 - 1)1 6比特总长度字段所
限制的。

去除2 0字节的I P首部和8个字节的U D P首部。U D P数据报中用户数据的最长长度为
6 5 5 0 7字节。可是,大多数实现所提供的长度比这个最大值小。


































































tcp/ip协议族——ip工作原理及实例具体解释(上)

??IP协议具体解释       本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包。来观察IP数据报传送过程中IP的格式,以及分片的过程。IP头部信息:IP头部信息出如今每一个IP数据报... 查看详情

tcp/ip具体解释--icmp报文分析

一.概述:1.   ICMP同意主机或路由报告差错情况和提供有关异常情况。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。通常ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用... 查看详情

《tcp/ip具体解释卷2:实现》笔记--协议控制块

协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片。Internet协议维护Internet协议控制块(internetprotocolcontrolblock)和TCP控制块(TCPcontrolblock)。由于UDP是无连接的。所以一个端结点须要的全部信息都在InternetPCB中... 查看详情

即时通讯开发之tcp/ip中的ip协议arp协议

...而UDP就没有那么可靠的区别。这是后话,暂且不提。 挨个解释它是教科书的活计,我感兴趣的只是那八位的TTL字段,还记得这个 查看详情

tcp/ip具体解释学习笔记--tcp数据流

1.TCP的交互数据流(1)基本概念所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节。比如聊天等telnet的软件的TCP数据流就属于TCP交互数据流(2)经受时延的确认TCP收到数据时并不会立... 查看详情

计算机网络王道考研2021第四章:网络层--网络层功能概述ip数据报格式(tcp/ip协议栈)ip数据报分片(mtu)

1.网络层功能概述2.IP数据报格式2.1TCP/IP协议栈2.2IP数据报格式补充:数据部分的协议记忆方法,TCP是面向连接的,比较6。UDP不面向连接,发送的数据容易被遗弃(17)3.IP数据报分片3.1最大传送单元MTU3.2IP数... 查看详情

tcp/ip协议学习总结

...的分类面向有连接型与面向无连接型TCP/IP基础知识TCP/IP的具体含义TCP/IP标准化精髓TCP/IP协议分层模型硬件(物理层)网络接口层(数据链路层)互联网层(网络层)传输层应用层(会话层以上的分层... 查看详情

tcp/ip协议图--传输层中的tcp和udp

...UDP。TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP为提供可靠性传输,实行“顺序控制”或“重发... 查看详情

tcp/ip--ip分片

...常对可传输的每个帧的最大长度有一个上限。为了保持IP数据报抽象与链路层细节的一致和分离,IP引入了分片与重组。当IP层接受到一个要发送的IP数据报时,它会判断该数据报应该从哪个本地接口发送(通过查找转... 查看详情

《tcp/ip具体解释》读书笔记(19章)-tcp的交互数据流

在TCP进行传输数据时。能够分为成块数据流和交互数据流两种。假设按字节计算。成块数据与交互数据的比例约为90%和10%,TCP须要同一时候处理这两类数据,且处理的算法不同。书籍本章中以Rlogin应用为例观察交互数据的传输过... 查看详情

tcp和udp比較

...网络链接要经过哪些步骤,一块传输数据过程中应该怎样解释,这块数据该怎样展示给编程者等等问题 查看详情

《tcp/ip具体解释》读书笔记(20章)-tcp的成块数据流

眼下建立在TCP协议上的网络协议特别多,有telnet。ssh,有ftp。有http等等。这些协议又能够依据数据吞吐量来大致分成两大类:(1)交互数据类型,比如telnet,ssh。这样的类型的协议在大多数情况下仅仅是做小流量的数据交换,比... 查看详情

tcpudp分段ip分片

...链路层MTU最大传输单元1500 MISS最大分段TCP层  数据 tcp+DataTCP+MISS+id2D1<MISSip+TCP+D1+id2tcp+D1+id2tcp一段一段(D1)传传成功了在传第二段(D2) 数据编号id1包活计时器 2h  2h后没有对方确认收到 每75秒之后会... 查看详情

tcp/ip协议图--tcp/ip基础

1.TCP/IP的具体含义从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP、TCP或UDP、... 查看详情

为什么udp和ip这类协议要对报文长度进行限制?

...连接,不可靠的协议,它不提供可靠性和稳定性的保证,如果数据报过大,它可能会被分成多个数据报进行传输,这样会增大数据传输的延时和传输出错的风险.因此,UDP对数据报的长度进行限制可以减少数据分片的次数,提高网络传输的... 查看详情

tcp/ip具体解释学习笔记——地址解析协议arp

一概述我们知道,IP协议是用来在不同的物理网络之间数据传输的。要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址。一般来说。就是将IPv4地址转换为mac地址。要想与一个特定的设... 查看详情

tcp/ip协议

...实现协议应该开发哪种程序”。二、TCP/IP基础1.TCP/IP的具体含义从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用... 查看详情

tcp:ip协议

...上实现协议应该开发哪种程序”。二、TCP/IP基础2.1TCP/IP的具体含义从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用... 查看详情