Upload
nomlanga-harper
View
146
Download
0
Embed Size (px)
DESCRIPTION
第六章 网络传输服务 (二). 第六章 网络传输服务. 6.1 传输服务的地位和作用 6.2 传输协议的基本要素 6.3 面向连接的 TCP 协议 6.4 无连接的 UDP 协议. 传输层的地位. OSI 上三层. 用户进程管理. OSI 上三层. 向上提供标准的传输服务向下屏蔽不同的通信子网. 传输层 Transport. 传输层 Transport. 通信子网. OSI 下三层. OSI 下三层. 传输协议的基本要素. 1 )标识端点 ( NSAP, TSAP, 主机地址 ) 2 )建立连接 3 )释放连接 - PowerPoint PPT Presentation
Citation preview
信阳师范学院计算机系 3
传输层的地位
传输层Transport
传输层Transport
OSI 上三层 OSI 上三层
OSI 下三层 OSI 下三层
用户进程管理
通信子网
向上提供标准的传输服务向下屏蔽不同的通信子网
信阳师范学院计算机系 5
6.3 面向连接的 TCP 协议
1 ) TCP协议概述2 ) TCP的端点标识: Port
3 ) TCP的TPDU: Segment
4 ) TCP的连接管理5 ) TCP的传输控制
信阳师范学院计算机系 7
TCP 协议的基本概念Transmission Control Protocol• 为应用进程提供可靠的、端到端的、面向连接
的字节流通信的协议• 利用网络层 IP 协议提供的不可靠的分组传输
服务,解决分组的重传和排序问题• 由 RFC793 正式定义• 为 Internet 的许多著名应用提供传输服务
信阳师范学院计算机系 11
收发双方创建套接口通信端点• 什么是套接口 socket
– 4BSD UNIX 首先提出的进程通信机制– 套接口的工作原理(用电话系统类比)
• 用套接口标识用户进程通信的端点– TCP 的端点标识
(访问端口,主机 IP 地址 )
信阳师范学院计算机系 12
套接口 socket 原理解释
6278
6500
0203
8121 0110
呼叫方
局内接受方 跨局接受方
局间通信
本地交换机
占用一部电话机,即申请一个 socket号
拥有固定的 socket 号 拥有固定的 socket 号
本地的网络地址 远程的网络地址
向 socket 发送数据,
从 socket 接收数据。
信阳师范学院计算机系 13
TCP 协议的端口定义• 用 16bit 区分 216 个端口• 众所周知端口– 全局分配,用于标准服务器– 取值小于 1024
• 临时端口– 本地分配(主机建立连接时为用户进程动态
分配的端口)– 取值大于等于 1024
信阳师范学院计算机系 15
FTP 应用连接端口举例
主机 A 主机 B
(1234, 128.6.4.194) (21, 18.22.67.7)
建立端到端的连接
Client Server
众所周知端口临时端口
应用: ftp 18.22.67.7
信阳师范学院计算机系 19
TCP 头部源端口 Source Port
(16bit)宿端口 Destination Port
(16bit)
序列号 Sequence Number(32bit)
确认号 Acknowledgment Number(32bit)
DataOffset(4bit)
Reserved
(6bit)
URG
ACK
PSH
RST
SYN
FIN
窗口大小Window size
(16bit)
校验和 Checksum(16bit) 紧急指针 Urgent Pointer(16bit)
选项 Options (0或多个 32bit字)
数据 Data (可选)
信阳师范学院计算机系 20
TCP 头部的控制位• URG 紧急指针域有效• ACK 确认域有效• PSH 不必缓冲区满即可上传• RST 复位,用于崩溃或错误连接• SYN 用于建立连接的同步序号• FIN 表示发送方到达数据结尾
信阳师范学院计算机系 25
TCP 传输控制的实现确认号ACK
源端口1028
序列号SEQ
宿端口21
窗口WIN
...头部 ...
发送方 接收方 缓冲区
4k
2k
应用层2k write
应用层 Read 2k
2k
2k1k
SEQ=0
WIN=2048ACK=2048
WIN=0ACK=4096
SEQ=4096
SEQ=2048
发送受阻
应用层3k write
0 4K
ACK=4096 WIN=2048
2k
2k
1k
信阳师范学院计算机系 27
滑动窗口 WIN=0
• 一般策略– 发送方阻塞,停止发送分节
• 特殊情况– 发送紧急数据( urgent data ),立即中断
远程的用户进程– 发送一个字节的分节,声明希望接收的下一
个字节以及窗口大小IP 报头 TCP 报头
一个字节的分节
总长 41Byte
信阳师范学院计算机系 28
发送 1byte /次用户端 编辑器
发送1个字符TCP 头
TCP 头IP 头
IP 头
Telnet
C
IP 头 TCP 头
IP 头 TCP 头 C
接收
确认 ack
更新窗口 win
返回处理结果
处理一个字符需要传送 4 次数据段,占用 162 字节带宽
信阳师范学院计算机系 29
Nagle算法
字符 1 字符 2 字符 3 字符 4 字符 5 字符 6 字符 7 字符 8 字符 9 字符 10 ...
字符 1 字符 2 字符 3 字符 4 字符 5 字符 6 字符 7 字符 8
字符 1 字符 2 字符 3 字符 4
发送 确认
缓存 缓存
确认发送 发送
信阳师范学院计算机系 33
差错重传发送方 接收方
SEQ=1SEQ=2SEQ=3
ACK=4
segment segment segment
segment segment segment segment
segment 超时SEQ=5
SEQ=4SEQ=5SEQ=6SEQ=7
ACK=8
#4 、 #6 、 #7
#5 排序提交
缓存
信阳师范学院计算机系 38
拥塞的解决办法• 发送方保持两个窗口– 接收窗口(由 WIN说明)– 拥塞窗口
• 取两者的最小值为发送的字节数• 如何确定拥塞窗口的大小?– 慢速启动算法– 拥塞控制算法举例
信阳师范学院计算机系 39
慢速启动算法拥塞窗口MaxSegL
拥塞窗口MaxSegL
建立连接初始化 发送数据
MaxSegL
超时 2MaxSegL
发送数据超时前收到确认
超时前收到确认
拥塞窗口2MaxSegL
拥塞窗口2MaxSegL
超时
拥塞窗口2nMaxSegL
拥塞窗口2nMaxSegL 发送数据
2nMaxSegL拥塞窗口二进制指数增长至接收窗口大小或超时
信阳师范学院计算机系 40
拥塞控制算法举例
05
101520
2530354045
MaxSegL=1024Threshold0=64K
Threshold1=32K
超时
Threshold14=20K
指数增长 指数增长
线性增长
线性增长
超时
序列号
拥塞窗口
关键参数(临界值,接收窗口,拥塞窗口)
信阳师范学院计算机系 41
TCP 定时管理
• 重发定时器(发送每个数据段同时启动)– 超时前收到确认,关闭计时器– 超时未收到确认,重发该数据段
• 持续定时器(用于解决死锁)• 保活定时器(用于检测连接长时间闲置)• TIMED WAIT 定时器– 2倍分组 TTL ,确保连接端开后分组消失
信阳师范学院计算机系 42
重发超时间隔的确定
• 问题– 取 T1 ,间隔过短,引起不必要的数据重传– 取 T2 ,间隔过长,使得网络性能下降
• 解决办法:动态调整重发超时时间间隔
L2 L4集中 分散
T
往返时间往返时间
概率
T1 T2
信阳师范学院计算机系 43
A B 应答数据 6 ,缓冲区0
<ack=6, buf=0>
<ack=6, buf=4> 应答数据 6 ,缓冲区4
丢失
保持阻塞状态等待分配缓冲区 等待接收数据死锁
解开死锁
持续定时器超时 探测数据段
<ack=6, buf=4>
信阳师范学院计算机系 44
6.4 无连接的 UDP 协议
1 ) UDP协议概述2 ) UDP的端点标识: Port
3 ) UDP的TPDU
4 ) UDP传输服务举例5 ) UDP与TCP的比较
信阳师范学院计算机系 45
1 ) UDP 协议概述• 为应用进程提供无连接的数据传输服务• 适用场合– 事务型应用:一来一往报文交换– 即使出错重传也比建立 / 释放连接开销小
• 由应用层解决纠错问题• 由 RFC768 定义标准
信阳师范学院计算机系 46
2 ) UDP 的端点标识: Port
• 用 216 端口区分不同的应用进程• 发送端
– 分配源端口,指定宿端口,构造 UDP 数据报,交 IP
• 接收端– 匹配 UDP 头部宿端口的应用进程– 匹配成功,数据报排入相应的队列,若端口队列满,则丢弃数据报
– 匹配不成功,丢弃数据报,回送“宿端口不可达”的 ICMP 报文
信阳师范学院计算机系 53
UDP 传输服务举例
host
128.1.1.0128.1.2.0
128.1.1.150:20:c5:e2:d4:77
128.1.2.150:a0:24:ea:b3:57
R
128.1.2.100:a0:24:ec:c6:63
信阳师范学院计算机系 54
用 UDP 传输 RIP 报文
Ethernet 头部
IP 头部 UDP 头部
UDP 头部 RIP 报文
RIP 报文
RIP 报文
IP 头部 UDP 头部 RIP 报文
信阳师范学院计算机系 56
Opcode=1 Version=1 0
0
Network Address = 0.0.0.0 (default)
0
0
Metric = 16(not reachable)
RIP :请求路由信息Route request
6*4=24
byte
32bit
信阳师范学院计算机系 57
UDP :分配端口
Source Port = 520 Destination Port = 520
Length = 32 Checksum = F57C
16bit 16bitRIP
RIP 报文( 24 byte )
信阳师范学院计算机系 58
Version= 4
(4bit)
IHL= 20
(4bit)
Type of Service= 0x00(8bit)
Total Length = 52(16bit)
Identification = 10831(16bit)
Flags= 0x4(3bit)
Fragment Offset = 0(13bit)
Time to Live = 1(8bit)
Protocol= 17(UDP)
(8bit)
Header Checksum = 5a4a(16bit)
Source Address = 128.1.2.15 (RR)(32bit)
Destination Address = 128.1.2.255(broadcast)(32bit)
IP :赋予 IP 地址
UDP 数据报( 32byte )
信阳师范学院计算机系 59
62bit 2bit 6Byte 6Byte 2Byte 46 ~ 1500Byte 4Byte
先导 11 目的地址 源地址 类型 数据 校验和
Ethernet :赋予以太网地址
ff:ff:ff:ff:ff:ff
0:a0:24:ea:b3:57
0800(IP)
IP 分组 (52byte)
信阳师范学院计算机系 61
RIP :广播路由信息
Opcode=2 Version=1 0
0
Network Address = 128.1.1.0 (Net1)
0
0
Metric = 1
Route reply
6*4=24
byte
32bit
信阳师范学院计算机系 62
UDP :分配端口
Source Port = 520 Destination Port = 520
Length = 32 Checksum = 7388
16bit 16bitRIP
RIP 报文( 24 byte )
信阳师范学院计算机系 63
Version= 4
(4bit)
IHL= 20
(4bit)
Type of Service= 0x00(8bit)
Total Length = 52(16bit)
Identification = 10832(16bit)
Flags= 0x4(3bit)
Fragment Offset = 0(13bit)
Time to Live = 1(8bit)
Protocol= 17(UDP)
(8bit)
Header Checksum = 594a(16bit)
Source Address = 128.1.2.15 (RR)(32bit)
Destination Address = 128.1.2.255(broadcast)(32bit)
IP :赋予 IP 地址
UDP 数据报( 32byte )
信阳师范学院计算机系 64
62bit 2bit 6Byte 6Byte 2Byte 46 ~ 1500Byte 4Byte
先导 11 目的地址 源地址 类型 数据 校验和
Ethernet :赋予以太网地址
ff:ff:ff:ff:ff:ff
0:a0:24:ea:b3:57
0800(IP)
IP 分组 (52byte)
信阳师范学院计算机系 66
课程总结• 两个典型的传输层协议– TSAP :保留端口 / 自由端口– TPDU : TCP 数据段 /UDP 数据报
• TCP– 连接管理
• 三次握手建立 / 释放连接– 传输控制
• 确认重传 / 滑动窗口 / 拥塞控制 / 定时管理