电脑之家 - 专业计算机基础知识与电脑技术学习网站
分类导航

路由器|交换机|网络协议|网络知识|

服务器之家 - 电脑之家 - 网络技术 - 网络协议 - 终于把TCP传输层协议搞明白了

终于把TCP传输层协议搞明白了

2021-10-28 22:16厦门微思网络小微 网络协议

TCP既管理来自各上层的数据报流,也管理来自IP层的数据报流。同时它还必须兼顾优先级和安全性。

终于把TCP传输层协议搞明白了

传输控制协议(TCP)

传输控制协议可向IP层及其上各层提供大量服务。最为重要的是它可向各上层提供面向连接的服务,使各上层启动应用程序,以确保网络上所发送的数据报被完整接收。就这种作用而言,TCP的作用是提供可靠通信的有效报文协议。一旦数据报被破坏或丢失,通常是TCP(不是高层中的应用程序)将其重新传输。

TCP既管理来自各上层的数据报流,也管理来自IP层的数据报流。同时它还必须兼顾优先级和安全性。TCP必须能够处理它上面的应用程序的终端,该终端正等待着进入的数据报以及各低层中的故障。TCP还必须维护TCP层内外所有数据流的状态表。独立层内的这些服务的隔离能够启动要设计的应用程序,而不必考虑控制或报文的可靠性。如果没有TCP层,每个应用程序都必须处理这些服务本身,这是一种资源浪费。

TCP驻留在传输层,位于IP之上,但在各上层及其应用程序之下,如图7-1所示。TCP只驻留在实际处理数据报的设备中,以确保数据报从源计算机传输到目标计算机。它不驻留在仅路由数据报的设备上,所以网关中没有TCP层。这是很有意义的,因为在网关上,数据报在分层模式中不必比IP层传输到最高层。

因为TCP是面向连接的协议,它负责保证数据从源计算机到目标计算机的传输(即终端对终端通信),因此,TCP必须从信宿计算机接收通信信息,以确认数据报的接收。虚拟电路这一术语通常用于指示在这两个终端计算机之间传输的信号握手,它们大多数是简单的确认报文(接收确认或故障代码)和数据报序号。

终于把TCP传输层协议搞明白了

图:TCP提供终端对终端的通信

为了描述TCP的作用,有必要跟踪两台计算机之间的一个样本报文。报文由应用程序生成,它从体系结构的下一个高层通过某些协议(通常指上层协议或ULP,以指明它驻留在TCP之上)传输到TCP。报文按流传输,流是非同步发送的单个字符序列。这与大多数协议是有区别的,大多数协议通常都使用固定的数据块。程序只处理常规构造的数据块或固定尺寸的报文,所以这里涉及到某些转换问题。

TCP接收字节流并将它们集中到TCP数据段或包。在组合数据段的过程中,要加上头标信息。每个数据段都有已计算的校验和,并嵌入在头标中,如果整个报文中包括不止一个数据段,则它还有序号。该数据段的长度通常由TCP或系统管理员设置的系统值来决定。

如果要求双向通信(如与Telnet或FTP通信),并且为了路由在将数据段传输到IP之前,则需在发送和接收计算机之间建立连接(虚拟电路)。首先发送TCP的软件向接收计算机提出建立TCP连接的请求,请求报文中有个唯一数(称为插口号),用以标识发送计算机的连接。接收TCP的软件指定它自己的唯一插口号,并将它发回到源计算机。在虚拟电路终止之前,这两个唯一数定义两台计算机之间的连接。

虚拟电路建立之后,TCP将数据段发送到IP软件,IP软件将其作为数据报通过网络发送该报文。经过网络上的复杂过程之后,接收计算机的IP将接收到的数据段传输到接收计算机的TCP层,在此处理该数据段,并使用上层协议将其传输到它上面的应用程序。

如果报文包括多个数据段,接收TCP软件根据每个数据段头标中包含的序号将报文分解。如果数据丢失或损坏(可通过校验和确定),TCP将文件中带有错误序号的报文返回,然后,源发送TCP软件重新发送这个错误数据段。

如果整个报文只有一个数据段,在与该段的校验和重新计算的值比较之后,接收TCP软件产生肯定确认(ACK)或请求重新发送该数据段,并将其发回到发送层。

接收计算机TCP的实施可以执行简单的流控制,以防止缓冲器过载。它通过向发送计算机发送一个窗口值来实现这种控制,然后,发送计算机发送合适的字节填充该窗口。这样可在两台计算机之间提供一个信息交换的协议,尽管这样确实会降低传输速度并使网络信息量稍有增加。

与大多数基于连接的协议一样,定时器是TCP的一个很重要的方面。定时器的使用可确保在等待ACK或重复ACK报文,避免不必要的时间耽搁。如果定时器到时,定时处理程序通常会造成从源计算机重发数据报。

使用TCP时,定时器也会导致一些麻烦。TCP规范只提供确认正确接收的最大数据报号,但这样不能正确处理零散的接收。如果报文由多个顺序混乱的数据报组成,该规范说明在接收到所有数据报之前,TCP无法确认报文是否被接收。所以,即使该序列中部的一个数据报几乎接收成功,定时处理程序也可能执行,并使所有数据报必须重新发送。对于大型报文,这样可能造成网络通信量激增。

如果接收TCP软件接收到重复的数据报(定时期满后重新传输),TCP的接收方案将放弃任何重复数据报,不发送重复ACK报文,发送系统只关心报文是否被接收,并不关心对方收到多少份。

TCP没有否定确认(NAK)功能,它根据定时程序来指明没有确认。如果定时程序在发送数据报后未接收确认便执行,则认为该数据报已经丢失,并重新传输。发送TCP软件在正确确认之前,在缓冲器中保存多份所有未确认的数据报。当确认证实后,重发定时程序中止运行,从缓冲器中删除该数据报。

TCP支持来自上层协议的进栈功能。应用程序希望立即发送数据,并且证实传输到TCP的报文已被传输成功,这时可以使用进栈功能,为此,在ULP连接中设置一个进栈标志,通知TCP尽快将应用程序中的缓存信息发送到信宿(相反,在准备发送之前一直保存在缓冲器中)。

原文地址:https://mp.weixin.qq.com/s?__biz=MjM5MTA0NzUwMA==&mid=2650620812&idx=1&sn=0642b35f311547856b5de24a95eebf16&chksm=beb269af89c5e0b983381fe99a0bae8f8e06afd2d9472134e66b9a70a3fa46b1ef493c5921c0&mpshare=1&s

延伸 · 阅读

精彩推荐
  • 网络协议一文读懂 https 底层原理

    一文读懂 https 底层原理

    既然https协议本质只是http上加了安全层,本文就主要将安全层是怎么实现的。当然要靠加密。加密又分成对称加密和非对称加密。...

    Java知音11462021-12-26
  • 网络协议5分钟看懂互联网安全协议IPSec

    5分钟看懂互联网安全协议IPSec

    通信双方需要一个真正在IP层提供安全性的方法,保证发送和接收的数据是安全的,IPSec(Internet Protocol Security,互联网安全协议)做到了。...

    中兴文档9342021-11-01
  • 网络协议OAuth2.0协议扩展——OIDC认证协议

    OAuth2.0协议扩展——OIDC认证协议

    客户端无法认定资源拥有者就是正确的拥护者,虽然市面上的OAuth 2.0能够保证授权的安全性,但是OAuth 2.0本身并没有对用户认证提供明确的规范。...

    码农小胖哥4952021-08-02
  • 网络协议三分钟教你读懂通信协议

    三分钟教你读懂通信协议

    协议到底是什么?为什么大家都在强调协议的重要性?学习协议有哪些注意事项?今天小编就给大家简单介绍下相关内容。...

    中兴文档9972021-10-27
  • 网络协议四次挥手,TCP连接的关闭

    四次挥手,TCP连接的关闭

    我们退出 telnet 命令后,TCP 将关闭连接。于此同时,我们通过 tcpdump 也观察到 TCP 关闭连接的通信过程。本节,我们继续深入研究 TCP 关闭连接的通信细节。...

    小菜学编程9942021-10-28
  • 网络协议从一次线上问题说起,详解 TCP 半连接队列、全连接队列

    从一次线上问题说起,详解 TCP 半连接队列、全连接队列

    某次大促值班 ing,对系统稳定性有着充分信心、心态稳如老狗的笔者突然收到上游反馈有万分几的概率请求我们 endpoint 会出现 Connection timeout 。...

    云巅论剑11612021-10-28
  • 网络协议HTTP缓存协议实战

    HTTP缓存协议实战

    缓存,又称作Cache,我们把临时存储数据的地方叫做缓存池,缓存池里面放的数据就叫做缓存,本文就以实战的形式为大家介绍HTTP缓存协议。...

    vivo互联网技术6942022-03-10
  • 网络协议为什么叫 HTTP/2 ,而不是 HTTP/2.0 ?

    为什么叫 HTTP/2 ,而不是 HTTP/2.0 ?

    互联网时代,足不出户,点点鼠标就可以轻松了解外面的世界变化,这一切得益于网络传输数据。我们都知道网络有7层模型,从底层到上层依次是:物理层...

    微观技术4842021-11-01