70
[email protected]. [email protected]. cn cn 网网网网网网网网网网 网网网网网网网网网网 第第第 第第 网 网 网 网 网 网 网 网 网 网 网 网 网 网 网 School of Electronics and Computer Science and Technology . NUC 交交 交交交交交交交交交交交交 交交交交交交 交交交交

第七章 传输层

  • Upload
    hertz

  • View
    67

  • Download
    0

Embed Size (px)

DESCRIPTION

交换 今日汗水, 路由 明朝辉煌. 中 北 大 学 电 子 与 计 算 机 科 学 技 术 学 院 School of Electronics and Computer Science and Technology . NUC. 第七章 传输层. §7 传输层. 本章内容 传输层概述 用户数据报协议 UDP 传输控制协议 TCP 流量控制和拥塞控制. § 7-1 传输层概述. 传输层负责将报文准确、可靠、顺序地进行源端到目的端(端到端, end-to-end )的传输。. 传输层. - PowerPoint PPT Presentation

Citation preview

Page 1: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

第七章传输层

中 北 大 学 电 子 与 计 算 机 科 学 技 术 学 院School of Electronics and Computer Science and Technology . NUC

交换交换今日汗水,今日汗水,路由路由明朝辉煌明朝辉煌

Page 2: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

§7 传输层

• 本章内容• 传输层概述• 用户数据报协议 UDP

• 传输控制协议 TCP

• 流量控制和拥塞控制

Page 3: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

§7-1 传输层概述• 传输层负责将报文准确、可靠、顺序地进行源端到目

的端(端到端, end-to-end )的传输。

Page 4: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

传输层• 从通信和信息处理的角度看,传输层向它上面的应用

层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

物理层

网络层

运输层运输层

应用层

数据链路层

面向信息处理

面向通信

用户功能

网络功能

Page 5: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

传输层 • 按照 OSI 的定义传输层也叫运输层, 负责在源端和

目标端之间正确地传输整个报文。也就是说要求在源端和目标端之间进行差错控制和流量控制,保证将网络层传输的分组形成正确的报文。

• 传输层的功能是找到对方的主机;会话层的功能是找到对方是谁,即建立双方通信实体 ( 或应用进程)之间的连接。

• 在 TCP/IP 协议中只有网络层、传输层和应用层,传输层的服务是实现双方通信实体 ( 或应用进程)之间的虚连接。它是 TCP/IP 中的关键层次,也是因特网的关键层次。

Page 6: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP/IP 传输层

TCP 属于面向连接的网络协议UDP 属于无连接的网络协议

TCP 属于面向连接的网络协议UDP 属于无连接的网络协议

应用层

传输层

Internet 层

物理层

数据链路层

Page 7: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

运输层和网络层的区别

应用进程

… 应用进程

IP 协议的作用范围(提供主机之间的逻辑通信)

TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)

因 特 网

Page 8: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP/IP 寻址

Page 9: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

源 / 目的端口号• 端口就是 TCP和 UDP 为了识别一个主机上的多个目

标而设计的• 应用程序客户端使用的源端口号一般为系统中未使用

的且大于 1023

• 目的端口号为所进行的操作。如 telnet为 23 。主机 A

10281028 2323 ……

源端口

目的端口

主机 B

Page 10: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

端口的作用

TCP 报文段UDP

用户数据报

应用进程

TCP 复用

IP 复用

UDP 复用

TCP 报文段UDP

用户数据报

应用进程

端口端口

TCP 分用 UDP 分用

IP 分用

IP 数据报IP 数据报

发送方 接收方

Page 11: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

端口• 端口用一个 16 bit 端口号进行标志。• 端口号只具有本地意义,即端口号只是为了标志本计

算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

Page 12: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

SOCKET 概念• SOCKET (套接字 / 管套 / 插口): 标识连接的端点, IP 地址 + 端口号 。• TCP和 UDP的 SOCKET 机制的工作过程:

TCP

SERVERSERVER

CLIENTCLIENT

UDP

申请 SOCKET 申请 SOCKET申请 SOCKET 申请 SOCKET

LISTEN CALL

CONNECTACCEPT

SENDRECEIVE

SENDTORECVFROM

SENDTORECVFROM

Page 13: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

端口号• 因特网“指派名字和号码管理局”

IANA( Internet Assigned Number Authority ):• 熟知端口( well-know port )

众所周知的标准性的,已经由 TCP/IP 协议确定和公布的,是所有用户进程都知道而共同认同的;

• 注册端口 IANA 不做特别规定,只须注册,以防止重复;

• 动态端口 不做特别的规定也不必注册,可以由任何应用程序暂时地自由是用,用来随时分配给请求通信的客户进程 ;

Page 14: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

常见的端口号

FTP TCP 20, 21Telnet TCP 23HTTP TCP 80DNS TCP,UDP 53TFTP UDP 69

• Well-known 端口: 0-1023

• 注册端口: 1024-49151

• 动态或私有端口: 49152-65535

11 、应记住常用的端口号。、应记住常用的端口号。22、、WindowsWindows 下所有端口均下所有端口均为开放,一些病毒及攻击就为开放,一些病毒及攻击就是利用一些开放端口这个漏是利用一些开放端口这个漏洞。洞。

Page 15: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心扩展访问列表的应用(参考)

   access-list 115 deny udp any any eq 69    access-list 115 deny tcp any any eq 135   access-list 115 deny udp any any eq 135   access-list 115 deny udp any any eq 137   access-list 115 deny udp any any eq 138   access-list 115 deny tcp any any eq 139   access-list 115 deny udp any any eq 139   access-list 115 deny tcp any any eq 445   access-list 115 deny tcp any any eq 593   access-list 115 deny tcp any any eq 4444   access-list 115 permit ip any any    interface <type> <number>   ip access-group 115 in    ip access-group 115 out

   access-list 115 deny udp any any eq 69    access-list 115 deny tcp any any eq 135   access-list 115 deny udp any any eq 135   access-list 115 deny udp any any eq 137   access-list 115 deny udp any any eq 138   access-list 115 deny tcp any any eq 139   access-list 115 deny udp any any eq 139   access-list 115 deny tcp any any eq 445   access-list 115 deny tcp any any eq 593   access-list 115 deny tcp any any eq 4444   access-list 115 permit ip any any    interface <type> <number>   ip access-group 115 in    ip access-group 115 out

Page 16: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

§7-2 用户数据报协议 UDP

源端口号 (16 比特 ) 目的端口号 (16 比特 )

其它 UDP 控制信息

数据

校验和 (16 比特 )

8字节

UDPUDP 应用在对延时比较敏感或不要应用在对延时比较敏感或不要求确认的数据传输时。求确认的数据传输时。

Page 17: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

UDP 的首部格式

伪首部 源端口 目的端口 长 度 检验和

数 据首 部

UDP 长度源 IP 地址 目的 IP 地址 0 17

IP 数据报

字节 4 4 1 1 2

12 2 2 2 2字节

发送在前

数 据首 部UDP 用户数据报

• 用户数据报 UDP 有两个字段:数据字段和首部字段。

Page 18: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

“ 伪首部”

• 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。

伪首部 源端口 目的端口 长 度 检验和

数 据首 部

UDP 长度源 IP 地址 目的 IP 地址 0 17

IP 数据报

字节 4 4 1 1 2

12 2 2 2 2字节

发送在前

数 据首 部UDP 用户数据报

Page 19: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

计算 UDP 检验和的例子 153.19.8.104171.3.14.11

12 字节

伪首部8 字节

UDP 首部7 字节

数据

填充

全 0 17 15 1087 13 15 全 0数据 数据 数据 数据数据 数据 数据 全 0

10011001 00010011 → 153.1900001000 01101000 → 8.10410101011 00000011 → 171.300001110 00001011 → 14.1100000000 00010001 → 0 和 1700000000 00001111 → 1500000100 00111111 → 108700000000 00001101 → 1300000000 00001111 → 1500000000 00000000 → 0 (检验和)01010100 01000101 → 数据01010011 01010100 → 数据01001001 01001110 → 数据01000111 00000000 → 数据和 0 (填充)10010110 11101101 → 求和得出的结果01101001 00010010 → 检验和

按二进制反码运算求和将得出的结果求反码

Page 20: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

§7-3 传输控制协议 TCP

0 31 位3 15

源端口 目的端口

发送序号

18

确认序号

检查和

选项和填充( 0 )

首部长度

URG

ACK

PSH

RST

SYN

FIN

保留 窗口大小

紧急指针

数据(可选)

20字节

Page 21: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 协议格式说明• 源端口和目标端口

端口是运输层与应用层的服务接口,与 IP 地址合成套接字,作为进程的唯一访问点,供指定进程来使用。

• 发送序号TCP 为把每个 TCP 连接中传送的数据流中的每一个字节都编上一个顺序号。整个数据的起始序号在连接建立时设置。

• 确认序号指出接收端主机希望收到对方的下一报文段的数据的第一个字节的序号

Page 22: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 协议格式说明

• 头部长度 头部长度或叫“数据偏移”,占 4位,取值为 5~15 ,注意头部长度以 4B( 32位)为单位;指明 TCP 报文段的数据从第几个 4B开始,即指出 TCP 报文段首部的长度。

• 保留保留占 6位,保留为今后使用,目前应置为 0

• 六个控制位实现 TCP 控制

Page 23: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 协议格式说明• 窗口

通告自己当前缓冲区的大小,也就是在确认号之后最多还可以发送多少字节。

• 检验和计算检验和的方法是将全部头部与数据,按 16位分开,若不足 16位应以 0补为 16位的倍数,但补入的0并不传输,对每 16位进行模 2加,结果取反即检验和。

• 紧急指针指出在本报文段中的紧急数据的字节数,所谓紧急事务:终止一个错误的程序、重复丢弃、丢失补足等

Page 24: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

控制位说明

• URG :紧急指针位 • ACK :是对确认序号的有效确认 • PSH :推操作,尽快地交付给接收应用进程• RST :复位,用于断开重建 TCP 连接• SYN :同步位,建立连接请求并使序号同步• FIN :终止位

Page 25: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 的传输机制

端口

发送 TCP 报文段

TCPTCP

TCPTCP接收缓存发送缓存

报文段报文段 …报文段报文段 报文段报文段

端口

发送端 接收端

向发送缓存写入数据块

从接收缓存读取数据块

应用进程 应用进程

Page 26: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 的数据编号与确认• TCP 协议是面向字节的。

TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。

• 在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。

• TCP 的确认是对接收到的数据的最高序号表示确认。

接收端返回的确认号是已收到的数据的最高序号加 1 。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。

Page 27: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 三次握手过程

发送 SYN= 1(seq#=100)

接收 SYN

发送 SYN= 1, ACK= 1 (seq#=300 ack#=101)

建立连接, ACK= 1(ack#=301)

主机 A 主机 B

1

2

3

接收 SYN,ACK

Page 28: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 的工作过程

10281028 2323

SP. DP.

102102102102

Seq.

302302

Ack.

10281028 2323

DP.

101101101101

Seq.

301301

Ack.

102810282323

SP. DP.

102102102102

Seq.

301301

Ack.

102810282323

SP. DP.

103103103103

Seq.

302302

Ack.

SP.

hostA hostB

Page 29: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 的连接和释放

SEQ=x+1,ACK=y+1

FIN,SEQ=y,ACK=x+1

SYN,SEQ=y,ACK=x+1

SYN,SEQ=x

A B

(a) 三次握手建立连接

ACK=y+1

ACK=x+1

FIN,SEQ=x

A B

(b) TCP 连接释放的释放TCP 的连接和释放

Page 30: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 窗口数的应用

Window size = 3发送 2

发送方

Window size = 3发送 3

ACK 3Window size = 2

第三个数据段被丢弃

Window size = 2发送 4

Window size = 2发送 3

ACK 5Window size = 2

接收方Window size = 3发送 1

WindowWindow 大小为发送方或接收大小为发送方或接收方的缓存大小。方的缓存大小。

Page 31: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

流量控制和缓存问题• 缓存大小问题:

固定大小缓存、可变大小缓存、为每个连接只分配一个缓存

• 低带宽突发业务,在发送端缓存;高速信息传输,在接收端缓存

• 动态缓存分配:

接收端通知发送端所分配 /剩余的空闲缓存数量,无空闲缓存时,发送端暂停发送

Page 32: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 的功能

• TCP 是面向连接的协议,可以在各种网络之间建立全双工的虚电路连接,实现无乱序、无丢失、无重复的数据传输,它采取了三次握手、两次确认的有效技术,作到了非常可靠。

• TCP 的流量控制 :窗口机制• TCP 的差错控制:校验和、超时重传和确认• TCP 的拥塞控制:窗口、拥塞避免算法:慢开始、加法增大、乘法减小( RFC2581 )

Page 33: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

滑动窗口的概念

• TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节字节。

• 在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。

• 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小) 。

Page 34: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

滑动窗口收到确认即可前移

100 200 300 400 500 600 700 800 900101 201 301 401 501 601 701 8011

发送窗口

可发送 不可发送

指针

• 发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。

• 发送端只要收到了对方的确认,发送窗口就可前移。• 发送 TCP 要维护一个指针。每发送一个报文段,指针

就向前移动一个报文段的距离。

Page 35: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

滑动窗口收到确认即可前移

100 200 300 400 500 600 700 800 900101 201 301 401 501 601 701 8011

发送窗口

可发送 不可发送

指针

100 200 300 400 500 600 700 800 900101 201 301 401 501 601 701 8011

可发送 不可发送

指针

发送窗口前移

已发送并被确认

已发送但未被确认

• 发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。

• 现在发送端还可发送 300 字节。

Page 36: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

滑动窗口

100 200 300 400 500 600 700 800 900101 201 301 401 501 601 701 8011

已发送并被确认

已发送但未被确认 可发送 不可发送

指针

发送窗口前移

100 200 300 400 500 600 700 800 900101 201 301 401 501 601 701 8011

已发送并被确认 可发送 不可

发送指针

发送窗口缩小

• 发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。

• 现在发送端最多还可发送 400 字节的数据。

Page 37: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

利用可变窗口大小进行流量控制SEQ = 1

SEQ = 201

SEQ = 401

SEQ = 301

SEQ = 101

SEQ = 501

ACK = 201, WIN = 300

ACK = 601, WIN = 0

ACK = 501, WIN = 200

主机 A 主机 B

允许 A 再发送 300 字节(序号 201 至 500 )

A 还能发送 200 字节

A 还能发送 200 字节(序号 301 至 500 )

A 还能发送 300 字节

A 还能发送 100 字节(序号 401 至 500 )

A 超时重发,但不能发送序号 500 以后的数据

允许 A 再发送 200 字节(序号 501 至 700 )

A 还能发送 100 字节(序号 501 至 700 )

不允许 A 再发送(到序号 600 的数据都已收到)

SEQ = 201 丢失!

Page 38: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免

• 发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。

• 因此,每一个 TCP 连接需要有以下两个状态变量:

• 接收端窗口 rwnd (receiver window) 又称为通知窗口 (advertised window)。

• 拥塞窗口 cwnd (congestion window)。

Page 39: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

接收端窗口 rwnd 和拥塞窗口 cwnd

• 接收端窗口 rwnd

• 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。

• 接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。

• 拥塞窗口 cwnd (congestion window)

• 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

Page 40: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

发送窗口的上限值

• 发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定:

发送窗口的上限值 发送窗口的上限值 Min [rwnd, cwnd] Min [rwnd, cwnd]

• 当 rwnd < cwnd 时,是接收端的接收能力限制发送窗口的最大值。

• 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

Page 41: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始算法的原理

• 在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。

• 在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。

• 用这样的方法逐步增大发送端的拥塞窗口 cwnd ,可以使分组注入到网络的速率更加合理。

Page 42: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

MSS• MSS 是 TCP 报文段中的数据字段的最大长度。• TCP 只规定了一种选项,即最大报文段长度 MSS

(Maximum Segment Size) 。• MSS 告诉对方 TCP :“我的缓存所能接收的报文段

的数据字段的最大长度是 MSS 个字节。”

目 的 端 口

数据偏移

检 验 和

选 项 (长 度 可 变)

源 端 口

序 号

紧 急 指 针

窗 口

确 认 号

保 留 FIN

SYN

RST

PSH

ACK

URG

填 充

Page 43: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

• 当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。

• 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

Page 44: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。

Page 45: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1 ,发送第一个报文段 M0 。

Page 46: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 发送端收到 ACK1 (确认 M0 ,期望收到 M1 )后,将 cwnd 从 1 增大到 2 ,于是发送端可以接着发送 M1 和 M2 两个报文段。

Page 47: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 接收端发回 ACK2 和 ACK3 。发送端每收到一个对新报文段的确认 ACK ,就把发送端的拥塞窗口加 1 。现在发送端的 cwnd 从 2 增大到 4 ,并可发送 M3 ~ M6 共 4个报文段。

Page 48: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 发送端每收到一个对新报文段的确认 ACK ,就把发送端的拥塞窗口加 1 ,因此拥塞窗口 cwnd 随着传输次数按指数规律增长。

Page 49: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

ssthresh = 16

慢开始 慢开始

线性规律增长

拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。

Page 50: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 假定拥塞窗口的数值增长到 24 时,网络出现超时(表明网络拥塞了)。

Page 51: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 更新后的 ssthresh 值变为 12 (即发送窗口数值 24 的一半),拥塞窗口再重新设置为 1 ,并执行慢开始算法。

Page 52: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

慢开始和拥塞避免算法举例

2 4 6 8 10 12 14 16 18 20 2200

4

8

12

16

20

24

传输次数

拥塞窗口 cwnd

进入拥塞避免

发生超时

指数规律增长

线性规律增长

ssthresh = 16

慢开始 慢开始拥塞避免 拥塞避免

更新后的 ssthresh = 12

进入拥塞避免

• 当 cwnd = 12 时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个 MSS 的大小。

Page 53: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

乘法减小

• Multiplicative Decrease

• “乘法减小”是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5 。

• 当网络频繁出现拥塞时, ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。

Page 54: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

加法增大

• Additive Increase

• “加法增大”是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。

Page 55: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

拥塞避免

• 必须注意:• “ 拥塞避免”并非指完全能够避免了拥塞。利用以

上的措施要完全避免网络拥塞还是不可能的。• “ 拥塞避免”是说在拥塞避免阶段把拥塞窗口控制

为按线性规律增长,使网络比较不容易出现拥塞。

Page 56: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

快重传和快恢复

• 快重传算法规定,发送端只要一连收到三个重复的 ACK 即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。

• 不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。

Page 57: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

快重传举例M1, M2

ACK2, ACK3

M4

主机 A 主机 B

B 确认 M1 和 M2

A 发送 M1 和 M2

A 收到了三个重复的确认 ACK3 ,就立即重传 M3 ,而不必等待超时重传。

M3 丢失!A 发送 M3 但丢失了A 发送 M4

ACK3

M5 A 发送 M5

ACK3 B 发送第二个重复确认 ACK3

M6 A 发送 M6

ACK3

M3

B 发送第三个重复确认 ACK3

B 只能再次确认 M2(因为 M3 没有收到)

Page 58: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

快恢复算法

• 当发送端收到连续三个重复的 ACK 时,就重新设置慢开始门限 ssthresh 。

• 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1 ,而是设置为 ssthresh + 3 MSS 。

• 若收到的重复的 ACK 为 n 个( n > 3 ),则将 cwnd 设置为 ssthresh + n MSS 。

• 若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。

• 若收到了确认新的报文段的 ACK ,就将 cwnd 缩小到 ssthresh 。

Page 59: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 的重传机制

• 重传机制是 TCP 中最重要和最复杂的问题之一。• TCP 每发送一个报文段,就对这个报文段设置一次

计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。

Page 60: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

往返时延的方差很大

• 由于 TCP 的下层是一个互连网环境, IP 数据报所选择的路由变化很大。因而运输层的往返时延的方差也很大。

时间

数据链路层

运输层

T1 T2 T3

往返时延的概率分布

Page 61: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

往返时延的自适应算法

• 记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。

• 将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延 RTT 。

• 每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延 RTT :

平均往返时延平均往返时延 RTT RTT (( 旧的旧的 RTT) RTT) (1 (1 ) ) ( ( 新的往返时延样新的往返时延样本本 ))上式中, 0 1

Page 62: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

参数的选择

• 若 很接近于 1 ,表示新算出的平均往返时延 RTT 和原来的值相比变化不大,而新的往返时延样本的影响不大 (RTT 值更新较慢 ) 。

• 若选择 接近于零,则表示加权计算的平均往返时延 RTT 受新的往返时延样本的影响较大 (RTT 值更新较快 ) 。

• 典型的 值为 7/8 。

Page 63: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

超时重传时间 RTO

• 计时器的 RTO (RetransmissionTime-Out) 应略大于上面得出的 RTT ,即:

RTO RTO RTT RTT

是个大于 1 的系数。• 若取 很接近于 1 ,发送端可及时地重传丢失的报文段,

因此效率得到提高。• 但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。

• 因此 TCP 原先的标准推荐将 值取为 2 。

Page 64: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

往返时间的测量相当复杂

• TCP 报文段 1 没有收到确认。重传(即报文段 2 )后,收到了确认报文段 ACK 。

• 如何判定此确认报文段是对原来的报文段 1 的确认,还是对重传的报文段 2 的确认?

往返时延 RTT?

发送一个TCP 报文段

超时重传TCP 报文段 收到 ACK

时间1 2

往返时延 RTT?

是对哪一个报文段的确认?

Page 65: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

Karn 算法

• 在计算平均往返时延 RTT 时,只要报文段重传了,就不采用其往返时延样本。

• 这样得出的平均往返时延 RTT 和重传时间就较准确。

Page 66: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

修正的 Karn 算法

• 报文段每重传一次,就将重传时间增大一些:

新的重传时间 新的重传时间 (( 旧的重传时间旧的重传时间 ))

• 系数 的典型值是 2 。• 当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延 RTT 和重传时间的数值。

• 实践证明,这种策略较为合理。

Page 67: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP 与 UDP

• UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。

虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

• TCP 则提供面向连接的服务。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销。

这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

Page 68: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

TCP和 UDP 协议的应用应用 应用层协议 传输层协议

名字解析 DNS 一般使用 UDP

路由协议 RIP 一般使用 UDP

网络管理 SNMP 一般使用 UDP

远程文件服务器 NFS 一般使用 UDP

IP电话 专用协议 一般使用 UDP

流式多媒体通信 专用协议 一般使用 UDP

电子邮件 SMTP/POP TCP

远程终端接入 TELNET TCP

万维网 HTTP TCP

文件传送 FTP TCP

Page 69: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

注意区分

• 传输层的 UDP 用户数据报与网际层的 IP 数据报有很大区别。 IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在传输层的端到端抽象的逻辑信道中传送的。

• TCP 报文段是在传输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的传输层是否建立了 TCP 连接。

Page 70: 第七章 传输层

[email protected]@nuc.edu.cn

网络工程专业实训中心网络工程专业实训中心

休息中 北 大 学 电 子 与 计 算 机 科 学 技 术 学 院

School of Electronics and Computer Science and Technology . NUC