2010-5-13 1
计算机网络
Computer Networks
第五讲 TCP/IP协议(三)
—— 传输层协议 TCP与 UDP
2010-5-13 2
TCP/IP与传输层
– 传输层的两项主要功能:
? 流量控制;
? 可靠传输
– 传输层提供两种服务
? 面向连接的传输服务(连接建立,数据传输,连接
释放);
? 无连接的传输服务。
2010-5-13 3
? 服务质量( Quality of Service)
? 传输层的一个主要功能是增强网络层提供
的服务质量;
? 典型传输层服务质量参数,如:连接建立
延迟、连接建立失败的概率、吞吐率、传
输延迟等
? QoS参数在建立连接时,由传输用户描述,
双方通过协商确定最后双方都能接收的参
数。
2010-5-13 4
传输层协议
? 互联网在传输层有 2个主要协议
? 面向连接的 TCP
? 面向无连接的 UDP
传输控制协议 (TCP)
用户数据报协议 (UDP)
应用层
传输层
网络互联层
网络接口层
物理层
面向连接
面向无连接
2010-5-13 5
UDP(用户数据报协议)
? UDP是一个简单的面向数据报的传输层协议:进程的每个输出
操作都正好产生一个 UDP数据报,并组装成一份待发送的 IP数
据报
? UDP不提供可靠性:它把应用程序传给 IP层的数据发送出去,
但是并不保证它们能到达目的地。可靠性由应用层协议保证。
? 使用 UDP的协议包括,TFTP,SNMP,NFS,DNS等
IP首部 UDP首部 UDP数据
20字节 8字节
IP数据报
UDP报文段
UDP数据在 IP数据报中的封装
2010-5-13 6
UDP报头格式
? 端口号表示发送进程和接收进程。
? UDP长度字段指的是 UDP首部和 UDP数据的字节长度。该字段
的最小值为 8字节 (发送一份 0字节的 UDP数据报是允许的 )
? UDP检验和覆盖 UDP首部和 UDP数据
? UDP和 TCP在首部中都有覆盖它们首部和数据的检验和。 UDP的
检验和是可选的,而 TCP的检验和是必需的
UDP首部
源端口号 (16B) 目的端口号 (16B)
UDP长度 (16B) UDP检验和 (16B)
数据 (可选项 )
8字节
2010-5-13 7
UDP伪头部
首部 数据
UDP
伪报头 源端口 目的端口 长度 检验和
12 2 2 2 2
源 IP地址 目的 IP地址 0 17 UDP长度
4 4 1 1 2 共 12字节
伪报头
这种伪首部,并不是 UDP数据报真正的首部,只是在计算检验和
时,临时和 UDP数据报连接在一起,得到一个过渡的 UDP数据报
2010-5-13 8
TCP(传输控制协议)
? TCP是一种面向连接的协议
? TCP的目的,用于在不可靠的互连网络上 (不
同的拓扑结构、带宽、延迟、分组大小及其
它参数 )实现可靠的端 -端字节流服务
? IP层不保证报文正确传输,TCP进行 超时重
传控制
? 报文不一定按顺序到达,TCP进行 重新装配
2010-5-13 9
TCP的功能
? 多路复用多种应用数据
? TCP同时接收多个应用数据,把它们打包到数据
段中传给 IP
? TCP能同时接收多个应用的数据
? TCP通过端口来实现跟踪记录到达的报文要转发
到的应用程序 (端口 80:超文本传输协议,http )
? 测试所接收数据的完整性
? 比较 TCP头的校验和,如果出现问题就给源主机
发一请求,要求其重发一份数据拷贝
? 顺序化乱序接收的数据
? 通过查看 TCP头中的序列号域可以完成这个任务
2010-5-13 10
TCP的功能
? 速率 -适应的流控
? 流量控制使用的是 TCP窗口大小。源和目的机的窗口大小
通过 TCP头进行通信
? 如果机器的缓冲完全被填满,它就会发送一个有关最后收
到数据的应答报文,其中新的窗口大小为 0。这样会有效地
使发送停止,直到拥塞的机器能清理掉其缓冲
? 定时功能
? 计时器可以间接地管理网络拥塞,其方法是当超时出现时
减慢传输率
? 应答接收
? 没被应答的数据段被认为在传输过程中已丢失,并被重传
2010-5-13 11
TCP
IP首部 TCP首部 TCP数据
20字节 20字节
IP数据报
TCP报文段
TCP数据在 IP数据报中的封装
2010-5-13 12
TCP段头结构
TCP首部
源端口 目的端口
顺序号
确认号
TCP头
长 (4位 )
保留
(6位 )
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
窗口大小
检验和 紧急指针
可选项 (0或者更多的 32位字 )
数据 (可选项 )
20字节
2010-5-13 13
TCP段头结构
? 每个 TCP段都包含 源端和目的端的端口号(各 16位),
用于寻找发端和收端应用进程。这两个值加上 I P首部
中的源端 I P地址和目的端 I P地址( TSAP)唯一确定
一个 TCP连接( 一对 48位的 TSAP套接口可以唯一地
标识一条 TCP连接 )
? 序号 用来标识从 TCP发端向 TCP收端发送的数据字节

? 6个标志位
? URG 紧急指针 (urgent pointer)有效
? ACK 确认序号有效
? PSH 接收方应该尽快将这个报文段交给应用层
? RST 重建连接
? SYN 同步序号用来发起一个连接
? FIN 发端完成发送任务
2010-5-13 14
端口号
TCP和 UDP都用端口 (socket)号把信息传到上层。
端口号指示了正在使用的上层协议。
F
T
P
S
M
T
P
T
F
T
P
D
N
S
T
e
l
n
e
t
S
N
M
P
21 23 25 53 69 161
TCP UDP
应用层
传输层
保留的端口号:
< 255,公共应用
255-1023,公司
> 1023,未规定
2010-5-13 15
IP地址 端口号
TSAP地址
IP地址 端口号
TSAP地址
131.6.23.12; 500 130.42.85.15; 25
TSAP地址举例
2010-5-13 16
源端口 目的端口 …
Host A Host Z
1028 23 …
SP DP
Telnet Z
目的端口 = 23.
发送包到我的 Telnet
应用
通常源主机动态地分配源端口号,通常是一些高于 1023
的端口号
2010-5-13 17
TCP段头结构
? TCP的流量控制由连接的每一端通过声明的 窗口大小
来提供。窗口大小为字节数,起始于确认序号字段指
明的值,这个值是接收端正期望接收的字节。窗口大
小是一个 16 bit字段,因而窗口大小最大为 65535字节
? 检验和 覆盖了整个的 TCP报文段,TCP首部和 TCP数
据。这是一个强制性的字段,由发端计算和存储,由
收端进行验证
? 只有当 URG标志置 1时 紧急指针 才有效。紧急指针是
一个正的偏移量,和序号字段中的值相加表示紧急数
据最后一个字节的序号。 TCP的紧急方式是发送端向
另一端发送紧急数据的一种方式
? 选项 字段,TCP分段的最大长度
? 数据 字段:上层协议的数据
2010-5-13 18
问题
? 端口号的主要作用是什么?
? TCP协议是如何保证数据传输的正确性
的?
? 判断,UDP的校验和仅校验 UDP的首部,
而 TCP的校验和校验首部和数据
2010-5-13 19
TCP连接的建立
? 采用三次握手 (three-way handshake)方法
? 1,请求端 (通常称为客户 )发送一个 SYN为 1的
TCP段指明客户打算连接的服务器的端口,
以及初始序号 (ISN)
? 2,服务器发回包含服务器的初始序号的 SYN
报文段作为应答。同时,将确认序号设置为
客户的 ISN加 1以对客户的 SYN报文段进行确

? 3,客户将确认序号设置为服务器的 ISN加 1以
对服务器的 SYN报文段进行确认
2010-5-13 20
TCP连接的建立
主机 1 主机 2
SYN J
SYN K,ack=J+1
SYN J+1,ack=K+1
SYN J
SYN J,ack K+1
SYN K,ack J+1
主机 1 主机 2
SYN K
TCP连接的建立
(a) 一般情况,3次握手 (b) 同时打开:只建立 1个连接
2010-5-13 21
TCP三次握手
发送 SYN
(seq=100 SYN=1)
SYN 接收
Host A Host B
1
2010-5-13 22
TCP三次握手
发送 SYN
(seq=100 SYN=1)
SYN 接收
发送 SYN,ACK
(seq=300 ack=101 SYN=1,
ack=1)
Host A Host B
SYN 接收
1
2
2010-5-13 23
TCP三次握手
发送 SYN
(seq=100 SYN=1)
SYN 接收
Send SYN,ACK
(seq=300 ack=101 SYN=1,
ack=1)Established
(seq=101 ack=301 ack=1)
Host A Host B
1
2
3
SYN 接收
2010-5-13 24
TCP连接的释放
主机 1 主机 2
FIN
J
ack=J+1
ack=K+1
FIN J
ack K+1
ack J+1
主机 1 主机 2
FIN K
采用对称释放法,通信双方必须都向对方发送 FIN置 1
的 TCP段并得到对方的应答,连接才被释放
(a) 一般情况 (b) 同时关闭
FIN K
2010-5-13 25
TCP拥塞控制
? 当加载到网络上的载荷超过其处理能力时,
拥塞便会出现
? 分组丢失造成超时的原因
? 传输线路的噪声干扰
? 拥塞的路由器丢弃了分组
? 目前互联网上发生的大多数超时现象都是由
于拥塞造成的,传输错误造成的分组丢失较

? 解决拥塞最切实的办法是降低数据传输速率
? 拥塞控制大部分是由 TCP完成的。 TCP试图
通过动态地控制滑动窗口的大小来达到控制
拥塞地目的
2010-5-13 26
? 慢启动 (Slow Start)
? 慢启动同时考虑可能造成拥塞的 网络容量 和 接收
方容量, 取以下两个窗口的最小值作为可以发送
的字节数上限
? 接收窗口 (Offered Window)
? 拥塞窗口 (Congestion Window)
? 拥塞窗口的大小
? 发送方开始时发送一个报文段,然后等待 ACK。当收到
该 ACK时,拥塞窗口从 1增加为 2,即可以发送两个报文
段。当收到这两个报文段的 ACK时,拥塞窗口就增加为
4。这是一种指数增加的关系,直到达到接收窗口大小
或发生超时,如发生超时则将门限参数设置为当前拥塞
窗口的一半,并减慢拥塞窗口增大的速度,直到达到接
收窗口大小或超时,超时再重复
? 拥塞窗口是发送方使用的流量控制,而接收窗口
则是接收方使用的流量控制
? 所有的 TCP实现都支持慢启动