TCP
TCP是面向连接的传输协议,发送数据需要双方建立连接,属于端到端的通信,实现的是一对一的交互通信。
数据处理
UDP
UDP是面向报文的。发送端的传输层对应用层交下来的报文,在添加报头后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界。接收端传输层接收到报文会去掉报头,将数据部分交给应用层。
TCP
TCP是面向字节流的。发送端的应用层将数据字节流交付到传输层的缓存区,根据发送策略对字节流分片,添加报头发送TCP报文。接收端传输层收到报文后,去掉报头存储到接收缓存。接收缓存将字节流片段交给应用层,应用层再将字节流片段重组还原为可用的数据。
传输服务
UDP
UDP提供无连接的不可靠服务。在发送端到接收端的传递过程中出现数据包丢失或接收误码的情况,协议本身并不能做出任何检测或提示。UDP只是尽可能快地把数据扔到网络上,并不保证数据包的完整性。因此UDP没有可靠性保证、顺序保证和流量控制字段。
TCP
TCP提供面向连接的可靠服务。在发送端到接收端的传递过程中出现数据包丢失或接收误码的情况,接收端在定时器超时后没有收到相应的确认,发送端会重新发送数据包。TCP连接每一方的接收缓冲空间大小都固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在此基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出。
报头开销
UDP
UDP传输的段有8个字节的报头和有效载荷字段构成。UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据报长度、校验和。
- 端口号:使用端口号为不同的应用保留其各自的数据传输通道
- 长度:数据报的长度是指包括报头和数据部分在内的总字节数
- 校验和:使用报头中的校验值来保证数据的安全
TCP
TCP传输的段有最小20字节的报头和有效载荷字段构成。TCP具体组成包括端口号、序号、确认号、保留域、标志域、窗口、校验和、紧急指针构成,另外可扩展首部包括选项和填充。
总结
UDP
特点
- 无连接
- 支持一对一,一对多,多对一和多对多的通信
- 面向报文
- 不可靠传输,不使用流量控制和拥塞控制
- 报头开销小,仅8字节
应用场景
常用于实时应用。例如视频直播、IP电话,QQ语音和QQ视频就是使用UDP的协议。
TCP
特点
- 面向连接
- 一对一通信
- 面向字节流
- 可靠传输,使用流量控制和拥塞控制
- 报头最小20字节,最大60字节
应用场景
常用于对可靠性要求高的通信。例如文件传输。