【网络原理】TCP协议如何实现可靠传输(确认应答机制)

这篇具有很好参考价值的文章主要介绍了【网络原理】TCP协议如何实现可靠传输(确认应答机制)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。

🤼专栏收录于:计算机网络原理


本篇主要讲解:TCP协议段格式,TCP的序列号,SYN、ACK标志位,确认应答机制。

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

目录

1、TCP协议段格式

1.1 TCP格式段

1.2 TCP协议段格式

2、确认应答机制

2.1 后发先至

2.2 确认序号


1、TCP协议段格式

1.1 TCP格式段

TCP协议段(Segment)是在数据传输层中,用于实现两个进程之间可靠的数据传输。

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

源端口/目的端口:源端口为数据的发送者,目的端口为数据的接受者。

32位序号/确认号:TCP将每个字节的数据都进行了编号即为序列号。

TCP标志位:TCP的6位标志位默认为0,当返回相应的报文时,会把该报文位设置位1。

URG(Urgent):表示是否包含紧急数据。

ACK(Acknowledgment):表示确认号是否有效。

PSH(Push):表示是否立即推送。

RST(Reset):表示连接是否复位。携带RST标识的称为复位报文段。

SYN(Synchronize):表示同步请求/应答。携带SYN标识的称为同步报文段

FIN(Finish):表示传输结束。携带FIN标识的为结束报文段。

了解到 TCP 的协议格式段后,我们来模拟观察网络通信过程:

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

通过上图,我们观察到 主机A  向 主机B 传输数据时,提供了以 1000 为单位的编号。这些编号称为 序列号。

我们可认为 主机A 向 主机B 发送数据为一个请求 即 SYN。TCP给这个请求随机分配一个序列号。

并且 主机B 在收到 主机A 的数据后会作出回应,这个回应称之为 即 ACK。只有接收方返回 ACK 后,这样的通信才算完成。

确认序列号 的是序列号的下一个字节数。当 SYN 请求序列号为 1000,则 ACK 确认序列号为 1001,对照上图、下图进行理解。

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

注意,当ACK=1时,表示TCP报文段中确认号字段有效,因此需要对它进行确认应答。ACK的应答是 TCP 可靠传输 机制的关键。


1.2 TCP协议段格式

TCP协议段格式如下所示

16位源端口号   16位目的端口号
--------------------------------
32位序列号
--------------------------------
32位确认号
--------------------------------
4位数据偏移    6位保留    6位标志位
--------------------------------
16位窗口大小
--------------------------------
16位校验和    16位紧急指针
--------------------------------
选项(可选,长度不定)

源端口号和目的端口号:分别表示发送方和接收方的端口号。

序列号:表示发送方发送数据的序列号,用于接收方确认收到的数据是否完整。

确认号:表示期望接收到的下一个数据的序列号。

数据偏移:表示TCP头部长度占多少个32位字长。

保留:用于将头部填充到32位字长的长度。

标志位:包括6个标志位,分别为URG、ACK、PSH、RST、SYN和FIN,用于控制TCP连接的建立、维护和关闭等操作。

窗口大小:表示接收方缓存区的大小。

校验和:用于检查TCP头部和数据的完整性。

紧急指针:表示数据中包含的紧急数据在数据流中的位置。

选项:可选的TCP头部选项,用于支持一些额外的功能。


2、确认应答机制

TCP 在通信过程中,TCP认为发送方发送的数据为: SYN ,即发出一个请求。接受方返回的数据为:ACK,即确切请求有效。

当我们进行信息传输时,我发信息给张三:“你吃饭了吗?”,张三回复:“吃了,你呢?”。

网络应当是以下场景

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

但网络通信的过程中由于特殊情况难免会出差错,则会造成 先发后至 的情况,即先发的消息被后返回的消息回应。


2.1 后发先至

有以下通信场景

我:“一起吃个饭吗,我请客?”,张三回复:“好啊,好啊”。

我:“你借我 500 块钱”,张三回复:“滚蛋”。

正常情况如下所示

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

由于先发后置

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

由于先发后至,导致

我:“一起吃个饭,我请客?”,张三回复“滚蛋”。

我:“你借我 500 块钱”,张三回复“好啊,好啊”。

这样就会造成数据不可靠传输。因此,TCP协议在网络通信中会将信息传输的过程引入一个 确认序号 来保证数据传输可靠性。


2.2 确认序号

TCP 在网络通信过程中,会根据信息的发送顺序来引入相应的确认号。即发送方序列号,接受方为确认序列号,确认序列号为序列号下一个字节数。

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

在上图中,1000序列号对应的消息只会被1001确认序列号回复,2000序列号的消息只会被2001确认序列号回复。

注意,TCP在通信的过程中会 随机 给发送方提供序列号,接收方根据序列号来返回确认序列号这样在传输过程中就相对安全了。


以上TCP通信过程中,引入了序列号来保证数据可靠传输,但还有在网络通信中由于网络不好(丢包,网卡等)会造成数据传输不了,因此TCP还会通过 超时重传 机制来保证数据安全传输。在下期博文我会详细讲解。

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

 本编博文到这里就结束了,感谢点赞、评论、收藏、关注~文章来源地址https://www.toymoban.com/news/detail-485671.html

到了这里,关于【网络原理】TCP协议如何实现可靠传输(确认应答机制)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 网络原理(二)TCP的可靠传输

    网络协议的在实际运用是分为5层协议及: 应用层 传输层 网络层 数据链路层 物理层 这五层结构在,java 网络编程中已经有所现,具体用法具体实现的功能,都有。 这里主要的一个协议也是目前网络上最常用的一个协议,HTTP协议。 这层结构,决定数据要传输什么,拿到数据

    2024年02月09日
    浏览(39)
  • 【网络】传输层——UDP | TCP(协议格式&&确认应答&&超时重传&&连接管理)

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 现在是传输层,在应用层中的报文(报头 + 有效载荷)就不能被叫做报文了,而是叫做 数据段 (报头 + 有效载荷),传输层的有效载荷就是应用层的完整报文。 端口号(port):标识了一个主机上

    2024年02月13日
    浏览(45)
  • 【lwip】14-TCP协议之可靠传输的实现(TCP干货)

    ‍ 前面章节太长了,不得不分开。 这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。 参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html ‍ lwip的时钟机制可以翻看前面章节。 lwip的TCP可靠传传输的实现离不开两个时钟处理函数:

    2024年02月06日
    浏览(49)
  • 【lwip】14-TCP协议分析之TCP协议之可靠传输的实现(TCP干货)

    ‍ 前面章节太长了,不得不分开。 这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。 参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html ‍ lwip的时钟机制可以翻看前面章节。 lwip的TCP可靠传传输的实现离不开两个时钟处理函数:

    2024年02月06日
    浏览(57)
  • 网路原理-传输层UDP,TCP/IP(确认应答,超时重传,连接管理,三次握手,四次挥手,状态转换,流量控制,滑动窗口,拥塞控制,延时应答,捎带应答,异常情况,面向字节流)-网络层(IP协议,地址管理)

    本节重点 • 理解传输层的作⽤,深⼊理解TCP的各项特性和机制 • 对整个TCP/IP协议有系统的理解 • 对TCP/IP协议体系下的其他重要协议和技术有⼀定的了解 我们之前编写完了基本的 java socket ,要知道,我们之前所写的所有代码都在应⽤层,都是为了 完成某项业务,如翻译等。

    2024年04月15日
    浏览(58)
  • 哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理

    哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议 哈工大计算机网络课程传输层协议详解之:TCP协议 哈工大计算机网络课程传输层协议详解之:拥塞控制原理剖析 什么是可靠? 不错、不丢、不乱 可靠数据传输协议 可靠数据传输对应用层、传输层、链路

    2024年02月12日
    浏览(46)
  • 计算机网络-TCP如何保证传输可靠性

    TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。 TCP协议如何确保传输的可靠性的? TCP协议保证数据传输可靠性的方式主要有: 1.校验和 2.序列号 3.确认应答 4.超时重传 5.连接管理 6.流量控制 7.拥塞控制 1.校验和 发送方:在发送数据之前计算检验和,并进行校验

    2024年02月05日
    浏览(46)
  • TCP如何保证可靠性,TCP如何实现可靠性传输的

    tcp 如何保证可靠性 大家都知道TCP是可靠性传输协议,既然是可靠的,就需要解决比如包丢失了、数据被破坏了、包重复了、乱序了等等这样的问题。下面将从几个方面介绍TCP的可靠性。 1. 校验和 TCP每一段报文都有校验和,这保证了报文不被破坏或篡改,如果收到的报文在校

    2024年02月10日
    浏览(50)
  • 8.10 TCP是如何实现可靠传输的

    目录 TCP 最主要的特点 面向流的概念 Socket 有多种不同的意思 TCP是如何实现可靠传输的? A 如何知道 B 是否正确收到了 M1 呢?  确认丢失 确认迟到  连续 ARQ 协议 累计确认 TCP报文段的首部格式 TCP 最主要的特点 TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服

    2024年02月11日
    浏览(46)
  • 网络原理(四):传输层协议 TCP/UDP

    目录 应用层 传输层 udp 协议  端口号 报文长度(udp 长度) 校验和 TCP 协议 确认应答 超时重传 链接管理 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 总结 我们第一章让我们对网络有了一个初步认识,第二章和第三章我们通过代码感受了网络通信程序。 而本章的 通信原

    2023年04月27日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包