您所在的位置:小祥子 » 编程 » Python » 正文

python socket 编程之二:socket与tcp三次握手

时间:2015-07-03 编辑:药师Aric 来源:CnBlogs

建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

  socket里哪一步经历了三次握手呢?看下图:

也就是发生在 client, address = server.accept() 和客户端的connect()里,三次握手完后就产生一个连接对象,后续的recv()和send()才是真正的收/发数据。
关键词:python 编程