TCP连接管理(三次握手,四次挥手)

这篇具有很好参考价值的文章主要介绍了TCP连接管理(三次握手,四次挥手)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、回顾一下TCP包头

TCP连接管理(三次握手,四次挥手),tcp/ip,网络,网络协议

源端口号(Source Port):16 位字段,表示发送方的端口号。

目的端口号(Destination Port):16 位字段,表示接收方的端口号。

序列号(Sequence Number):32 位字段,表示发送方发送的字节流的序列号。用于实现数据的可靠传输和顺序传递。

确认号(Acknowledgment Number):32 位字段,表示接收方期望接收的下一个字节的序列号。用于实现数据的可靠传输和确认。

数据偏移(Data Offset):4 位字段,表示 TCP 首部的长度,以 32 位的字为单位。最大值为 15,对应的首部长度为 60 字节。

保留(Reserved):6 位字段,保留供将来使用,目前置为 0。

U/A/P/R/S/F:各占 1 位的标志位。
U:紧急(Urgent)标志位,表示紧急指针字段是否有效。
A:确认(Acknowledgment)标志位,表示确认号字段是否有效。
P:推送(Push)标志位,表示接收方应该尽快将数据交给应用层。
R:复位(Reset)标志位,用于中断连接。
S:同步(Synchronize)标志位,用于建立连接 三次握手。
F:终止(Finish)标志位,用于释放连接 四次挥手。
窗口大小(Window Size):16 位字段,表示接收方的窗口大小,用于流量控制。

校验和(Checksum):16 位字段,用于校验 TCP 首部和数据的完整性。

紧急指针(Urgent Pointer):16 位字段,仅在紧急标志位为 1 时有效,表示紧急数据的边界。

TCP 报文段的首部长度为 20 字节(不包括选项字段)。首部长度可变取决于选项字段的存在与长度。

二、连接的建立——“三次握手”

TCP 建立连接的过程叫做握手。
采用三报文握手:在客户和服务器之间交换三个 TCP 报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生 TCP 连接建立错误。

TCP连接管理(三次握手,四次挥手),tcp/ip,网络,网络协议

  1. B 的 TCP 服务器进程先创建传输控制块 TCB,准备接受客户进程的连接请求。

  2. A 的 TCP 向 B 主动发出连接请求报文段,其包头中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
    注意:TCP规定,SYN 报文段(即SYN = 1的报文段)不能携带数据,但要消耗掉一个序号。

  3. B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
    B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y。
    这个报文段也不能携带数据,但同样要消耗掉一个序号。

  4. A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。
    A 的 TCP 通知上层应用进程,连接已经建立。
    TCP 标准规定:ACK 报文段可以携带数据。
    但如果不携带数据,则不消耗序号。下一个数据报文段的序号仍是 seq = x + 1。

  5. B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。双方可以开始数据传送。

三、连接的建立——“四次挥手”

TCP 连接释放过程比较复杂。
数据传输结束后,通信的双方都可释放连接。
TCP 连接释放过程是四报文握手。

TCP连接管理(三次握手,四次挥手),tcp/ip,网络,网络协议

  1. A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。
    A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。
    TCP规定:FIN 报文段即使不携带数据,也消耗掉一个序号。

  2. B 发出确认,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = v。
    TCP 服务器进程通知高层应用进程。
    从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭 (half-close) 状态。B 若发送数据,A 仍要接收。

  3. 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。
    FIN=1,ACK=1,确认号 ack = u+1。

  4. A 收到连接释放报文段后,必须发出确认。
    ACK=1,确认号 ack=w+1,自己的序号 seq = u + 1

保活计时器

  1. 用来防止在 TCP 连接出现长时期空闲。

  2. 通常设置为 2 小时 。

  3. 若服务器过了 2 小时还没有收到客户的信息,它就发送探测报文段。

  4. 若发送了 10 个探测报文段(每一个相隔 75 秒)还没有响应,就假定客户出了故障,因而就终止该连接。文章来源地址https://www.toymoban.com/news/detail-536284.html

到了这里,关于TCP连接管理(三次握手,四次挥手)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/qq_36091214/article/details/131608409

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包