TCP特点
面向连接、字节流和可靠传输
- 面向连接:使用TCP协议通信的双方,必须先建立连接,然后才能进行数据的读写。双方必须为连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。
- 字节流:发送端执行的写操作次数和接收端执行的读操作次数没有固定的数量关系。发送端应用程序多次执行写操作时,TCP模块必须先把数据放入TCP发送缓冲区中,当TCP模块真正开始发送时发送缓冲区中的数据被封装成一个或多个TCP报文段发出。
- 可靠传输:TCP协议采用发送应答机制,也就是说发送端发出的每个报文段都必须得到接收端的应答才认为这个报文段传输成功,而且还采用超时重传机制。
TCP是一对一的,所以基于广播和多播的应用程序不能使用TCP。
UDP特点
无连接、数据报和不保证可靠传输
- 面向连接:使用TCP协议通信的双方,必须先建立连接,然后才能进行数据的读写。双方必须分配必要的内核资源,以管理
数据段头部
控制信息
- UGR——紧急指针
- ACK——确认字段
- PSH——推送功能(让接收端立即从缓冲区中立即取走字段)
- RST——重置连接
- SYN——同步序列号
- FIN——发送方已传输完所有数据
TCP连接状态转移过程
注:虚线——服务端连接状态转移
实线——客户端连接状态转移
TCP三次握手连接
TCP四次握手关闭
四次原因:主机B在收到结束报文段后,可能还有一些要传送给主机A的数据未传送完,这时主机B需要在传送完后再向A发送结束报文段。