终于把TCP传输层协议搞明白了
传输控制协议(TCP)
传输控制协议可向IP层及其上各层提供大量服务。最为重要的是它可向各上层提供面向连接的服务,使各上层启动应用程序,以确保网络上所发送的数据报被完整接收。就这种作用而言,TCP的作用是提供可靠通信的有效报文协议。一旦数据报被破坏或丢失,通常是TCP(不是高层中的应用程序)将其重新传输。
TCP既管理来自各上层的数据报流,也管理来自IP层的数据报流。同时它还必须兼顾优先级和安全性。TCP必须能够处理它上面的应用程序的终端,该终端正等待着进入的数据报以及各低层中的故障。TCP还必须维护TCP层内外所有数据流的状态表。独立层内的这些服务的隔离能够启动要设计的应用程序,而不必考虑控制或报文的可靠性。如果没有TCP层,每个应用程序都必须处理这些服务本身,这是一种资源浪费。
TCP驻留在传输层,位于IP之上,但在各上层及其应用程序之下,如图7-1所示。TCP只驻留在实际处理数据报的设备中,以确保数据报从源计算机传输到目标计算机。它不驻留在仅路由数据报的设备上,所以网关中没有TCP层。这是很有意义的,因为在网关上,数据报在分层模式中不必比IP层传输到最高层。
因为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尽快将应用程序中的缓存信息发送到信宿(相反,在准备发送之前一直保存在缓冲器中)。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
客户希望从云计算供应商那里了解的两件事
云供应商可以通过两个关键的方法改变与客户建立信任并在市场中脱颖而出。 虽然许多企业客户喜欢他们的云产品,但他们的供应商经常会抱怨一些普遍的挫败感。不管他们一起做生意多久,组织的规模或他们的云投资的规模,云供应商似乎一遍又一遍地犯同样的错误,最终破坏客户对他们的信任并制造漏洞。通过损害这种宝贵的信任并制造挫折,云供应商通常会不必要地延长销售周期,甚至失去潜在的新产品采用和随之而来的收入。 云供应商可以通过以下两种关键方式缓解紧张局势,甚至有助于将他们区分为企业想要与之合作的供应商。 专注于交付预期价值 当企业客户以功能级别的粒度仔细查看他们对订阅云产品的实际使用时,他们常常意识到他们并没有使用他们注册的所有功能(并且已经支付了订阅费)——通常多达一半的功能。甚至有一年或更长时间没有使用该服务的情况。 然而与此同时,云供应商想要讨论新的、更强大的版本作为升级或他们应该添加到他们的产品组合中的下一个产品。这让客户想知道,“他们是真的想帮助我们取得成功,还是只是想从我们那里赚更多的钱?” 现在,大多数公司都承认,他们未充分利用的部分责任归咎于他们。但他们也很恼火地意识到,他们值得信赖的云合作伙...
- 下一篇
90%+的恶意软件隐藏在加密流量
上一季度威胁趋势的分析结果表明,攻击者增加了无文件恶意软件的使用,而所有检出恶意软件中近三分之二是零日恶意软件。 企业如果尚未实现控制措施检测藏身于加密网络流量中的恶意软件,就会面临环境中广泛分布大量恶意工具,自身端点设备可能遭受攻击的风险。 WatchGuard Technologies采用从客户网络收集到的匿名数据分析研究了威胁活动。结果表明,2021年第二季度检出的恶意软件中,91.5%都涉及通过加密HTTPS连接投送。WatchGuard表示,目前只有20%的企业设置有解密和扫描HTTPS流量以发现恶意软件的检测机制,意味着其余80%的企业有可能漏掉九成日常攻击其网络的恶意软件。 WatchGuard首席安全官Corey Nachreiner表示,大部分企业没有启用基于网络的HTTPS解密控制措施的一个原因,在于他们认为这一设置十分复杂,而某种程度上讲,解密和扫描HTTPS流量也确实很复杂。 “既想发挥中间人解密的功效,又想不破坏保护流量的HTTPS证书的神圣性,就必须设置中间证书或根CA证书,这是官方证书验证过程的一部分。” 有很多种方法可以做到这一点,其中一些比较棘手,而另...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- 2048小游戏-低调大师作品
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能