TCP与UDP的区别(超详细)
总结 TCP是面向连接的,UDP是无连接的 TCP是可靠的,UDP是不可靠的 TCP是面向字节流的,UDP是面向数据报文的 TCP只支持点对点通信,UDP支持一对一,一对多,多对多 TCP报文首部20个字节,UDP首部8个字节 TCP有拥塞控制机制,UDP没有 TCP协议下双方发送接受缓冲区都有,UDP并无实际意义上的发送缓冲区,但是存在接受缓冲区 TCP是面向连接的,UDP是无连接的 在TCP协议进行网络通信时,需要先建立连接,也就是说需要先将客户端与服务器的连接连好,然后在进行数据交互。 服务器的listen()函数和accept() 函数确保了连接的建立 因为使用TCP协议时,Linux内核协议栈为TCP连接创建了两个队列 1. 半连接队列:用来保存处于SYN_SENT 和 SYN_RECV状态的请求 2. 全连接队列:accept队列,用来保存正在数据交互(established状态)的客户端连接 全连接队列长度 == 套接字函数listen()的第二个参数+1 TCP是可靠的,UDP是不可靠的 TCP使用一下方式保证自身发送接受数据可靠 数据包校验(16为数据校验和)防止发送过来的数据是错误数据 确认序列号,对失序报文进行重排 丢弃重复数据包,防止数据冗余重复 确认应答机制,接收方接受数据之后会发送一个确认 超时重传机制,发送方发出数据后会启动一个定时器