tcp结束连接(tcp连接app下载)

      最后更新:2024-02-02 02:42

      tcp终止连接需要几次握手

      TCP连接和终止:建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(halfclose)造成的。
      tcp终止连接需要几次握手

      tcp连接的断开

      TCP的断开就是经过四次挥手: 这是正常的情况,客户端主动tcp连接断开的过程。客户端先是发送一个FIN为一的报文,然后进入FIN_WAIT_1的状态。服务器收到FIN报文后,发送一个ACK报文,然后进入CLOSED_WAIT状态。客户端收到服务器的ACK报文进入FIN_WAIT_2状态。等到服务器觉得他数据处理好了,可以关闭的时候,会发送一个FIN报文,然后进入LAST_ACK。等待最后一个应答。让客户端收到服务器FIN报文,就进入TIME_WAIT状态了,随后发送最后一个ACK报文,然后close。客户端再等待2msl后也自己主动关闭。而只有主动关闭的情况下,才会有TIME_WAIT。那么为什么四次挥手需要四次呢?三次握手其实就是在第二次把ACK和SYN两个报文合并成一个发,但是断开的过程可能还有一方需要处理下数据,需要延长点时间,等处理好再发FIN,所以就比三次握手多了一次。这里还有一个问题,为什么需要TIME_WAIT,然后到close需要2msl的时间呢?先说下什么是MSL,也就是报文的最长生存时间,超过这个时间的报文就要被丢弃掉。tcp是基于ip的,ip上有个生存时间TTL,是ip报文可以经过的最大路由数量,每经过一个路由就减1,减到0,ip报文就丢弃掉,然后通过ICMP通知源主机,我们的ping也算是经过这个。当然msl和ttl还是有区别的,msl是时间,ttl是路由数量,msl也是大于等于ttl的。在linux中,2msl默认是60秒。前文也说了,只有主动发起断开连接的进程才会有time wait状态。time wait+2msl有两个原因:1.防止旧连接的数据包像这个seq 301的包,如果因为网络的原因被延迟了,而没有time wait或者很短,那么连接断开后,又建立新的连接,这个时候这个包到了,可能就导致数据紊乱了。而2msl可以保证两个方向的包在断开前丢弃掉。2.保证正确的断开连接2msl的时间也是保证第四个报文的ack可以被被动关闭方接收到。如图,假设time wait比较短或者没有,当最后的ack报文丢失的时候。客户端已经close了,而服务器一直处于last ack的状态。这样连接就不能正常断开了。而如果有time wait +2msl这个情况就可以避免。假设服务器没有收到最后一个ack报文,服务器会重发FIN等待客户端的ack。这样就可以保证不会出现一端断开,另外一端没有断开的情况了。有时候我们在服务器上会看到很多time wait。time wait一般就是服务器主动发起的断开请求才会产生的状态。所以time wait过多,第一个是系统资源会大量消耗,还有是端口如果占的太多,会导致没办法创建新连接。这个时候可以把linux的net.ipv4.tcp_tw_reuse开启,置为1,可以复用time wait超过1秒的连接。这边再说说tcp的保活机制。也就是怎么长期维持客户端和服务端的连接。在一个时间段内,如果没有连接等相关活动,tcp的保活机制会定期发探测报文,如果连续几个探测报文就没有回应,就将错误信息报告给系统,系统通知上层应用。在 Linux 内核可以有对应的参数可以设置保活时间、保活探测的次数、保活探测的时间间隔,以下都为默认值:tcp_keepalive_time=7200:表示保活时间是 7200 秒(2⼩时),也就 2 小时内如果没有任何连接相关的活动,则会启动保活机制tcp_keepalive_intvl=75:表示每次检测间隔 75 秒;tcp_keepalive_probes=9:表示检测 9 次无响应,认为对⽅方是不不可达的,从⽽而中断本次的连接。也就是说在 Linux 系统中,最少需要经过 2 小时 11 分 15 秒才可以发现一个「死亡」连接。 当然这个时间也可以自己配置。
      tcp连接的断开

      关于TCP关闭连接的问题

      客户端发送完数据 发送一个Fin 告诉服务器发送完了,等待关闭服务器收到 Fin后知道客户端已经发送完数据 应答ACK服务器数据发送完毕要关闭链接 发送Fin客户端收到Fin 知道服务器发送完毕 回复ACK  客户端关闭服务器收到ACK 服务器关闭如果没有收到ACK命令或者其他数据  计时器超时会自动中断连接
      关于TCP关闭连接的问题

      如何正确关闭 tcp 连接

      1. 客户端发送完数据发送一个fin告诉服务器发送完了,等待关闭2.服务器收到fin后知道客户端已经发送完数据应答ack3.服务器数据发送完毕要关闭链接发送fin4.客户端收到fin知道服务器发送完毕回复ack客户端关闭5.服务器收到ack服务器关闭如果没有收到ack命令或者其他数据 计时器超时会自动中断连接
      如何正确关闭 tcp 连接

      tcpip 怎么设置结束符

      tcpip设置结束符步骤: 1.、找到桌面上的网络图标。2.网络图标上右键,属性。3.找到internet选项,点击下面的网络。4.在网络连接状态界面,点击下面的属性。 5.在网络连接属性界面,就可以看到internet协议版本(TCP/IP4)或(TCP/IP6),以internet协议版本(TCP/IP4)为例,左键双击点开即可打开。
      tcpip 怎么设置结束符

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类