一、概述
物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信
但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务,运输层协议又称端到端协议
1.1端口号
为了使运行不同操作系统的计算机的应用进程之间能进行网络通信,必须使用统一的方法对TCP/IP体系的应用进程进行标识,即端口号。
逻辑端口的概念(端口):一个整数值(16位);0-65535
网络上中进程工作方式:C/S 对应的端口号码的分配也分为两大类
服务类(静态的预先指定的)
1-1013(默认系统熟知的服务)
1023-45191(需要申请注册的服务 QQ4000,8000都是它所使用的端口)
客户类(随机的由本地操作系统自己管控)
端口:相当于进程在网络中的地址
IP+PORT(端口号) 构成了网络中唯一的通信端点:我们称之为端到端的通信
(Socket) (Socket) Protocol
1.2复用与分用
发送方的复用
- 发送方的某些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,这是UDP复用;若用TCP封装则称TCP复用
- 运输层使用端口号区分不同进程,不管使用何种协议封装的报文,在网络层都需要使用IP协议封装成IP数据报,这是IP复用,数据报中协议字段的值用来表名封装的是何种协议数据单元
接收方的分用
- 根据协议字段的值,将IP数据报封装的协议数据单元上交运输层的过程叫IP分用
- 同理,UDP根据端口号将数据交给应用进程叫做UDP分用;TCP根据端口号将数据交给应用进程叫做TCP分用
1.3运输层引入的协议
1,TCP协议(负责完成端到端的可靠传输)
2,UDP协议(负责完成端到端的数据传输)
用户数据报协议UDP
UDP
是无连接的,随时可向目的主机发送报文,支持单播、多播和广播
UDP
收到应用层报文后直接为报文添加UDP
首部就进行发送,即面向应用报文
UDP
数据报首部仅8字节
传输控制协议TCP
TCP
时面向连接的。发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接仅支持单播
TCP是面向字节流的。其将应用进程交付下来的数据块仅仅看作是一连串的字节流,
TCP
将这些字节流编号并存储在缓冲中;接收方一边接收数据,一边将缓冲中的数据交给应用进程。接收方收到的字节流必须和发送方收到的字节流完全一致
不会出现传输差错(误码、丢失、乱序、重复)
TCP
报文段首部最小20
字节,最大60
字节
1.4TCP协议流量控制
1)滑动窗口 发送窗口 接收窗口
2)超时计时器
3)流量控制方法 :接收端控制发送端
2)超时计时器
3)流量控制方法:接收端控制发送端
4)流量控制的实现过程:0窗口
5)TCP协议效率管理:糊涂窗口
流量控制
一般来说,我们希望数据传输能快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这会造成数据的丢失
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收
利用滑动窗口实现流量控制
- 发送方和接收方窗口保持一致,发送方窗口随着接收方窗口变化而变化(通过确认报文告知发送方)
- 发送方发送完窗口内数据后需要等到确认报文才会滑动窗口并继续发送,若窗口内的某个值很久没有收到回答报文,则超时重传报文
若接收方窗口调为0后,一段时间之后又调为200,此时向发送方传递确认报文,可此时报文丢失,则会造成发送方窗口始终为0,接收方以为发送方收到了确认报文而开始等待数据,造成死锁,如何解决?
当发送方窗口大小为
0
时,其隔一段时间就会发送一个1
字节大小的零窗口探测报文,看看此时接收窗口大小是否进行调整零窗口探测报文也有超时重传机制
1.5TCP的拥塞控制![](https://i-blog.csdnimg.cn/blog_migrate/480ef3a64a09dc16c4827e6ff5aa5ab0.png)
1)拥塞控制的概念:拥塞就是拥堵了(网络拥堵了),拥堵的原因?数据包太多了,导致网络吞吐量下降,网络时延增加;网络时延增加又进而加剧了网络数据包增多
2)拥塞控制的手段方法
(1)核心方法:减少数据包数量
(2)具体实现:就根据不同情况,采用不同方法来减少数据包数量
(3)拥塞的主要表现就是时延的增加,为此,就围绕时延增加来进行数据包数量的调整
(4)数据包投放数量是由各主机的发送窗口大小决定的
(5)TCP又引入一个拥塞窗口的概念;拥塞发生时应该控制发送窗口的数量
结论:发送窗口的大小:min(拥塞窗口,接收窗口)
(6)拥塞窗口:拥塞发生时,能够发送数据包的个数
(7)拥塞控制算法:慢开始 拥塞避免 快重传 快恢复
1)慢开始:设置门限值;门限值内,试探着向网络投入数据包,避免拥塞
2)拥塞避免:拥塞发生时,能够发送数据包的个数
3)快重传:当数据包未按序到达,导致重复确认增多,则立即重传该数据包,门限降为重复确认时拥塞窗口的一半,拥塞窗口同时调小
4)快恢复:发生超时时,立即急速的减少投入网络的数据包
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫做拥塞
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降
1.6超时重传时间(RTO)选择
正常情况下,超时重传时间应该设为略大于往返时间。但是由于各区域的速率可能不一致,因此将超时重传时间设置为一个固定值是行不通的
往返时间测量问题
针对出现超时重传时无法测准往返时间RTT的问题,有以下解决方法
在计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间TT样本。也就是出现重传时,不重新计算RTTs,进而超时重传时间RTO也不会重新计算。
此方法的漏洞如下:如果报文段时延突然增大很多,并且之后很长一段时间都会保持这种时延。因此在原来得出的重传时间内,不会收到确认报文段,于是重传,造成死锁
修正方法:报文段每重传一次,就把超时重传时间RTO增大一些,典型的做法是将RTO的值取为旧RTO的2倍
1.7可靠传输
可靠性保障可以放在体系结构中的任何一层(数据链路层,网络层)实现,但现代网络系统面向的是主机(独立自主的计算力)系统,可以将可靠性保障交由主机来完成,进而减轻通信子网的负担,使得通信子网专注于数据包的高效传输
1.停止等待协议(ARQ自动请求重传协议)
2.后退N帧重传(Go Back N ARQ)(接收窗口固定唯一,而TCP接收窗口不确定)
(1)发送窗口:没有得到确认的情况下,发送端可以连续发送分组的个数
(2)接收窗口:接收数据的个数以及包含能接受数据的序号
(3)工作协议
(4)窗口大小与序号关系
3.选择重传协议
1.8运输连接管理
TCP
的运输连接管理就是使运输连接的建立和释放都能正常地进行
SYN
为1
的报文段不能携带数据,但会消耗一个序列号seqACK=1
代表这是普通确认报文段,ack=x+1表示这是对报文段序列号seq=x的确认
- 客户端发起关闭请求,一去一回后进入半关闭状态【客户端不再发送数据,服务端可能还会发】
- 服务器将自己剩余的数据发送完后也发送一个关闭请求,接着客户端给予回应后服务器关闭,客户机则要等到一段时间后完全关闭(防止发给服务器的确认报文丢失)
1.9首部格式
源端口:占
16
比特,写入源端口号,用来标识发送该TCP报文段的应用进程目的端口:占
16
比特,写入目的端口号,用来标识接收该TCP报文段的应用进程
- 序号:占32比特,取值范围[ 0 ,
− 1 ] ,序号增加到最后一个后,下一个序号就又回到0。作用是指出本TCP报文段数据载荷的第一个字节的序号
- 确认标志位ACK:取值为1时确认号字段才有效,为0时确认号字段无效
确认号:占
32
比特,取值范围 [ 0 ,− 1 ],序号增加到最后一个后,下一个序号就又回到
0
。可理解为若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据
- 数据偏移:占4比特,并以4字节为单位
用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处。这个字段实际 上是指出TCP报文段的首部长度
首部固定长度为20字节,因此数据偏移字段的最小值
保留字段:占6比特,保留为今后使用,但是目前应置为
0
窗口:占16比特,以字节为单位。指出发送本报文段一方的接收窗口
窗口值作为接收方让发送方设置其发送窗口的依据,这是以接收方的接收能力来控制发送方的发送能力,称为流量控制
检验和:占16比特,检测范围包括TCP报文段的首部和数据载荷两部分
在计算校验和时,要在
TCP
报文段的前面加上12
字节的伪首部同步标志位SYN:在
TCP
连接建立时用来同步序号终止标志位FIN:用来释放
TCP
连接
紧急标志位URG:取值为1时紧急指针字段有效;取值为
0
时紧急指针字段无效。紧急指针:占
16
比特,以字节为单位,用来指明紧急数据的长度
选项:增加选项可以增加
TCP
的功能
- 最大报文段长度MSS选项:
TCP
报文段数据载荷部分的最大长度- 窗口扩大选项:为了扩大窗口(提高吞吐率)
- 时间戳选项:
- 用来计算往返时间
RTT
- 用于处理序号超范围的情况,又称为防止序号绕回
PAWS
- 选择确认选项:实现选择确认功能
填充:由于选项长度可变,因此使用填充来保证报文段首部能被4整除
二、习题
1. (单选题, 1分)UDP 协议实现分用 ( demultiplexing ) 时所依据的头部字段是
- A. 源端口号
- B. 目的端口
- C. 长度
- D. 校验和
传输层分用的定义是 :接收方的传输层剥去报文首部后 ,能把这些数据正确交付到目 的进 程。C 和 D 选项显然不符 。端口号是传输层服务访问点 TSAP ,用来标识主机中的应用进程 。 对于 A 和 B 选项 ,源端口号是在需要对方回信时选用 ,不需要时可用全 0。目的端口号是在终 点交付报文时使用到 ,符合题意 ,故选 B
2. (单选题, 1分)下列关于 UDP 协议的叙述中 ,正确的是
I. 提供无连接服务
II. 提供复用/分用服务
III. 通过差错校验 ,保障可靠数据传输
- A. 仅I
- B. 仅I、II
- C. 仅II、III
- D. I、II、III
UDP 不能保证可靠传输
3.(单选题, 1分)主机甲向主机乙发送一个 ( SYN = 1, seq = 11220) 的 TCP 段,期望与主机乙建立 TCP连接,若主机乙接受该连接请求 ,则主机乙向主机甲发送的正确的 TCP 段可能是
- A. (SYN = 0, ACK = 0, seq = 11221, ack =11221 )
- B. ( SYN = 1, ACK = 1, seq = 11220, ack = 11220 )
- C. (SYN = 1,ACK = 1, seq = 11221, ack = 11221)
- D. (SYN = 0, ACK = 0, seq = 11220, ack = 11220 )
在确认报文段中 ,同步位 SYN 和确认位 ACK 必须都是 1:返回的确认号 seq 是甲发送的初 始序号 seq = 11220 加 1,即 ac ck = 11221;同时乙也要选择井消耗一个初始序号seq, seq 值由乙的 TCP 进程任意给出 ,它与确认号 、请求报文段的序号没有任何关系 。
4.(单选题, 1分)主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了两个连续的 TCP 段,分别包含 300B 和 500B 的有效载荷 ,第一个段的序列号为 200 ,主机乙正确接收到两个段 后,发送给主机甲的确认序列号是
- A. 500
- B. 700
- C. 800
- D. 1000
返回的确认序列号是接收端期待收到对方下一个报文段数据部分的第一个字节的序号,因 此乙在正确接收到两个段后 ,返回给甲的确认序列号是 200 + 300 + 500 = 1000。
5.(单选题, 1分)一个 TCP 连接总是以 lKB 的最大段长发送 TCP 段,发送方有足够多的数据要发送 。 当拥塞窗口为 16KB时发生了超时,如果接下来的 4 个 RTT(往返时间) 时间内的 TCP 段的传 输都是成功的 ,那么当第 4 个 RTT时间内发送的所有 TCP 段都得到肯定应答时 ,拥塞窗口大 小是
- A. 7KB
- B. 8KB
- C. 9KB
- D. 16KB
在发生超时后 ,慢开始门限 ssthresh 变为 16 KB/2 = 8KB,拥塞窗口变为1 KB 。在接下来的 3 个 RTT内,执行慢开始算法,拥塞窗口大小依次为 2KB、4KB、8KB,由于慢开始门限ssthresh 为 8KB,因此之后转而执行拥塞避免算法 ,即拥塞窗口开始 “加法增大“ 因此第 4 个 RTT 结 束后,拥塞窗口的大小为9 KB。
6.要控制网络上的广播风暴,可以采用的方法是()
- A. 用网桥交换机将网络分段
- B. 用路由器将网络分段
- C. 将网络转成以太网
- D. 用网络分析仪发现找到发送广播的计算机
通过使用路由器将网络分段,可以限制广播消息在每个网络段内传播,从而减少广播风暴的影响。路由器可以将不同的子网隔离开来,从而限制广播消息的传播范围。因此,B选项是解决广播风暴问题的更合适的方法。
7. (单选题, 1分)路由器 R 通过以太网交换机 Sl 和 S2 连接两个网络 ,R 的接口、主机 H1 和 H2 的 IP 地址与 MAC 地址如下图所示 。若 H1 向 H2 发送 1 个四分组 P ,则 H l 发出的封装 p 的以太网 帧的目的MAC 地址、H2 收到的封装 P 的以太网帧的源 MAC 地址分别是
- A. 00-al-b2-c3-d4-62, 00-la-2b-3c-4d-52
- B. 00-al-b2-c3-d4-62, 00-al-b2-c3-d4-61
- C. 00-la-2b-3c-4d-51, 00-la-2b-3c-4d-52
- D. 00-la-2b-3c-4d-51, 00-al-b2-c3-d4-61
在网络的信息传递中,会经常用到两个地址:MAC 地址和 IP 地址。其中,MAC 地址会随着信息被发往不同的网络而改变 ,但IP地址不会改变(地址转换除外) 。分组 P 在如题图所示的网络中传递时 ,首先由主机 Hl 将分组发往路由器 R,此时源 MAC 地址为H1 主机本身的 MAC 地址,即 00-1a-2b-3c-4d-52 ,目的 MAC 地址为路由器 R 的 MAC 地址, 即 00-la-2b-3c-4d-51 。当路由器R 收到分组 P 后,根据分组 P 的目的 IP 地址,得知应将分组从 另一个端口转发出去 ,于是会给分组P 更换新的 MAC 地址,此时由于从另外的端口转发出去, 因此 P 的新源 MAC 地址变为负责转发的端口 MAC 地址 ,即 00-al-b2-c3-d4-61 ,目的MAC 地 址应为主机 H2 的 MAC 地址,即 00-al-b2-c3-d4-62 。根据分析过程 ,题目所问的 MAC 地址应 为路由器 R 两个端口的 MAC 地址 ,故选 D
8.某路由表中有转发接口相同的 4 条路由表项,其目的网络地址分别为35.230.32.0/21, 35.230.40.0/21, 35.230.48.0/21 和35.230.56.0/21, 将该 4 条路由聚合后的目的网络地址为
- A. 35.230.0.0/19
- B. 35.230.0.0/20
- C. 35.230.32.0/19
- D. 35.230.32.0/20
对于此类题目 ,先分析需要聚合的 IP 地址。观察发现 ,题中的 4 个路由地址 ,前 16 位完全相同,不同之处在于第三段的8位中,将这8位展开写成二进制,观察发现 ,4 个地址的第 3 段中 ,从前向后最多有 3 位相同 ,因此这 3 位是能聚合的最大 位数。将这些相同的位都保留 ,将第 3 段第 3 位之后的所有位都置0,就得到了聚合后的 IP 地 址 35:230.32.0 ,其网络前缀为16 + 3,也即前 19 位,故聚合后的网络地址为35.230.32.0/19
9.在Internet中,IP数据报从源结点到目的结点可能需要经过多个网络和路由器,在整个传输过程中,IP数据报的头部中( )。
- A. A.源地址和目的地址都不会发生变化
- B. B.源地址有可能变化而目的地址不会发生变化
- C. C.源地址不会发生变化而目的地址有可能变化
- D. D.源地址和目的地址都有可能发生变化
在传输过程中有时源地址会变化,变化的原因是,可以进行地址转换,在地址转换过程中,改动的参数是源IP地址与源端口号码。
10.当一个IP分组进行直接交付是,要求发送站和目的站具有相同的( )
- A. A.IP地址
- B. B.主机号
- C. C.网络地址
- D. D.子网地址
11.网络层的主要目的是()
- A. 在邻接结点间进行数据报传输
- B. 在邻接结点间进行数据报可靠传输
- C. 在任意结点间进行数据报传输
- D. 在任意结点间进行数据报可靠传输
12.路由器连接的异构网络是指()
- A. 网络的拓扑结构不同
- B. 网络中计算机操作系统不同
- C. 数据链路层和物理层均不同
- D. 数据链路层协议相同,物理层协议不同
13.若甲向乙发起一个 TCP 连接,最大段长 MSS = 1KB, RTT = 5ms,乙开辟的接收缓存 为 64KB,则甲从连接建立成功至发送窗口达到 32KB,需经过的时间至少是
- A. 25ms
- B. 30ms
- C. 160ms
- D. 165ms
按照慢开始算法 ,发送窗口=min{拥塞窗口 ,接收窗口},初始的拥塞窗口为最大报文段长度 1KB 。每经过一个 RTT,拥塞窗口翻倍,因此需至少经过 5 个 RTT ,发送窗口才能达到 32KB, 所以选 A 。这里假定乙能及时处理接收到的数据 ,空闲的接收缓存≥ 32KB。
14.甲乙双方均采用后退 N 帧协议 (GBN ) 进行持续的双向数据传输 ,且双方始终采用捎带确认 ,帧长均为1000 B。Sx,y 和 Rx.y 分别表示甲方和乙方发送的数据帧 ,其中 x 是发送序号 ,y 是确认序号 (表示希望接收对方的下一帧序号):数据帧的发送序号和确认序号字段均为 3 比特。信道传输速率为100Mbps, RTT = 0.96ms 。下图给出了甲方发送数据帧和接收数据帧的两种场景 ,其中t0为初始时刻 ,此时甲方的发送和确认序号均为0, t1 时刻甲方有足够多的数据待发送。
请回答以下问题:
(1)对于图(a), t0 时刻到 t1 时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少 ? 正确接收的是哪几个帧 ? (请用 Sx,y形式给出 。)
(2)对于图 (a),从 t1 时刻起,甲方在不出现超时且未收到乙方新的数据帧之前 ,最多还可以发送多少个数据帧 ?其中第一个帧和最后一个帧分别是哪个 ? (请用 Sx,y 形式给出 。)
(3) 对于图( b),从 t1 时刻起,甲方在不出现新的超时且未收到乙方新的数据帧之前 ,需要重发多少个数据帧 ?重发的第一个帧是哪个 ? (请用 Sx,y 形式给出 。)
(4)甲方可以达到的最大信道利用率是多少 ?
( 1) t0 时刻到 t1 时刻期间,甲方可以断定乙方己正确接收了3个数据据帧 ,(1分)
分别是 S0,0, S1,0,S2,0 (1 分)
R3,3 说明乙发送的数据帧确认号是3 ,即希望甲发送序号3 的数据帧,说明乙己经接收了序号为 0~2 的数据帧 。
( 2 ) 从 t1 时刻起,甲方最多还可以发送 5 个数据帧 (1分),
其中第一个帧是 S5,2 (1 分),
最后一个数据帧是 S1,2 (1分)。
发送序号3 位,有 8 个序号。在GBN 协议中,序号个数二主发送 窗口 + 1,所以这里发送窗口最大为 7。此时己发送了S3,0和 S4,1,所以最多还可以发送5 个帧。
(3 ) 甲方需要重发 3 个数据帧 (1 分),
重发的第一个帧是 S2,3 (1 分)。
在 GBN 协议中, 接收方发送了 N帧后,检测出错 ,则需要发送出错帧及其之后的帧 。S2,0 超时 ,所以重发的第 一帧是 S2 ,己收到乙的 R2 帧,所以确认号应为 3。
(4 ) 甲方可以达到的最大信道利用率是
U=发送数据的时间/从开始发送第一帧到收到第一个确认帧的时间=NTd/(Td + RTT+Ta)
U 是信道利用率 ,N 是发送窗口的最大值 ,Td 是发送一数据帧的时间,RTT 是往返时间 ,
Ta 是发送一确认帧的时间 。这里采用捎带确认 ,Td=Ta。(2分)