[计算机网络]深度学习传输层TCP协议

这篇具有很好参考价值的文章主要介绍了[计算机网络]深度学习传输层TCP协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💓 博客主页:从零开始的-CodeNinja之路

⏩ 收录专栏:深度学习传输层TCP协议
🎉欢迎大家点赞👍评论📝收藏⭐文章

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

前提概括

TCP全称为"传输控制协议(Transmission Control Protocol"),要对数据的传输进行⼀个详细的控制;
端口号(Port):标识了⼀个主机上进行通信的不同的应用程序;

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
端口号范围划分

  • 0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号都是固定的.

  • 1024-65535:操作系统动态分配的端口号.客户端程序的端口号,就是由操作系统从这个范围分配 的.

一: TCP协议段格式

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
源/目的端⼝号:表示数据是从哪个进程来,到哪个进程去;

  • 32位序号/32位确认号:意思是告诉发送者,我已经收到了哪些数据;

  • 4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是15* 4=60

  • 6位标志位:

  1. URG:紧急指针是否有效

  2. ACK:确认号是否有效

  3. PSH:提⽰接收端应⽤程序⽴刻从TCP缓冲区把数据读⾛

  4. RST:对⽅要求重新建⽴连接;我们把携带RST标识的称为复位报⽂段

  5. SYN:请求建⽴连接;我们把携带SYN标识的称为同步报⽂段

  6. FIN:通知对⽅,本端要关闭了,我们称携带FIN标识的为结束报⽂段

  • 16位窗口大小:一次传输数据的容量大小
  • 16位校验和:发送端填充,CRC校验.接收端校验不通过,则认为数据有问题.此处的检验和不光包含TCP首部,也包含TCP数据部分.
  • 16位紧急指针:标识哪部分数据是紧急数据;

二:确认应答

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

TCP将每个字节的数据都进行了编号.即为序列号.
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

每⼀个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下⼀次你从哪里开始
发.

三:超时重传

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

  • 主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B;
  • 如果主机A在⼀个特定时间间隔内没有收到B发来的确认应答,就会进行重发;

但是,主机A未收到B发来的确认应答,也可能是因为ACK丢失了;
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
因此主机B会收到很多重复数据.那么TCP协议需要能够识别出那些包是重复的包,并且把重复的丢弃掉.
这时候我们可以利用前⾯提到的序列号,就可以很容易做到去重的效果.

四:连接管理

在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
建力连接的意义:

  1. 确认当前通信路径是否畅通.
  2. 协商参数,通信双方共同确认⼀些通信中的必备参数数值.
  3. 验证通信双方的发送和接收能力是否正常

五:流量控制

接收端处理数据的速度是有限的.如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送
端继续发送,就会造成丢包,继而引起丢包重传等等⼀系列连锁反应.

  • 因此TCP支持根据接收端的处理能力,来决定发送端的发送速度.这个机制就叫做流量控制(Flow Control);
  • 接收端将自己可以接收的缓冲区大小放⼊TCP首部中的"窗口大小"字段,通过ACK端通知发送端;
  • 窗口大小字段越大,说明网络的吞吐量越高;
  • 接收端⼀旦发现自己的缓冲区快满了,就会将窗口大小设置成⼀个更小的值通知给发送端;
  • 发送端接受到这个窗⼝之后,就会减慢自己的发送速度;
  • 如果接收端缓冲区满了,就会将窗口置为0;这时发送方不再发送数据,但是需要定期发送⼀个窗⼝探 测数据段,使接收端把窗口大小告诉发送端.

[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
接收端如何把窗口大小告诉发送端呢?回忆我们的TCP首部中,有⼀个16位窗⼝字段,就是存放了窗⼝大小信息

六:拥塞控制

TCP引入慢启动机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输
数据;
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
此处引入⼀个概念程为拥塞窗口

  • 发送开始的时候,定义拥塞窗口大小为1;
  • 每次收到⼀个ACK应答,拥塞窗⼝加1;
  • 每次发送数据包的时候,将拥塞窗⼝和接收端主机反馈的窗口大小做比较,取较小的值作为实际发送 的窗口;

像上面这样的拥塞窗⼝增长速度,是指数级别的."慢启动"只是指初使时慢,但是增⻓速度⾮常快.

  • 为了不增⻓的那么快,因此不能使拥塞窗口单纯的加倍.
  • 此处引⼊⼀个叫做慢启动的阈值
  • 当拥塞窗口超过这个阈值的时候,不再按照指数方式增长,而是按照线性方式增长
  • 当TCP开始启动的时候,慢启动阈值等于窗⼝最大值
  • 在每次超时重发的时候,慢启动阈值会变成原来的⼀半,同时拥塞窗⼝置回1;

少量的丢包,我们仅仅是触发超时重传;大量的丢包,我们就认为网络拥塞;
当TCP通信开始后,网络吞吐量会逐渐上升;随着网络发生拥堵,吞吐量会立刻下降;
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
拥塞控制,归根结底是TCP协议想尽可能快的把数据传输给对方,但是又要避免给网络造成太大压力的折中方案.

七:滑动窗口

刚才我们讨论了确认应答策略,对每⼀个发送的数据段,都要给⼀个ACK确认应答.收到ACK后再发送下
⼀个数据段.这样做有⼀个比较大的缺点,就是性能较差.尤其是数据往返的时间较长的时候.既然这样⼀发⼀收的⽅式性能较低,那么我们⼀次发送多条数据,就可以大大的提高性能(其实是将多个段的等待时间重叠在⼀起了).
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
窗口大小指的是无需等待确认应答而可以继续发送数据的最⼤值.上图的窗口大小就是4000个字节(四个段).

  • 发送前四个段的时候,不需要等待任何ACK,直接发送;
  • 收到第⼀个ACK后,滑动窗⼝向后移动,继续发送第五个段的数据;依次类推;
  • 操作系统内核为了维护这个滑动窗⼝,需要开辟发送缓冲区来记录当前还有哪些数据没有应答;只 有确认应答过的数据,才能从缓冲区删掉;
  • 窗口越大,则网络的吞吐率就越高;

那么如果出现了丢包,如何进行重传?这里分两种情况讨论.
情况⼀:数据包已经抵达,ACK被丢了.
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

这种情况下,部分ACK丢了并不要紧,因为可以通过后续的ACK进行确认;
情况⼆:数据包就直接丢了
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

  • 当某⼀段报文段丢失之后,发送端会⼀直收到1001这样的ACK,就像是在提醒发送端"我想要的是 1001"⼀样;

  • 如果发送端主机连续三次收到了同样⼀个"1001"这样的应答,就会将对应的数据1001-2000重新发送;

  • 这个时候接收端收到了1001之后,再次返回的ACK就是7001了(因为2001-7000)接收端其实之前就
    已经收到了,被放到了接收端操作系统内核的接收缓冲区中;

这种机制被称为"高速重发控制"(也叫"快重传").

八:延迟应答

如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小.

  • 假设接收端缓冲区为1M.⼀次收到了500K的数据;如果立刻应答,返回的窗⼝就是500K;
  • 但实际上可能处理端处理的速度很快,10ms之内就把500K数据从缓冲区消费掉了;
  • 在这种情况下,接收端处理还远没有达到自己的极限,即使窗口再放大一些,也能处理过来;
  • 如果接收端稍微等⼀会再应答,比如等待200ms再应答,那么这个时候返回的窗口大小就是1M;

⼀定要记得,窗⼝越大,网络吞吐量就越大,传输效率就越高.我们的目标是在保证网 络不拥塞的情况下
尽量提高传输效率;
[计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议

九:捎带应答

在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是"⼀发⼀收"的.意味着客户端给服务器说了"How are you",服务器也会给客⼾端回⼀个"Fine,thank you";那么这个时候ACK就可以搭顺风车,和服务器回应的"Fine,thank you"⼀起回给客户端

TCP小结

为什么TCP这么复杂?因为要保证可靠性,同时又尽可能的提高性能.
可靠性:

  • 确认应答

  • 超时重发

  • 连接管理

  • 流量控制

  • 拥塞控制

提高性能:

  • 滑动窗口
  • 快速重传
  • 延迟应答
  • 捎带应答

其他:文章来源地址https://www.toymoban.com/news/detail-828694.html

  • 定时器(超时重传定时器,定时器,TIME_WAIT定时器等)
    [计算机网络]深度学习传输层TCP协议,计算机网络,tcp/ip,网络协议
    如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!💓 💓 💓

到了这里,关于[计算机网络]深度学习传输层TCP协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【计算机网络】传输层协议 -- TCP协议

    【计算机网络】传输层协议 -- TCP协议

    认识可靠性 现在的计算机大多都是基于冯诺依曼体系结构的 虽然这里的输入设备、输出设备、内存、CPU是在同一个机器上的,但是它们彼此间却是相互独立的。如果它们之间要进行通信,那就必须要用“线”连接起来,其中连接内存和外设之间的“线”叫做IO总线,连接CP

    2024年02月14日
    浏览(8)
  • 【计算机网络】传输层协议——TCP(上)

    【计算机网络】传输层协议——TCP(上)

    TCP报文 等于报头 加 有效载荷 TCP的标准报头长度 整体为20字节 报头的宽度是0-31,表示报头所对应的字节数 (4字节)报文对应的宽度 为0-31 有效的标准报头长度一共 5行,所以 整体为20字节 选项 如:客户端和服务器建立好了链接,但这个链接长时间不关,并且也不发数据,所

    2024年02月09日
    浏览(10)
  • 【计算机网络】传输层协议——TCP(下)

    【计算机网络】传输层协议——TCP(下)

    整个网络中的所有主机和设备 遵守的是 TCP/IP协议 如: 一个班中有30个人,进行考试,只有2个或者3个人挂科了,这很正常 但若只有2个或者3个人过了,其他人都挂科了,就很不正常 同样是挂科,挂少和挂多 是不同的事情 当主机A给主机B发送消息时 若发送1000个报文,只有

    2024年02月08日
    浏览(9)
  • 计算机网络——20面向连接的传输:TCP

    计算机网络——20面向连接的传输:TCP

    点对点 一个发送方、一个接收方 可靠的、按顺序的字节流 没有报文边界 管道化(流水线) TCP拥塞控制和流量控制设置窗口大小 发送和接收缓存 全双工数据 在同一连接中数据流双向流动 MSS:最大报文段大小 面向连接 在数据交换之前,通过握手(交换控制报文)初始化发

    2024年02月21日
    浏览(10)
  • 【计算机网络】TCP传输控制协议——三次握手

    【计算机网络】TCP传输控制协议——三次握手

    一开始,客户端和服务端都处于CLOSE状态,先是服务端监听某个端口,处于LISTEN状态。 然后客户端主动发起连接SYN,之后处于SYN-SEND状态。 服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RECV状态。 客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处

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

    计算机网络-TCP如何保证传输可靠性

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

    2024年02月05日
    浏览(10)
  • 计算机网络——第四层:传输层以及TCP UDP

    计算机网络——第四层:传输层以及TCP UDP

            连接模式的传输。         保证按顺序传送数据包。         流量控制、错误检测和在数据包丢失时的重传。         用于需要可靠传输的应用,如网络(HTTP/HTTPS)、电子邮件(SMTP, IMAP, POP3)和文件传输(FTP)。         数据报模式。        

    2024年01月21日
    浏览(12)
  • 计算机网络笔记:TCP协议 和UDP协议(传输层)

    计算机网络笔记:TCP协议 和UDP协议(传输层)

    TCP 和 UDP都是传输层协议,他们都属于TCP/IP协议族。 TCP的全称是 传输控制协议 是一种 面向连接的、可靠的、基于字节流 的 传输层 通信协议。TCP 是面向连接的、可靠的流协议(流就是指不间断的数据结构) TCP报文 是TCP层传输的数据单元,也称为 报文段 ,一个TCP报文段由

    2024年02月02日
    浏览(10)
  • 【计算机网络笔记】传输层——TCP特点与段结构

    【计算机网络笔记】传输层——TCP特点与段结构

    什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率 计算机网络体系结构概念 OSI参考模型

    2024年02月06日
    浏览(10)
  • 【计算机网络实验】TCP和UDP传输过程仿真与分析

    【计算机网络实验】TCP和UDP传输过程仿真与分析

    实验内容 TCP 和UDP 传输过程仿真与分析 实验目的 使用路由器连接不同的网络 使用命令行操作路由器 通过抓取HTTP报文,分析TCP连接建立的过程 通过抓取DNS报文,分析UDP数据包传输过程 实验要求 使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程,

    2024年02月03日
    浏览(16)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包