TCP
TCP是一种面向连接的、基于字节流的传输层通信协议。TCP协议采用三次握手建立一个连接,采用四次挥手断开连接。TCP特点:保证可靠性,同时尽可能提高性能
建立连接的过程
三次握手
第一次
客户端给服务端发一个 SYN 报文,并指明自己的初始化序列号 seq = x。此时客户端处于 SYN_SENT(同步已发送) 状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序列号。
第二次
服务器收到客户端的 SYN 报文之后,如果同意连接,则发出确认 ACK 报文。确认序列号是 ack = x+1 ,并且也要指明自己的初始化序列号 seq = y 。表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD(同步收到) 的状态。这个报文也不能携带数据,但是同样要消耗一个序列号。
第三次:
客户端收到服务端的确认后,还会向服务器发出确认 ACK 报文。确认序列号为第二次握手服务器的序列号 y+1 ,同时自己的序列号是 x+1 。发送完成后,客户端进入**ESTABLISHED(已建立连接)状态。当服务器收到客户端的确认后也进入ESTABLISHED(已建立连接)**状态,双方就可以开始通信了。
为什么需要三次
- 第一次可以知道客户端的发送能力、服务端的接收能力是正常的。
- 第二次可以知道服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是