本文共 988 字,大约阅读时间需要 3 分钟。
TCP协议在数据传输前需要进行三次握手来建立连接,传输完成后则需要四次挥手来断开连接。了解这些过程对于理解TCP的工作机制至关重要。
三次握手是TCP连接的建立过程,涉及三个步骤:SYN、ACK和FIN。以下是具体细节:
(1) 序号(seq)
序号是32位,用于标识从TCP源端向目的端发送的字节流。发起方在发送数据时标记该序号,确保数据包能够正确重新组合。(2) 确认序号(ack)
确认序号是32位,只有ACK标志位为1时才有效,ack=seq+1。确认序号用于标识接收方期望接收的下一个序号,确保数据传输的可靠性。(3) 标志位
标志位共有6个位,分别表示不同的控制功能:需要注意的是:
在第一次握手中,A随机选取初始序号x发送SYN给B。B收到SYN后,随机选取初始序号y发送ACK给A,ack=x+1,序号设置为y。第三次握手,A发送ACK,并设置自己的序号为x+1,ack=y+1,表示已收到B的确认并准备建立连接。
四次挥手是TCP连接断开的过程。由于TCP是全双工连接,每个方向都需要单独关闭。关闭时,发送方发送FIN,接收方返回ACK后关闭对应方向。以下是四次挥手的具体步骤:
发送方发送FIN
发送方(如A)发送FIN给B,标记为序号i。接收方返回ACK
B收到FIN后,返回ACK,序号为i+1,并关闭B的读取通道。接收方发送FIN
B发送FIN给A,标记为序号j。发送方返回ACK
A收到FIN后,返回ACK,序号为j+1,并关闭A的写入通道。发送方发送ACK
A发送ACK确认B的关闭请求,并关闭A的读取通道。接收方发送ACK
B收到ACK后,关闭B的写入通道。通过四次挥手,双方的数据传输完全结束。
TCP连接的关闭需要遵循“先关读后关写”的原则,确保数据传输顺序。客户端或服务器均可发起挥手动作,close操作会触发挥手过程。
SYN flood攻击利用TCP三次握手机制,伪造 SYN 请求,导致被攻击端资源耗尽。防御措施包括使用syn cookie技术。
转载地址:http://zzte.baihongyu.com/