Tcp协议的连接

  • Tcp协议是面向连接的协议,因为它具有握手过程
  • Tcp连接是成对出现的,是点对点的

三次握手

  • 客户端和服务器端通信的时候,主要发生下面三个过程
    1.客户端给服务器发送一个报文,报文体不包含应用层的数据,报文段的头部中含有一个位,叫syn,将被置1,表明这是个连接发起请求,报文有个初始信号client_isn
    2.服务器接收到报文,准备给这个Tcp连接分配缓存和变量,然后给客户端发送一个SYNACK报文段,包含一个确认号client_isn+1和服务器报文的初始号server_isn
    3.客户端接收到SYNACK报文段,给Tcp连接分配缓存和变量,然后给服务器发送一个报文确认,其中确认值为server_isn+1。
    确认报文可以携带要发送的应用层数据 至此三次握手完成

为什么需要三次握手

  • 如果客户端给服务器首先发起一个请求,而假设这个请求在传送过程中出现延迟情况,那么客户端就要重新发送请求。当客户端和服务器端建立连接并关闭后,这个请求被服务器端接收,那么它就会误以为是要建立新连接。所以设置第三次握手,就可以避免这种情况发生

连接断开

  • 客户端给服务器发送一个报文,这个报文的首部的FIN比特位被置位1,表示这是一个终止报文段,服务器要对这个报文作出ACK响应。
  • 服务器在发出响应ACK之后,还需要发送一个FIN报文,客户端接收到FIN报文之后会给服务器发送ACK确认,此时两个服务器资源都会关闭

为什么断开连接时服务器还要给客户端发送FIN

  • Tcp是双工的,即使客户端给服务器发送了断开连接请求,但是如果服务器还有资源没发送来,就不能断开连接释放缓存。所以要确保服务器发送FIN
posted @ 2021-11-27 20:51  NoBugNoError  阅读(188)  评论(0)    收藏  举报