Java中的TCP协议(如果想知道Java中有关TCP协议的知识,那么只看这一篇就充 ...

瑞星  论坛元老 | 2025-4-26 21:41:48 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1809|帖子 1809|积分 5427

        媒介:TCP协议是网络通讯的基础,其提供可靠、面向毗连的数据传输,确保数据包按序到达且无丢失,TCP 广泛应用于文件传输、即时通讯和 Web 服务,是我们在学习网络编程的重要基础。

   

  ✨✨✨这里是秋刀鱼不做梦的BLOG
  ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客
  在正式开始讲解之前,先让我们看一下本文大致的讲解内容:


目次
1.TCP 头部构成
1. 源端标语
2. 目标端标语
3. 序列号
4. 确认号
5. 数据偏移
6. 保留位
7. 标志位
8. 窗口巨细
9. 校验和
10. 告急指针
11. 可选字段
12. 数据部分
2.TCP的可靠传输机制
        (1)确认应答(ACK)
        (2)序列号去重
        (3)超时重传
3.TCP毗连受理
        (1)三次握手
【1】客户端发送 SYN 请求
【2】服务器返回 SYN-ACK
【3】客户端发送 ACK,毗连建立
        (2)四次挥手
【1】客户端发送 FIN 关闭请求
【2】服务器返回 ACK
【3】服务器发送 FIN 关闭请求
【4】客户端返回 ACK,毗连关闭



1.TCP 头部构成

        TCP全称为 "传输控制协议(Transmission Control Protocol"),人如其名,其是要对数据的传输进行一个详细的控制,那么TCP协议的构成是什么样的呢?
TCP协议格式:

        TCP最小长度为 20 字节,如果包罗可选字段,最大可达 60 字节,这里我们对上述的每个构成进行一个简朴的总括:
字节偏移字段名称长度(比特)简朴说明0-15源端标语16发送方的端标语16-31目标端标语16接收方的端标语32-63序列号32数据包的序号64-95确认号32用于确认的序列号96-99数据偏移(头部长度)4以 4 字节为一个单位,最大值为 15(即 60 字节)100-102保留位3保留位置,值为 0103-111标志位9SYN、ACK、FIN 等控制毗连112-127窗口巨细16允许的接收窗口128-143校验和16用于确保数据正确性和完备性144-159告急指针16告急数据指针160-…可选字段0-40 字节可能包括 MSS、窗口缩放等…-…数据不固定传输的数据
        ——通过上边的表格内容,我们就大致了解了TCP的头部构成都有哪些了,现在让我们逐个进行讲解一下:
1. 源端标语

        用于表示发送方的端标语,确定命据从哪个端口发送,就像寄件人的地址,表示包裹是从哪个地方发送的。
2. 目标端标语

        用于表示接收方的端标语,确定命据要发往的端口,雷同收件人的地址,表示包裹要发送到哪里。
3. 序列号

        标识当前数据段的起始字节序号,确保数据按序到达,TCP 毗连建立时,序列号由发送方随机天生,其就相当于数据的编号,用于包管数据包的次序,如果数据被分成多份,那么这个编号能帮接收方按次序拼起来。
4. 确认号

        用于确认收到的数据,表示接收方盼望接收的下一个字节序号,用于对数据进行确认操纵,仅当 ACK 标志位为 1 时有效,这就雷同快递的签收单,表示东西已经被签收了一样。
5. 数据偏移

        用于指示 TCP 头部的长度,以4字节为单位,例如值为 5,那么头部长度为 5 × 4 = 20 字节
6. 保留位

        保留字段,当前未使用,必须填 0。
7. 标志位

        用于控制 TCP 毗连状态,其中包括
   

  • SYN(同步)——建立毗连(握手)。
  • ACK(确认)——确认收到数据。
  • FIN(终止)——关闭毗连。
  • RST(复位)——异常终止毗连。
  • PSH(推送)——立即发送数据。
  • URG(告急)——数据告急处理。
  • ECE/CWR/NS——用于拥塞控制。
  8. 窗口巨细

        表示接收方能接收的最大字节数,用于流量控制,这就好比像告诉发送方:我一次最多能接收多少数据,如果太多,就可能会溢出。
9. 校验和

        用于检测 TCP 头部和数据在传输过程中的错误,发送方计算并添补,接收方校验,就像快递防伪码一样。
10. 告急指针

        仅在 URG 标志位为 1 时见效,表示告急数据的偏移量。
11. 可选字段

        包罗最大段巨细、窗口缩放等选项,用于扩展 TCP 功能。
12. 数据部分

        其表示的是TCP头部背面的数据部分。
        ——至此我们就了解了TCP头部构成的所有内容了!!!

2.TCP的可靠传输机制

        为了确保数据可以或许可靠地传送到接收方,TCP采用了确认应答(ACK)序列号去重超时重传机制,下面我们逐一重点讲解这三个机制。
        (1)确认应答(ACK)

           确认应答(ACK) 是 TCP 中实现可靠传输的核心机制之一,其重要作用是确保发送的数据包可以或许乐成到达接收方,而且接收方可以或许及时告知发送方是否乐成收到数据。
  

工作原理:


  • 每个数据包都需要确认:当发送方发送数据包时,它会等待接收方的确认应答(ACK),接收方收到数据包后,会向发送方返回一个 ACK 包,表示已经确认收到了发送过来的数据包。
  • ACK的内容:ACK 包中包罗的是要接收到数据包的下一个盼望的序列号(即确认号),这意味着接收方已经乐成接收了给i序列号之前的所有数据包。
  • 次序包管:接收方每次确认的是最小未接收的数据包的序列号,这意味着通过序列号的确认,发送方知道哪些数据包已经乐成到达,哪些仍未到达。
        确认应答就好比发送方发送了数据包1、2、3、4,接收方收到数据包1、2后,会发送一个确认应答 ACK(3),表示它已经收到序列号小于3的数据包,盼望收到序列号为3的数据包。
        如许我们就了解了TCP的可靠传输机制的确认应答(ACK)机制了。

        (2)序列号去重

           序列号去重是用来处理数据包乱序和重复发送题目标,当网络不稳定或路由改变等缘故原由,数据包可能会乱序到达接收方,甚至可能出现重复数据包的题目。
  其工作原理:


  • 序列号的分配:每个数据包都被分配一个唯一的序列号,这个序列号用于标识数据包的次序,当接收方接收到数据包时,它会根据序列号来决定命据包的次序,确保数据的正确接收。
  • 乱序处理:当数据包乱序到达时,接收方可以根据序列号将它们重新排序,包管数据按正确的
  • 重复包的抛弃:如果接收方收到相同序列号的包,那么它就会抛弃该包,接收方只会向发送方确认新的数据包。
        从上面的工作原理中我们可以看出,序列号去重的操纵确保了数据的次序性,即使数据包乱序到达,接收方也能按照序列号正确地排序,而且通过序列号,接收方能识别重复的数据包
        如许我们就了解了TCP的可靠传输机制的序列号去重机制了。

        (3)超时重传

           超时重传它的重要作用是在数据丢失或网络延迟较高的情况下,确保数据最终可以或许到达接收方。
  

工作原理:


  • 发送数据并等待 ACK:发送方发送数据包后,会启动一个定时器,开始计时,等待接收方的 ACK 确认。
  • 超时判定:如果在设定的超时值内,发送方没有收到 ACK,它就会认为数据包丢失,并重新发送该数据包。
        从上面的先容中我们可以发现,在数据包丢失或网络延迟情况下,发送发可以或许重新发送数据包,从而包管数据最终到达接收方。
        如许我们就了解了TCP的可靠传输机制的超时重传机制了。

        ——那么学习完了上述的可靠传输的三个机制之后,接下来让我们学习一下TCP中有关毗连受理的知识。

3.TCP毗连受理

        在计算机网络中,TCP采用三次握手进行毗连建立,并使用四次挥手进行毗连关闭,那么什么是三次握手,什么又是四次挥手呢?
        (1)三次握手

        ——TCP 毗连的建立需要三次交互,确保客户端与服务器都准备就绪,并同步彼此的初始序列号,以下是其简略的步骤:

【1】客户端发送 SYN 请求

        ——客户端向服务器发送一个 SYN报文,表明本身要建立毗连,并带上一个初始序列号

【2】服务器返回 SYN-ACK

        ——服务器收到 SYN 后,如果同意建立毗连,会返回 SYN-ACK 报文,其中:
   

  • SYN 表示同意建立毗连。
  • ACK(Acknowledgment)表示确认客户端的 SYN。
  
【3】客户端发送 ACK,毗连建立

        ——客户端收到 SYN-ACK 之后,向服务器发送 ACK(确认)报文。
        如许我们就大致的了解了三次握手的流程了!!!

        (2)四次挥手

        ——TCP 毗连的关闭需要四次交互,确保双方都正确释放资源,防止数据丢失,以下是其简略的步骤:

【1】客户端发送 FIN 关闭请求

        ——当客户端不再需要通讯时,会发送 FIN(Finish) 报文

【2】服务器返回 ACK

        ——服务器收到 FIN 后,会发送一个 ACK 确认报文

【3】服务器发送 FIN 关闭请求

        ——服务器处理完剩余数据后,也发送 FIN 报文,关照客户端可以关闭

【4】客户端返回 ACK,毗连关闭

        ——客户端收到服务器的 FIN 后,发送 ACK 报文
           如许我们就大致的了解了四次挥手的流程了!!!

        从上文中我们初步的了解了TCP头部的构成,TCP的可靠传输机制和TCP毗连受理,这些对于我们了解TCP有着很大的资助,盼望读者可以耐烦的读完并进行总结明白!!!

以上就是本篇文章的全部内容了~~~


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表