TCP-IP练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习题练习题
1. 简述TCP ,UDP 。
答:TCP :提供一种可靠的运输层服务。
:提供一种可靠的运输层服务。
Ø TCP 的应用:Telnet 、Rlogin 、FTP 、SMTP 等。
等。
• UDP :是不可靠的。
:是不可靠的。
Ø UDP 的应用:DNS 、TFTP (简单文件传送协议)、BOOTP (引导程序协议)、
SNMP 。
2. 为什么IP 首部需要8位的协议字段。
位的协议字段。
答:由于TCP 、UDP 、ICMP 和IGMP 都要向IP 传送数据,因此IP 必须在生成的IP 首部中加入某种标识,以表明数据属于哪一层。
为此,IP 在首部中存入一个长度为8 bit 的数值,
称作协议域。
1表示为ICMP 协议,协议, 2表示为IGMP 协议,协议, 6表示为TCP 协议,协议,
17表示为UDP 协议。
协议。
3. 为什么TCP/IP 协议中需要引进端口?协议中需要引进端口?
答:允许多个应用进程访问运输层,TCP 和UDP 采用端口号来识别应用程序。
采用端口号来识别应用程序。
4. 并发型C/S 模型与重复型C/S 模型的区别?模型的区别?
答:答:
• 大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,为客户提供一
些特定的服务。
分为两种类型:些特定的服务。
分为两种类型:
Ø 重复型:重复型:
• I1. 等待一个客户请求的到来。
等待一个客户请求的到来。
• I2. 处理客户请求。
处理客户请求。
• I3. 发送响应给发送请求的客户。
发送响应给发送请求的客户。
• I4. 返回I 1步。
步。
Ø 并发型:并发型:
• C1. 等待一个客户请求的到来。
等待一个客户请求的到来。
• C2. 启动一个新的服务器来处理这个客户的请求。
生成的新服务器对客
户的全部请求进行处理。
处理结束后,终止这个新服务器。
户的全部请求进行处理。
处理结束后,终止这个新服务器。
• C3. 返回C 1步
5. 如何区别IEEE 802.3帧和以太网帧?帧和以太网帧?
答:802定义的有效长度值与以太网的有效类型值无一相同,可以通过它们实现对两种帧格式进行区分。
式进行区分。
6. 简述SLIP 协议的不足?协议的不足?
答:每一端答:每一端必须知道对方的必须知道对方的IP 地址。
SLIP 协议没办法把本端的IP 地址通知给另一端。
地址通知给另一端。
SLIP 协议数据帧中协议数据帧中没有协议类型字段没有协议类型字段。
如果一条串行线路用于SLIP ,那么它不能同时使用其他协议。
使用其他协议。
SLIP 没有在数据帧中加上在数据帧中加上检验和检验和,如果SLIP 传输的报文被线路噪声影响而发生错误,只能通过只能通过上层协议来发现上层协议来发现。
采用采用串行串行线路,通信线路,通信速率较低速率较低;
SLIP 线路上有许多小的TCP 分组进行交换。
(浪费大)(浪费大)
简述PPP 协议与SLIP 协议相比有哪些优点。
协议相比有哪些优点。
答:答:
(1) PPP 支持在单根串行线路上运行支持在单根串行线路上运行多种协议多种协议,不只是IP 协议;协议;
(2) 每一帧都有每一帧都有循环冗余检验循环冗余检验;
(3) 通信双方可以进行IP 地址的动态协商(使用IP 网络控制协议);
(4) 与CSLIP 类似,对TCP 和I 报文首部进行压缩;
(5) 链路控制协议可以对多个数据链路选项进行设置。
链路控制协议可以对多个数据链路选项进行设置。
7. 请绘制出IP 协议首部固定部分格式图,并对主要字段用途予以解释。
协议首部固定部分格式图,并对主要字段用途予以解释。
答:答:
8. 为什么IP 首部中,需要保留IP 数据报总长度字段。
数据报总长度字段。
答:因为一些数据链路(如以太网)答:因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。
尽管以太网的最小需要填充一些数据以达到最小长度。
尽管以太网的最小帧长为46字节,但是IP 数据可能会更短。
如果没有总长度字段,那么IP 层就不知道46字节中有多少是IP 数据报的内容。
数据报的内容。
9. 为什么IP 首部中,需要保留协议类型字段。
首部中,需要保留协议类型字段。
答:根据协议类型字段,IP 协议可以识别是哪个协议向IP 传送数据,或应提交给那个协议解析。
解析。
10. 简述如何实现ARP 欺骗(实验题)欺骗(实验题)
答:借助ARP 代理。
代理。
如果如果ARP 请求是从一个网络的主机发往另一个网络上的主机,请求是从一个网络的主机发往另一个网络上的主机,由连接由连接这两个网络的ARP 代理(Proxy ARP)路由器回答该请求,并进行转发。
路由器回答该请求,并进行转发。
11. 一个主机如何确定同以网络中是否有另一个主机设置了与自己相同的I P 地址?地址? 答:可以采用免费ARP 。
即该主机发送ARP 查找自己的I P 地址。
地址。
12. 假如某ICMP 差错报文在转发过程中出现差错或丢失,发送方是否必须重传,为什么?为什么? 答:在对ICMP 差错报文进行响应时,永远不会生成另一份ICMP 差错报文,也不会要求重传,否则,传,否则,可能会遇到一个差错产生另一个差错的情况,可能会遇到一个差错产生另一个差错的情况,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,无休止地循环而差错再产生差错,无休止地循环下去。
下去。
13. 简述下面情形不会产生ICMP 差错报文的理由。
差错报文的理由。
1. ICMP 差错报文(注:ICMP 查询报文可能会产生ICMP 差错报文)。
2. 目的地址是广播地址或多播地址的I P 数据报。
数据报。
3. 作为链路层广播的数据报。
作为链路层广播的数据报。
4. 不是IP 分片的第一片。
分片的第一片。
5. 源地址不是单个主机的数据报。
即:源地址不能为零地址、环回地址、广播地
6. 址或多播地址。
址或多播地址。
答:都不会产生ICMP 差错报文。
差错报文。
14. 简述如何运用ICMP 端口不可达差错报文,实现MTU 下限估计。
下限估计。
答:UDP 的规则之一:如果收到一份UDP 数据报而目的端口与某个正在使用的进程不相符,那么UDP 返回一个ICMP 不可达报文。
不可达报文。
选择一个不可能的值作为对方主机UDP 端口号,通过迭代发送不分片的不同大小包,直至收到ICMP 不可达报文差错报文,这时的报文大小是MTU 的某个下限。
的某个下限。
15. 小张用Ping 测试搜狐W eb 服务器是否可达,发现ping 发送出去的4
个ICMP 回显请求报文全部丢失,这是否说明搜狐Web 服务器不可达,为什么?服务器不可达,为什么?
答:Ping 程序的运行结果只能显示某台主机不可达,但并不能说明某台主机不可达.有可能搜狐W eb 服务器主机过滤ping 的ICMP 回显请求报文。
回显请求报文。
16. 举例说明ICMP 重定向的用途。
重定向的用途。
答:ICMP 重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。
重定向报文只能由路由器生成,不能由主机生成。
文只能由路由器生成,不能由主机生成。
如下图:如下图:
17. OSPF 报文格式中有一个检验和字段,而RIP 报文则没有此项,这是为什么?报文则没有此项,这是为什么?
答:RIP 运行在UDP 上,UDP 提供了UDP 数据报中数据部分的一个可选的检验和。
而OSPF 运行在IP 上,IP 的检验和只覆盖了IP 首部,所以OSPF 必须增加它自己的检验和字段。
必须增加它自己的检验和字段。
18. 在一个以太网上,数据帧的最大长度是1500字节。
假定IP 首部为20字节,UDP 首部
为8字节。
我们发送一个数据部分长度为1473字节的UDP 数据报。
请分析该数据报发送时是否需要IP 分片,如何分片。
分片,如何分片。
答:1473字节的IP 数据报长度为1501,不能装入以太网数据帧,必须进行分片。
分片如图,
19. 一个用UDP 发送数据报的应用程序,它把数据报分成4个数据报片。
假定第1片和第
2片到达目的端,而第3片和第4片丢失了。
应用程序在10秒钟后超时重发该UDP 数据报,并且被分成相同的4片(相同的偏移和长度)。
假定这一次接收主机重新组装的时间为60秒,那么当重发的第3片和第4片到达目的端时,原先收到的第1片和第2片还没有被丢弃。
接收端能否把这4片数据重新组装成一份IP 数据报,为什么?数据报,为什么? 答:不能。
因为当应用程序超时重传时,重传产生的IP 数据报有一个新的标识字段。
而重新装配只针对那些具有相同标识字段的分段。
装配只针对那些具有相同标识字段的分段。
20. 广播是否增加了网络通信量?广播是否增加了网络通信量?
答:广播本身不会增加网络通信量,广播本身不会增加网络通信量,但它增加了额外的主机处理时间。
但它增加了额外的主机处理时间。
但它增加了额外的主机处理时间。
如果接收主机不正确如果接收主机不正确如果接收主机不正确 地响应了诸如ICMP 端口不可达之类的差错,那么广播也可能导致额外的网络通信量。
路由器一般不转发广播分组,而网桥一般转发,所以在一个桥接网络上的广播分组可能比在一个路由网络上走得更远。
路由网络上走得更远。
21. TFTP 报文中没有检验和,如何判断接收到的数据是否有差错。
报文中没有检验和,如何判断接收到的数据是否有差错。
答:TFTP 基于UDP ,它假定任何数据差错都将被UDP 的检验和检测到。
的检验和检测到。
22. TFTP 基于UDP ,如何保证文件的正确传送。
,如何保证文件的正确传送。
答:当出现分组丢失或分组重复现象时,通常可通过发送方的超时与重传机制解决。
但当双方都超时与重传时,可能会出现“魔术新手综合症”问题,造成在传送的过程封包不断的被复制增长。
23. 如图bsdi 和svr4分别是TFTP 客户端和服务器端,客户端和服务器端,
TFTP 服务器端采用熟知端口69与客户端通信,之后又采用临时端口1077向客户端发送接收数据,请分析服务器进程端口变化的原因。
数据,请分析服务器进程端口变化的原因。
答:TFTP 服务器进程不能占用熟知端口69来完成需一些时间的文件传输。
相反,在传输当前文件的过程中,这个熟知端口要留出来供其他的TFTP 客户进程发送它们的请求。
客户进程发送它们的请求。
24. 请绘制出TCP 协议首部固定部分格式图,并对主要字段用途予以解释。
协议首部固定部分格式图,并对主要字段用途予以解释。
答:答:
25. 简要描述建立一条TCP 连接的基本过程。
连接的基本过程。
答:答:
① 请求端(客户):发送一个SYN 段指明客户打算连接的服务器的端口,以及初始序号(ISN ,
上例中为1415531521)。
这个SYN 段为报文段1。
② 服务器:发回包含服务器的初始序号的SYN 报文段(报文段2)作为应答。
同时,将序
号设置为客户的ISN 加1以对客户的SYN 报文段进行确认。
一个SYN 将占用一个序号。
将占用一个序号。
③ 客户必须将确认序号设置为服务器的ISN 加1以对服务器的SYN 报文段进行确认(段3)。
26. 简要描述释放一条TCP 连接的基本过程。
连接的基本过程。
答:答:
① 当一方完成数据发送任务后,就能发送一个FIN 终止这个方向连接。
终止这个方向连接。
② 当一端收到一个FIN ,必须通知应用层另一端已经终止那个方向的数据传送。
,必须通知应用层另一端已经终止那个方向的数据传送。
③ 收到一个FIN 只意味着在这一方向上没有数据流动。
一个TCP 连接在收到一个FIN 后仍能
发送数据。
发送数据。
④ 发送FIN 通常是应用层进行关闭的结果。
通常是应用层进行关闭的结果。
27. 当TCP 执行一个主动关闭,并发回最后一个ACK ,该连接必须在TIME_W AIT 状态停
留的多久,为什么?留的多久,为什么?
答:必须停留时间为2倍的MSL 。
MSL 是是任何报文段被丢弃前在网络内的最长时间,这样可以防止本连接的报文因延迟而干扰新连接。
可以防止本连接的报文因延迟而干扰新连接。
28. 当服务器执行被动关闭TCP 连接时,不会进入TIME_W AIT 状态,为什么?状态,为什么? 答:因为,答:因为,终止一个客户程序,终止一个客户程序,终止一个客户程序,并立即重新启动,并立即重新启动,并立即重新启动,则这个新客户程序将不能重用相同的本地则这个新客户程序将不能重用相同的本地端口。
端口。
但这不会带来什么问题,但这不会带来什么问题,但这不会带来什么问题,因为客户使用本地端口,因为客户使用本地端口,因为客户使用本地端口,而并不关心这个端口号是什么。
但而并不关心这个端口号是什么。
但对于服务器,因为服务器通常使用熟知端口。
因为服务器通常使用熟知端口。
如果终止一个已经建立连接的服务器程序,如果终止一个已经建立连接的服务器程序,如果终止一个已经建立连接的服务器程序,并并试图立即重新启动这个服务器程序,服务器程序将不能把它的这个熟知端口赋值给它的端点,因为那个端口是处于2MSL 连接的一部分。
在重新启动服务器程序前,它需要在1~4分钟。
钟。
29. 半打开连接和半关闭连接的区别是什么?半打开连接和半关闭连接的区别是什么?
答:在一个半关闭的连接上,一个端点已经发送了一个FIN ,正等待另一端的数据或者一个FIN 。
一个半打开的连接是当一个端点崩溃了,而另一端还不知道的情况。
的连接是当一个端点崩溃了,而另一端还不知道的情况。
30. 如下图,请解释tcpdump 输出。
输出。
答:客户在主机solaris 上,服务器在主机bsdi 上。
客户对服务器SYN 的确认(ACK )和客户的第一个数据段结合在一起(第3行)。
接着,客户在等待它的数据的确认之前发送了它的FIN (第4行)。
这样使得服务器可以在第5行同时确认客户数据和它的FIN 。
这次交互(将一个报文段从客户发送到服务器)需要7个报文段,而正常的连接建立和终止,以及一个数据段和它的确认,需要9个报文段。
个报文段。
31. 请简要阐述Nagle 算法的基本思想。
算法的基本思想。
答:答:
① 一个TCP 连接上,最多只能有一个未被确认的未完成的小分组;的未完成的小分组;
② 在该分组的确认到达之前,不能发送其他的小分组。
在该分组的确认到达之前,不能发送其他的小分组。
③ 相反,TCP 收集这些小分组数据,送入缓存,在确认到来或存到一定数量时,再以
一个分组的方式发出去。
一个分组的方式发出去。
优点:算法是自适应的:确认到达得越快,数据就发送得越快。
优点:算法是自适应的:确认到达得越快,数据就发送得越快。
32. 简述拥塞避免算法的基本步骤。
简述拥塞避免算法的基本步骤。
答:答: 对每个连接,拥塞避免算法和慢启动算法维持两个变量:拥塞窗口cwnd 和慢启动门限
ssthresh 。
算法的工作过程如下:。
算法的工作过程如下:
① 对给定的连接,初始化cwnd = 1 (报文段), ssthresh = 65535 (字节)。
② TCP 输出例程的输出不能超过cwnd 和接收方通告窗口的大小。
的大小。
• 拥塞避免是发送方使用的流量控制,通告窗口是接收方进行的流量控制。
拥塞避免是发送方使用的流量控制,通告窗口是接收方进行的流量控制。
• 前者是发送方感受到的网络拥塞的估计,后者与接收方在该连接上的可用缓存大小有关。
存大小有关。
③ 当拥塞发生时(超时或收到重复确认),ssthresh 被设置为当前窗口大小的一半(
cwnd 和接收方通告窗口大小的最小值,但最少为2个报文段)。
如果是超时引起拥塞,则cwnd 被设置为1个报文段(慢启动)。
④ 当新的数据被对方确认时,就增加cwnd ,但增加的方法依赖于是否正在进行慢启动
或拥塞避免。
或拥塞避免。
• 如果cwnd 小于或等于ssthresh ,则正在进行慢启动,否则正在进行拥塞避免。
• 慢启动一直持续到回到当拥塞发生时所处位置的半时候才停止,然后转为执
行拥塞避免。
行拥塞避免。
33. 什么情形下可能产生糊涂窗口综合症。
什么情形下可能产生糊涂窗口综合症。
答:当采用基于窗口的流量控制方案时,当采用基于窗口的流量控制方案时,发送端应用进程产生数据很慢、发送端应用进程产生数据很慢、发送端应用进程产生数据很慢、或接收端应用进程或接收端应用进程处理接收缓冲区数据很慢,处理接收缓冲区数据很慢,或二者兼而有之,或二者兼而有之,或二者兼而有之,会使应用进程间传送的报文段很小,会使应用进程间传送的报文段很小,会使应用进程间传送的报文段很小,特别是有特别是有效载荷很小,即糊涂窗口综合症 。
34. 简述TCP 坚持定时器的用途。
坚持定时器的用途。
答:TCP 通过让接收方指明接收窗口大小来进行流量控制。
当接收窗口大小为0时,发送方将停止传送数据,直到接收方通知接收窗口变为非0。
由于TCP 不对ACK 报文段进行确认,只确认那些包含有数据的ACK 报文段。
因此接收方通知接收窗口大小非0的确认丢失,则双方就有可能因为等待对方而使连接终止:接收方等待接收数据(因为它已经向发送方通告了一个非0的窗口),而发送方在等待允许它继续发送数据的窗口更新。
TCP 坚持定时器通过超时发送探查报文,可以有效防止这种死锁情况的发生。
时发送探查报文,可以有效防止这种死锁情况的发生。
35. 简述如何实现TCP 路径MTU 发现。
发现。
答:答:
① 在连接建立时,TCP 使用输出接口或对端声明的MSS 中的最小MTU 作为起始报文段大
小。
路径MTU 发现不允许TCP 超过对端声明的MSS 。
② 一旦选定起始的报文段大小,一旦选定起始的报文段大小,在该连接上的所有被在该连接上的所有被TCP 发送的IP 数据报都将被设置DF 比
特。
特。
③ 如果某个中间路由器需要对一个设置了DF 标志的数据报进行分片,丢弃这个数据报,并
产生一个ICMP 的“不能分片”差错。
差错。
④ 如果收到这个ICMP 差错,
TCP 减少段大小并进行重传。
如果路由器产生的是一个较新的该类ICMP 差错,则报文段大小被设置为:下一跳的MTU -IP 和TCP 的首部长度。
如果是一个较旧的该类ICMP 差错,则必须尝试下一个可能的最小MTU 。
当由这个ICMP 差错引起的重传发生时,拥塞窗口不需要变化,但要启动慢启动。
引起的重传发生时,拥塞窗口不需要变化,但要启动慢启动。
⑤ 由于路由可以动态变化,在最后一次减少路径MTU 一段时间以后,可以尝试使用一个较
大的值(直到等于对端声明的MSS 或输出接口MTU 的最小值)。
36. 当由Rlogin 的服务器端进行流量控制时,用户在客户端输入终止终端输出键Control_S
后,客户端是否会立即停止输出,为什么?后,客户端是否会立即停止输出,为什么?
答:为终止终端输出而键入的Control_S 字符将沿网络传输到服务器进程,收到后服务器进程将停止往网络上写数据。
但是在写操作终止之前,服务器进程可能已经往网络上写了一窗口的输出数据。
即,在输出停止之前,还将有大量数据在屏幕显示。
口的输出数据。
即,在输出停止之前,还将有大量数据在屏幕显示。
37. 简述RPC 的基本工作原理。
的基本工作原理。
答:答:
① 当客户程序调用远程的过程时,实际上只是调用一个位于本机上的、由RPC 程序包
生成的函数-----客户残桩(stub )。
客户残桩将过程的参数封装成一个网络报文,并将该报文发送给服务器程序。
将该报文发送给服务器程序。
② 服务器主机上的一个服务器残桩负责接收这个网络报文:它从网络报文中提取参数,
然后调用应用程序员编写的服务器过程。
然后调用应用程序员编写的服务器过程。
③ 当服务器函数返回时,它返回到服务器残桩。
服务器残桩提取返回值,把返回值封
装成一个网络报文,然后将报文发送给客户残桩。
装成一个网络报文,然后将报文发送给客户残桩。
④ 客户残桩从接收到的网络报文中取出返回值,将其返回给客户程序。
客户残桩从接收到的网络报文中取出返回值,将其返回给客户程序。
38. 包含远程过程的RPC 服务器程序端口通常是临时端口,如何确保RPC 客户端获取该端
口号。
口号。
答:采用端口映射器,其中端口映射器本省必须拥有知名端口号,答:采用端口映射器,其中端口映射器本省必须拥有知名端口号,服务器程序使用服务器程序使用RPC 调用向端口映射器注册自身,客户程序使用RPC 调用向端口映射器查询。
调用向端口映射器查询。
39. ARP 是地址解析协议,请用简单语言说明其的工作原理。
是地址解析协议,请用简单语言说明其的工作原理。
答:答:
① 首先,每台主机都会在自己的ARP 缓冲区 (ARP Cache)中建立一个 ARP 列表,以
表示IP 地址和MAC 地址的对应关系。
地址的对应关系。
② 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是
否存在该 IP 地址对应的MAC 地址,如果有﹐就直接将数据包发送到这个MAC 地
址;如果没有,就向本地网段发起一个ARP 请求的广播包,查询此目的主机对应
的MAC 地址。
此ARP 请求数据包里包括源主机的IP 地址、硬件地址、以及目的主
机的IP 地址。
地址。
③ 网络中所有的主机收到这个ARP 请求后,会检查数据包中的目的IP 是否和自己的
IP 地址一致。
如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC 地址和IP 地址添加到自己的ARP 列表中,如果ARP 表中已经存在该IP 的信息,则
将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找
的MAC 地址;地址;
④ 源主机收到这个ARP 响应数据包后,将得到的目的主机的IP 地址和MAC 地址添加
到自己的ARP 列表中,并利用此信息开始数据的传输。
如果源主机一直没有收到
ARP 响应数据包,表示ARP 查询失败。
查询失败。
40. ARP 分组的长度是固定的吗,为什么?分组的长度是固定的吗,为什么?
答:答:
41. DNS 是指(域名系统Domain Name System )。
请用简单语言描述其工作原理。
请用简单语言描述其工作原理。
答:答:
当 DNS 客户机需要查询程序中使用的名称时,它会查询 DNS 服务器来解析该名称。
客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
条信息,以指定服务器应回答的问题。
① 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
② 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
③ DNS 域名的指定类别。
域名的指定类别。
42. OSPF 报文格式中有一个检验和字段,而RIP 报文则没有此项,这是为什么?报文则没有此项,这是为什么? 答:RIP 运行在UDP 上,而UDP 提供UDP 数据报中数据部分的一个可选的检验和,实现数据校验。
OSPF 运行在IP 上,IP 的检验和只覆盖IP 首部,所以OSPF 必须增加它自己的检验和字段。
检验和字段。