TCP的建立和终止

三次握手

TCP三次握手

  • 服务器必须准备好接受外来的连接。通常通过socket, bind, listen三个函数完成,通常称为被动打开
  • 客户端通过调用connect发起主动打开,导致客户TCP发送一个SYN(同步)分节,告诉服务器客户端将在(待建立)连接中发送数据的初始序列号
  • 服务器必须确认(ACK)客户端的SYN, 同时自己发送一个SYN分节, 含有服务器将在同一连接中发送数据的初始序列号。服务器在单个分节中发送SYN和对客户SYN的ACK确认
  • 客户端必须确认服务器的ACK

TCP终止

TCP四次挥手

  • 客户端应用进程调用close, 我们称为主动关闭, 该客户端TCP发送一个FIN分节,表示数据发送完毕
  • 服务器接收到这个FIN对服务器端执行被动关闭, 这个FIN由TCP确认。接收也作为一个文件结束符传递给接收端应用程序, 因为FIN接收意味着接收端应用进程在相应连接上无额外数据可接收
  • 一段时间后,服务器端接收到这个文件结束符的应用进程将调用close关闭套字连接,导致服务器端的TCP发送一个FIN分节
  • 客户端接收这个最终FIN的原发送端TCP(即主动关闭的哪一端)确认FIN
posted @ 2020-06-02 10:56  phper-liunian  阅读(163)  评论(0编辑  收藏  举报