TCP与UDP两种协议的区别
程序员文章站
2022-07-09 21:27:31
...
TCP和UDP同属于传输层协议。
一,TCP协议特点
1,面向连接的协议,通信前必须先通过三次握手建立tcp连接,断开连接需要经过四次挥手释放连接; 2,基于字节流的数据传输,所以消息之间没有边界,需要处理粘包以及读半包等问题; 3,消息确认,超时重传机制,对于收到的消息,予以ack确认,如果消息发送端长时间没有收到ack确认,则重新发送该消息(重复发送次数和时间间隔是在linux内核参数可配置的); 4,流量控制,tcp连接的两端,都存在发送缓冲区和接收缓冲区,利用滑动窗口原理和各端接收缓冲区的大小,控制消息传输速率,必要时阻塞消息发送端; 5,分片和重组机制,每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组。比如说,在以太网环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报长度大于1472(1500-20-8=1472,普通数据报)字节,则需要分片之后进行传输。MSS(Maxmum Sigmentation Size)就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20字节和TCP数据段的包头20字节)所以往往MSS为1460。通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。MTU是IP网络层分片的依据,经过tcp分片后,到网络层IP协议就不需要再分片了;
二,UDP协议特点
1,面向非连接的协议,通信前不需要通过三次握手建立连接,容易伪造IP进行udp flood攻击; 2,没有消息确认,超时重传,流量控制等机制,在网络环境不好的情况下,有乱序及丢包的问题; 3,基于用户数据报的传输,有消息边界,没有tcp协议的粘包及读半包问题; 4,没有消息分片及重组机制,对于应用层写入的数据,不管大小,直接封装成udp报文,传给网络层IP,由网络层进行数据的分片和重组;
三,常见问题
#问题一,tcp socket的connect操作和udp socket的connect有什么区别 tcp socket的connect有三次握手建立tcp连接的动作,而udp socket的connect仅仅只是将传入的host及port参数保存在linux中;
上一篇: 常用 Linux shell & vim 命令 linux脚本
下一篇: css背景颜色、图像