TCP网络 - 手动编程SYN,SYN ACK,ACK?

时间:2016-12-14 21:34:34

标签: python networking tcp

如果您正在编写基本的python TCP服务器和客户端,您需要自己添加SYN,SYN ACK和ACK响应,还是由套接字模块处理?

如果您需要自己编写它会像这样简单吗?

客户端:

#set up clientSocket

data = "SYN"
clientSocket.send(data.encode('utf-8'))
if((clientSocket.recv(1024)).decode('utf-8') == "SYN ACK") {
  data = "ACK"
  clientSocket.send(data.encode('utf-8'))
}

并且服务器以类似的方式响应,检查recv是否为SYN,然后发送SYN ACK。如果不是,实施它的正确方法是什么? Haven没有运行上面的代码,没有担心语法是100%正确只是好奇它背后的逻辑

1 个答案:

答案 0 :(得分:5)

SYN和ACK由操作系统处理,无需用户直接干预。用户程序不需要也不能发送初始SYN,SYN-ACK,ACK握手数据包。

socket.socket.connect()开始,代表客户端发送初始SYN。

socket.socket.listen()开始,代表服务器发送初始SYN-ACK。