TCP如何处理失序数据包
2012-06-29 19:06
991 查看
在使用TCP协议的网络中,接收端运输层如何处理失序到达的数据包,是丢弃还是等待所有数据包接收完毕后再重新排序?比如接收编号从1到10的10个数据包,如果数据包3先于数据包2到达接收端,那么接收端如何处理数据包3 呢?是先把它丢弃然后等待数据包2正确接收后再向发送端发命令让发送端重传数据包3?或者是先把失序到达的数据包3收下,等所有数据包接收完毕后再重新排序?这个问题困扰我好长时间了,资料也看了不少就是没有彻底搞明白,忘高人指点指点!
1 TCP具有乱序重组的功能。
(1)TCP具有缓冲区
(2)TCP报文具有序列号
所以,对于你说的问题,一种常见的处理方式是:TCP会先将报文段3缓存下来,当报文段2到达时,再根据序列号进行拼接。
2 当然缓冲区也有满的时候,这时接收端会直接丢弃报文,不做任何其他处理;发送方的定时器发现迟迟收不到接收方丢弃报文的确认号(ack number),就会重传该报文。这就是TCP的超时重传功能。
1 TCP具有乱序重组的功能。
(1)TCP具有缓冲区
(2)TCP报文具有序列号
所以,对于你说的问题,一种常见的处理方式是:TCP会先将报文段3缓存下来,当报文段2到达时,再根据序列号进行拼接。
2 当然缓冲区也有满的时候,这时接收端会直接丢弃报文,不做任何其他处理;发送方的定时器发现迟迟收不到接收方丢弃报文的确认号(ack number),就会重传该报文。这就是TCP的超时重传功能。
相关文章推荐
- TCP/IP学习(30)——L2数据链路层的数据包处理详细流程
- TIME_WAIT状态下对接收到的数据包如何处理
- lua中是 ffi 解析 【是如何处理数据包的/pkt是如何传进去的】
- Nginx--官网中文翻译(中英文对比)--13-nginx如何处理会话How nginx processes a TCPUDP session
- 如何处理10000 TCP连接
- 如何建立一个IP和TCP数据包
- 转自Microsoft-DDOS处理参考-如何:强化 TCP/IP 堆栈安全
- Android如何下抓取tcp数据包
- 构造网络数据包(TCP,IP等)时其中checksum字段的处理
- GO语言如何手动处理TCP粘包详解
- 如何在串口通讯程序中处理数据包
- TCP/IP数据包处理路径(Ipnat.sys 、Ipfltdrv.sys 、 Ipsec.sys)
- 如果客户机器无法从DHCP服务器中获取IP地址那么Windows Server 2003客户机器将会如何处理自己的TCP/IP设置
- 转自Microsoft-DDOS处理参考-如何:强化 TCP/IP 堆栈安全
- tcpreplay是如何回放数据包的
- 如何判断TCP数据包是否发送成功
- lua中是 ffi 解析 【是如何处理数据包的/pkt是如何传进去的】 fsfsfs