IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> socket收包缓冲区研究 -> 正文阅读

[网络协议]socket收包缓冲区研究

ioctl获取FIONREAD参数
? ? raw_socket获取为原始分片包接收第一个包大小(icmp60,udp分片1514)
? ? udp_socket获取为协议栈组装包大小(udp发送方60k及为60k,上限为udplen(65535))
? ? tcp_socket获取为协议栈组装包大小(tcp发送方第一个包长度,初始协商堆积上限tcp窗口基数16位满(65535),阻塞发包方,后滑动窗口大小可协商调整Window size scaling factor(初始握手窗口基数)* Window size value(交互协商倍率))

收包缓冲区测试
udp:发送方发送x大小的包*50000,收方sleep待发完堆积包后recv
[8] * 348 = 2784
[60] * 295 = 17700
[128] * 256 = 32768
[158] * 256 = 40448
[159] * 69 = 10971
[1024] * 69 = 70587
[1472] * 69 = 101568 //1514
[1473] * 57 = 83961 //1514+35
[1480] * 57 = 84360 //1514 + 60(34+8+18个0填充)
[1500] * 57 = 85500 //1514 + 62(34+28)
[2047] * 35 = 71645
[2952] * 35 = 103320
[4095] * 23 = 94158
[4432] * 23 = 101936
[8191] * 12 = 98292
[16383] * 7 = 114681

tcp:收方堆积fionread查询大于SO_RCVBUF,初始连接窗口大小60+kb,周期recv后可读数据10M+超过recv(fd, buf(8M))
发包方[2047]持续发包
SO_RCVBUF 1048576
fionread 2047
fionread 66588
recv 66588 tcp_len 66588 tcp_cnt 1
fionread 67160
recv 67160 tcp_len 133748 tcp_cnt 2
fionread 141620
recv 141620 tcp_len 275368 tcp_cnt 3
fionread 143080
recv 143080 tcp_len 418448 tcp_cnt 4
fionread 303680
recv 303680 tcp_len 722128 tcp_cnt 5
fionread 308060
recv 308060 tcp_len 1030188 tcp_cnt 6
fionread 651160
recv 651160 tcp_len 1681348 tcp_cnt 7
fionread 975280
recv 975280 tcp_len 2656628 tcp_cnt 8
......
fionread 7679600
recv 8000800 tcp_len 379808670 tcp_cnt 65
fionread 8117600
recv 8388608 tcp_len 388197278 tcp_cnt 66
fionread 7867032
recv 8188232 tcp_len 396385510 tcp_cnt 67
一次性读取大小8M超过设置缓冲区1M大小,缓冲区大小对收包限制如何体现

注:
udp_socket的recv函数单次接收buf长度小于发送方单个udp包大小,多余部分被丢弃,下次recv接收下一个包
tcp_socket的recv可循环接收直至完整接收发送方单个tcp包
?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 10:11:58  更:2021-08-06 10:12:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:35:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码