2009-7-25 1
计算机网络
Computer Networks
第八讲 TCP/IP协议(四)
—— 传输层协议 TCP与 UDP
2009-7-25 2
TCP/IP与传输层
– 传输层的两项主要功能:
流量控制;
可靠传输
– 传输层提供两种服务
面向连接的传输服务(连接建立,数据传输,连接释放);
无连接的传输服务。
2009-7-25 3
服务质量( Quality of Service)
传输层的一个主要功能是增强网络层提供的服务质量;
典型传输层服务质量参数,如:连接建立延迟、连接建立失败的概率、吞吐率、传输延迟等
QoS参数在建立连接时,由传输用户描述,
双方通过协商确定最后双方都能接收的参数。
2009-7-25 4
传输层协议
互联网在传输层有 2个主要协议
面向连接的 TCP
面向无连接的 UDP
传输控制协议 (TCP)
用户数据报协议 (UDP)
应用层传输层网络互联层网络接口层物理层面向连接面向无连接
2009-7-25 5
UDP(用户数据报协议)
UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都正好产生一个 UDP数据报,并组装成一份待发送的 IP数据报
UDP不提供可靠性:它把应用程序传给 IP层的数据发送出去,
但是并不保证它们能到达目的地。可靠性由应用层协议保证。
使用 UDP的协议包括,TFTP,SNMP,NFS,DNS等
IP首部 UDP首部 UDP数据
20字节 8字节
IP数据报
UDP报文段
UDP数据在 IP数据报中的封装
2009-7-25 6
UDP报头格式
端口号表示发送进程和接收进程。
UDP长度字段指的是 UDP首部和 UDP数据的字节长度。该字段的最小值为 8字节 (发送一份 0字节的 UDP数据报是允许的 )
UDP检验和覆盖 UDP首部和 UDP数据
UDP和 TCP在首部中都有覆盖它们首部和数据的检验和。 UDP的检验和是可选的,而 TCP的检验和是必需的
UDP首部源端口号 (16B) 目的端口号 (16B)
UDP长度 (16B) UDP检验和 (16B)
数据 (可选项 )
8字节
2009-7-25 7
UDP伪头部首部 数据
UDP
伪报头 源端口 目的端口 长度 检验和
12 2 2 2 2
源 IP地址 目的 IP地址 0 17 UDP长度
4 4 1 1 2 共 12字节伪报头这种伪首部,并不是 UDP数据报真正的首部,只是在计算检验和时,临时和 UDP数据报连接在一起,得到一个过渡的 UDP数据报
2009-7-25 8
TCP(传输控制协议)
TCP是一种面向连接的协议
TCP的目的,用于在不可靠的互连网络上 (不同的拓扑结构、带宽、延迟、分组大小及其它参数 )实现可靠的端 -端字节流服务
IP层不保证报文正确传输,TCP进行 超时重传控制
报文不一定按顺序到达,TCP进行 重新装配
2009-7-25 9
TCP的功能
多路复用多种应用数据
TCP同时接收多个应用数据,把它们打包到数据段中传给 IP
TCP能同时接收多个应用的数据
TCP通过端口来实现跟踪记录到达的报文要转发到的应用程序 (端口 80:超文本传输协议,http )
测试所接收数据的完整性
比较 TCP头的校验和,如果出现问题就给源主机发一请求,要求其重发一份数据拷贝
顺序化乱序接收的数据
通过查看 TCP头中的序列号域可以完成这个任务
2009-7-25 10
TCP的功能
速率 -适应的流控
流量控制使用的是 TCP窗口大小。源和目的机的窗口大小通过 TCP头进行通信
如果机器的缓冲完全被填满,它就会发送一个有关最后收到数据的应答报文,其中新的窗口大小为 0。这样会有效地使发送停止,直到拥塞的机器能清理掉其缓冲
定时功能
计时器可以间接地管理网络拥塞,其方法是当超时出现时减慢传输率
应答接收
没被应答的数据段被认为在传输过程中已丢失,并被重传
2009-7-25 11
TCP
IP首部 TCP首部 TCP数据
20字节 20字节
IP数据报
TCP报文段
TCP数据在 IP数据报中的封装
2009-7-25 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字节
2009-7-25 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 发端完成发送任务
2009-7-25 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,未规定
2009-7-25 15
IP地址 端口号
TSAP地址
IP地址 端口号
TSAP地址
131.6.23.12; 500 130.42.85.15; 25
TSAP地址举例
2009-7-25 16
源端口 目的端口 …
Host A Host Z
1028 23 …
SP DP
Telnet Z
目的端口 = 23.
发送包到我的 Telnet
应用通常源主机动态地分配源端口号,通常是一些高于 1023
的端口号
2009-7-25 17
TCP段头结构
TCP的流量控制由连接的每一端通过声明的 窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个 16 bit字段,因而窗口大小最大为 65535字节
检验和 覆盖了整个的 TCP报文段,TCP首部和 TCP数据。这是一个强制性的字段,由发端计算和存储,由收端进行验证
只有当 URG标志置 1时 紧急指针 才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP的紧急方式是发送端向另一端发送紧急数据的一种方式
选项 字段,TCP分段的最大长度
数据 字段:上层协议的数据
2009-7-25 18
问题
端口号的主要作用是什么?
TCP协议是如何保证数据传输的正确性的?
判断,UDP的校验和仅校验 UDP的首部,
而 TCP的校验和校验首部和数据
2009-7-25 19
TCP连接的建立
采用三次握手 (three-way handshake)方法
1,请求端 (通常称为客户 )发送一个 SYN为 1的
TCP段指明客户打算连接的服务器的端口,
以及初始序号 (ISN)
2,服务器发回包含服务器的初始序号的 SYN
报文段作为应答。同时,将确认序号设置为客户的 ISN加 1以对客户的 SYN报文段进行确认
3,客户将确认序号设置为服务器的 ISN加 1以对服务器的 SYN报文段进行确认
2009-7-25 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个连接
2009-7-25 21
TCP三次握手发送 SYN
(seq=100 SYN=1)
SYN 接收
Host A Host B
1
2009-7-25 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
2009-7-25 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 接收
2009-7-25 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
2009-7-25 25
TCP拥塞控制
当加载到网络上的载荷超过其处理能力时,
拥塞便会出现
分组丢失造成超时的原因
传输线路的噪声干扰
拥塞的路由器丢弃了分组
目前互联网上发生的大多数超时现象都是由于拥塞造成的,传输错误造成的分组丢失较少
解决拥塞最切实的办法是降低数据传输速率
拥塞控制大部分是由 TCP完成的。 TCP试图通过动态地控制滑动窗口的大小来达到控制拥塞地目的
2009-7-25 26
慢启动 (Slow Start)
慢启动同时考虑可能造成拥塞的 网络容量 和 接收方容量,取以下两个窗口的最小值作为可以发送的字节数上限
接收窗口 (Offered Window)
拥塞窗口 (Congestion Window)
拥塞窗口的大小
发送方开始时发送一个报文段,然后等待 ACK。当收到该 ACK时,拥塞窗口从 1增加为 2,即可以发送两个报文段。当收到这两个报文段的 ACK时,拥塞窗口就增加为
4。这是一种指数增加的关系,直到达到接收窗口大小或发生超时,如发生超时则将门限参数设置为当前拥塞窗口的一半,并减慢拥塞窗口增大的速度,直到达到接收窗口大小或超时,超时再重复
拥塞窗口是发送方使用的流量控制,而接收窗口则是接收方使用的流量控制
所有的 TCP实现都支持慢启动
2009-7-25 27
慢启动指数增长线性增长发生超时门限窗口门限窗口初值
0
24
16
12
1
2 4 12 14
拥塞窗口传输次数
2009-7-25 28
作业
P109
题 6
P127
题 1
P152
题 1
P166
题 2、题 4
2009-7-25 29
习题讲解
P43
局域网的三个关键技术是什么?试分析传统以太网 10Base5,10BaseT采用的是什么技术?以太网与局域网这两个概念有何关系?
测验题