《tcp-ip练习题》由会员分享,可在线阅读,更多相关《tcp-ip练习题(9页珍藏版)》请在金锄头文库上搜索。
1、练习题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 表示为
2、TCP 协议, 17 表示 为 UDP 协议。3.为什么 TCP/IP 协议中需要引进端口? 答:允许多个应用进程访问运输层,TCP 和 UDP 采用端口号来识别应用程序。4.并发型 C/S 模型与重复型 C/S 模型的区别? 答: 大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,为客户提供一 些特定的服务。分为两种类型: 重复型: I1. 等待一个客户请求的到来。 I2. 处理客户请求。 I3. 发送响应给发送请求的客户。 I4. 返回 I 1 步。 并发型: C1. 等待一个客户请求的到来。 C2. 启动一个新的服务器来处理这个客户的请求。生成的新服务器对客 户的全部请求进行处
3、理。处理结束后,终止这个新服务器。 C3. 返回 C 1 步5.如何区别 IEEE 802.3 帧和以太网帧? 答答:802 定义的有效长度值与以太网的有效类型值无一相同,可以通过它们实现对两种帧 格式进行区分。6.简述 SLIP 协议的不足? 答:每一端必须知道对方的 IP 地址。SLIP 协议没办法把本端的 IP 地址通知给另一端。 SLIP 协议数据帧中没有协议类型字段。如果一条串行线路用于 SLIP,那么它不能同 时使用其他协议。 SLIP 没有在数据帧中加上检验和,如果 SLIP 传输的报文被线路噪声影响而发生错误, 只能通过上层协议来发现。 采用串行线路,通信速率较低;SLIP 线
4、路上有许多小的 TCP 分组进行交换。 (浪费大)简述 PPP 协议与 SLIP 协议相比有哪些优点。 答: (1) PPP 支持在单根串行线路上运行多种协议,不只是 IP 协议; (2) 每一帧都有循环冗余检验; (3) 通信双方可以进行 IP 地址的动态协商(使用 IP 网络控制协议); (4) 与 CSLIP 类似,对 TCP 和 I 报文首部进行压缩; (5) 链路控制协议可以对多个数据链路选项进行设置。7.请绘制出 IP 协议首部固定部分格式图,并对主要字段用途予以解释。 答:8.为什么 IP 首部中,需要保留 IP 数据报总长度字段。 答:因为一些数据链路(如以太网)需要填充一些数
5、据以达到最小长度。尽管以太网的最 小帧长为 46 字节,但是 IP 数据可能会更短。如果没有总长度字段,那么 IP 层就不知道 46 字节中有多少是 IP 数据报的内容。9.为什么 IP 首部中,需要保留协议类型字段。 答:根据协议类型字段,IP 协议可以识别是哪个协议向 IP 传送数据,或应提交给那个协议 解析。10. 简述如何实现 ARP 欺骗(实验题) 答:借助 ARP 代理。如果 ARP 请求是从一个网络的主机发往另一个网络上的主机,由连 接这两个网络的 ARP 代理(Proxy ARP)路由器回答该请求,并进行转发。11. 一个主机如何确定同以网络中是否有另一个主机设置了与自己相同的
6、 I P 地址? 答:可以采用免费 ARP。即该主机发送 ARP 查找自己的 I P 地址。12. 假如某 ICMP 差错报文在转发过程中出现差错或丢失,发送方是否必须重传,为什么?答:在对 ICMP 差错报文进行响应时,永远不会生成另一份 ICMP 差错报文,也不会要求 重传,否则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,无休止地 循环下去。13. 简述下面情形不会产生 ICMP 差错报文的理由。 1.ICMP 差错报文(注:ICMP 查询报文可能会产生 ICMP 差错报文) 。 2.目的地址是广播地址或多播地址的 I P 数据报。 3.作为链路层广播的数据报。 4.不是
7、IP 分片的第一片。 5.源地址不是单个主机的数据报。即:源地址不能为零地址、环回地址、广播地 6.址或多播地址。 答:都不会产生 ICMP 差错报文。14. 简述如何运用 ICMP 端口不可达差错报文,实现 MTU 下限估计。 答:UDP 的规则之一:如果收到一份 UDP 数据报而目的端口与某个正在使用的进程不相 符,那么 UDP 返回一个 ICMP 不可达报文。 选择一个不可能的值作为对方主机 UDP 端口号,通过迭代发送不分片的不同大小包,直至 收到 ICMP 不可达报文差错报文,这时的报文大小是 MTU 的某个下限。15. 小张用 Ping 测试搜狐 Web 服务器是否可达,发现 p
8、ing 发送出去的 4 个 ICMP 回显请求报文全部丢失,这是否说明搜狐 Web 服务器不可达,为什么? 答:Ping 程序的运行结果只能显示某台主机不可达,但并不能说明某台主机不可达有可 能搜狐 Web 服务器主机过滤 ping 的 ICMP 回显请求报文。16. 举例说明 ICMP 重定向的用途。 答:ICMP 重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。重定向 报文只能由路由器生成,不能由主机生成。如下图:17. OSPF 报文格式中有一个检验和字段,而 RIP 报文则没有此项,这是为什么?答:RIP运行在UDP上,UDP提供了UDP数据报中数据部分的一个可选的检验和
9、。而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 秒钟后超
10、时重发该 UDP 数据报,并且被分成相同的 4 片(相同的偏移和长度) 。假定这一次接收主机重新组装 的时间为 60 秒,那么当重发的第 3 片和第 4 片到达目的端时,原先收到的第 1 片和第 2 片还没有被丢弃。接收端能否把这 4 片数据重新组装成一份 IP 数据报,为什么? 答:不能。因为当应用程序超时重传时,重传产生的IP数据报有一个新的标识字段。而重 新装配只针对那些具有相同标识字段的分段。20. 广播是否增加了网络通信量? 答:广播本身不会增加网络通信量,但它增加了额外的主机处理时间。如果接收主机不正 确 地响应了诸如ICMP端口不可达之类的差错,那么广播也可能导致额外的网络通信量
11、。路由 器一般不转发广播分组,而网桥一般转发,所以在一个桥接网络上的广播分组可能比在一 个路由网络上走得更远。21. TFTP 报文中没有检验和,如何判断接收到的数据是否有差错。 答:TFTP基于UDP,它假定任何数据差错都将被UDP的检验和检测到。22. TFTP 基于 UDP,如何保证文件的正确传送。 答:当出现分组丢失或分组重复现象时,通常可通过发送方的超时与重传机制解决。但当双方都超时与重传时,可能会出现“魔术新手综合症”问题,造成在传送的过程封包 不断的被复制增长。23. 如图 bsdi 和 svr4 分别是 TFTP 客户端和服务器端,TFTP服务器端采用熟知端口69与客户端通信,
12、之后又采用临时端口1077向客户端发送接收 数据,请分析服务器进程端口变化的原因。 答:TFTP服务器进程不能占用熟知端口69来完成需一些时间的文件传输。相反,在传输当 前文件的过程中,这个熟知端口要留出来供其他的TFTP客户进程发送它们的请求。24. 请绘制出 TCP 协议首部固定部分格式图,并对主要字段用途予以解释。 答:25. 简要描述建立一条 TCP 连接的基本过程。 答: 请求端(客户):发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号 (ISN,上例中为1415531521) 。这个SYN段为报文段1。 服务器:发回包含服务器的初始序号的SYN报文段(报文段2)作为应答
13、。同时,将序 号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。 客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(段3) 。26. 简要描述释放一条 TCP 连接的基本过程。 答: 当一方完成数据发送任务后,就能发送一个FIN终止这个方向连接。 当一端收到一个FIN,必须通知应用层另一端已经终止那个方向的数据传送。 收到一个FIN只意味着在这一方向上没有数据流动。一个TCP连接在收到一个FIN后仍 能发送数据。 发送FIN通常是应用层进行关闭的结果。27. 当 TCP 执行一个主动关闭,并发回最后一个 ACK,该连接必须在 TIME_
14、WAIT 状态 停留的多久,为什么? 答:必须停留时间为2倍的MSL。MSL是是任何报文段被丢弃前在网络内的最长时间,这样可以防止本连接的报文因延迟而干扰新连接。28. 当服务器执行被动关闭 TCP 连接时,不会进入 TIME_WAIT 状态,为什么? 答:因为,终止一个客户程序,并立即重新启动,则这个新客户程序将不能重用相同的本 地端口。但这不会带来什么问题,因为客户使用本地端口,而并不关心这个端口号是什么。 但对于服务器,因为服务器通常使用熟知端口。如果终止一个已经建立连接的服务器程序, 并试图立即重新启动这个服务器程序,服务器程序将不能把它的这个熟知端口赋值给它的 端点,因为那个端口是处
15、于2MSL连接的一部分。在重新启动服务器程序前,它需要在14 分钟。29. 半打开连接和半关闭连接的区别是什么? 答:在一个半关闭半关闭的连接上,一个端点已经发送了一个FIN,正等待另一端的数据或者一 个FIN。一个半打开半打开的连接是当一个端点崩溃了,而另一端还不知道的情况。30. 如下图,请解释 tcpdump 输出。答:客户在主机solaris上,服务器在主机bsdi上。客户对服务器SYN的确认(ACK)和客户 的第一个数据段结合在一起(第3行) 。接着,客户在等待它的数据的确认之前发送了它的 FIN(第4行) 。这样使得服务器可以在第5行同时确认客户数据和它的FIN。这次交互(将 一个
16、报文段从客户发送到服务器)需要7个报文段,而正常的连接建立和终止,以及一个数 据段和它的确认,需要9个报文段。31. 请简要阐述 Nagle 算法的基本思想。 答: 一个TCP连接上,最多只能有一个未被确认最多只能有一个未被确认的未完成的小分组; 在该分组的确认到达之前,不能发送其他的小分组。 相反,TCP收集这些小分组数据,送入缓存,在确认到来或存到一定数量时,再以 一个分组的方式发出去。优点:算法是自适应的:确认到达得越快,数据就发送得越快。32. 简述拥塞避免算法的基本步骤。 答: 对每个连接,拥塞避免算法和慢启动算法维持两个变量:拥塞窗口cwnd和慢启动门限 ssthresh。算法的工作过程如下: 对给定的连接,初始化cwnd = 1 (报文段) , ssthresh = 65535 (字节) 。 TCP输出例程的输出不能超过cwnd和接收方通告窗口接收方通告窗口的大小。拥塞避免是发送方使用的流量控制,通告窗口是接收方进行的流量控制。 前者是发送方感受到的网络拥塞