计算机网络复习(第五章 运输层)

来源:互联网 发布:多线程并发 数据共享 编辑:程序博客网 时间:2024/05/22 10:39

课后答案:https://wenku.baidu.com/view/c12f74a5b52acfc788ebc98b.html

5.运输层

5.1运输层协议概述

5.1.1进程之间的通信

用户功能中的最低层。
运输层功能:复用和分用。
网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。
运输层进行差错检测。

5.1.2运输层的两个主要协议

1.用户数据报协议UDP
2.传输控制协议TCP
应用层主要使用TCP的协议:简单邮件传送协议SMTP,远程终端协议TELNET,超文本传送协议HTTP,文件传送协议FTP。

5.1.3运输层的端口

协议端口号、端口。
软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
16位——65535个不同的端口号。
熟知端口号/系统端口号——0~1023
登记端口号——1024~49151
客户端使用的端口号——49152~65535

5.2用户数据协议报UDP

5.2.1UDP概述

主要特点:
1.UDP是无连接的
2.UDP使用尽最大努力交付
3.UDP是面向报文的
UDP保留应用层报文的边界
4.UDP没有拥塞控制
5.UDP支持一对一,一对多,多对多的交互通信
6.UDP首部开销小,8字节

5.2.2UDP的首部格式

首部:源端口,目的端口,长度,检验和,都是两字节。
接收方接受的目的端口号不正确,ICMP发送“ 端口不可达”差错报文。
检验和:增加12字节伪首部(4字节源IP,4字节目的IP,1字节0,1字节17,2字节UDP长度)进行计算。把首部和数据部分一起都校验。把全零放入检验和字段,把UDP用户数据报看成许多16字节串接起来,最后可以填零来凑,但不发送。二进制反码求和。
接收方连同伪首部一起反码求和,结果全1表示正确。

5.3传输控制协议TCP概述

5.3.1TCP最主要的特点

1.TCP是面向连接的运输层协议。
2.每个TCP两个端点,点到点。
3.TCP提供可靠交付的服务。
4.TCP提供全双工通信。
5.面向字节流。TCP把数据看成一连串的务结构的字节流。

5.3.2TCP的连接

TCP把连接作为最基本的抽象。
TCP连接的端点叫做套接字(端口号拼接到IP)或者插口。

5.4可靠传输的工作原理

5.4.1停止等待协议

每发送完一个分组就停止发送,等待对方确认,收到确认后,发送下一个分组。
超时未收到确认,就重传前面发送过的分组。
注意三点:1.必须保留已发送的分组副本。2.分组和确认分组都必须进行编号3.超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。
若接收方的确认丢失,则应采取两个行动:1.丢弃这个重复分组2.向A发送确认。
上述称为自动重传请求ARQ

5.4.2连续ARQ协议

流水线传输,提高信道利用率。
维持发送窗口。接收方采用累积确认的方式,对按序到达的最后一个分组发送确认。

5.5TCP报文段的首部格式

20字节固定+4n字节根据需要增加
1.源端口,目的端口,各两字节。
2.报文段序号,四字节。TCP连接每一个字节都按顺序编号。首部序号是所要发送数据的第一个字节的序号。
3.确认号ack,期望收到对方下一个报文段的第一个数据字节的序号。
4.数据偏移,四字节,数据距离TCP报文段的距离。TCP首部最大60字节(数据偏移单位是4字节)
5.保留,占6位。
6.紧急URG,表明紧急数据,应尽快传送,TCP将之插到报文段数据的最前面,需要与紧急指针配合。
7.确认ACK,连接建立后,ACK置1.
8.推送PSH,很少使用,交互式通信,希望立即收到响应,收到后直接交付进程而不等待缓存填满后交付。
9.复位RST,表明TCP连接出现严重差错,必须释放连接,重建位,重置位。
10.同步SYN,建立连接时用来同步序号。
11.终止FIN,用来释放连接。
12.窗口,2字节,接收窗口,窗口值作为接收方让发送方设置其发送窗口的依据。
13.检验和,2字节,包括首部和数据。,加上伪首部,第四个字段为6.
14.紧急指针,2字节,指出紧急数据的末尾在报文段中的位置。窗口为0也可发送紧急数据。
15.选项,长度可变,最大4字节。最大报文段长度MSS,默认值536.
窗口扩大选项,三字节,一个字节表示移位值S,最大值是14
时间戳选项,10字节,时间戳值4字节,时间戳回送回答4字节,1,计算往返时间RTT,发送方把时间给到时间戳值,接收方把时间戳值复制到时间戳回送回答。 2.处理TCP序号超过2^32的情况,防止序号绕回PAWS,用时间戳区分。
选择确认选项

5.6TCP可靠传输的实现

5.6.1以字节为单位的滑动窗口

发送窗口,两部分,已发送未确认,允许发送未发送。
接收窗口,只能对按序收到的数据中的最高序号给出确认。
发送窗口发完,没有确认,经过一段时间后,重传这部分数据,重设超时计时器。
接收方不应过分推迟发送确认(0.5s)

5.6.2超时重传的时间确认

记录一个加权平均往返时间RTTS=(1-w)*(旧的RTT)+w*(新的RTT样本) w=0.125
超时重传时间RTO=RTTS+4*RTTD
RTTD是RTT的偏差的加权平均值=(1-a)*旧的RTTD+a*|RTTS-新的RTT样本| a=0.25
计算RTTS,重传了,就不采用其往返时间样本。报文每重传一次,就把RTO增大一些(典型做法是取两倍)

5.6.3选择确认SACK

只传送缺少的数据,不重传已经收到的数据。
左边界是第一的序号,右边界-1是最后一个的序号。
32边界+4SACK选项+4指明选项占用多少字节=40
没有指出发送方如何响应SACK,所以大多数实现还是重传未被确认的数据块。

5.7TCP的流量控制

5.7.1利用滑动窗口实现流量控制

流量控制:让发送方的发送速率不要太快,要让接收方来得及接收。
改变接收窗口rwnd实现流量控制
TCP为每一个连接设有一个持续计时器,收到零窗口通知,启动持续计时器,发送零窗口探测报文段,对方确认现在的窗口值,仍是零,重新维持计时器。

5.7.2必须考虑传输效率

最大报文段长度MSS
Nagle算法:第一个发出去,收到确认后把当前所有发出去,再次收到确认,再把当前所有发出去。到达数据达到发送窗口大小一半或已达到报文段的最大长度时,就立即发送。
糊涂窗口综合征:每次接收一个,发送一个,网络效率很低。窗口一直是1.可以让接收方等待一段时间,或者等到接收缓存已有一半空闲的空间。

5.8TCP的拥塞控制

5.8.1拥塞控制的一般原理

拥塞控制:防止过多数据注入到网络,这样可以使网络中的路由器或链路不致过载,全局性的过程。
流量控制往往指点对点通信量的控制。
开环控制:事先设计好
闭环控制:1.检测拥塞发生 2.发送拥塞信息到可采取行动的地方 3.调整网络系统的运行解决出现的问题。

5.8.2几种拥塞控制的方法

发送方让自己的发送窗口等于拥塞窗口cwnd。
1.慢开始和拥塞避免
慢开始:从1开始,每经过一个传输轮次,拥塞窗口加倍。
慢开始门限:超了用拥塞避免
拥塞避免:每次加1,线性增加拥塞窗口。
无论哪个阶段出现拥塞,就把慢开始门限设为当前拥塞窗口的一般,并把拥塞窗口赋为1,执行慢开始算法。
2快重传和快恢复
快重传:要求就收方每收到一个失序的报文段后就立即发出重复确认,使发送方及早知道有报文没有到达对方。发送方一连收到三个重复确认,就重传未收到的报文。发送方能尽早重传未被确认的报文。
快恢复:1.发送方收到三个重复确认,把慢开始门限ssthresh减半,接下去不执行慢开始算法 2.把cwnd设置为ssthreh减半后的数值,执行拥塞避免。
接受窗口rwnd又称通知窗口,发送窗口不能超过接受窗口的值。

5.8.3随机早期检测RED

路由器:尾部丢弃策略。
路由器维持两个参数,队列长度最小门线THmin,最大门线THmax,每一个分组抵达时,RED首先计算平均队列长度Lav
路由器实现RED算法:1.平均长度小于最小门限,放入队列。2.平均长度超过最大门限,丢弃。3.两者之间,按照概率p丢弃。
THmax=2*THmin比较合适。
在两者之间时,p线性从0~pmax
加权平均的方法计算平均队列长度Lav。
Lav=(1-w)*oldLav+w*nowLav
p=ptemp/(1-count*ptemp) count代表新到达的分组有多少个已经进入了队列。
过渡分组丢弃概率ptemp=pmax*(Lav-THmin)/(THmax-THmin)

5.9TCP的运输连接管理

传输控制块TCB

5.9.1TCP的连接建立

三次握手:
第一次(A—>B),SYN=1,seq=x
A进入SYN-SENT状态
第二次(B—>A),SYN=1,ACK=1,seq=y,ack=x+1
B进入SYN-RCVD状态
第三次(A—>B),ACK=1,seq=x+1,ack=y+1
A进入ESTAB-LISHED状态
seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。
ACK报文段可以携带数据,如果不携带数据则不消耗序列号,所以下一次数据报文段序号仍是seq=x+1.
A还要发送一次确认:防止已失效的连接请求报文突然又传送到了B,因而产生错误。

5.9.2TCP的连接释放

四次握手:
第一次(A—>B),FIN=1,seq=u
A进入FIN-WAIT-1状态
第二次(B—>A),ACK=1,seq=v,ack=u+1
B进入CLOSE-WAIT状态,A收到后进入FIN-WAIT-2状态,A->B的连接释放了。
第三次(B—>A),FIN=1,ACK=1,seq=w,ack=u+1
B重复上次确认,进入LAST-ACK状态,等待A的最后确认
第四次(A—>B),ACK=1,seq=u+1,ack=w+1
A进入TIME-WAIT-1状态
A经过时间等待计时器设置的时间后在进入CLOSED状态。
为什么等待:1.保证A的最后一个ACK报文能够到达B,B若没收到则会重传ACK+FIN报文 2.防止已失效的连接请求报文,经过2MSL后,本次连接所有相关报文都会消失。
保活计时器:服务器确认客户还在不在。通常两小时。然后每隔75min探测,10次则关闭连接。

5.9.3TCP的有限状态机

TCP有限状态机

0 0
原创粉丝点击