如果您正在编写基本的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%正确只是好奇它背后的逻辑
答案 0 :(得分:5)
SYN和ACK由操作系统处理,无需用户直接干预。用户程序不需要也不能发送初始SYN,SYN-ACK,ACK握手数据包。
由socket.socket.connect()
开始,代表客户端发送初始SYN。
由socket.socket.listen()
开始,代表服务器发送初始SYN-ACK。