TCP正常连接建立和终止总结

TCP总结
         TCP/IP( 传输控制协议/网间协议) 是一种网络通信协议、它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传输方式。

TCP头部结构有6个标识位
URG:紧急指针是否有效
ACK:表示确认号是否有效  (对TCP请求的确认标志)
PSH:提示接收端应用程序应该立即从接收缓冲区中读取数据,为接收后续数据腾出空间。
RST:要求对方重新建立连接。
SYN:请求建立一个连接 (仅在三次握手建立连接时有效,表示同步报文段)
FIN:同对方本端要关闭连接。 (标志用来结束一个TCP连接,标识此报文段是一个结束报文段)

三次握手建立连接

开始介绍一下三次握手的过程:


    第一次握手:其实是客户端发送一个带有SYN的数据报文段发送给服务器,对应在图片中就是从主机A->主机B(SYN=1,seq=i),seq为对应序列号为i。之后主机A进入SYN_SENT状态。同时等待服务器的确认
    第二次握手:服务器收到同步报文段后(也就是带有SYN的同步报文段),必须确定客户的同步报文段。然后自己也发送一个带有SYN的报文段,对应到图片中也就死第二个报文段,其中SYN=1,表示这是一个同步报文段,ACK=1,表示这是一个确认报文段,确认序号值为i+1,序号值为j。
    第三次握手:这次就是客户端收到确认同步报文段后,它向服务器发送确认包,对应到图片中也就是第三个报文段,ack=1也就是表示这是一个确认报文段,确认序号为j+1

三次握手建立后,客户端与服务器开始传送数据。
三次握手示意图:


四次握手关闭连接
接下来,我们来介绍下四次握手关闭

    第一次握手:表示客户端A发送给服务器一个带有SYN的结束报文段,用来关闭客户端A到服务端B的数据传送,对应到图片中也就是第一个报文段,FIN=1,seq=i,表示一个结束报文段
    第二次握手:服务端B接收到这个结束报文段后,它返回一个确认报文段,对应到图片中就是第二个确认报文段。其中ACK=1,ack=i+i,表示一个确认报文段,确认序号为i+1.
    第三次握手:服务器B关闭与客户端A的连接,他发送一个带有SYN结束报文段,对应图片上第三个报文段,其中 SYN=1,seq=j,表示结束报文段,序号为j。
    第四次握手:客户端A返回一个确认报文段,其中确认序号为j+1,对应图片上为第四个报文段,ACK=1,ack=j+1。
四次握手示意图:



总结:为什么建立连接需要三次握手?为什么关闭连接需要四次握手?为什么建立连接需要三次握手呢?
          TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(
即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.
关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.

    在关闭连接时,当收到对方的结束报文段时,表示对方没有数据发给你了,但是自己的数据未必全部发送完毕,所以你可能还需要继续发送一些数据之后在发送结束报文段给对方了表示你同意现在可以断开连接,所以关闭连接需要四次握手

    如果把三次握手改成两次握手,就有可能发生死锁。

下图是一次TCP正常连接建立和终止所对应的状态:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值