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