当前位置:首页 » 网络连接 » 计算机网络rtt
扩展阅读
华为无线网络部署方案 2025-09-21 20:35:36

计算机网络rtt

发布时间: 2022-12-14 04:51:03

1. 什么是RTT计算机网络里的东西

RTT(Round-Trip Time):往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成。

(1)发送时延

发送时延是结点将数据分组发送到传输媒介所需要的时间,也就是从分组的第一个比特开始发送算起,到最后一个比特发送完毕所需要的时间。显然,发送时延与网络接口/信道的传输速率成反比,与数据分组的长度成正比。

(2)传播时延

传播时延是电磁波在信道中传播一定距离所需要花费的时间,传播时延和信道的传输速率无关,
而是取决于传输媒介的长度,以及某种物理形式的信号在传输媒介中的传播速度。

如电磁波在自由空间的传播速度是光速,即3×105km/s。电磁波在网络传输媒体中的传播速度比在自由空间中的传播速度要略低一些,在铜线中的传播速度约为2.3×105km/s
,在光纤中的传播速度约为2.0×105km/s 。

(3)排队时延

排队时延是分组在所经过的网络结点的缓存队列中排队所经历的时延,排队时延的长短主要取决于网络中当时的通信量,当网络的通信流量大时,排队时间就长,极端情况下,当网络发生拥塞导致分组丢失时,该结点的排队时延视为无穷大。

此外,在有优先级算法的网络中,排队时延还取决于数据的优先级和结点的队列调度算法。

(4)处理时延

处理时延是分组在中间结点的存储转发过程中而进行的一些必要的处理所花费的时间,这些处理包括提取分组的首部,进行差错校验,为分组寻址和选路等。

(1)计算机网络rtt扩展阅读

网络端到端的时延是几种时延的总合,其计算公式是:

总时延=传播时延+发送时延+排队时延+处理时延

根据网络的不同情况,有时有些时延可以忽略不计,如在局域网中,传播时延很小可以忽略不计;当网络没有拥塞时,分组在各个结点的排队时延可以忽略不计。

往返时延(Round-Trip Time,RTT)也是一个重要的性能指标,它表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时延。对于复杂的网络,往返时延要包括各中间结点的处理时延和转发数据时的发送时延。

2. RTT 往返时延

       RTT(Round-Trip Time),往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。

       往返延时(RTT)由三个部分决定:即链路的传播时间、末端系统的处理时间以及路由器的缓存中的排队和处理时间。其中,前面两个部分的值作为一个TCP连接相对固定 ,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化

3. [计算机网络之一] 网络基础知识

  协议就是计算机与计算机之间通过网络实现通信时事先达成的一种 “约定”。这种 “约定” 使那些由不同的厂商、不同的 CPU 以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。

  TCP/IP、AppleTalk(仅限苹果计算机使用)、SNA(IBM)、DECnet(DEC)、IPX/SPX(Novell)

  分组交换是指将大数据分割为一个个叫做包的较小单位进行传输的方法。

   ISO (International Organization for Stardards,国际标准化组织)制定了国际标准 OSI (Open System Interconnection,开放系统互联参考模型),但是没有得到普及,反而是随 Apanet 而生的 TCP/IP 协议在大学研究机构和计算机行业的推动下成为实际的业界标准。

  每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定服务。上下层之间进行交互所遵循的约定叫做 “接口” ,同一层之间交互所遵循的约定叫做 “协议”

  协议分层参考了计算机软件中的模块化开发。

  单播、广播、多播、任播。

  一个地址必须明确地表示一个主体对象,在同一个通信网络中不允许有两个相同地址的通信主体存在。

  有层次性的地址方便高效地找到通讯目标(eg: 快递地址国家、省市区)

  MAC地址有唯一性但没有层次性。

  以太网、无线、帧中继、ATM、FDDI、ISDN。

  NIC(Network Interface Card,网络接口卡),计算机必须有网卡才能接入网络。

  物理层面上延长网络的设备。将电缆传递过来的光电信号经过波形调整和放大之后传递给另一个电缆。

集线器 :提供多个端口的中继器。

  数据链路层面连接两个网络的设备。 不同网络可能采用了不同的数据链路,数据传输的速率可能完全不一样 ,网桥会缓存一个网段传输到另一个网段的数据帧,再重新生成信号作为全新的帧转发给另一个网段(这里我理解不同数据链路帧的格式不一样,所以网桥需要缓存数据并转换位另一个数据链路中的帧格式)。

  网桥的其他作用:

① 根据数据帧中的 FCS 检查数据帧是否已损坏,是则不转发;

② 自学习MAC设备来自哪些网络,并记录在地址转发表中(地址转发表记录硬件地址与网络的映射关系);

③ 过滤功能控制网络流量。

交换集线器 :每个端口都相当于一个网桥。

  网络层面上连接两个网络、并对分组报文进行转发的设备。

应用场景:广域网加速器、特殊应用访问加速、防火墙。

  将传输层到应用层的数据进行转发和翻译的设备。

代理服务器 :控制流量和出于安全考虑,客户端和服务端无需在网络上直接通信,而是从传输层到应用层对数据和访问进行各种控制和处理。

  研发基于分组交换技术的 ARPANET,取代容灾性差的中央集中式网络。

  单个网络无法解决所有通信问题,开始研究网络互连技术,出现了 TCP/IP,并首先被 BSD UNIX 采用,随之被广泛使用变得流程,所有使用 TCP/IP 协议的计算机都能利用互连网相互通信。

  围绕大型计算机中心建设计算机网络,即 NSFNET(国家科学基金网),它是一个三级网络,分为主干网、地区网和校园网。这种三级计算机网络覆盖了全美主要的大学和研究所,并成为互联网中的主要组成部分。

  NSFNET 逐渐被商用的互联网主干网替代,政府机构不再负责互联网的运营。用户接入互联网需要通过 ISP(Internet Service Provider:互联网服务提供商)。

   IXP(Internet eXchange Point)互联网交换点 的作用是允许两个网络直接相连并交换分组,而不需要再通过第三个网络(如上图中的主干 ISP)来转发分组。

  所有的互联网标准都是以 RFC 的形式在互联网上发表的,但并非所有的 RFC 文档都是互联网标准。

  制定互联网的正式标准要经过以下三个阶段

(1)互联网草案

(2)建议标准

(3)互联网标准

  由所有连接在互联网上的主机组成。这部分是用户直接使用的额,用来进行通信和资源共享。

  由大量网络和连接这些网络的路由器组成。这部分视为边缘部分提供服务的(提供连通性和交换)。

① 电路交换的起源

② 电路交换的特点

  在使用信道时,信道两端的两个用户始终占用端到端的通信资源,线路上真正传送数据的时间比例很小,传输效率很低。

③ 电路交换的步骤

   建立连接 (占用通信资源)→ 通话 (一直占用通信资源)→ 释放连接 (归还通信资源)

  电报通信采用基于存储转发原理的报文交换,整个报文被发送到相邻结点,存储下来,再转发到下一个结点。

① 分组交换的特点

  把一个完整的报文划分为一个个分组,每个分组传送到相邻结点后,存在下来查找转发表,在转发到下一个结点。

② 分组交换的优缺点

优点:每个分组可以经过不同的路由,使得有更好的可靠性,也能充分利用网络性能。

缺点:分组控制信息有一定开销,路由器存储转发时需要排队导致产生时延,无法确保通信时端到端所需的宽带。

① 广域网 WAN(Wide Area Network) 广域网的作用范围通常为几十到几千公里,是互联网的核心,其任务是通过长距离运送主机锁发送的数据。连接广域网各结点交换机的链路一般都是高速链路,具有较大的通信量。

② 城域网 MAN(Metropolotan Area Network) 城域网的作用范围一般是一个城市,作用距离约为 5 ~ 50 km。可以为一个或几个单位所用欧,也可以是一种公用设置,用来将多个局域网进行互联。目前很多城域网采用的是以太网技术。

③ 局域网 LAN(Local Area Network) 局域网一般用微型计算机或工作站通过高速通信链路相连(速率通常在 10 Mbit/s 以上),但地理上则局限在较小的范围(如 1 km 左右)。在局域网发展的初期,一个学校或工厂往往只拥有有个局域网,但现在局域网已非常广泛地使用,学校或企业大都拥有多个互连的局域网(这样的网络常称为 校园网 企业网 )。

④ 个人局域网 PAN(Personal Area Network) 个人局域网就是在个人工作的地方把属于个人使用的电子设备用无线技术连接起来的网络,因此也常称为 无线个人局域网 WPAN(Wireless PAN) ,其范围很小,大约在 10 m 左右。

① 公用网(pulic network) 电信公司出资建造的大型网络。

② 专用网(private network) 某个部门为满足本单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务,例如,军队、铁路、银行、电力等系统均有本系统的专用网。

   接入网(Access Network) ,又称为本地接入网或居民接入网。

  数据的传输速率,也称为数据率或比特率,单位为 bit/s(比特每秒)(或 b/s,有时也写为 bps,即 bit per second)。

  1 kbit/s = 1 × 10³ bit/s,1 Mbit/s = 1 × 10^6 bit/s,1 Gbit/s = 1 × 10^9 bit/s,1 Tbit/s = 1 × 10^12 bit/s

  吞吐量表示在单位时间内通过某个网络的实际的数据量,单位同速率带宽。

  时延是指数据从网络的一端传送到另一端所需的时间,网络时延由几个部分组成:

               网络总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

[误区] 光纤的传播速率实际上比铜线要慢,但是光纤的带宽却比普通的双绞线要快,这是因为光信号的抗干扰性强,并且可以通过波分复用的信道复用技术,达到一路光纤传输多路信号的效果。

  时延带宽积表示信道中可以容纳多少比特。

  在计算机网络中,往返时间 RTT(Round-Trip Time)是一个重要的性能指标,因为在许多情况下,互联网上的信息不仅仅单方向传输而是双向交互的。

  使用卫星通信时,发送时延很短,主要消耗在来回传播时延上,即往返时间相对较长。

  利用率有信道利用率和网络利用率两种。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率为零。网络利用率则是全网络的信道利用率的加权平均值。

  D0 表示网络空闲时的时延,D 表示网络当前的时延,U 表示利用率,则

  U = 1 - D0/D,变形一下,有

  信道利用率不是越高越好,因为信道利用率增大时,网络时延也会增加,因为排队时延增大。所以当 U 趋于 1 时,D 会趋于无限大,所以 信道或网络的利用率过高会产生非常大的时延

  费用、质量、标准化、可靠性、可扩展性和可升级性、易于管理和维护。

① 语法,即数据与控制信息的结构或格式;

② 语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;

③ 同步,即时间实现顺序的详细说明。

① 各层独立;

② 灵活性好;

③ 结构上可分割开;

④ 易于实现和维护;

⑤ 能促进标准化工作。

   计算机网络的各层及其协议的集合就是网络的体系结构。

实体 :表示任何可发送或接收信息的硬件或软件进程。

协议 :协议是水平的,控制两个对等实体进行通信的规则的集合。

服务 :服务是垂直的,下层通过接口向上层提供服务。

服务访问点 :SAP(Service Access Point),同一系统中相邻两层的实体进行交互的地方。


















4. 怎么计算网址的rtt

计算网址的rtt的方法是:

1、首先,先采样RTT,记下最近好几次的RTT值。

2、然后做平滑计算SRTT( Smoothed RTT),公式为:(其中的 α 取值在0.8 到 0.9之间,这个算法英文叫Exponential weighted moving average,中文叫:加权移动平均)SRTT = ( α * SRTT ) + ((1- α) * RTT)。

3、开始计算rtt。公式如下:rtt= min [ UBOUND,max [ LBOUND, (β * SRTT) ]]。

其中:UBOUND是最大的timeout时间,上限值、LBOUND是最小的timeout时间,下限值、β 值一般在1.3到2.0之间。

RTT往返时间是:

RTT(Round-Trip Time)往返时间在计算机网络中它是一个重要的性能指标。表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认,不包含数据传输时间)总共经历的时间。

RTT由三个部分决定:链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间。其中前两个部分的值作为一个TCP连接相对固定。

路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。简单来说就是发送方从发送数据开始,到收到来自接受方的确认信息所经历的时间。

5. 计算机网络有哪些常用的性能指标

计算机网络常用性能指标有:
1、速率:连接在计算机网络上的主机在数字信道上传送数据的速率。
2、带宽:网络通信线路传送数据的能力。
3、吞吐量:单位时间内通过网络的数据量。
4、时延:数据从网络一端传到另一端所需的时间。
5、时延带宽积:传播时延带宽。
6、往返时间RTT:数据开始到结束所用时间。
7、利用率信道:数据通过信道时间。


(5)计算机网络rtt扩展阅读:
计算机网络中的时延是由一下几个不同的部分组成的:
(1)发送时延
发送时延是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。因此发送时延也叫做传输时延。发送时延的计算公式是:
发送时延=数据帧长度(bit)/发送速率(bit/s)
(2)传播时延
传播时延是电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式是:
传播时延=信道长度(m)/电磁波在信道上大的传播速率(m/s)
电磁波在自由空间的传播速率是光速。即3.0*10^5km/s。
发送时延发生在机器内部的发送器中,与传输信道的长度没有任何关系。传播时延发生在机器外部的传输信道媒体上,而与信道的发送速率无关。信号传送的距离越远,传播时延就越大
(3)处理时延
主机或路由器在收到分组时需要花费一定时间进行处理,例如分析分组的首部,从分组中提取数据部分、进行差错检验或查找合适的路由等,这就产生了处理时延。
(4)排队时延
分组在进行网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待,在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延无穷大。
这样数据在网络中经历的总时延就是以上四种时延之和:总时延=发送时延+传播时延+处理时延+排队时延。
一般来说,小时延的网络要优于大时延的网络。

6. 计算机网络-可靠传输-超时重传和选择确认SACK

TCP每发送一个报文段,就对这个报文段设置一次计时器。发送方没有按时收到对方发送的确认时,应何时再重传:

TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这 两个时间之差就是报文段的往返时间RTT 。 TCP保留了RTT的一个加权平均往返时间RTTs (这又称为平滑的往返时间,S表示Smoothed。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时,RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:  新的RTTs=(1-a)×旧的RTTs)+a×(新的RTT样本)      (5-4)

在上式中,0≤a<1。RFC6298推荐的α值为1/8,即0.125。用这种方法得出的加权平均往返时间RTTs就比测量出的RTT值更加平滑。

而RTTD是RTT的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。RFC 6298建议这样计算RTTD。当第一次测量时,RTTD值取为测量到的RTT样本值的一半。在以后的测量中,则使用下式计算加权平均的RTTD:  新的RTTD=(I-a)×(旧的RTTD)+B×RTTs-新的RTT样本  (5-6)

这里B是个小于1的系数,它的推荐值是1/4,即0.25。

超时计时器设置的 超时重传时间RTO  (RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC298建议使用下式计算RTO:  RTO=RTTs+4×RTTD    (5-5)

算法方法:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是取新的重传时间为旧的重传时间的2倍。当不再发生报文段的重传时,才根据上面给出的(5-5)式计算超时重传时间。

TCP 通过 选择确认SACK解决Go-back-N现象 。

TCP的接收方在接收对方发送过来的数据字节流的序号不连续,结果就形成了一些不连续的字节块'(如图5-21所示)。可以看出,序号1~1000收到了,但序号1001~1500没有收到。接下来的字节流又收到了,可是又缺少了3001~3500。再后面从序号4501起又没有收到。也就是说,接收方收到了和前面的字节流不连续的两个字节块。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些己收到的数据。

我们知道,TCP的首部没有哪个字段能够提供上述这些字节块的边界信息。RFC2018规定,如果要使用选择确认SACK,那么在建立TCP连接时,就要在TCP首部的 选项 中加上“允许SACK”的选项,而双方必须都事先商定好。如果使用选择确认,那么原来首部中的“ 确认号字段(ACK) ”的用法仍然不变。只是以后在TCP报文段的首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。由于首部选项的长度最多只有40字节,而指明一个边界就要用掉4字节(因为序号有32位,需要使用4个字节表示),因此在选项中最多只能指明4个字节块的边界信息。这是因为4个字节块共有8个边界,因而需要用32个字节来描述。另外还需要两个字节。一个字节用来指明是SACK选项,另一个字节是指明这个选项要占用多少字节。如果要报告五个字节块的边界信息,那么至少需要42个字节。这就超过了选项长度的40字节的上限。

互联网建议标准RFC2018还对报告这些边界信息的格式都做出了非常明确的规定但是,SACK文档并没有指明发送方应当怎样响应SACK。因此大多数的实现还是重传所有未被确认的数据块。

7. 网络中的RTT是什么意思

RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。 RTT(Radio Transmission Technology): 无线传输技术。参考CDMA2000词条中的CDMA2000 1xRTT。 RTT(Radiation Tracking Transcer): 红外线跟踪系统, 辐射跟踪换能器。 RTT(Radio Teletype (-writer)): 无线电电传打字电报机。 RTT(Radioteletype Transmitter): 无线电电传打字电报发射机。 RTT(Real-Time Tactics):即时战术游戏又称“实时战术”游戏。它与即时战略(RTS:Real-Time Strategy)相类似,但缺少必要的战略要素,如资源采集、建造、发展等。一种常见的误解是认为“只要是即时进行的战争游戏就是即时战略游戏”。其实即时战略游戏的定义是很严格的,即时战略的“战略(Strategy)”的谋定过程必须是即时的,如果只有战斗是即时的,而采集、建造、发展等战略元素却以回合制进行,则该游戏不能归为即时战略游戏。如果该游戏完全没有上述战略元素,则只能归为即时战术(RTT:Real-Time Tactics)游戏。

8. 计算机网络,传输层拥塞控制小问题。谢谢。 假设在没有发生拥塞的情况下,在一条往返时延RTT为10m

拥塞窗口初始值=1个TCP报文= 2 K B < 24 K B =2KB<24KB=2KB<24KB,发送窗口=min{拥塞窗口,接收窗口},采用慢启动算法:
T=0,第1次发送,发送窗口=拥塞窗口=2KB;
t=10ms,得到确认,拥塞窗口=4KB
T=10ms,第2次发送,发送窗口=4KB;
t=20ms,得到确认,拥塞窗口=8KB
T=20ms,第3次发送,发送窗口=8KB;
t=30ms,得到确认,拥塞窗口=16KB
T=30ms,第4次发送,发送窗口=16KB;
t=40ms,得到确认,拥塞窗口=32KB
T=40ms,第5次发送,发送窗口=min{拥塞窗口,接收窗口}=24KB;
因此,需要40ms才能发送第一个完全窗口。

9. RTT是什么

这要看是在哪种场合了。
RTT(Real-Time Tactics):即时战术游戏又称“实时战术”游戏。
RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
RTT(Render to Texture):渲染到纹理。普通的图形渲染流程中,最终结果是渲染到帧缓存中,最后显示到屏幕上,然后可以把纹理继续应用到场景绘制中。
RTT(RT-Thread):国产开源实时操作系统。
RTT(Radio Transmission Technology):无线传输技术。参考CDMA2000词条中的CDMA2000 1xRTT。
RTT(Radiation Tracking Transcer): 红外线跟踪系统, 辐射跟踪换能器。
RTT(Radio Teletype (-writer)): 无线电电传打字电报机。
RTT(Radioteletype Transmitter): 无线电电传打字电报发射机。

10. 计算机网络——TCP/UDP协议

计算机网络七层模型中,传输层有两个重要的协议:
(1)用户数据报协议UDP (User Datagram Protocol)
(2)传输控制协议TCP (Transmission Control Protocol)

UDP 在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP 报文后,不需要给出任何确认。虽然UDP 不提供可靠交付,但在某些情况下UDP 却是一种最有效的工作方式。

TCP 则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。

UDP 的主要特点是:

首部手段很简单,只有8 个字节,由四个字段组成,每个字段的长度都是两个字节。

前面已经讲过,每条TCP 连接有两个端点,TCP 连接的端点叫做套接字(socket)或插口。套接字格式如下:

套接宁socket= (IP 地址:端口号’)

每一条TCP 连接唯一地被通信两端的两个端点(即两个套接宇)所确定。即:
TCP 连接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

3次握手链接

4次握手释放链接

断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。

各个状态节点解释如下:

下面为了讨论问题的万便,我们仅考虑A发送数据而B 接收数据并发送确认。因此A 叫做发送方,而B 叫做接收方。

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。

滑动窗口协议比较复杂,是TCP 协议的精髓所在。这里先给出连续ARQ 协议最基本的概念,但不涉提到许多细节问题。详细的滑动窗口协议将在后面讨论。

下图表示发送方维持的发送窗口,它的意义是:位于发送窗口内的5 个分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。

连续ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

接收方一般都是采用 累积确认 的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都己正确收到了。

累积确认 的优点是容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方己经正确收到的所有分组的信息。

例如,如果发送方发送了前5 个分组,而中间的第3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N (回退N ),表示需要再退回来重传己发送过的N 个分组。可见当通信线路质量不好时,连续ARQ 协议会带来负面的影响。

TCP 的滑动窗口是以字节为单位的。现假定A 收到了B 发来的确认报文段,其中窗口是20 (字节),而确认号是31 (这表明B 期望收到的下一个序号是31 ,而序号30 为止的数据己经收到了)。根据这两个数据, A 就构造出自己的发送窗口,其位置如图所示。

发送窗口表示:在没有收到B 的确认的情况下, A可以连续把窗口内的数据都发送出去。凡是己经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。

发送窗口后沿的后面部分表示己发送且己收到了确认。这些数据显然不需要再保留了。而发送窗口前沿的前面部分表示不允许发送的,因为接收方都没有为这部分数据保留临时存放的缓存空间。

现在假定A 发送了序号为31 ~ 41 的数据。这时发送窗口位置并未改变,但发送窗口内靠后面有11个字节(灰色小方框表示)表示己发送但未收到确认。而发送窗口内靠前面的9 个字节( 42 ~ 50 )是允许发送但尚未发送的。】

再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 号为止的数据是已经发送过确认,并且己经交付给主机了。因此在B 可以不再保留这些数据。接收窗口内的序号(31~50)足允许接收的。B 收到了序号为32 和33 的数据,这些数据没有按序到达,因为序号为31 的数据没有收到(也许丢失了,也许滞留在网络中的某处)。 请注意, B 只能对按序收到的数据中的最高序号给出确认,因此B 发送的确认报文段中的确认号仍然是31 (即期望收到的序号)。

现在假定B 收到了序号为31 的数据,并把序号为31~33的数据交付给主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A 发送确认,其中窗口值仍为20,但确认号是34,这表明B 已经收到了到序号33 为止的数据。我们注意到,B还收到了序号为37, 38 和40 的数据,但这些都没有按序到达,只能先存在接收窗口。A收到B的确认后,就可以把发送窗口向前滑动3个序号,指针P2 不动。可以看出,现在A 的可用窗口增大了,可发送的序号范围是42~53。整个过程如下图:

A 在继续发送完序号42-53的数据后,指针P2向前移动和P3重合。发送窗口内的序号都已用完,但还没有再收到确认。由于A 的发送窗口己满,可用窗口己减小到0,因此必须停止发送。

上面已经讲到, TCP 的发送方在规定的时间内没有收到确认就要重传已发送的报文段。这种重传的概念是很简单的,但重传时间的选择却是TCP 最复杂的问题之一。

TCP采用了一种自适应算法 ,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT,TCP 保留了RTT的一个加权平均往返时间RTTs (这又称为平滑的往返时间, S 表示Smoothed 。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时, RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:

新的RTTs = (1 - α)×(旧的RTTs) + α ×(新的RTT样本)

α 越大表示新的RTTs受新的RTT样本的影响越大。推荐的α 值为0.125,用这种方法得出的加权平均往返时间RTTs 就比测量出的RTT值更加平滑。

显然,超时计时器设置的超时重传时间RTO (RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC 2988 建议使用下式计算RTO:

RTO = RTTs + 4 × RTTd

RTTd是RTT 的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。计算公式如下:

新的RTTd= (1- β)×(旧的RTTd) + β × |RTTs-新的RTT样本|

发现问题: 如图所示,发送出一个报文段。设定的重传时间到了,还没有收到确认。于是重
传报文段。经过了一段时间后,收到了确认报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?

若收到的确认是对重传报文段的确认,但却被源主机当成是对原来的报文段的确认,则这样计算出的RTTs 和超时重传时间RTO 就会偏大。若后面再发送的报文段又是经过重传后才收到确认报文段,则按此方法得出的超时重传时间RTO 就越来越长。

若收到的确认是对原来的报文段的确认,但被当成是对重传报文段的确认,则由此计算出的RTTs 和RTO 都会偏小。这就必然导致报文段过多地重传。这样就有可能使RTO 越来越短。

Kam 提出了一个算法:在计算加权平均RTTs 时,只要报文段重传了就不采用其往返时间样本。这样得出的加权平均RTTs 和RTO 就较准确。

新问题: 设想出现这样的情况:报文段的时延突然增大了很多。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Kam 算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。

解决方案: 对Kam 算法进行修正,方法是z报文段每重传一次,就把超时重传时间RTO 增大一些。典型的做法是取新的重传时间为2 倍的旧的重传时间。当不再发生报文段的重传时,才根据上面给出的公式计算超时重传时间。

流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。

利用滑动窗口机制可以很方便地在TCP 连接上实现对发送方的流量控制。

接收方的主机B 进行了三次流量控制。第一次把窗口减小到rwnd =300,第二次又减到rwnd = 100 ,最后减到rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B 重新发出一个新的窗口值为止。我们还应注意到,B 向A 发送的三个报文段都设置了ACK=1,只有在ACK=1 时确认号字段才有意义。

发生死锁: 现在我们考虑一种情况。上图中, B 向A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间。于是B 向A 发送了rwnd = 400 的报文段。然而这个报文段在传送过程中丢失了。A 一直等待收到B 发送的非零窗口的通知,而B 也一直等待A 发送的数据。如果没有其他措施,这种互相等待的死锁局面将一直延续下去。

解决方案: TCP 为每一个连接设有一个 持续计时器(persistence timer) 。只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个 零窗口探测报文段 (仅携带1 宇节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。

1 TCP连接时是三次握手,那么两次握手可行吗?

在《计算机网络》中是这样解释的:已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ACK包。这样就会白白浪费资源。而经过三次握手,客户端和服务器都有应有答,这样可以确保TCP正确连接。

2 为什么TCP连接是三次,挥手确是四次?

在TCP连接中,服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。

3 为什么在第四次挥手后会有2个MSL的延时?

MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。假定网络不可靠,那么第四次发送的ACK可能丢失,即B端无法收到这个ACK,如果B端收不到这个确认ACK,B端会定时向A端重复发送FIN,直到B端收到A的确认ACK。所以这个2MSL就是用来处理这个可能丢失的ACK的。

1 文件传送协议

文件传送协议FTP (File Transfer Protocol) [RFC 959]是因特网上使用得最广泛的文件传送协议,底层采用TCP协议。

盯P 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。

在进行文件传输时,客户和服务器之间要建立两个并行的TCP 连接:“控制连接”(21端口)和“数据连接”(22端口)。控制连接在整个会话期间一直保持打开, FTP 客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。

2 简单文件传送协议TFTP

TCP/IP 协议族中还有一个简单文件传送协议TFfP (Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议,端口号69。

TFfP 也使用客户服务器方式,但它使用UDP 数据报,因此TFfP 需要有自己的差错改正措施。TFfP 只支持文件传输而不支持交耳。

3 TELNET

TELNET 是一个简单的远程终端协议,底层采用TCP协议。TELNET 也使用客户服务器方式。在本地系统运行TELNET 客户进程,而在远地主机则运行TELNET 服务器进程,占用端口23。

4 邮件传输协议

一个电子邮件系统应具如图所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP )和邮件读取协议(如POP3), POP3 是邮局协议(Post Office Protocol)的版本3 。

SMTP 和POP3 (或IMAP )都是在TCP 连接的上面传送邮件,使用TCP 的目的是为了使邮件的传送成为可靠的。