TCP的连接与终止-三次握手和四次挥手

当使用TCP协议的应用程序需要向服务器获得资源的时候,就需要通过TCP协议去建立一种关系,这个关系维系了客户端与服务器之间的通信。握手的主要目的,就是为了提供高可靠的信息沟通机制!确保沟通的顺畅!防止失效的连接对服务器造成困扰!

当我们打电话的时候,往往都是这样子:

张三:你好我是张三!请问是李四么,

李四:你好张三,我是李四!你有什么事么???

张三:你好李四,我想问你个问题!XXXXXX。。。


下面我们用图来说明TCP建立连接的步骤!例如我用电脑浏览器,访问www.liujinghui.com。

第一步:客户端发送请求连接服务器的报文


报文:
ACK(确认序号有效标记位):0
SYN(发起一个新连接):1

seq(标明我当前发送数据包的序列号):x

第二步:服务器监听程序收到了客户端发来的请求报文


报文:
ACK(确认序号有效标记位):1
SYN(发起一个新连接):1
seq(标明我当前发送数据包的序列号):y

ack(确认对方序列号并希望获得下一个序列号的数据包) =x+1

第三步:客户端收到了服务器发来的回话!进行最后一次确认!


报文:
ACK(确认序号有效标记位):1
seq(标明我当前发送数据包的序列号,+1表示下一个数据包):x+1

ack(确认对方序列号并+1表示希望获得下一个序列号的数据包) =y+1

======上述活动完成后tcp连接即可建立!======

========通信ing......=======

========通信ing......=======

========通信ing......=======

========通信ing......=======

========通信ing......=======

======上述通信完成后断开tcp连接!      ======

第一步:客户端给服务器发送FIN包,要求关闭客户端到服务器的数据连接。


报文:
FIN(要求释放连接):1
ACK(确认序列号有效):1
seq(当前的数据包):m

ack(期待获得的服务器数据包):n

第二步:服务器收到FIN后,发回一个标志位ACK=1,确认序号为收到的序号加1,希望获得回复,本次发送序号为收到的客户端发来的确认序号n。


报文:
ACK(序列号有效):1
seq(本报文包序列号):n
ack(希望获得的确认包序列号):m+1

第三步:服务器接着发送FIN报文包,希望断开连接,并等待收到客户端回复


报文:
FIN(要求释放连接):1
ACK(确认序列号有效):1
seq(发送自己新的序列号):x
ack(希望客户端回复包的序列号):m+1

第四步:客户端确认过眼神 是该分手的人!


报文:
ACK(确认序列号有效):1
seq(发送自己的回复包序列号):m+1

ack(对方确认包序列号):x+1


到此为止,连接就中断了!====

猜你喜欢

转载自blog.csdn.net/qq_31615049/article/details/80635790