TCP与UDP都是属于传输层的两个协议:
TCP协议:传输控制协议,提供面向连接、可靠的数据传输服务(传输数据前,必须建立连接),TCP 主要提供完整性服务。
UDP协议:用户数据包协议,提供无连接、尽最大努力的数据传输服务(不保证数据传输的可靠性),UDP 主要提供及时性服务。
一、TCP协议
每一条 TCP
连接只能有两个端点(服务器、客户端),所以每一条 TCP
连接只能是点对点的(在同一时刻一个发一个收);TCP
面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的报文段);TCP
具备“可靠性传输”、“流量控制”、“拥塞控制”等功能;
1.TCP首部
TCP
首部包括20个字节的固定首部 + 长度可变的其他选项。20
个字节又分为5
部分,每部分4
个字节(32
位)首部的范围是20-60个字节,因此选项部分最多40个字节。
2.连接管理
TCP通过三次握手建立客户端与服务器之间的连接,通过四次挥手释放连接。
2.1三次握手
第一次握手是,客户端向服务器发送一个数据包(报文段),报文段的首部有SYN=1,表示请求建立连接(建立连接的时候是服务器先打开,服务器进入LISTEN状态,第一次握手后客户端进入SYN-SENT状态)
第二次握手是,服务器向客户端发送一个数据包(报文段),SYN=1,ACK=1,表示服务器同意连接(服务器进入SYN-RCVD状态)
第三次握手是,客户端向服务器再发送一个数据包(报文段),ACK=1,表示收到服务器的确认数据包(客户端与服务器进入ESTABLISHED状态)
2.2四次挥手
第一次挥手:客户端向服务器发送释放连接的请求报文,FIN=1