图解TCP建立连接全过程

TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程。



上图画出了TCP建立连接的过程。假定主机A是TCP客户端,B是服务端。最初两端的TCP进程都处于CLOSED状态。图中在主机下面的是TCP进程所处的状态。A是主动打开连接,B是被动打开连接。

首先A向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,A进入SYN-SENT状态。

B收到请求后,向A发送确认。在确认报文段中把SYN和ACK位都置为1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时B进入SYN-RCVD状态。

A收到B的确认后,还要向B给出确认。确认报文段的ACK置为1,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接已经建立,A进入ESTABLISHED状态,当B收到A的确认后,也会进入ESTABLISHED状态。

以上给出的连接建立过程就是常说的TCP三次握手。

为什么A还要发送一次确认呢?这主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。

所谓已失效的连接请求报文段是这样产生的。A发送连接请求,但因连接请求报文丢失而未收到确认,于是A重发一次连接请求,成功后建立了连接。数据传输完毕后就释放了连接。现在假定A发出的第一个请求报文段并未丢失,而是在某个网络节点长时间滞留了,以致延误到连接释放以后的某个时间才到达B。本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误以为A又发了一次新的连接请求,于是向A发出确认报文段,同意建立连接。假如不采用三次握手,那么只要B发出确认,新的连接就建立了。

由于A并未发出建立连接的请求,因此不会理睬B的确认,也不会向B发送数据。但B却以为新的运输连接已经建立了,并一直等待A发来数据,因此白白浪费了许多资源。

采用TCP三次握手的方法可以防止上述现象发生。例如在刚才的情况下,由于A不会向B的确认发出确认,连接就不会建立。下面留个思考题给大家:如果在TCP第三次握手中的报文段丢失了会发生什么情况?

(0)

相关推荐

  • TCP断开连接过程详解

    上次我们讲了TCP三次握手建立连接的过程,今天我们结合双方状态的改变来讲讲TCP断开连接的过程:TCP四次挥手。 数据传输结束后,通信的双方都可释放连接。现在A和B都处于ESTABLISHED状态。A ...

  • 图解TCP通信三次握手和四次分手

    TCP协议非常重要,这里把它的连接和释放整理一下。 首先是三次握手: 1、 客户端发起,像服务器发送的报文SYN=1,ACK=0,然后选择了一个初始序号:seq=x。 SYN是干什么用的? 在链接的时 ...

  • 已成功与服务器建立连接但是在登录过程中发生错误的解决

    已成功与服务器建立连接,但是在登录过程中发生错误的解决方案 数据库一打开就提示 已成功与服务器建立连接,但是在登录过程中发生错误的解决方案 (provider: 共享内存提供程序, error: 0 ...

  • 路由器线路不通,无法建立连接

    路由器的线路不通,导致无法建立连接.可以按照以下方法进行尝试. 1.网线连接路由器WAN口和ADSL Modem,然后用电话线连接ADSL Modem的Line口.ADSL Modem与宽带路由器之间 ...

  • 电脑如何与plc建立连接(plc与电脑连接的方法)

    将编写好的PLC程序下载到PLC,是理论联系实际的第一步,毕竟,PLC程序空跑没有任何意义,弄些个走马灯一类的程序除了炫技,没有任何意义!!PLC编程的目的是让机械工程师设计的机器变成有灵魂的设备,可 ...

  • 通过端口 1433 连接到主机 的 TCP/IP 连接失败

    通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Connection refused: connect.请验证连接属性,并检查 SQL Server ...

  • 蓝牙bluesoleil 不能与该设备建立连接,请确认其

    蓝牙设备无法正常连接,而且它是不需要配对密码的,可还是出现无法连接,并"蓝牙bluesoleil 不能与该设备建立连接,请确认其电源开启且已设置为可发现模式",现在来解说如何解决这 ...

  • 已成功与服务器建立连接,在登录过程中发生错误

    数据库软件我们在用的时候,稍微不注意,就会出现各种错误.就比如说我今天打开数据库软件,直接就报错,莫名其妙,之前一直用的好好的,但不知道怎么突然就报错了,其实对于经常使用数据库的人员来说,也就没什么了 ...

  • win10玩dota2提示无法与任何服务器建立连接咋办

    在Windows10系统下玩dota2游戏的时候,提示无法与任何服务器建立连接,出现这样的情况怎么办呢?下面就来看一下详细的操作方法吧. 操作方法 01 在Windows10系统桌面,右键点击桌面底部 ...