TcpUdp发送数据长度问题探讨.pptx

上传人:rrsccc 文档编号:10100486 上传时间:2021-04-19 格式:PPTX 页数:24 大小:603.15KB
返回 下载 相关 举报
TcpUdp发送数据长度问题探讨.pptx_第1页
第1页 / 共24页
TcpUdp发送数据长度问题探讨.pptx_第2页
第2页 / 共24页
TcpUdp发送数据长度问题探讨.pptx_第3页
第3页 / 共24页
TcpUdp发送数据长度问题探讨.pptx_第4页
第4页 / 共24页
TcpUdp发送数据长度问题探讨.pptx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《TcpUdp发送数据长度问题探讨.pptx》由会员分享,可在线阅读,更多相关《TcpUdp发送数据长度问题探讨.pptx(24页珍藏版)》请在三一文库上搜索。

1、,TCP/UDP发送数据长度问题探讨,使用TCP发送数据时,我们常用send函数: ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags); 使用UDP发送数据时,我们常用sendto函数: ssize_t sendto(int sockfd, const void *buff, size_t nbytes, int flags, const struct sockaddr *to, socklen_t addrlen);,问题?,应用程序在使用上述接口发送数据时,究竟一次发送多少数据合适?,探讨一:协议本身有没

2、有定义?,TCP/IP通讯过程,TCP/IP数据包的封装,UDP数据封装格式,TCP数据封装格式,IP数据封装格式,TCP/UDP数据发送长度选择依据: 协议定义 TCP/UDP数据发送长度选择标准: TCP: 无上限 UDP: 不能超过报文数据长度上限:65535-20-8=65507(64KB),探讨一的结论,探讨二:有没有缓冲区限制?,TCP输出,UDP输出,UDP: UDP没有流量控制,如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。,流量控制,TCP: TCP通过“滑动窗口”机制进行流量控制,保证可靠传输。,TCP“滑动窗口”流量

3、控制,TCP/UDP数据发送长度选择依据: 协议定义 发送缓冲区大小 TCP/UDP数据发送长度选择标准: TCP: 阻塞:无上限 非阻塞:不能超过套接口发送缓冲区长度 UDP: 不能超过报文数据长度上限:65535-20-8=65507(64KB) 不能超过套接口发送缓冲区长度 采用流量控制、应答机制、超时重发等,探讨二的结论,探讨三:链路层有没有限制?,以太网数据封装格式,MTU,本地MTU Windows: 注册表 Linux:ifconfig 网络MTU 以太网(Ethernet)协议:1500字节 PPPoE(ADSL)协议:1492字节 X.25协议(Dial Up/Modem):

4、576字节 Point-to-Point:4470字节 FDDI协议:4352字节 网络MTU(路径MTU)查看方法 Windows:ping -f -l Linux:ping -c -M do -s ,关于MTU,IP数据长度超过MTU时: 发送端IP层分片,接收端IP层重组,关于MTU,IP数据长度超过MTU的问题: 产生多余的数据包 分包组包时间消耗大 组包错误时,TCP会导致重传,UDP会导致丢包,计算方法: TCP:MTU - 20(IP头) - 20(TCP头) UDP:MTU - 20(IP头) - 8(UDP头) 对于以太网: TCP:1500 20 20 = 1460 UDP

5、:1500 - 20- 8 = 1472 IP最小重组缓冲区大小(Internet标准MTU):576 TCP:576 20 -20 = 536 UDP:576 20 8 = 548 DNS、RIP、TFTP、SNMP的数据报都小于这个值,TCP/UDP不分包数据发送长度限制,TCP/UDP数据发送长度选择依据: 协议定义 发送缓冲区大小 系统性能和网络性能 TCP/UDP数据发送长度选择标准: TCP: 不能超过套接口发送缓冲区长度(非阻塞) 根据系统性能和网络性能,选择一个合适值 UDP: 不能超过报文数据长度上限:65535-20-8=65507(64KB) 不能超过套接口发送缓冲区长度

6、 根据系统性能和网络性能,选择一个合适值 采用流量控制、应答机制、超时重发等,探讨三的结论,TCP: 对于需要一次性发送数据长度较大的场景(如大于10KB),推荐使用阻塞TCP; 如果使用非阻塞TCP,一次性发送数据长度不要超过发送缓冲区长度,推荐发送10KB以下的值; 当发送的数据长度不固定时,推荐使用单次定长循环发送的封装函数writen(readn); 当网络状态较好时,适当增大一次发送的数据长度,提高系统性能;当网络状态较差时,适当减小一次发送的数据长度,减小丢包重传的时间消耗。,最终结论TCP,UDP: 一次发送的数据长度不能超过单包IP承载的最大数据长度(小于64KB); 一次发送的数据长度不能超过发送缓冲区的长度; 当网络状态较好时,适当增大一次发送的数据长度,提高系统性能;当网络状态较差时,适当减小一次发送的数据长度,降低丢包率; 推荐值:网络状态很好,推荐1-64KB;网络状态一般,推荐1KB以下;网络状态较差,推荐512字节以下; UDP应用开发时,要考虑流量控制、应答机制、超时重发等机制。,最终结论UDP,谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1