`
liwenge
  • 浏览: 79584 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

TCP数据流稳定性--TCP分片,重组及乱序

阅读更多

TCP数据流稳定性--TCP分片,重组及乱序

1、IP分片的情况。IP软件包有一个[分片]和[重组]模块,一个IP数据报在传输中可以被ip软件包的[分片]模块分片,在目的接收端B的IP软件包 的[重组]模块重新组合。接收端B的IP软件包如果收到乱序的IP报文,是不会把这个包交付到高层TCP协议的,直到收到同一个IP报文的全部分片。所 以,如果发送端的FIN被分片,接收端B在收到完整的此IP数据报之前,TCP模块不会收到这个包的任何分片。

2、发送端A发送了一个FIN,这仅代表发送端A想终止传输,并不代表另一端B想终止。这就是说,终止双向链接需要4次握手断开(也有3次握手断开,类似 3次握手链接),比如,发送端A向发送端B发一个查询请求,发送端A已经没有更多的数据要发送了,因此可以发送FIN请求一端断开,也称为半断开,然后, 另一端B则需要时间处理请求,再把查询结果返回给A,最后B发送FIN。
1)首先是A发送FIN,然后收到来自B的对这个FIN的确认,此时,发送端A将不能发送任何数据包,但可以接受B发来的数据包(这是非常常见的传输模式,客户端发完,终止链接)。
2)发送端B仍旧可以继续发送数据包,直到高层没有更多的数据,发送端B发送FIN,A收到后发送对这个FIN的确认。此时,双方都不能再传输任何数据了。

3、TCP协议规定,对于收到的乱序报文并不丢弃,而是缓存下来(这样做是为了减少更多的重传),立即发送希望接受的报文确认。例如:发送端A发送了以下几个包:第一个:1001-1100,第二个1101-1200,第三个FIN包(序列号是1201,一个虚字节)。
1)第二个包在传输的过程中丢失了,接收端收到第三个包后并不丢弃,而是缓存下来,然后,立即发送一个ACK,确认号是1101(这样做的目的是不必等到发送端A的第二个包超时后重传,发送端A收到3个同样的ACK后立即重传,这是快速重传的概念)。
2)当发送端A收到3个确认号都是1101或者第二个包的超时计时器到时间后,立即重新发送第二个包(之所以可以重传,是因为TCP协议在接收端和发送端都各自建立了两个发送、接收缓存)。
3)这样,当接收端B收到来自A的第二个包后,缓存中的数据都是按序的了。
4)对于按序包,接收端B对序列号的最后一个字节+1,也就是发送确认号是1202的ACK包。

5)发送端A收到确认号是1202后,便不能再发送任何数据了。

 

TCP 的传输机构有多个定时器。当一个包发送时,重发定时器开始计数;当收到确认信号后,重发定时器停止计数。如果超过设定时间段还没有收到确认信号,就 重发该包。一个比较棘手的问题是如何设置该时间段。如果太长,当网络传输错误增加时将导致不必要的等待时间;如果太短,就会产生过多的重复包从而降低网络 的反应时间。现代TCP协议根据实际情况对重发定时器进行动态设定。

     不 管重发过程执行得多么有效,很少的丢失包就能严重地降低TCP连接的流量。每个未收到的包或包的片段只会在重发定时器超时的时候才会丢失。在数据重发 时,接收过程一直在递送这些重发的数据,这样就使总体的数据传输陷于停顿,直到丢失的数据被取代为止。这些重发过程导致基于TCP的连接有时处于不稳定状 态。

 

IP丢包:

1。接受方:在以太网上,服务端有可能响应不过来(大量客户端有读写需求),服务端访问密集,丢弃包在所难免

2。 发送方:大量客户端同时请求服务器发送数据,并且通告窗口很大,那么服务器会很快的把分组送到网卡上,考虑一种比较极端的情况,网络中还有大量流量占用带宽,致使 服务器不能迅速将数据发送出去,而网卡可以缓存的分组数是有一定限制的,那么肯定会有数据在未发送前就被丢弃了!而接收方对这种情况毫无所知,不会更改通 告窗口的大小,即流量控制不会起作用

 3。网络传输

分享到:
评论

相关推荐

    TCP以太网调试助手软件V2.3.rar

    同时,它还支持TCP流重组,将分片的数据包按原始顺序重新组合,方便查看完整的应用层数据,这对于调试HTTP、FTP等应用层协议尤为有用。 此外,该软件还提供了强大的异常检测功能。它能够自动识别可能存在的网络异常...

    传输控制协议TCP原理

    滑动窗口机制的一个重要改进是从基于数据包指针转变为基于字节指针,这样可以更精确地控制传输过程,确保即使在数据包分片或重组的情况下也能正确处理数据。 TCP的拥塞控制是通过慢启动算法、拥塞避免、快速重传和...

    rudp 高性能,可靠性传输UDP网络库(远胜TCP)

    5. **分片与重组**:大尺寸的数据包会被RUDP分割成较小的片段进行传输,并在接收端进行重组,以适应网络环境的变化。 6. **错误检测**:每个RUDP数据包都包含校验和,用于检测传输过程中的错误,确保数据的正确性。...

    TCP UDP源码

    2. **数据分片与重组**:TCP如何将大块数据分割成小段,以及接收端如何根据序列号重组数据。 3. **错误检测与重传**:TCP的校验和机制以及快速重传和快速恢复算法。 4. **流量控制**:滑动窗口协议如何限制发送速率...

    利用java实现的ftp包的文件重组

    然而,在网络传输过程中,由于TCP的分片机制,大文件会被拆分成多个数据段进行传输。这些数据段在网络中可能按照不同的顺序到达目的地,因此需要在接收端进行重组,以恢复原始文件的完整内容。 Wireshark是一款强大...

    tcipTCP_IP协议详解

    3. 网络层:重点讲解IP协议,包括IP地址、子网掩码、路由器功能、IP分片与重组等内容。 4. 数据链路层和物理层:描述了MAC地址、以太网、令牌环等数据链路层协议,以及信号传输、线路标准等物理层概念。 5. 网络...

    Ethereal Lab

    - TCP流重组:当数据包被分片或乱序时,Ethereal能重组它们,以展示完整的应用层数据。 4. **应用层分析** - HTTP、FTP、DNS等:Ethereal支持众多应用层协议的解析,可以查看HTTP请求和响应详情,DNS查询和应答,...

    UDP_Demo.rar_UDP_socket-udp通讯_socket编程_udp 通讯_udp通讯

    8. **数据报大小限制**:UDP数据报的最大尺寸受网络层MTU(Maximum Transmission Unit)限制,通常为1500字节,但实际应用中可能会更小,需要考虑数据分片和重组问题。 9. **关闭套接字**:通信完成后,使用`close...

    opencv UDP协议的摄像头视频实时传输

    在IT领域,尤其是在计算机视觉和实时通信中,OpenCV库是一个强大的工具,它提供了丰富的功能来处理图像和视频。...在实现过程中,对网络编程和视频编码的理解至关重要,这将直接影响到传输的稳定性和效率。

    可靠连接utp实现网络通讯enet1.3

    1. **分片与重组**:ENet将大的数据包分割成小的数据片段,并在接收端重新组合,确保数据的完整性和顺序。这解决了UDP可能丢失或乱序的数据包问题。 2. **确认与重传**:ENet使用确认机制,确保每个数据片段都到达...

Global site tag (gtag.js) - Google Analytics