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状态。

为什么需要三次握手,两次不可以吗?
第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
因此,需要三次握手才能确认双方的接收与发送能力是否正常。
(ISN)是固定的吗?
三次握手的一个重要功能是客户端和服务端交换 ISN(Initial Sequence Number),以便让对方知道接下来接收数据的时候如何按序列号组装数据。

TCP是一种面向连接的可靠传输协议,其连接建立与关闭分别涉及三次握手和四次挥手过程。三次握手确保了双方的接收和发送能力,防止中间人攻击。ISN(初始序列号)为动态生成,防止预测攻击。半连接队列用于存储尚未完成三次握手的连接请求。在第三次握手时,客户端可以携带数据。四次挥手确保双方都能接收到关闭连接的确认,TIME_WAIT状态用于确保对方收到ACK,避免数据丢失。
最低0.47元/天 解锁文章
1760

被折叠的 条评论
为什么被折叠?



