社区
网络及通讯开发
帖子详情
发送tcp数据时的排队问题
赵小东砰砰砰
2015-09-10 10:11:17
两个tcp流
一个正在发数据,sendbuffer开的很大,里面有一堆包(d1, d2,……dn)正在发送中
一个需要回复ACK(a1)
那这个ACK是否是sendbuffer内包被全部发完后再发送,即 d1,d2,……dn,a1的顺序?
此时ACK能否有办法插队,即 d1,a1,d2,……dn
谢谢
...全文
196
2
打赏
收藏
发送tcp数据时的排队问题
两个tcp流 一个正在发数据,sendbuffer开的很大,里面有一堆包(d1, d2,……dn)正在发送中 一个需要回复ACK(a1) 那这个ACK是否是sendbuffer内包被全部发完后再发送,即 d1,d2,……dn,a1的顺序? 此时ACK能否有办法插队,即 d1,a1,d2,……dn 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我不懂电脑
2015-09-11
打赏
举报
回复
数据在sendbuffer后会重新分包发送ack对应新包的顺序
土著巫师
2015-09-11
打赏
举报
回复
TCP协议是基于流的协议,也是无边界的协议,没有包的概念(UDP才有包的说明),在TCP流上传输数据,要自己界定解析数据的起、止标记。TCP上只有带外数据可以插队传输,否则都是顺序发送、顺序接收的。关于什么是带外数据一两句话讲不清楚。
LwIP
TCP
Client 解决长
数据
发送
的困扰
问题
描述 LWIP 的
TCP
Client
发送
数据
可以调用
tcp
_write() 函数,将
数据
储存在缓冲区里面,然后等待超
时
自动
发送
或者调用
tcp
_output()函数进行
发送
。 然而
tcp
_write() 函数 需要
发送
的
数据
过长
时
,将无法
发送
,并返回 ERR_MEM。
tcp
_write()函数解析
tcp
_write()的函数代码很多,就不细看代码了, 先看
tcp
_write()的完整函数: err_t
tcp
_write(struct
tcp
_pcb *pcb, const void
Python实现
TCP
通信
TCP
:由于
tcp
是
数据
流的形式接收,所有
发送
数据
都会粘着一起,如果接收
数据
超过我们指定的,则会出现粘包现象,那么此
时
这个
数据
还会保存在缓冲区,这里也就是recv内,待我们下次再次recv
时
,取到的就会是上次没有取完的
数据
。
问题
的根源在于,接收端不知道
发送
端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让
发送
端在
发送
数据
前,把自己将要
发送
的字节流总大小让接收端知晓,然后接收端来一个死循环接收完所有
数据
。定义:
数据
全部粘在一起,如果一次性未取完,下一次接着上一次未取完的
数据
部分接着取。
网络协议
TCP
数据
段 . 帧
#
TCP
数据
段格式 源端口 ,目的端口 :16位 2字节,
发送
端的端口号和接收端的端口号,和ip地址就可以完整的标识一个端点,也就构成了之前说过的,套接字socket. 序号(seq):32位 4字节,用来标示计算机 A------>B
数据
包序号,
TCP
连接中,传送的
数据
字节流中的每一个
数据
字节都要按顺序进行编号,在“
数据
段头”中标识的只是每个
数据
段的第一个
数据
字节的编号,这个要传送的字节流的起始序号必须在连接建立
时
设置。 确认号(ack):32位 4字节,客户端和服务端都可
发送
, ACK =
【C语言】linux内核
tcp
_push函数
在进行
TCP
通信
时
,
数据
推送通常与`
tcp
_sendmsg`、`
tcp
_write_xmit`和`
tcp
_push_one`等函数相关,它们处理
数据
的
发送
以及确保在适当
时
候将
数据
推送到网络上。不过,内核确实包含了处理
TCP
数据
发送
的逻辑,这通常涉及一个名为`
tcp
_push`的操作,这个术语通常是在讨论当内核需要
发送
TCP
数据
时
所采取的策略。在Linux内核中实现
TCP
数据
发送
的函数通常位于`net/ipv4/
tcp
.c`文件中,并涵盖了一套复杂的
TCP
协议实现,包括
数据
段的
发送
、接收、重传等逻辑。
TCP
/UDP的连接和
数据
发送
过程详解
描述了
TCP
的从连接建立,到发
数据
,到挥手的大概过程
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章