1.试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。各种应用进程之间通信需要"可靠或尽力而为"的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。
2.试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接又复用到IP数据报上。
3.试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。
答:VOIP:由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,但对传输时延的变化较敏感。有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。
原理:有差错的数据报UDP直接丢弃,而TCP则要求重传,TCP会带来较大的时延
此外还有DNS、SNMP等都采用不可靠的UDP协议,而不愿意采用可靠的TCP
4 如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由答。
答:可能,但应用程序中必须额外提供与TCP相同的功能。
5.端口的作用是什么?为什么端口要划分为三种?答:端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
熟知端口号:数值一般为0~1023,标记常规的服务进程如FTP是21,DNS是53,HTTP是80等
登记端口号:数值为1024~49151,标记没有熟知端口号的非常规的服务进程
短暂端口号:数值为49152~65535,客户进程运行时动态选择
把端口划分为3类是因为:避免端口号重复,无法区分应用进程。二是因特网上的计算机通信都是采用C/S方式,在客户发起通信请求时,必须知道服务器的端口,对应一些重要的应用程序,必须让所有用户知道。
6试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。
答:
3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组,在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
7、下面是以十六进制格式存储的一个UDP首部:CB84000D001C001C
试问:
a.源端口号是什么?
b.目的端口号是什么?
c.这个用户数据报的总长度是什么?
d.数据长度是多少?
e.这个分组是从客户到服务器还是从服务器到客户?
答:
a.源端口号是最前面的四位十六进制(CB84),代表着源端口号为52100。
b.目的端口号是第二个四位十六进制(000D),代表着目的端口号为13。
c.第三个四位十六进制(001C)定义了整个UDP分组的长度为28字节。
d.数据的长度是整个分组的长度减去首部的长度,也就是28-8=20字节。
e.目的端口号是13(熟知端口),所以是从客户到服务器的。
完整版参考1~49题答案