赞
踩
先根据书中的复习题巩固一遍, 最后回答常见问题TCP三次握手和四次挥手, 如有错误, 欢迎指出~
TCP3次握手: 为什么需要初始序号? 为什么需要3次握手, 而不是两次握手
TCP4次挥手
答:
答:
场景 | 映射 |
---|---|
每个家庭住自己的房子, 房子有唯一地址 | 每一台主机都有自己的IP地址 |
家庭中每个人都有自己独特的名字 | 主机中运行的每个进程都有自己唯一的端口号 |
家庭A一名成员代表家庭A收集全家庭的信件 | 某个运输层协议, 通过套接字从应用进程获取应用报文 |
家庭A代表将收集的所有邮件交给邮政服务 | 运输层协议将运输层报文段交付给网络层 (多路复用) |
信封上除了目的家庭地址没有别的东西, 邮政服务把邮件传输到目的家庭B | 网络层会将报文段与目的地址IP封装成数据报, 进行主机之间的网络传输 |
家庭B的代表从邮政服务获得邮件 | 目的主机的运输层从网络层中接收数据, 抽取出报文段 |
家庭B的代表把邮件分发给自己家里的成员 | 目的主机的运输层协议把数据通过套接字上交给应用进程 (多路分解) |
当集齐检验和, 序号, 定时器, 肯定和否定确认分组这些技术后, 一个基本的可靠数据传输协议已经构建好了.
a. 让源发送5个分组, 在这5个分组的任何一个到达目的地之前暂停该动画. 然后毁掉第一个分组并继续该动画. 试描述发生的情况.
b. 重复该实验, 只是现在让第一个分组到达目的地并毁掉第一个确认. 再次描述发生的情况.
c. 最后尝试发送6个分组. 发生了什么情况?
a. 主机A经过一条TCP连接向主机B发送一个大文件. 假设主机B没有数据发往主机A. 因为主机B不能随数据捎带确认, 所以主机B将不向主机A发送确认.
答: 错误. 主机B将不向主机A发送确认这句话违背了一个可靠数据传输协议的基本原则. 首先要明确为了确保可靠的数据传输, 接收方向发送方发送确定报文是协议的一部分. 再分析推导出这一错误结论的原因: 主机B不能随数据捎带确认. 书本上提出捎带的概念时, 给的是一个具体场景, 发送方要发送一个字符, 接收方要返回该字符进行回显, 所以顺便把确认信息放入到发给发送方的数据的报文段中. 要区分清楚确认和捎带确认之间的关系.
b. 在整个连接的过程中, rwnd的长度决不会变化.
答: 错误. rwnd = RcvBuffer - [LastByteRcvd - LastByteRead]. rwnd表示的是接收窗口的大小, 这取决于接收方应用程序从缓存中读取数据的速率和发送方发送的速率, 是会变化的.
c. 假设主机A通过一条TCP连接向主机B发送一个大文件. 主机A发送但未被确认的字节数不会超过接收缓存的大小.
答: 正确. 讲的就是TCP的流量控制.
d. 假设主机A通过一条TCP连接向主机B发送一个大文件. 如果对于这条连接的一个报文段的序号为m, 则对于后继报文段的序号将必然是m + 1.
答: 错误. 序号是根据TCP数据的字节流决定的, 而不是建立在报文序列之上. 后继报文段的序号应该是m + n, 而n是最大报文段长度.
e. TCP报文段在它的首部中有一个rwnd字段.
答: 错误. TCP报文段有接收窗口字段, rwnd存放在接收窗口字段中.
f. 假定在一条TCP连接中最后的SampleRTT等于1秒, 那么对于该连接的TimeoutInterval的当前值必定大于等于1秒.
答: 正确. TimeoutInterval = EstimatedRTT + 4 * DevRTT.
g. 假设主机A通过一条TCP连接向主机B发送一个序号为38的4个字节的报文段. 在这个相同的报文段中, 确认号必定是42.
答: 错误. 概念性错误, 确认号是期待接收方发送的序号.
a. 第一个报文段中有多少数据?
答: 110 - 90 = 20个字节.
b. 假设第一个报文段丢失而第二个报文段到达主机B. 那么在主机B发往主机A的确认报文中, 确认号应该是多少?
答: 90. 在建立连接的时候主机B就知道要先接收90.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。