670 likes | 787 Views
第六章 网络传输服务 (二). 第六章 网络传输服务. 6.1 传输服务的地位和作用 6.2 传输协议的基本要素 6.3 面向连接的 TCP 协议 6.4 无连接的 UDP 协议. 传输层的地位. OSI 上三层. 用户进程管理. OSI 上三层. 向上提供标准的传输服务向下屏蔽不同的通信子网. 传输层 Transport. 传输层 Transport. 通信子网. OSI 下三层. OSI 下三层. 传输协议的基本要素. 1 )标识端点 ( NSAP, TSAP, 主机地址 ) 2 )建立连接 3 )释放连接
E N D
第六章 网络传输服务(二) 信阳师范学院计算机系
第六章 网络传输服务 6.1 传输服务的地位和作用 6.2 传输协议的基本要素 6.3 面向连接的TCP协议 6.4 无连接的UDP协议 信阳师范学院计算机系
传输层的地位 OSI上三层 用户进程管理 OSI上三层 向上提供标准的传输服务向下屏蔽不同的通信子网 传输层 Transport 传输层 Transport 通信子网 OSI下三层 OSI下三层 信阳师范学院计算机系
传输协议的基本要素 1)标识端点 (NSAP, TSAP, 主机地址) 2)建立连接 3)释放连接 4)流量控制和缓冲策略 5)多路复用 6)崩溃恢复 信阳师范学院计算机系
6.3 面向连接的TCP协议 1)TCP协议概述 2)TCP的端点标识:Port 3)TCP的TPDU:Segment 4)TCP的连接管理 5)TCP的传输控制 信阳师范学院计算机系
1)TCP协议概述 • TCP协议的基本概念 • TCP协议的传输实体 • TCP连接的性质 信阳师范学院计算机系
TCP协议的基本概念 Transmission Control Protocol • 为应用进程提供可靠的、端到端的、面向连接的字节流通信的协议 • 利用网络层IP协议提供的不可靠的分组传输服务,解决分组的重传和排序问题 • 由RFC793正式定义 • 为 Internet的许多著名应用提供传输服务 信阳师范学院计算机系
TCP协议的传输实体 软件实现 • 用户进程 • 操作系统核心的一部分 • 管理TCP字节流 • 实现与IP层的接口 应用进程 接口 TCP 接口 IP 信阳师范学院计算机系
TCP连接的性质 • 全双工 • 支持同时的双向传输 • Unicast • 只支持两端点之间的通信,不支持Multicast和Broadcast • 面向字节流 信阳师范学院计算机系
2)TCP的端点标识 • 用套接口创建通信端点 • TCP协议的端口定义 • TCP协议的保留端口 • TCP连接举例 信阳师范学院计算机系
收发双方创建套接口通信端点 • 什么是套接口socket • 4BSD UNIX首先提出的进程通信机制 • 套接口的工作原理(用电话系统类比) • 用套接口标识用户进程通信的端点 • TCP的端点标识 (访问端口,主机IP地址 ) 信阳师范学院计算机系
套接口socket原理解释 拥有固定的socket号 拥有固定的socket号 远程的网络地址 本地的网络地址 向 socket发送数据, 从socket接收数据。 占用一部电话机,即申请一个socket号 信阳师范学院计算机系
TCP协议的端口定义 • 用16bit区分216个端口 • 众所周知端口 • 全局分配,用于标准服务器 • 取值小于1024 • 临时端口 • 本地分配(主机建立连接时为用户进程动态分配的端口) • 取值大于等于1024 信阳师范学院计算机系
TCP保留端口举例 TELNET SMTP HTTP DNS SNMP FTP 应用层 Port 21 23 25 80 53 161 传输层 信阳师范学院计算机系
FTP应用连接端口举例 应用:ftp 18.22.67.7 主机A 主机B 建立端到端的连接 Client Server (21, 18.22.67.7) (1234, 128.6.4.194) 众所周知端口 临时端口 信阳师范学院计算机系
3)TCP的TPDU • TCP协议数据单元 • 分节 segment • 分节的封装 • TCP头部 • TCP头部的控制位 信阳师范学院计算机系
分节的定义 • TCP头部 • 固定部分:20字节 • 可选部分 • 数据 • 适应IP的载荷能力(小于65535Byte) • 适应网络的MTU 信阳师范学院计算机系
TCP分节的封装 应用数据 TCP分节 segment TCP头部 应用数据 IP头部 TCP头部 应用数据 帧 IP头部 TCP头部 应用数据 信阳师范学院计算机系
TCP头部 信阳师范学院计算机系
TCP头部的控制位 • URG 紧急指针域有效 • ACK 确认域有效 • PSH 不必缓冲区满即可上传 • RST 复位,用于崩溃或错误连接 • SYN 用于建立连接的同步序号 • FIN 表示发送方到达数据结尾 信阳师范学院计算机系
4)TCP的连接管理 • 建立连接 • 服务器:LISTEN,ACCEPT • 客户机:CONNECT • 释放连接 • CLOSE 信阳师范学院计算机系
三次握手建立TCP连接 主机A 主机B SYN(SEQ=x) SYN(SEQ=y, ACK=x+1) SYN(SEQ=x+1, ACK=y+1) 信阳师范学院计算机系
5)TCP的传输控制 • TCP传输控制 • TCP差错控制 • TCP拥塞控制 • TCP定时管理 信阳师范学院计算机系
TCP传输控制 • 传输策略 • 滑动窗口机制 • 根据接收缓冲区和来自应用的数据确定策略 • 传输控制的实现 • 特殊情况及处理办法 • 发送/接收策略 信阳师范学院计算机系
TCP传输控制的实现 源端口 1028 宿端口 21 序列号 SEQ 确认号 ACK ... 窗口 WIN ... 头部 发送方 接收方 缓冲区 应用层2k write 0 4K 2k SEQ=0 2k WIN=2048 应用层3k write ACK=2048 2k SEQ=2048 4k 发送受阻 WIN=0 应用层Read 2k ACK=4096 WIN=2048 ACK=4096 2k 1k SEQ=4096 1k 2k 信阳师范学院计算机系
特殊情况及处理办法 • 滑动窗口WIN=0 • 传输1 byte/次问题 • 发送1 byte/次:Nagle算法 • 接收1 byte/次:Clark解决方法 信阳师范学院计算机系
滑动窗口WIN=0 • 一般策略 • 发送方阻塞,停止发送分节 • 特殊情况 • 发送紧急数据(urgent data),立即中断远程的用户进程 • 发送一个字节的分节,声明希望接收的下一个字节以及窗口大小 一个字节的分节 总长41Byte IP报头 TCP报头 信阳师范学院计算机系
发送1byte/次 用户端 Telnet 编辑器 发送1个字符 IP头 TCP头 接收 确认ack 更新窗口win 返回处理结果 C TCP头 IP头 TCP头 IP头 C TCP头 IP头 处理一个字符需要传送4次数据段,占用162字节带宽 信阳师范学院计算机系
Nagle算法 缓存 缓存 字符1 字符2 字符3 字符4 字符5 字符6 字符7 字符8 字符9 字符10 ... 字符1 字符2 字符3 字符4 字符5 字符6 字符7 字符8 发送 确认 发送 发送 确认 字符1 字符2 字符3 字符4 信阳师范学院计算机系
接收1byte/次 Win=0 Win=1 发送1Byte Win=0 Win=1 发送1Byte 信阳师范学院计算机系
Clark解决方法 Win=0 Win=6 发送4Byte 信阳师范学院计算机系
互补方法 • 发送方 • 尽量不发送数据含量小的分节 缓存应用层的数据,达到一定量再发送 • 接收方 • 不请求对方发送短分节 延迟窗口变更信息,使接收缓冲区足够大 信阳师范学院计算机系
差错重传 发送方 接收方 segment segment segment SEQ=1SEQ=2SEQ=3 ACK=4 缓存 segment segment segment segment SEQ=4SEQ=5SEQ=6SEQ=7 #4、#6、#7 #5 排序提交 segment 超时 SEQ=5 ACK=8 信阳师范学院计算机系
TCP拥塞控制 • 拥塞原因 • 加载到网络的负载大于其自身的能力 • 解决办法 • 降低发送方的数据传输速率 新的分组进入 旧的分组离开 网络 信阳师范学院计算机系
产生拥塞的两种情况 • 接收方的处理能力不足 • 接收容器小 • 网络不够通畅 • 传输管道细 信阳师范学院计算机系
接收方的处理能力不足 发送方 调整传输速率 传输网络 接收能力 小容量接收器 信阳师范学院计算机系
网络不够畅通 发送方 调整传输速率 网络能力 传输网络 内部拥塞 大容量接收器 信阳师范学院计算机系
拥塞的解决办法 • 发送方保持两个窗口 • 接收窗口(由WIN说明) • 拥塞窗口 • 取两者的最小值为发送的字节数 • 如何确定拥塞窗口的大小? • 慢速启动算法 • 拥塞控制算法举例 信阳师范学院计算机系
慢速启动算法 建立连接初始化 拥塞窗口 MaxSegL 发送数据 MaxSegL 超时前收到确认 拥塞窗口 2MaxSegL 发送数据 超时 2MaxSegL 超时前收到确认 拥塞窗口 2nMaxSegL 发送数据 超时 2nMaxSegL 拥塞窗口二进制指数增长至接收窗口大小或超时 信阳师范学院计算机系
拥塞控制算法举例 MaxSegL=1024 超时 Threshold0=64K 超时 线性增长 Threshold1=32K 线性增长 Threshold14=20K 指数增长 拥塞窗口 指数增长 序列号 关键参数(临界值,接收窗口,拥塞窗口) 信阳师范学院计算机系
TCP定时管理 • 重发定时器(发送每个数据段同时启动) • 超时前收到确认,关闭计时器 • 超时未收到确认,重发该数据段 • 持续定时器(用于解决死锁) • 保活定时器(用于检测连接长时间闲置) • TIMED WAIT 定时器 • 2倍分组TTL,确保连接端开后分组消失 信阳师范学院计算机系
重发超时间隔的确定 T T1 T2 • 问题 • 取T1,间隔过短,引起不必要的数据重传 • 取T2,间隔过长,使得网络性能下降 • 解决办法:动态调整重发超时时间间隔 概率 L2 L4 集中 分散 往返时间 往返时间 信阳师范学院计算机系
解开死锁 A B 应答数据6,缓冲区0 <ack=6, buf=0> <ack=6, buf=4> 应答数据6,缓冲区4 丢失 保持阻塞状态 等待分配缓冲区 等待接收数据 死锁 持续定时器超时 探测数据段 <ack=6, buf=4> 信阳师范学院计算机系
6.4 无连接的UDP协议 1)UDP协议概述 2)UDP的端点标识:Port 3)UDP的TPDU 4)UDP传输服务举例 5)UDP与TCP的比较 信阳师范学院计算机系
1)UDP协议概述 • 为应用进程提供无连接的数据传输服务 • 适用场合 • 事务型应用:一来一往报文交换 • 即使出错重传也比建立/释放连接开销小 • 由应用层解决纠错问题 • 由RFC768定义标准 信阳师范学院计算机系
2)UDP的端点标识:Port • 用216端口区分不同的应用进程 • 发送端 • 分配源端口,指定宿端口,构造UDP数据报,交IP • 接收端 • 匹配UDP头部宿端口的应用进程 • 匹配成功,数据报排入相应的队列,若端口队列满,则丢弃数据报 • 匹配不成功,丢弃数据报,回送“宿端口不可达”的ICMP报文 信阳师范学院计算机系
UDP保留端口举例 NAMESERVER BOOTP SUNRPC TFTP DNS 应用层 Port 42 67 69 111 53 传输层 信阳师范学院计算机系
3)UDP的TPDU • UDP协议数据单元 • 数据报 datagram • UDP数据报的封装 • UDP头部 • UDP伪头部 信阳师范学院计算机系
UDP数据报的封装 UDP数据报 应用数据 UDP头部 应用数据 IP头部 UDP头部 应用数据 帧 IP头部 UDP头部 应用数据 信阳师范学院计算机系
UDP头部 16bit 16bit UDP源端口 UDP宿端口 UDP长度 UDP校验和 最小值为8 全“0”:不选; 全“1”:校验和为0。 信阳师范学院计算机系