Products
GG网络技术分享 2025-11-12 21:08 4
根据您给的文档内容,
TCP连接的建立需要三次握手,其目的是确保双方dou准备优良进行数据传输。

第一次握手客户端发送一个SYN包给服务器,求建立连接。
SYN = 1, seq = xSYN标志位设为1,seq是初始序列号。第二次握手服务器收到SYN包后回复一个ACK包和SYN包给客户端。
SYN = 1, ACK = 1, seq = y, ack = x + 1SYN标志位设为1,表示服务器赞成建立连接;ACK标志位设为1,表示Yi收到客户端的SYN包;seq和ack是序列号和确认号。第三次握手客户端收到服务器的ACK包和SYN包后 发送ACK包给服务器,表示连接Yi经建立成功。
ACK = 1, seq = x + 1, ack = y + 1ACK标志位设为1,表示客户端Yi收到服务器的响应。当数据传输完成后需要断开TCP连接,这需要四次挥手。
第一次挥手客户端发送FIN包给服务器,表示客户端不再发送数据。
FIN = 1, seq = w, ack = u + 1FIN标志位设为1,表示客户端发送完数据。第二次挥手服务器收到FIN包后 回复ACK包给客户端,表示Yi经收到客户端的FIN包。
ACK = 1, seq = v, ack = u + 1ACK标志位设为1,表示Yi收到客户端的FIN包。第三次挥手服务器发送FIN包给客户端,表示服务器也不再发送数据。
FIN = 1, seq = x + 1, ack = y + 1FIN标志位设为1,表示服务器发送完数据。第四次挥手客户端收到服务器的FIN包后 回复ACK包给服务器,表示Yi经收到了服务器的FIN包。
ACK = 1, seq = u, ack = y + 1ACK标志位设为1,表示客户端Yi收到服务器的FIN包。在三次握手完成后连接Yi经建立成功,数据Neng开头传输。TCP为了保证可靠传输, 采用了分组传输的方式,个个分组dou有一个序号,接收方Neng通过分组的序号来保证数据的顺序和完整性。
ACK = 1, seq = u + 1, ack = w + 1
python import socket
s = socket.socket
s.bind)
s.listen
conn, addr = s.accept print
data = conn.recv print)
conn.sendall)
conn.close s.close
这段代码演示了TCP服务器端的基本操作, 包括监听、收下连接、接收数据、发送数据和断开连接。
Demand feedback