社区
通信技术
帖子详情
关于TCP的问题
game_tree
2002-05-30 12:32:51
捕获到两个TCP包,从这两个包的内容看应该是顺序得到的,内容经过重新组包后也是正确的。但它们的TCP包头中的sequence number字段的值却相等(试过好几次),这和我设想的情况不同。
我觉得在非乱序的情况下,第2个包的sequence number应该等于第1个包的sequence number + 第一个包的TCP数据长度(不包含包头)。
顺便说一下,第一个TCP包的控制标志为ACK, 第二个TCP包的控制标志为ACK+PSH。
希望有高手能够指点一下。
...全文
30
1
打赏
收藏
关于TCP的问题
捕获到两个TCP包,从这两个包的内容看应该是顺序得到的,内容经过重新组包后也是正确的。但它们的TCP包头中的sequence number字段的值却相等(试过好几次),这和我设想的情况不同。 我觉得在非乱序的情况下,第2个包的sequence number应该等于第1个包的sequence number + 第一个包的TCP数据长度(不包含包头)。 顺便说一下,第一个TCP包的控制标志为ACK, 第二个TCP包的控制标志为ACK+PSH。 希望有高手能够指点一下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuying
2002-05-30
打赏
举报
回复
1. "在非乱序的情况下,第2个包的sequence number应该等于第1个包的sequence number + 第一个包的TCP数据长度(不包含包头)。 "
这是正确的。
2. "第一个TCP包的控制标志为ACK, 第二个TCP包的控制标志为ACK+PSH",说明这个报文是对接收到的报文的应答。
一个TCP报文中有两个序号,一个是发送的序号,一个是对接收到的报文应答的序号。如果是发送的序号重复,表明是没有收到对方对前面报文的应答,重发的报文;如果是应答序号重复,表明收到的报文的序号不是希望接收的序号或者没有收到报文,因此希望接收的报文序号不变,所以重复。
推荐<TCP/IP详解 卷I:协议> W.Richard Stenvens
关于
TCP
乱序和重传的
问题
TCP
是一个巨复杂的协议,因为他要解决很多
问题
,而这些
问题
又带出了很多子
问题
和阴暗面。所以学习
TCP
本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于
TCP
这个协议的细节,我还是推荐你去看W.Richard Stevens的《
TCP
/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相
TCP
协议-
TCP
粘包
问题
一、前言 我们知道,
TCP
是一个面向字节流的传输层协议。“流” 意味着
TCP
所传输的数据是没有边界的。这不同于 UDP 协议提供的是面向消息的传输服务,其传输的数据是有边界的。
TCP
的发送方无法保证对方每次收到的都是一个完整的数据包。于是就有了粘包、拆包
问题
的出现。粘包、拆包
问题
只发生在
TCP
协议中。 二、什么是粘包、拆包? 假设客户端向服务器连续发送了两个数据包,用 packet1 和 packet2 来表示,那么服务端收到的数据可以分为下面三种情况: 第一种情况,接收端正常...
关于
TCP
window full/
TCP
zero window
关于
TCP
window full/
TCP
zero window
TCP
window full, 是指的发送端发送的数据已经达到的接受窗口的上限。 继而停止发送,等待新的接收窗口的通告 此时接收端返回的是
TCP
zero window,表示接收端窗口为0,从抓包可以看出 接收端在清除缓存后窗口不再为0时,更新了其窗口大小 出现该情况是可考虑将
TCP
socket中的设置
TCP
_NODELAY选项。 setsockopt( s, IPPROTO_
TCP
,
TCP
_NODELAY, (char*) &
关于抓包出现
TCP
DUP ACK
问题
最近在跟一个CDN服务器端做对接,从CDN服务器下载内容(http),发现抓包出现非常多的
Tcp
Dup Ack异常提示。通过查阅质料得知
Tcp
Dup Ack xxx#y 代表了数据段丢失
TCP
状态,xxx代表数据丢失的位置,#后代表第几次丢失文。然后我我又再看了下报文,的确是2次数据发送到我这边,我才回复一次ack,但是这个ack回复是正确的。 对比对接其他地方的CDN的抓
C# Socket关于
TCP
粘包的处理方法
最近在工作中遇到了要自己写Socket服务器和客户端的
问题
,我解决了关于
TCP
的粘包
问题
。那么为什么会引起
TCP
粘包呢原因有以下两点 1、
TCP
是基于字节流的,虽然应用层和传输层之间的数据交互是大小不等的数据块,但是
TCP
把这些数据块仅仅看成一连串无结构的字节流,没有边界; 2、在
TCP
的首部没有表示数据长度的字段,基于上面两点,在使用
TCP
传输数据时,才有粘包或者拆包现象发生的可能 假如没有做处理的话,发过来的数据包会有三种情况 1.没有粘包(这个
问题
不讨论,是正常情况) 2.两个或多个整包粘在一起 3.
通信技术
4,356
社区成员
28,926
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章