计算机网络原理(第三章) 传输层 课后习题

1、实现可靠数据传输的主要措施有哪些?这些措施主要用于解决哪些问题?P98
差错检测:利用差错编码实现数据包传输过程中的比特差错检测
确认:确认方向发送方反馈接收状态
重传:发送方重新发送接收方没有正确接收的数据
序号:确保数据按序提交
定时器:解决数据丢失问题

2、UDP和TCP分别如何实现复用和分解?P97
在Internet网络中,唯一标识套接字的基本信息是IP地址和端口号。UDP基于目的IP地址和目的端口号二元组唯一标识一个UDP套接字,从而可以实现精确分解;
TCP则需要基于源IP地址、源端口号、目的IP地址、目的端口号四元组唯一标识一个TCP套接字(即一个TCP连接),从而实现精确分解。

3、请画出TCP报文段结构,并简要说明各个字段的主要作用?P113
0----------------------------16-----------------------------31
源端口号(16) 目的端口号(16)
序号(32)
确认序号(32)
首部长度(4) 保留(6)UAPRSF(各1) 接收窗口(16)
校验和(16) 紧急指针(16)
选项(长度可变) 填充字段(0-3字节 全0)
1.源端口号与目的端口号各占16位,标识发送该报文段的源端口和目的端口,用于多路复用/分解来自或送到上层应用的数据。
2.序号字段与确认序号字段分别占32位。TCP的序号是对每个应用层数据的每个字节进行编号,因此每个TCP报文段的序号是该段所封装的应用层数据的第一个字节的序号。
确认序号是期望从对方接收数据的字节序号,即该序号对应的字节尚未收到,该序号之前的字节已全部正确接收,也就是说,TCP采用累积确认机制
3.首部长度字段占4位,指出TCP段的首部长度,以4个字节为计算单位,例如该字段值为5时,表示TCp首部长度为20字节。
由于TCP选项字段的原因,TCP首部的长度是可变的。当该字段取最大值15时,表示TCP端的最大首部长度,即60个字节。可见,TCP段的选项字段最多为40字节。
4.保留字段占6位,保留为今后使用,目前值为0
5.URG、ACK、PSH、RST、SYN、FIN字段各占1位,共占6位,为6位标志位。
URG=1时,表明紧急指针字段有效,通知系统此报文段中有紧急数据,应尽快上送。
ACK=1时,标识确认序号字段有效;ACK=0时,确认序号字段无效。
TCP收到PSH=1的报文段时,就尽快将报文段中的数据交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后重新建立TCP连接
SYN=1时,表示此TCP报文段是一个建立新连接请求控制段或者是同意建立新连接的确认段(此时ACK=1)
FIN用于释放一个TCP连接,FIN-1时表示该TCP报文段的发送端数据已发送完毕,并请求释放TCP连接
6.接收窗口字段占16位,用于向对方通告接收窗口大小(单位为字节),表示接收方愿意接受的应用层数据字节数量,其值是本端接收对方数据的缓存剩余空间,用于实现TCP流量控制
7.校验和字段占16位。校验和字段检验的范围类似于UDP,包括TCP伪首部、TCP首部和应用层数据3部分,计算方法与UDP校验和的计算方法相同
8.紧急指针字段占16位,该字段只用URG=1时才有效。该字段指出本TCP报文段中紧急数据共有多少字节(紧急数据放在本报文段数据的最前面),即指出紧急数据最后一个字节在数据中的位置。
9.选项字段长度可变。最大段长度MSS、接收窗口扩大选项(3字节)、时间戳选项(10字节)、选择性确认(SACK)选项
10.填充字段,长度为0-3字节,取值全为0,目的是为了使整个首部长度是4字节的整数倍。

4、TCP为何采用三次握手来建立连接,若采用二次握手可以吗?为什么?P115
TCP之所以采用三次握手建立连接,是为了确保连接双方彼此完全清楚双方状态(比如初始序列号和接收窗口大小等),从而可靠、稳定的建立连接,
同时,通过三次握手建立连接还可以有效预防过期、失效的连接请求到达后,导致无效连接的建立。
三次握手缺一不可,因为网络存在数据丢失,第二次握手控制段可能丢失,这样主动发起连接的一方没有接收到第二次握手的控制段,则无法建立连接,而接受连接建立的一方则认为连接已建立,从而出现无效链接。
另外,二次握手建立连接,也无法避免失效连接请求。

5、请说明TCP建立连接与断开连接的过程,并给出主要状态转移?P117
建立连接:
第一次握手:客户端作为连接建立的发起端,选择客户端初始序列号x,向服务器发送(SYN=1,seq=x)的SYN段。客户状态由LISTEN进入SYN_SEND状态,等待服务器确认。
第二次握手:服务端收到客户端发送的SYN段后,选择服务器的初始序列号y,向客户端发送(SYN=1,ACK=1,seq=y,ack_seq=x+1)的SYNACK段。同时,服务器状态由LISTEN进入SYN_RCVD状态。
第三次握手:客户端收到服务器的SYNACK段后,向服务器发送(ACK=1,seq=x+1,ack_seq=y+1)的ACK段,同时,客户端进入ESTABLISHED状态,客户端确认连接已建立。服务的收到ACK段后,也进入ESTABLISHED状态,也确认连接已建立。
断开连接:
第一次挥手:当客户向服务器发送完最后一个数据段后,可以发送一个FIN段(FIN=1,seq=u),请求断开客户到服务器的连接,其状态又ESTABLISHED进入FIN_WAIT_1,该状态只能接受服务器发送的数据,而不能发送数据。
第二次挥手:服务器接收到客户的FIN段后,向客户发送一个ACK段(ACK=1,seq=v,ack_seq=u+1),ACK段可封装应用层数据。服务器状态由ESTABLISHED进入CLOSE_WAIT,该状态服务器仍可发送数据,但不再接收数据。
客户端收到ACK段后,状态由FIN_WAIT_1进入FIN_WAIT_2,仍然可以接收来自于服务器的数据。此时TCP连接已经关闭了客户端向服务器方向的数据传输,故称半关闭。
第三次挥手:服务器发送完最后一个数据段后,服务器向客户发送FIN段(FIN=1,seq=w,ack_seq=u+1),服务器状态由CLOSE_WAIT进入LAS_ACK,此时服务器不再发送数据。
第四次挥手:客户收到服务器发送的FIN段后,向服务器发送ACK段(ACK=1,seq=U+1,ack_seq+w+1),状态由FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,进入CLOSE状态,最终释放连接;
服务器接收到最后一次ACK段,状态由LAST_ACK进入CLOSE,最终释放连接。

6、TCP如何保证可靠数据传输?P119
TCP的可靠数据传输实现机制包括差错编码、确认、序号、重传、计时器等。
序列号是每个字节编号;确认序号为期望接收的字节序号,TCP通常采用累积确认;通常采用单一的重传计时器,计时器超时时间采用自适应算法设置超时时间;重传数据段主要针对两类事件,计时器超时或三次重复确认。

7、请分别简述GBN协议和SR协议的工作过程?
GBN协议的发送窗口大于1,接收窗口等于1;GBN协议的发送方如果超时,则重发所有已经发送单未收到确认的分组;GBN协议采用累积确认。
SR协议采用每个分组单独确认;每个已发送的分组需要独立计时,如果某个分组超时,只需重发该分组;SR协议的发送窗口和接收窗口都大于1。
滑动窗口协议的窗口大小与序号空间需要满足一个约束条件,发送窗口大小与接收窗口大小之和不大于分组序号空间大小。

8、说明TCP滑动窗口机制,对比TCP滑动窗口与GBN协议的异同?

9、TCP和UDP的主要区别是什么?

10、TCP如何实现拥塞控制?
慢启动
拥塞避免
快速重传
快速恢复

11、假设甲乙双方采用GBN协议发送报文段,甲已经发送了编号0-7的报文段。当计时器超时时,若甲只收到0号和3号报文段的确认,则甲需要重发的报文段有哪些?
因为GBN协议采用累积确认,所以甲需要重发的报文段是4-7.

12、主机甲乙通过128kbit/s卫星信道互连,采用滑动窗口协议发送数据,链路单向传播时延为250ms,分组长度为1000字节。不考虑确认分组的开销,为使信道利用率不小于80%,分组序号的位数至少要达到多少位?
传输时延d=L/R=(81000)(bit)/(1281000)(bit/s)=0.0625s=62.5ms 传播时延250ms RTT=2250ms=500ms
信道利用率U=Ws
(L/R)/(RTT+L/R)=62.5/(500+62.5)>=0.8 Ws>=7.2 Ws最小取8 Ws+Wr<=2K wr最小取1 k至少需要4位

13、若甲乙之间已建立一条TCP连接,拥塞控制处于拥塞避免阶段,阈值为8MSS,当甲的拥塞窗口大小为24MSS时发生了超时,则甲的拥塞窗口和阈值将分别调整为多少?
阈值=24/2=12
拥塞窗口=1

14、主机甲与主机乙之间已建立一条TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效荷载,第一个段的序列号是200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是多少?
第一个报文段的确认序列号是200+300=500 第二个报文段的确认序列号是500+500=1000

15、主机甲和主机乙之间已建立一条TCP连接,主机甲向主机乙发送了3个连续的TCP报文段,分别包含300字节、400字节和500字节的有效荷载,第3个段的序号为900,若主机乙仅正确接收到第1和第3个报文段,则主机乙向主机甲的确认序号是多少?
500

16、主机甲与主机乙之间已建立一条TCP连接,双方持续有数据传输,且数据无差错与丢失。若甲收到一个来自于乙的TCP报文段,该段的序号为1913,确认序号为2046,有效荷载为100字节,则甲立即发送给乙的报文段的序号和确认序号分别为多少?
序号:2046
确认序号:1913+100=2013

17、主机甲和主机乙已建立了TCP连接,甲始终以MSS=1KB大小的报文段发送数据,并一直有数据发送;乙每收到一个报文段都会发出一个接收窗口为10KB的确认段。若甲在t时刻发生超时时拥塞窗口为8KB,
则从t时刻起,不再发生超时的情况下,经过10RTT后,甲的发送窗口是多少?
t时刻,ssthresh设置为8KB/2=4KB 拥塞窗口设置为1KB 经过10个RTT后,拥塞窗口分别为1,2,4,5,6,7,8,9,10,11,12 发送窗口取拥塞窗口和接收窗口的最小值。所以选10KB 124为慢启动阶段,5-12位拥塞避免阶段

18、主机甲和主机乙之间已经建立了一个TCP连接,TCP最大段长度为1000字节。若主机甲的当前拥塞窗口为4000字节,此时主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的对第一个段的确认,确认段中通告的接收窗口大小为2000字节,
则随后甲还可以继续向主机乙发送的最大字节数是多少?
1000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子商务的安全机制及商务模式

电子商务最常见之安全机制有SSL及SET两种。【分类】B2B、B2C、 C2C、B2M四类电子商务模式。 B2B 指的是Business to Business. as in businesses doing business with other businesses,商家(泛指企业)对商家的电子商务&#xff0c;即企业与企业之间通过互联网进行产品、服务及…

Date和Calendar

此文章来源于廖雪峰博客&#xff1a;Date和Calendar - 廖雪峰的官方网站 在计算机中&#xff0c;应该如何表示日期和时间呢&#xff1f; 我们经常看到的日期和时间表示方式如下&#xff1a; 2019-11-20 0:15:01 GMT00:002019年11月20日8:15:0111/19/2019 19:15:01 America/N…

grandle下载安装图解

1、登录官网&#xff1a;www.gradle.org,进入到下图的界面&#xff1a; 我这里选择了最新版本下载 配置环境变量&#xff0c;这个gradle环境变量是依赖jvm的&#xff0c;需要优先配置jdk&#xff0c;我这里就配置好了 这个GRADLE_USER_HOME相当于maven的本地仓库 配置完成&…

android ListView控件滑动时出现黑色背景问题解法方案

设置ListView属性android:cacheColorHint"#00000000" <ListViewandroid:id"id/orderDetailListView01"android:layout_width"wrap_content"android:layout_height"wrap_content" android:cacheColorHint"#00000000" /&…

面向对象设计7大原则

概述 熟练掌握和应用面向对象设计&#xff08;Object Oriented Design&#xff0c;OOD&#xff09;7大原则&#xff0c;是初/中级Java工程师向高级/资深工程师进阶的一个必备技能&#xff0c;它可以大大提升程序的可复用性和可维护性&#xff0c;也是重构代码的一大利器。7大设…

discuz x2.5 DIY模块模板语法详解

基本语句 [loop]...[/loop]标签来循环显示模块中的数据&#xff1b;如果要在模板中多处循环可以使用[loop1]...[/loop1]的方式扩展&#xff08;只能扩展1-9个&#xff09; [orderN]...[/order]标签来替代默认loop中的第N个位置数据的展示&#xff0c;你可以使用[order1N]...[/o…

get请求可以传body吗_GET 和 POST 的区别?

同样还是面试被问到的问题&#xff0c;经过这两天的复盘&#xff0c;发现之前对其的了解只是冰山一角&#xff0c;这两天也学到了不少新的知识&#xff0c;不得不说面试的确能帮我们弥补一些不足。本文将从基本概念、两者之间的区别以及几个常见问题来进行介绍&#xff0c;首先…

WINCE 下配置 QT 的方法

1. 推荐安装环境 Windows XP SP3 VS2005(SP1)2. 载Qt for WinCE(eg. qt-everywhere-opensource-src-4.8.3.zip)3. 解压到C:\Qt\4.8.3WinCE4. 安装WinCE的SDK(如RNx&#xff0c;WinCE5.0的)5. 将C:\Qt\4.8.3WinCE\bin加到环境变量Path中6. 修改代码或配置(注1)&#xff0c;否则…

AQS基本原理

什么是AQS&#xff1f; AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量&#xff0c;还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中&#xff0c;只可能在一个时刻发生阻塞&#xff0c;从而降低上下文切…

C语言 int** 二重指针的理解

#include <stdio.h> #include <stdlib.h>/*&根据值找地址*根据地址找值 */ f(int** q){//传入的是指针的地址 int i 3; printf("子函数 i的地址 %#X\n",&i); // *q 代表的就是p变量 *q &i; //*q指向是p的值 也就是…

ReentrantReadWriteLock源码分析

概述 ReentrantReadWriteLock维护了一对相关的锁&#xff0c;它们分别是共享readLock和独占writeLock。关于共享读锁和排他写锁的概念其实很好理解。所谓共享读锁就是一个线程读的时候&#xff0c;其它线程也可以来读&#xff08;共享&#xff09;&#xff0c;但是不能来写。排…

@Autowired、@Qualifier、@Resource的区别

参考博文&#xff1a; http://www.cnblogs.com/happyyang/articles/3553687.html http://blog.csdn.net/revent/article/details/49203619 http://blog.csdn.net/ad921012/article/details/49679745 spring不但支持自己定义的Autowired注解&#xff0c;还支持几个由JSR-250…

UINavigationViewController的backBarButtonItem设置技巧

之前大家是否疑惑为什么设置了类似这样的代码 UIBarButtonItem *backButton [[UIBarButtonItem alloc] initWithTitle:"返回" …

MySQL行锁和表锁的含义及区别

今天在开发测试时候出现了锁表&#xff0c;原因是因为我在本地开启了事务&#xff0c;代码中打了断点&#xff0c;然后测试同学测试时候出现了锁表&#xff0c;我去排查了问题&#xff0c;然后找到相关的资料了解下&#xff0c; 总结&#xff1a;原因的表没有加索引&#xff0…

Thinking In Design Pattern——Query Object模式

什么是Query Object模式 Query Object的架构设计 Query Object在服务层的应用 测试 Query Object模式 Query Object&#xff1a;可以在领域服务层构造查询然后传给资源库使用&#xff0c;并使用某种查询翻译器将对象查询&#xff08;Query&#xff09;翻译成底层数据库持久化…

linux gcc编译C程序 分享

一个c语言程序从源文件到生成可执行文件&#xff0c;编译器需要共经历4个步骤&#xff1a;1) 预处理&#xff1a;把c文件中预处理命令扫描处理完毕&#xff0c;即对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析&#xff0c;此时生成的文件仍然是可…

java Arrays.copyOfRange使用方法

使用场景&#xff1a;比如当一个文本框输入多个值作为查询条件&#xff0c;这时候当输入的值过多&#xff0c;我们需要最大支持多少个&#xff1f;这时候&#xff0c;输入超出个数的值&#xff0c;就被截取不要 不然后台处理逻辑就要飞前台返回不能查询这样的提示&#xff0c;…

WinForm 中 comboBox控件之数据绑定

http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html 下面介绍三种对comboBox绑定的方式&#xff0c;分别是泛型中IList和Dictionary&#xff0c;还有数据集DataTable 一、IList 现在我们直接创建一个List集合&#xff0c;然后绑定 View Code IList<string>…

MySQL常用引擎有MyISAM和InnoDB区别

MySQL常用引擎有MyISAM和InnoDB&#xff0c;而InnoDB是mysql默认的引擎。MyISAM不支持行锁&#xff0c;而InnoDB支持行锁和表锁。 如何加锁&#xff1f; MyISAM在执行查询语句&#xff08;SELECT&#xff09;前&#xff0c;会自动给涉及的所有表加读锁&#xff0c;在执行更新…

java中异常与return

抽时间整理了下java中异常与return&#xff0c;以前这块总是弄混淆&#xff0c;觉得还是写下来慢慢整理比较好。由于水平有限&#xff0c;仅供参考。废话不多说&#xff0c;直接上代码。 下面是两个方法&#xff1a; 1 public static int throwReturn(){2 int ret…