zoukankan      html  css  js  c++  java
  • day26-1 TCP三次握手和四次挥手

    TCP三次握手和四次挥手

    三次握手建立连接

    如果你要去服务端下载视频,客户端和服务端之间必须得连接,在建立连接之前,客户端和服务端都是出于关闭状态的。建立连接就是三次握手:

    1. 客户端会向服务端发送一个请求,如下载视频,会有一个SYN报头
    2. 服务端会接收到客户端的请求,然后会响应客户端,并且把SYN报头改装好后又返回客户端,会有ACK报头
    3. 客户端开始进入建立连接状态,再发一条带上ACK的请求给服务端,让服务端也进入连接状态

    为什么要三次握手

    • 一次握手:客户端直接进入连接状态,直接发送请求给服务端,直接进入连接状态

      只要有请求,服务端未确认就进入连接状态,都不知道在和谁连接

    • 二次握手:

      • 1.客户端暂不进入连接状态,发一条请求给服务端
      • 2.服务端直接进入连接状态,发送一条确认请求给客户端,客户端收到请求直接进入连接状态

      在服务端进入连接状态后,如果客户端在连接之前死机了,服务端就一直处于等待与客户端连接的状态,别的客户端就不能访问该服务端,造成资源浪费

    四次挥手关闭连接

    在建立连接后要关闭连接,关闭连接就是四次挥手:

    1. 客户端会带上FIN报头向服务端发送要断开连接的请求

    2. 服务端接收到客户端的请求后,返回一个带有ACK报头的请求说确认了

      注意:FIN报头并没有返回,服务端此时还有可能传输数据

    3. 服务端数据传输结束之后,服务端又会发送一次带FIN报头的请求,告诉客户端我所有的数据都发完了

    4. 客户端向服务端进行一次确认,我收到了你中途发的数据

    为什么要四次挥手

    如果只有三次挥手:客户端可能在发送关闭连接请求后挂掉了,服务器是返回请求给客户端了,然而客户端压根就没有接收到第2-3步之间的数据传输,所有必须得有第四次客户端向服务端确认

    为什么客户端最后还要等待2MSL

    • 保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
    • 客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文

    为什么建立连接是三次握手,关闭连接是四次挥手

    • 建立连接的时候,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

    如果已经建立了连接,但是客户端突然出故障了

    • TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
  • 相关阅读:
    (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
    (转)Quartz任务调度(1)概念例析快速入门
    如何解决Win10预览版一闪而过的disksnapshot.exe进程?
    【转】SSH中 整合spring和proxool 连接池
    datatables 配套bootstrap3样式使用小结(1)
    PowerDesigner16逆向工程生成PDM列注释(My Sql5.0模版)
    PowerDesigner连接mysql逆向生成pdm
    Power Designer逆向操作(从mysql5.0生成数据库的物理模型)
    范仁义js课程---53、匿名函数应用
    范仁义js课程---52、匿名函数
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11090358.html
Copyright © 2011-2022 走看看