TCP
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在计算机领域这是一个非常重要的协议,基于传输层 TCP 协议的应用层程序有许多:FTP、HTTP1/2等。TCP 创建时需要经过三次握手才能成功建立连接,关闭连接的也需要经过四次挥手才能彻底拆除连接。正是因为复杂的传输协议才为 FTP 提供的可靠性,同时面试官往往也喜欢问这种问题。
三次握手
- 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
- 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
- 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
为什么需要三次握手,两次不可以吗?
第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第