计算机通信与网络
Computer Telecommunications & Networks
南京邮电大学计算机学院
“计算机通信与网络”国家精品课程
组
第6章 传输层
传输层
传输层的作用是在通信子网提供的服务
的基础上,为上层应用层提供有效的、
合理的传输服务。使高层用户在相互通
信时不必关心通信子网的实现细节和具
体服务质量。
主要阐述无连接的传输层协议UDP和
面向连接的传输层协议TCP两大传输层
协议,最后简述套接字和套接字编程的
基本概念。
内容纲要
传输服务
无连接的传输层协议UDP
面向连接的传输层协议
TCP
套接字
内容纲要
传输服务
无连接的传输层协议UDP
面向连接的传输层协议
TCP
套接字
传输服务
传输层又称为运输层,位于应用层和网
络层之间,是分层网络体系结构的核心
部分。
传输层用于增强和弥补通信子网的服务
不足,提供主机之间有效、合理的传输
服务。
设置传输层的理由:
传输服务
应用进程
…
应用进程
…
IP 协议的作用范围
(提供主机之间的逻辑通信)
TCP 和 UDP 协议的作用范围
(提供进程之间的逻辑通信)
因 特 网
(1)两个主机进行通信实际上是两个
主机中的应用进程互相通信
传输服务
传输层的复用和分用
进程
传输层复用
IP数据报
传输层分用
IP数据报
TSAP
NSAP
… …
传输服务
从通信和信息处理的角度看,传输层向
它上面的应用层提供通信服务,它属于
面向通信部分的最高层,同时也是用户
功能中的最低层。
物理层
网络层
传输层
应用层
数据链路层
面向信息处理
面向通信
用户功能
通信子网
端系统
传输服务
为了提高传输效率,IP首部中的首部校验和
字段只检验IP数据报首部是否出现差错而不
检查数据部分
传输层TCP和UDP的校验和既要校验首部也
要校验数据部分,并且只在发送端进行一次
校验和计算,在接收端进行一次检测
(2)传输层对整个报文段进行差错校
验和检测
传输服务
当传输层采用面向连接的协议(如
TCP)时,它为应用进程在传输实体间
建立一条全双工的可靠逻辑信道,尽管
下面的网络可能是不可靠的(如IP交换
网络)。
当传输层采用如UDP这样的无连接协议
时,这种逻辑信道是不可靠的。
(3)根据应用的不同,传输层需要执行
不同的传输协议来提供不同的传输服务
传输服务
用户不能对通信子网加以控制,无法解决网
络层的服务质量不佳问题
应用层协议如果强调数据传输的可靠性,那
么选择TCP较好,分组的丢失、残缺甚至网
络重置都可以被传输层检测到,并采取相应
的补救措施。如果应用层协议强调实时应用
要求,那么选择UDP为宜。
(4)传输层的存在使得传输服务比网
络服务更加合理有效
传输服务
(5)传输层采用一个标准的原语集提供传
输服务
由于传输服务独立于网络服务,故可以
采用一个标准的原语集提供传输服务。
为网络向高层提供了一个统一的服务界
面,所以用传输服务原语编写的应用程
序就可以广泛适用于各种网络。
传输服务
一个传输层协议通常可同时支持多个进程的
连接。若通信子网所提供的服务越多,传输
协议就可以做得越简单。若网络层提供虚电
路服务,那就能保证报文无差错、不丢失、
不重复、并且按序地进行可靠交付,因而传
输协议就很简单。但若网络层提供的是不可
靠的数据报服务,如果要保证传输服务质量,
则要求主机有一个复杂的传输协议。
传输层的主要功能
传输服务
向上提供可靠的和不可靠的逻辑通信信道
?
应
用
层
运
输
层
发
送
进
程
接
收
进
程
接
收
进
程
数据 数据
全双工可靠信道
数据 数据
使用 TCP 协议 使用 UDP 协议
不可靠信道
发
送
进
程
传输服务
传输层协议的选择是根据高层用户
的需要和低层网络协议提供的服务
来决定的。
• 高层对传输层服务的要求 T
• 通信子网所提供的服务 N
• 传输层协议=T-N
传输层协议的分类
传输服务
网络提供的服务质量
网络连接具网络连接具
有可接受低有可接受低
残留差错率残留差错率
和可接受低和可接受低
故障通知率故障通知率
网络连接具网络连接具
有可接受的有可接受的
低残留差错低残留差错
率和不可接率和不可接
受的高故障受的高故障
通知率通知率
网络连接具网络连接具
有不可接受有不可接受
的高差错率的高差错率
A型
B型
C型
传输服务
OSI参考模型中的传输层协议分类
TP1
TP2)
TP3TP4
TP0
差错恢复与复用类差错恢复与复用类
支持支持BB型网络型网络
差错检测和恢复、复用类差错检测和恢复、复用类
支持支持CC型网络型网络
简单类简单类
支持支持AA型网络型网络
复用类复用类
支持支持AA型网络型网络
基本差错恢复类基本差错恢复类
支持支持BB型网络型网络
OSI
传输服务
传输层的UDP和TCP都使用了端口(port)
与上层的应用进程进行通信,端口就是传输
层服务访问点 TSAP(也就是与应用进程的
接口)
端口的作用就是让应用层的各种应用进程都
能将其数据通过端口向下交付给传输层,以
及让传输层知道应当将其报文段中的数据向
上通过端口交付给应用层相应的进程。从这
个意义上讲,端口是应用层进程的标识。
2、传输层编址
传输服务
2、传输层编址
R
P
C
111
( )
S
N
M
P
161
( )
T
F
T
P
69
( )
S
M
T
P
25
( )
F
T
P
21
( )
H
T
T
P
80
( )
UDP TCP
IP
应用层
传输层
网络层
传输服务
2、传输层编址
其数值一般为
0~1023。这些端
口号是TCP/IP体
系确定并公布的
熟知端口
用来随时分配
给请求通信的
客户进程
一般端口
端口
类型
传输服务
3、无连接服务和面向连接服务
无连接的服务无连接的服务 面向连接的服务面向连接的服务
通信之前不需要建立连接通信之前不需要建立连接 数据通信之前需要建立连接,数据通信之前需要建立连接,
传输过程中需要保持连接,传输过程中需要保持连接,
数据通信完毕之后连接释放数据通信完毕之后连接释放
数据按顺序发送,但未必按顺数据按顺序发送,但未必按顺
序接收序接收
按序接收按序接收
不可靠服务不可靠服务 可靠服务可靠服务
协议简单,效率高协议简单,效率高 协议复杂,效率不高协议复杂,效率不高
传输服务
协议层次协议层次 无连接的服务无连接的服务 面向连接的服务面向连接的服务
传输层传输层 UDPUDP TCPTCP
网络层网络层 IPIP 分组级分组级
数据链路层数据链路层 CSMA/CDCSMA/CD HDLCHDLC,,PPPPPP
3、无连接服务和面向连接服务
内容纲要
传输服务
无连接的传输层协议UDP
面向连接的传输层协议
TCP
套接字
无连接的传输层协议UDP
UDP 是一个简单的面向用户数据报的传
输层协议。应用进程的输出正好产生一
个UDP数据报,并组装成一个待发送的
IP数据报。
UDP 只在 IP 的数据报服务之上增加了
很少一点的功能,即端口的功能和有限
的差错检测功能。
1、UDP概述
无连接的传输层协议UDP
UDP是无连接的。在传输数据前不需要
与对方建立连接。
UDP提供不可靠的服务。数据可能不按
发送顺序到达接收方,也可能会重复或
者丢失数据。
UDP同时支持点到点和多点之间的通信。
UDP是面向报文的。
1、UDP概述
无连接的传输层协议UDP
2、UDP首部格式
伪首部 源端口 目的端口 长 度 检验和
数 据首 部
UDP长度源 IP 地址 目的 IP 地址 0 17
IP 数据报
字节 4 4 1 1 2
12 2 2 2 2字节
发送在前
数 据首 部UDP 用户数据报
无连接的传输层协议UDP
2、UDP首部格式
伪首部 源端口 目的端口 长 度 检验和
数 据首 部
UDP长度源 IP 地址 目的 IP 地址 0 17
IP 数据报
字节 4 4 1 1 2
12 2 2 2 2字节
发送在前
数 据首 部UDP 用户数据报
用户数据报 UDP 有两个字
段:数据字段和首部字段。
首部字段有 8 个字节,由
4 个字段组成,每个字段
都是两个字节。
无连接的传输层协议UDP
UDP 用户数据报的首部中检验和用来检
验整个用户数据报(首部加数据部分)
出现的差错。
在计算检验和时在 UDP 数据报之前要
增加 12个字节的伪首部。所谓“伪首部
”是因为这种首部只在计算UDP校验和
的时候使用,既不向下层传送,也不向
上层递交。
2、UDP首部格式
无连接的传输层协议UDP
2、UDP首部格式
伪首部 源端口 目的端口 长 度 检验和
12 2 2 2 2字节
源源IPIP地址地址
目的目的IPIP地址地址
00 协议协议 长度长度
无连接的传输层协议UDP
2、UDP首部格式
网络需传输的UDP数据报数据如下,以
16进制数表示,其中第一行数据是IP数
据报首部的内容,第二行数据是UDP数
据,请计算其UDP校验和。
45 00 00 20 f9 12 00 00 80 11 bf 9f c0 a8
00 64 c0 a8 00 66
13 61 13 89 00 0c ?? ?? 50 43 41 55
无连接的传输层协议UDP
2、UDP首部格式
UDP首部的校验和字段设置为0,如果UDP数
据域长度为奇数的话,则填充一个“0”字节
将UDP首部和数据部分按照16位为单位划分
伪首部部分参与校验和计算
进行反码求和运算
最后对累加的结果取反码,即得到UDP校验
和
无连接的传输层协议UDP
3、UDP实例
协议名称协议名称 协议协议 默认端口默认端口 使用使用UDPUDP协议原因说明协议原因说明
域名系统域名系统 DNSDNS 5353 为了减少协议的开销为了减少协议的开销
动态主机配置协议动态主机配置协议 DHCPDHCP 6767 需要进行报文广播需要进行报文广播
简单文件传输协议简单文件传输协议 TFTPTFTP 6969 实现简单,文件需同时向许多机器实现简单,文件需同时向许多机器
下载下载
简单网络管理协议简单网络管理协议 SNMPSNMP 161161 网络上传输网络上传输SNMPSNMP报文的开销小报文的开销小
路由选择信息协议路由选择信息协议 RIPRIP 520520 实现简单,路由协议开销小实现简单,路由协议开销小
实时传输协议实时传输协议
实时传输控制协议实时传输控制协议
RTPRTP
RTCPRTCP
50045004
50055005 因特网的实时应用因特网的实时应用
内容纲要
传输服务
无连接的传输层协议UDP
面向连接的传输层协议
TCP
套接字
面向连接的传输层协议TCP
TCP是面向连接的
TCP提供可靠的服务
TCP只能进行点到点的通信
TCP是面向字节流的
1、 TCP概述
TCP的基本概念
面向连接的传输层协议TCP
TCP
首部
20 字节的
固定首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
32 bit
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
TCP 数据部分TCP 首部TCP 报文段
IP 数据部分IP 首部
发送在前
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
源端口和目的端口字段——各占 2 字节。端口是运输
层与应用层的服务接口。运输层的复用和分用功能都
要通过端口才能实现。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
序号字段——占 4 字节。TCP 连接中传送的数据流
中的每一个字节都编上一个序号。序号字段的值则指
的是本报文段所发送的数据的第一个字节的序号。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
确认号字段——占 4 字节,是期望收到对方的下一个
报文段的数据的第一个字节的序号。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
数据偏移——占 4 bit,它指出 TCP 报文段的数据起
始处距离 TCP 报文段的起始处有多远。“数据偏移”
的单位不是字节而是 32 bit 字(4 字节为计算单位)。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
标志位标志位 含义含义
URGURG 表明此报文段中包含紧急数据。表明此报文段中包含紧急数据。
ACKACK 表明确认号字段有效。表明确认号字段有效。
PSHPSH 表明应尽快将此报文段交付给接收应用程序。表明应尽快将此报文段交付给接收应用程序。
RSTRST 表明表明TCPTCP连接出现严重差错,须释放连接,然后再重连接出现严重差错,须释放连接,然后再重
新建立连接。新建立连接。
SYNSYN 在连接建立是用来同步序号。在连接建立是用来同步序号。
FINFIN 用来释放一个连接。用来释放一个连接。
面向连接的传输层协议TCP
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
窗口字段 —— 占 2 字节。窗口字段用来控制对方发
送的数据量,单位为字节。TCP 连接的一端根据设
置的缓存空间大小确定自己的接收窗口大小,然后通
知对方以确定对方的发送窗口的上限。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
检验和 —— 占 2 字节。检验和字段检验的范围包括
首部和数据这两部分。在计算检验和时,要在 TCP
报文段的前面加上 12 字节的伪首部。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
紧急指针字段 —— 占 16 bit。紧急指针指出在本报文
段中的紧急数据的最后一个字节的序号。
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
选项字段 —— 长度可变。TCP 只规定了一种选项,
即最大报文段长度 MSS (Maximum Segment Size)。
MSS 告诉对方 TCP:“我的缓存所能接收的报文段
的数据字段的最大长度是 MSS 个字节。”
MSS 是 TCP 报文段中的数据字段的最大长度。
数据字段加上 TCP 首部
才等于整个的 TCP 报文段。
MSS = TCP报文长度 - TCP首部长度
TCP
首部
20
字节
固定
首部
目 的 端 口
数据
偏移
检 验 和
选 项 (长 度 可 变)
源 端 口
序 号
紧 急 指 针
窗 口
确 认 号
保 留
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
比特 0 8 16 24 31
填 充
填充字段 —— 这是为了使整个首部长度是 4 字节的
整数倍。
面向连接的传输层协议TCP
3、 TCP 连接管理
建立连接——三次握手
SYN = 1, SEQ = x
ACK = 1, ACK = x + 1
SYN = 1, SEQ = y
ACK = 1, SEQ = x + 1
ACK = y + 1
面向连接的传输层协议TCP
3、 TCP 连接管理
建立释放——四次握手(文雅释放)
FIN = 1, SEQ = m
ACK = 1, ACK = m + 1
FIN = 1, SEQ = n
ACK = m + 1
ACK = 1, SEQ = m + 1
ACK = n + 1
半关闭状态
双向关闭状态
面向连接的传输层协议TCP
TCP 将连接可能处在的状态及各状态可能发
生的变迁,画成状态转移图的形式,称为有
限状态机。
图中每一个方框即TCP可能具有的状态,方
框中的字是TCP标准使用的状态名;状态之
间的箭头表示可能发生的状态变迁,箭头旁
边的字表示变迁的原因,或状态变迁后又出
现的动作。
TCP 的有限状态机
3、 TCP 连接管理
T
C
P
的
有
限
状
态
机
CLOSED
ESTABLISHED
LISTEN
CLOSE_WAIT
FIN_WAIT_1
SYN_RCVD
FIN_WAIT_2
CLOSING
TIME_WAIT
SYN_SENT
LAST_ACK
主动打开
被动打开
被动关闭
主动关闭
起点
被动打开
主动打开
发送 SYN
同时打开
收到 SYN,发送 SYN, ACK
收到 ACK
数据传送
阶段
关闭
发送 FIN
关闭
发送 FIN
关闭
发送 FIN
收到 RST
收到 SYN
发送 SYN, ACK
关闭
或超时
收到 ACK
收到 SYN, ACK
发送 ACK
收到 ACK收到 ACK
收到 FIN
发送 ACK
收到 FIN, ACK
发送 ACK
收到 FIN
发送 ACK
同时关闭
收到 FIN
发送 ACK
发送 SYN
定时经过两倍报文段寿命后
关闭
面向连接的传输层协议TCP
TCP 将所要传送的整个应用层报文(这
可能要嵌在多个报文段中发送)看成是
一个个字节组成的数据流,然后对每一
个字节编一个序号。在连接建立时,双
方要商定初始序号。TCP 就将每一次所
传送的报文段中的第一个数据字节的序
号,放在 TCP 首部的序号字段中。
4、 TCP可靠传输
确认机制
面向连接的传输层协议TCP
TCP 的确认是对接收到的数据的最高序
号表示确认。接收端返回的确认号是已
收到的数据的最高序号加 1。因此确认
号表示接收端期望下次收到的数据中的
第一个数据字节的序号。
为提高效率,TCP可以累积确认,即在
接收多个报文段后,一次确认。
4、 TCP可靠传输
确认机制
面向连接的传输层协议TCP
4、 TCP可靠传输
用TCP传送112字节的数据。设窗口为
100字节,而TCP报文段每次也是传送
100字节的数据。再设发送端和接收端
的起始序号分别选为l00和200,试画出
连接建立阶段到连接释放的图。
面向连接的传输层协议TCP
4、 TCP可靠传输
面向连接的传输层协议TCP
4、 TCP可靠传输
超时重传机制
由于 TCP 的下层是一个互连网环境,
IP 数据报所选择的路由变化很大。因而
运输层的往返时延的方差也很大。
时间
数据链路层
运输层
T1 T2 T3
往返时延的
概率分布
面向连接的传输层协议TCP
4、 TCP可靠传输
RTT自适应算法
计算一次平均往返时延:
RTTnew = RTTsample (第一次测量)
RTTnew = α×RTTold +(l-
α)×RTTsample(第二次以后的测量),
上式中RTTold是前次测量的RTTnew
在上式中对0≤α<1。典型的α值为7/8。
面向连接的传输层协议TCP
4、 TCP可靠传输
RTTD算法
引入RTT的偏差的加权平均值RTTDnew,计
算方法如下:
RTTDnew = RTTsample / 2(第一次测量)
RTTDnew = β×RTTDold +(l-β)×|
RTTnew - RTTsample |(第二次以后的测量)
在上式中对 0≤β<1。典型的β值为 3/4。
面向连接的传输层协议TCP
4、 TCP可靠传输
RTO算法
最后,超时重传时间RTO采用以下公式计算
出来:
RTO = RTTnew + 4× RTTDnew
Karn 提出了一个算法:在计算平均往返时延
时,只要报文段重发了,就不采用其往返时
延样本。这样得出的平均往返时延和重发时
间较准确。
面向连接的传输层协议TCP
4、 TCP可靠传输
定时器
重传定时器
持续定时器
保活定时器
面向连接的传输层协议TCP
5、 TCP流量控制
TCP 采用大小可变滑动窗口的方式进行
流量控制。窗口大小的单位是字节。根
据接收方接收能力,通过接收窗口
rwnd(receive window)可以实现端到
端的流量控制,接收端将接收窗口rwnd
的值放在 TCP 报文的首部中的“窗口
”字段,传送给发送端。
面向连接的传输层协议TCP
5、 TCP流量控制
发送窗口在连接建立时由双方商定初始
值。在通信的过程中,接收端可根据自
己的资源情况,随时动态地调整自己的
接收窗口,然后告诉发送方,使发送方
的发送窗口和自己的接收窗口一致。这
种由接收端控制发送端的做法,在计算
机网络中经常使用。
面向连接的传输层协议TCP
5、 TCP流量控制
TCP采用大小可变滑动窗口的方式进行
流量控制。根据图6-13的通信情况,设
主机A向主机B发送数据。双方商定的窗
口值是500。设每一个报文段为100字节
长,序号的初始值为1。请问接收方对
发送方进行了几次的流量控制?
面向连接的传输层协议TCP
5、 TCP流量控制
主机A 主机B
SEQ = 1, WIN =500
SEQ = 101
ACK =101, WIN =400
SEQ = 201
SEQ = 301
SEQ = 401
ACK =101, WIN =0
SEQ = 101
ACK =501, WIN =300
(1)
(2)
(3)
面向连接的传输层协议TCP
6、 TCP拥塞控制
拥塞控制的基本功能是避免网络发生拥塞,
或者缓解已经发生的拥塞。TCP/IP拥塞控制
机制主要集中在传输层实现。
TCP为了进行有效的拥塞控制,需要通过拥
塞窗口cwnd(congestion window)来进行衡
量网络的拥塞程度。注意,发送窗口的取值
依据拥塞窗口和接收窗口中的较小的值,即
Min[rwnd,cwnd]。rwnd在流量控制中已
阐述,在下文中将只关注cwnd。
面向连接的传输层协议TCP
6、 TCP拥塞控制
慢启动
拥塞避免
快速重传
快速恢复
面向连接的传输层协议TCP
6、 TCP拥塞控制
慢启动
拥塞避免
cwnd≥ssthresh
拥塞 3重复ACK
ssthresh=1/2 cwnd
cwnd=1MSS ssthresh =1/2 cwnd
cwnd= ssthresh
快速重传、快速恢复
面向连接的传输层协议TCP
TCPTCP的拥塞窗口的拥塞窗口cwndcwnd大大
小(以报文段个数为单小(以报文段个数为单
位)与传输轮次位)与传输轮次nn的关系的关系
如图所示:如图所示:
((11)请画出拥塞窗口和)请画出拥塞窗口和
传输轮次的关系曲线图。传输轮次的关系曲线图。
((22)请问各个传输轮次)请问各个传输轮次
使用的是什么拥塞控制使用的是什么拥塞控制
算法?算法?
((33)各个阶段的门限值)各个阶段的门限值
ssthreshssthresh各是多大?各是多大?
((44)第)第4040个报文段在第个报文段在第
几个传输轮次发送?几个传输轮次发送?
6、 TCP拥塞控制
CC
WW
NN
DD
11 22 44 88 1616 1717 1818 1919 2020
nn 11 22 33 44 55 66 77 88 99
CC
WW
NN
DD
11 22 44 88 1010 1111 1212 66 77
nn 1010 1111 1212 1313 1414 1515 1616 1717 1818
面向连接的传输层协议TCP
6、 TCP拥塞控制
面向连接的传输层协议TCP
7、 TCP实例
协议名称协议名称 协议协议 默认端口默认端口 使用使用TCPTCP协议原因说明协议原因说明
文件传输文件传输 FTPFTP
2020和和2121 要求保证数据传输的可靠性要求保证数据传输的可靠性
远程终端接入远程终端接入 TELNETTELNET 2323 要求保证字符正确传输要求保证字符正确传输
邮件传输邮件传输 SMTPSMTP
POP3POP3
2525
110110 要求保证邮件从发送方正确到达接要求保证邮件从发送方正确到达接
收方收方
万维网万维网 HTTPHTTP 8080 要求可靠的交换超媒体信息要求可靠的交换超媒体信息
内容纲要
传输服务
无连接的传输层协议UDP
面向连接的传输层协议
TCP
套接字
套接字
1、套接字概念
UDP 和 TCP 使用 “端口号”作为计算
机系统中高层应用进程的标识,而IP地
址则标识了网络中的一台主机, IP地址
和端口号的组合称为套接字。
套接字和端口、IP 地址的关系是:
IP 地址
端口号
1500
, 1500(socket)
套接字
1、套接字概念
客户端A
2
服务器C
80 端口端口 3095
客户端B
3端口 3095
套接字
2、套接字编程
TCP/IP标准没有规定应用程序与TCP/IP协议
软件接口的细节问题,而是允许系统设计者
能够选择有关应用编程接口API的具体实现
细节。
最著名的API是美国加利福尼亚大学伯克利
分校为Berkeley UNIX操作系统定义的套接字
接口。微软公司的 Windows Sockets是从
Berkeley Sockets扩展而来的,以动态链接库
(Dynamic Link Library,DLL)的形式提
供给程序员使用,目前已经称为Windows网
络编程事实上的标准。
套接字
2、套接字编程
套接字编程类型
(1)数据报套接字(SOCK_DGRAM)
(2)流套接字(SOCK_STREAM)
(3)原始套接字(sock_raw)
收发数据
收发数据
套接字
2、套接字编程——无连接数据报套接
字API调用时序图
服务器端 客户端
socket
bind
recvfrom
sendto
closesocket
socket
sendto
recvfrom
closesocket
套接字
2、套接字编程
——面向连接的
流套接字API
调用时序图
服务器端 客户端
socket
bind
listen
accept
recv
send
closesocket
socket
connect
send
recv
closesocket
建立连接
收发数据
收发数据
本章小结
传输层的作用是在通信子网提供的服务
的基础上,为上层应用层提供有效的、
合理的传输服务。
用户数据报协议 UDP 只是在 IP的数据
报服务之上增加了端口复用/分用和差
错控制的功能
本章小结
TCP面向连接,建立连接采用的过程叫
做三次握手,且通过确认机制和超时重
传机制来实现可靠传输,采用大小可变
滑动窗口的方式进行流量控制,使用慢
启动、拥塞避免、快速重传和快速恢复
等四种拥塞控制机制,使用有限状态机
机制,来刻画TCP连接可能处于的状态
及各种状态可能发生的变迁
套接字就是IP地址和端口的结合
See You Next Time!
南京邮电大学