5-01 试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
(1) 地位和作用
- 地位:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层。
- 作用:运输层负责端到端的通信,向它上面的应用层提供服务。
(2) 区别
- 运输层为应用程序之间提供端到端的逻辑通信。
- 网络层为主机之间提供逻辑通信。
(3) 为什么?
各种应用程序之间的通信需要(可靠/尽力而为)的服务质量,必须由传输层以复用或分用的方式加载到网络层。
5-02 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是面向无连接的?
都是;但对于运输层来说,它是面向连接的,但对于网络层来说,它是无连接的。
5-03 试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接又复用到IP数据报上。
首先,你得明确什么是复用,什么是分用?
- 复用:应用层的所以进程都可以通过运输层再传到网络层。
- 分用:运输层收到网络层的数据后交付明确的目的进程。
5-05 试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP?。
基于IP的语音传输,VOIP(Voice over Internet Protocol):由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,但对传输时延的变化较敏感。 比如视频播放程序。
原因:UDP直接丢弃有差错的数据报,而TCP则要求重传,TCP会带来较大的时延。
5-06 接收方收到有差错的UDP用户数据报时应如何处理?
直接丢弃。
5-07 如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由答。
可能,在应用程序必须额外提供与TCP相同功能的前提下。
5-08 为什么说UDP是面向报文的,而TCP是面向字节流的?
UDP面向报文:
- UDP对应用层传达的数据加上首部后就向下交付,不做修改。
TCP面向字节:
- 当应用程序传输的数据块太长,TCP就对应用层下发的数据分段后,以字节为单位存放在发送缓存区中,等到合适时,则将缓存区的字节序列发送出去。
5-09 端口的作用是什么?为什么端口要划分为三种?
作用:为应用进程的程序进行标记,使得运行在不同操作系统上的程序能够互相通信。
原因:
- 避免端口号重复导致无法区分应用进程。
- 区分重要/不可少的应用程序的端口和普通程序的端口。
5-10 试说明运输层中伪首部的作用?
用于计算运输层的数据报的首部校验和。
5-11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封装成IP数据报。既然都是数据报,可否跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没提提供?
不能,IP数据报只负责找到主机而找不到主机上的应用进程。而且IP层不提供UDP提供的差错校验。
5-13 一个UDP用户数据的数据字段为8192字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。
该报文长度 = 8192+8(首部长度)=8200,由于以太网的最大传输单元MTU=1500,又因为IP报文的数据部分为1480,所以8200/1480 = 5余0.5,所以应当划分为6个IP数据报片
- 数据报字段长度:五个1480、一个800
- 片偏移字段(每个数据分片的数据部分的首字节/8):
0,185(1480/8),370(2906/8),555,740,925
5-14 一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器发送给客户?使用UDP的这个服务器程序是什么?
UDP数据报的首部共8个字节,4个字段。
- 源端口:0x0632 =
- 目的端口:0x0045 =
- 用户数据报长度:0x 001C =
- 数据部分长度:0xE217=
是的,因为目的端口是熟知端口。
服务器程序是:TFFTP
5-15 使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?
(1)TCP对数据的传输采用的是可靠交付时,会对数据进行拥塞控制算法,故可能会对实时性要求高的业务产生延时高的问题。
(2)如果是采用UDP进行实时语音数据的传输就不会产生延时高的问题,,因为UDP对数据没有拥塞控制,而是提供尽力而为的服务,但可能会出现丢包,失序,且不重传的问题,如果如果应用对准确性要求高的话,还是会产生问题。
5-21 使用连续ARQ协议中,发送窗口大小是3,而序列范围[0,15],而传输媒体保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是5。
(1)在发送方的发送窗口中可能有出现的序号组合有哪几种?
(2)接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
答:
(1) 发送窗口的可能的序列组合[2,4],[3,5],[4,6],[5, 7]
因为到 4 为止的报文都已经收到,若这
- 些确认全部到达接收方,则WT=[5,7]
- 若所有的确认都丢失,则WT=[2,4]
- 若3号确认丢失,则WT=[3,5]
- 若4号确认丢失,则WT=[4,6]
- 所以,WT可能是[2,4],[3,5],[4,6],[5, 7]中的任何一个。
(2) 因为这里是采用累积确认机制,题目中说了期望收到的序号是5,那么确认分组5,4,3就有可能在网络滞留,又因为发送窗口的大小是3,故
- 确认分组
ACK:3,4,5,是对2,3,4的确认。
5-23 主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。
(1)第一个报文段携带了多少个字节的数据?
(2)主机B收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?
(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?
TCP报文段的首部的最小长度为20字节。 答:
(1)30(99-79)
(2)100(期待的下一个报文段的第一个数据字节的序号)
(3)80(180-100)
(4)70
5-24 一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kb/s。试问发送窗口W是多少?(提示:可以有两种答案,取决于接收端发出确认的时机)。
5-26 为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段?
因为TCP首部有一个选项字段,这个字段的长度是可变的(当选项字段长度为0时,首部最小长度是20字节),故首部长度字段也是可变的;
而UDP用户数据报的报文首部是固定长度(8个字节)。
5-27 .一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP报文字段中的序号字段可能编出的最大序号,问还能否用TCP来传送?
(1)IP数据报的最大长度为2^16-1 = 65535,TCP报文段的数据部分最大长度=65535-20-20=65495字节
附:不要想到
MTU这里,因为MTU是以太网大传输单元MTU为1500个字节,如果IP报文的长度超过1500,那么会对其进行分片处理。
(2)可以,因为当序号使用mod2^32 算法,也就是说到了最大序号时,序号会变回0.
5-29 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。
理由:还未重传就收到了对更高序号的确认。因为TCP接收方只会对按序到达的最后一个分组发送确认,当对更高的序号确认了意味着已经到达了,即不用重传了。
5-30 设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时延为20ms,问所能得到的最大吞吐量是多少?
什么是吞吐量? 吞吐量(
throughput)表示在单位时间内通过某个网络(或信道、接口)的数据量
最大吞吐量 = 一个窗口的大小除以一个传输轮次的时间 =
65535*8
最大吞吐量 = ———————————————————— = 25.54 Mbit/s
(65535*8/10^9+0.02)
5-31 .通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?
- 发送时延等于窗口数据量除以带宽。
- 最大吞吐量为一个窗口的大小除以一个传输轮次的时间(发送时延+传播时延)
- 信道利用率 = 吞吐量/信道带宽
发送时延:65535*8/1*10^9 =
传播时延 = 10ms
往返时间 = 10*2ms
65535*8
最大吞吐量 = ———————————————————— = 25.54 Mbit/s
(65535*8/10^9+0.02)
25.54 Mbit/s
信道利用率 = ———————————————————— = 2.554%
1*10^3 Mbit/s
5-45 解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据。
当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着主机1发送另一个TCP数据段,但,主机2在收到第二个TCP数据段之前发出了释放连接请求,如果突然释放连接,主机1发送的第二个TCP报文段会丢失。
而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接受主机1发来的数据,所以可保证不丢失数据。
5-46 试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。
3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
反之:写那个特殊情况,