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

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

发布网友 发布时间:2023-11-02 13:29

我来回答

1个回答

热心网友 时间:2024-07-07 18:42

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
安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 门前种什么树,又好看,又要长的快37 农村种什么树快大值钱328 种什么树最值钱?893 什么树长得快又值钱590 电脑恢复出厂设置怎么恢复数据 常见的反应釜类型有哪些?5 齐齐哈尔龙华新能源待遇怎么样 一个手机可以申请两个吗? 脸上长好多痘痘,是不是淋巴结引起的 钱塘江灯光秀11月份开放吗 员工辞职,在社保网上系统中办理减员时变更原因选什么?32 婚姻里总想着改变对方是正确的吗 我想请教各位前辈一下,做Elisa试验时,OD值偏低时什么原...9 怎么强制修改第二次 脖子淋巴结与脸上张痘痘有关吗 一个号码注册了两个,怎么找回第一个? 快手有500万粉丝,一年能赚多少钱?114 一年只能改一次怎么改第二次? 青少年儿童验光时( )3 有没有人买过洗澡机啊,用的怎么样啊,哪个牌子的比较好?看了网...1 如何强制二次修改 如何强制二次修改 微信添加你但是你忘了加,显示已过期,怎样才能加回来,或者查看他的... 微信被盗好友被全部拉黑都搜不出来了 请问还能找回吗? 评教问题怎么处理? 货币大幅升值或贬值会造成什么后果?12 货币贬值对社会的影响?380 一立方的岩石是多重吗? 微信添加你但是你忘了加,显示已过期,怎样才能加回来,或者查看他的... 货币贬值有什么危害?20 新疆农大3本2012年毕业的学生,考2013年的新疆大学地理学专业研究生... 公司支票账户余额是实物资产还是金融资产 什么叫煤矿瓦斯突出?突出怎么解释34 你好,你参加齐齐哈尔龙华新能源汽车的考试结果怎么样啊,面试过... 齐齐哈尔龙华新能源汽车,大家面试过后有消息吗,等得好着急 怎么把自己的变成订阅号13 怎样把自己的变成公众号25 脸上痘痘好了又长是不是和淋巴结有关系左 ...长方形,拼成一个正方形,拼成的正方形的面积是多少?周长是多少?_百度... 英雄联盟手游魄罗能量商店刷新机制分享 lol手游魄罗能量商店刷新...