问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何判断TCP数据包是否发送成功

发布网友 发布时间:2022-05-08 14:45

我来回答

1个回答

热心网友 时间:2024-01-24 23:09

1. TCP发送接口:send()

  TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于
TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn = send(...);
错误的认为sn的值是表示有sn个字节的数据已经发送到了接收端。其实*并非如此。

我们知道,TCP的发送和接收在在内核(linux)中是有对应的缓冲的:

struct sock{
...
struct sk_buff_head receive_queue; //接收的数据报队列
struct sk_buff_head write_queue; //即将发送的数据报队列
...
}

  对于发送端而言,用户空间调用send(data)等发送接口将数据发送,内核会将data拷贝到内核空间的socket对应的缓冲中,即sock.write_queue。而send()函数的返回值仅仅是表示本次send()调用中成功拷贝的字节数(用户空间->内核空间对应的sock缓冲队列)。具体发送和接收端的接收就由TCP协议完成,虽然TCP是可靠传输,但是这个前提是发送端和接收端的网络是连接的,否则你懂得。这样,对于调用send()发送的用户而言,如果想要确定接收方是否成功接受数据,就得需要靠其他的办法查询。

2. send()阻塞和非阻塞

  

前面已说过,sn=send(data)负责将数据拷贝到内核空间,而具体发送是有tcp后续完成(这里面就包括流量控制等)。对已阻塞和非阻塞仅仅是对于数据从用空空间拷贝到内核空间的发送缓冲这段期间而言的。

1. 如果发送缓冲剩余空间大于欲发送data的字节数,对于阻塞和非阻塞而言都能成功将数据拷贝至内核缓冲,返回的sn即等于欲发送的数据的字节数。

2.如果发送缓冲剩余空间小于欲发送data的字节数,

a. 那么阻塞模式会进行阻塞,等待内核缓冲的空闲空间,然后继续将数据拷贝到内核缓冲中,直到全部拷贝为止。返回rn即为data的数据量。

b. 非阻塞模式,当内核发送缓冲被填满后,立即返回。rn等于data中已被拷贝到发送缓冲的数据量。

3. 如何判定接收成功接收数据?

1.接收端回复应答信息。

这个方法比较土,但也是比较实用的。

2.计算发送端sock已发送数据量
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
诺基亚5233直签工具 我的5233下了证书、也在塞班官网上在线签名了、怎么还是提示证实书错误... 你好 就是我用的诺基亚5233直签工具就是用不了什么受证书限制内部错误... 请问哪里有做餐用包装纸巾的.厂 怎么在餐巾纸上或者纸巾包装上打广告? 广告餐巾纸广告餐巾纸的分类 广告餐巾纸广告餐巾纸的制作形式 ...支付密码一样呢?支付密码和银行卡的关系是什么?求解答, ...今天是怎么了,换了数据线也不行,同事的M1也一样不能充电... 小米M1和小米青春版就是CPU和内存不一样,我是学生,买哪一个比较好? 电脑版微信的语音为什么没有声音 简单的给我介绍下网络协议中的TCP协议的数据结构是怎么样的? 怎么计算tcp包的数据长度 请问宜搜+怎么订阅自己喜欢的内容啊? 请问宜搜+怎样订阅自己喜欢的内容啊? ·如何利用RSS阅读器订阅RSS新闻内容? 宜搜+怎样订阅自己喜欢的内容啊? y宜搜+怎样订阅自己喜欢的内容啊? 请问宜搜+怎么订阅自己喜欢的内容? 男孩,12月13日晚10:59出生,请高人取名为谢 小说里的名字是博言,夏颂恩叫什么 张博然名字好吗? 老师你好,3月8 日10点37分出生,男孩,杨姓 博 后面赐一个字。 哥哥叫杨博言? 高博言这名字怎么样 宫爆鸡丁的正规详细做法 历史上有个叫博言的吗? 给儿子取名字博言好吗 这两个名字哪个好殷博言、殷希宁? 中国足球国家队 今天中国足球队男子国家队有比赛吗 衬衫搭配什么衣服好看? 白衬衫搭配什么衣服好看 宋代的五大名窑分别有哪些特色 宋代五大名窑及特点 论述宋代五大名窑的艺术特点以及审美价值 宋朝五大名窑的艺术特点是什么?并比较官窑与名窑的艺术特点? 体瘦消化不良的人早餐吃什么 个人胃消化不好,早餐吃什么比较好? 肠胃不好消化不良早餐吃什么好? 肠胃不好的人,一周的早餐安排分别吃什么 组重复文件可以删除吗 把装有笔记本的电脑包放在行李箱里会把笔记本压坏吗? mp3截取器哪里有免费下载? 请问谁有 mp3剪切器免费下载的地址啊?给推荐一下。。 免费MP3剪切 OPPOA37外屏碎了,修好得多少钱? OPPOa37外屏碎了换一下多少钱 oppoa37手机屏幕碎了换一下多少钱 OPPOa37手机外屏碎了多少钱 oppoa37手机外屏换一个多少钱