1 / 70

第七章 传输层

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

hertz
Télécharger la présentation

第七章 传输层

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 交换今日汗水,路由明朝辉煌 中 北 大 学 电 子 与 计 算 机 科 学 技 术 学 院 School of Electronics and Computer Science and Technology . NUC 第七章传输层

  2. §7 传输层 • 本章内容 • 传输层概述 • 用户数据报协议UDP • 传输控制协议TCP • 流量控制和拥塞控制

  3. §7-1 传输层概述 • 传输层负责将报文准确、可靠、顺序地进行源端到目的端(端到端,end-to-end)的传输。

  4. 传输层 • 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 面向信息处理 应用层 用户功能 运输层 网络层 面向通信 网络功能 数据链路层 物理层

  5. 传输层 • 按照OSI的定义传输层也叫运输层, 负责在源端和目标端之间正确地传输整个报文。也就是说要求在源端和目标端之间进行差错控制和流量控制,保证将网络层传输的分组形成正确的报文。 • 传输层的功能是找到对方的主机;会话层的功能是找到对方是谁,即建立双方通信实体(或应用进程)之间的连接。 • 在TCP/IP协议中只有网络层、传输层和应用层,传输层的服务是实现双方通信实体(或应用进程)之间的虚连接。它是TCP/IP中的关键层次,也是因特网的关键层次。

  6. TCP属于面向连接的网络协议 UDP属于无连接的网络协议 TCP/IP传输层 应用层 传输层 Internet层 数据链路层 物理层

  7. 运输层和网络层的区别 应用进程 应用进程     … … 因 特 网 IP 协议的作用范围 (提供主机之间的逻辑通信) TCP 和 UDP 协议的作用范围 (提供进程之间的逻辑通信)

  8. TCP/IP寻址

  9. 主机 B 主机 A 源端口 1028 23 … 目的端口 源/目的端口号 • 端口就是TCP和UDP为了识别一个主机上的多个目标而设计的 • 应用程序客户端使用的源端口号一般为系统中未使用的且大于1023 • 目的端口号为所进行的操作。如telnet为23。

  10. 接收方 发送方 应用进程 应用进程             端口 端口 TCP 复用 UDP 复用 UDP 分用 TCP 分用 UDP 用户数据报 UDP 用户数据报 TCP 报文段 TCP 报文段 IP 复用 IP 分用 IP 数据报 IP 数据报 端口的作用

  11. 端口 • 端口用一个 16 bit 端口号进行标志。 • 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

  12. TCP UDP SERVER CLIENT SERVER CLIENT 申请SOCKET 申请SOCKET 申请SOCKET 申请SOCKET LISTEN CALL RECVFROM SENDTO ACCEPT CONNECT RECVFROM SENDTO RECEIVE SEND SOCKET概念 • SOCKET(套接字/管套/插口): • 标识连接的端点,IP地址 + 端口号 。 • TCP和UDP的SOCKET机制的工作过程:

  13. 端口号 • 因特网“指派名字和号码管理局”IANA(Internet Assigned Number Authority): • 熟知端口(well-know port) 众所周知的标准性的,已经由TCP/IP协议确定和公布的,是所有用户进程都知道而共同认同的; • 注册端口 IANA不做特别规定,只须注册,以防止重复; • 动态端口 不做特别的规定也不必注册,可以由任何应用程序暂时地自由是用,用来随时分配给请求通信的客户进程 ;

  14. 常见的端口号 FTP TCP 20,21 Telnet TCP 23 HTTP TCP 80 DNS TCP,UDP 53 TFTP UDP 69 1、应记住常用的端口号。 2、Windows下所有端口均为开放,一些病毒及攻击就是利用一些开放端口这个漏洞。 • Well-known端口:0-1023 • 注册端口:1024-49151 • 动态或私有端口:49152-65535

  15. 扩展访问列表的应用(参考) 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

  16. 目的端口号(16比特) 源端口号(16比特) 8字节 其它UDP控制信息 校验和 (16比特) 数据 §7-2 用户数据报协议UDP UDP应用在对延时比较敏感或不要求确认的数据传输时。

  17. 4 4 1 1 2 字节 源 IP 地址 目的 IP 地址 0 17 UDP长度 字节 12 2 2 2 2 长 度 伪首部 源端口 目的端口 检验和 UDP 用户数据报 首 部 数 据 发送在前 首 部 数 据 IP 数据报 UDP 的首部格式 • 用户数据报 UDP 有两个字段:数据字段和首部字段。

  18. 4 4 1 1 2 字节 源 IP 地址 目的 IP 地址 0 17 UDP长度 字节 12 2 2 2 2 长 度 伪首部 源端口 目的端口 检验和 UDP 用户数据报 首 部 数 据 发送在前 首 部 数 据 IP 数据报 “伪首部” • 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。

  19. 153.19.8.104 12 字节 伪首部 171.3.14.11 全 0 17 15 1087 13 15 全 0 数据 数据 数据 数据 数据 数据 数据 全 0 8 字节 UDP 首部 7 字节 数据 填充 计算 UDP 检验和的例子 10011001 00010011 → 153.19 00001000 01101000 → 8.104 10101011 00000011 → 171.3 00001110 00001011 → 14.11 00000000 00010001 → 0 和 17 00000000 00001111 → 15 00000100 00111111 → 1087 00000000 00001101 → 13 00000000 00001111 → 15 00000000 00000000 → 0(检验和) 01010100 01000101 → 数据 01010011 01010100 → 数据 01001001 01001110 → 数据 01000111 00000000 → 数据和 0(填充) 10010110 11101101 → 求和得出的结果 01101001 00010010 → 检验和 按二进制反码运算求和 将得出的结果求反码

  20. 0 3 15 18 31位 源端口 目的端口 发送序号 确认序号 20字节 URG ACK PSH SYN FIN RST 首部长度 保留 窗口大小 检查和 紧急指针 选项和填充( 0 ) 数据(可选) §7-3 传输控制协议TCP

  21. TCP协议格式说明 • 源端口和目标端口 • 端口是运输层与应用层的服务接口,与IP地址合成套接字,作为进程的唯一访问点,供指定进程来使用。 • 发送序号 • TCP为把每个TCP连接中传送的数据流中的每一个字节都编上一个顺序号。整个数据的起始序号在连接建立时设置。 • 确认序号 • 指出接收端主机希望收到对方的下一报文段的数据的第一个字节的序号

  22. TCP协议格式说明 • 头部长度 • 头部长度或叫“数据偏移”,占4位,取值为5~15,注意头部长度以4B(32位)为单位;指明TCP报文段的数据从第几个4B开始,即指出TCP报文段首部的长度。 • 保留 • 保留占6位,保留为今后使用,目前应置为0 • 六个控制位 • 实现TCP控制

  23. TCP协议格式说明 • 窗口 • 通告自己当前缓冲区的大小,也就是在确认号之后最多还可以发送多少字节。 • 检验和 • 计算检验和的方法是将全部头部与数据,按16位分开,若不足16位应以0补为16位的倍数,但补入的0并不传输,对每16位进行模2加,结果取反即检验和。 • 紧急指针 • 指出在本报文段中的紧急数据的字节数,所谓紧急事务:终止一个错误的程序、重复丢弃、丢失补足等

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

  25. 发送端 接收端   应用进程 应用进程 向发送缓存 写入数据块 从接收缓存 读取数据块 … … 端口 端口 TCP TCP 发送缓存 接收缓存 … 报文段 报文段 报文段 发送TCP报文段 TCP 的传输机制

  26. TCP 的数据编号与确认 • TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。 • 在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。 • TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。

  27. 主机A 主机B 1 发送SYN=1 (seq#=100) 接收SYN 2 发送SYN=1, ACK=1 (seq#=300ack#=101) 接收SYN,ACK 3 建立连接,ACK=1 (ack#=301) TCP三次握手过程

  28. hostA hostB SP. DP. Seq. Ack. 1028 23 101 301 SP. DP. Seq. Ack. 23 1028 301 102 SP. DP. Seq. Ack. 1028 23 102 302 SP. DP. Seq. Ack. 23 1028 302 103 TCP的工作过程

  29. A B A B SYN,SEQ=x FIN,SEQ=x ACK=x+1 SYN,SEQ=y,ACK=x+1 FIN,SEQ=y,ACK=x+1 SEQ=x+1,ACK=y+1 ACK=y+1 (b) TCP连接释放的释放 (a) 三次握手建立连接 TCP的连接和释放 TCP的连接和释放

  30. 发送方 接收方 Window size = 3 发送 1 Window size = 3 发送 2 Window size = 3 发送 3 第三个数据段被丢弃 Window size = 2 发送 3 ACK 3 Window size = 2 Window size = 2 发送 4 ACK 5 Window size = 2 TCP窗口数的应用 Window大小为发送方或接收方的缓存大小。

  31. 流量控制和缓存问题 • 缓存大小问题: • 固定大小缓存、可变大小缓存、为每个连接只分配一个缓存 • 低带宽突发业务,在发送端缓存;高速信息传输,在接收端缓存 • 动态缓存分配: • 接收端通知发送端所分配/剩余的空闲缓存数量,无空闲缓存时,发送端暂停发送

  32. TCP的功能 • TCP是面向连接的协议,可以在各种网络之间建立全双工的虚电路连接,实现无乱序、无丢失、无重复的数据传输,它采取了三次握手、两次确认的有效技术,作到了非常可靠。 • TCP的流量控制 :窗口机制 • TCP的差错控制:校验和、超时重传和确认 • TCP的拥塞控制:窗口、拥塞避免算法:慢开始、加法增大、乘法减小(RFC2581)

  33. 滑动窗口的概念 • TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。 • 在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。 • 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。

  34. 发送窗口 收到确认即可前移 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 不可发送 可发送 指针 滑动窗口 • 发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。 • 发送端只要收到了对方的确认,发送窗口就可前移。 • 发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。

  35. 发送窗口 收到确认即可前移 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 不可发送 可发送 指针 发送窗口前移 已发送 并被确认 已发送但 未被确认 可发送 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 指针 不可发送 滑动窗口 • 发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。 • 现在发送端还可发送 300 字节。

  36. 发送窗口前移 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 已发送 并被确认 已发送但 未被确认 可发送 不可发送 指针 发送窗口缩小 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 已发送 并被确认 可发送 不可 发送 指针 滑动窗口 • 发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。 • 现在发送端最多还可发送 400 字节的数据。

  37. SEQ = 1 SEQ = 101 SEQ = 201 丢失! ACK = 201, WIN = 300 SEQ = 301 SEQ = 401 SEQ = 201 ACK = 501, WIN = 200 SEQ = 501 ACK = 601, WIN = 0 利用可变窗口大小进行流量控制 主机 A 主机 B A 还能发送 300 字节 A 还能发送 200 字节 允许 A 再发送 300 字节(序号 201 至 500) A 还能发送 200 字节(序号 301 至 500) A 还能发送 100 字节(序号 401 至 500) A 超时重发,但不能发送序号 500 以后的数据 允许 A 再发送 200 字节(序号 501 至 700) A 还能发送 100 字节(序号 501 至 700) 不允许 A 再发送(到序号 600 的数据都已收到)

  38. 慢开始和拥塞避免 • 发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。 • 因此,每一个 TCP 连接需要有以下两个状态变量: • 接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window)。 • 拥塞窗口 cwnd (congestion window)。

  39. 接收端窗口 rwnd 和拥塞窗口 cwnd • 接收端窗口 rwnd • 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。 • 接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。 • 拥塞窗口 cwnd (congestion window) • 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

  40. 发送窗口的上限值 • 发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定: 发送窗口的上限值 Min [rwnd, cwnd] • 当 rwnd < cwnd 时,是接收端的接收能力限制发送窗口的最大值。 • 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

  41. 慢开始算法的原理 • 在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。 • 在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。 • 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。

  42. 源 端 口 目 的 端 口 序 号 确 认 号 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 保 留 检 验 和 紧 急 指 针 选 项 (长 度 可 变) 填 充 MSS • MSS 是 TCP 报文段中的数据字段的最大长度。 • TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。 • MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”

  43. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。 • 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16

  44. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。

  45. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1,发送第一个报文段 M0。

  46. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 发送端收到 ACK1 (确认 M0,期望收到 M1)后,将 cwnd 从 1 增大到 2,于是发送端可以接着发送 M1 和 M2 两个报文段。

  47. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 接收端发回 ACK2 和 ACK3。发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1。现在发送端的 cwnd 从 2 增大到 4,并可发送 M3 ~ M6共 4个报文段。

  48. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1,因此拥塞窗口 cwnd 随着传输次数按指数规律增长。

  49. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 拥塞避免 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 慢开始 拥塞避免 • 当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。

  50. 发生超时 线性规律增长 进入拥塞避免 进入拥塞避免 指数规律增长 慢开始和拥塞避免算法举例 拥塞窗口 cwnd 24 20 ssthresh = 16 16 更新后的 ssthresh = 12 12 8 4 传输次数 0 0 2 4 6 8 10 12 14 16 18 20 22 慢开始 拥塞避免 慢开始 拥塞避免 • 假定拥塞窗口的数值增长到 24 时,网络出现超时(表明网络拥塞了)。

More Related