2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
第 8章 传 输 层
本章基本要求:
?掌握 TCP/IP传输层的协议组成,
?掌握常见的著名 TCP/IP的端口分配值;
?理解 TCP可靠传输服务的主要实现机制;
?理解 OSI传输层的功能;
?了解套接字和端口概念。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
第 8章 传 输 层
8.1 传输层功能概述
8.2 TCP/IP的传输层
8.3 TCP/IP实用程序
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.1 传输层功能概述
传输层是 OSI参考模型的第 4层,它为上一层提供了端到端
( end to end)的可靠的信息传递。物理层可以使我们在各链
路上透明地传输比特流。数据链路层则增强了物理层所提供的
服务,它使得相邻结点所构成的链路能够传输无差错的帧。网
络层又在数据链路层的基础上,提供路由选择、网络互连的功
能。而对于用户进程来说,希望得到的是端到端的服务(如主
机 A到主机 B的 FTP),传输层就是建立应用间的端到端连接,并
且为数据传输提供可靠或不可靠的连接服务。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.1 传输层功能概述
传输层是 OSI模型中建立在网络层和会话层之间的一个
层次,它一般包括以下基本功能。
① 连接管理( Connection Management):定义了允许
两个用户像直接连接一样开始交谈的规则。通常把连接的
定义和建立的过程称为握手( handshake)。传输层要建
立、维持和终止一个会话,传输层与其对等系统建立面向
连接的会话。
② 流量控制( Flow Control):就是以网络普遍接受
的速度发送数据,从而防止网络拥塞造成数据报的丢失。
传输层和数据链路层的流量控制区别在于:传输层定义了
端到端用户之间的流量控制,数据链路层定义了两个中间
的相邻结点的流量控制。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.1 传输层功能概述
③ 差错检测( Error Detection):传输层的差错检测
机制会检测到源点和目的之间的传输完全无错。
④ 对用户请求的响应( Response to User’s
Request):包括对发送和接收数据请求的响应,以及特
定请求的响应,如用户可能要求高吞吐率、低延迟或可靠
的服务。
⑤ 建立无连接或面向连接的通信,TCP/IP协议的 TCP提
供面向连接的传输层服务,UDP则提供无连接的传输层服务。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.1 传输层功能概述
传输层是 OSI参考模型中非常重要的一层,起到承上启
下的不可或缺的作用,从而被看成整个分层体系的核心。
但是,只有资源子网中的端设备才会具有传输层,通信子
网中的设备一般至多只具备 OSI下面 3层的功能即通信功能。
根据上述原因,通常又将 OSI模型中的下面 3层称为面向通
信子网的层,而将传输层及以上的各层称为面向资源子网
或主机的层。另一种划分则是将传输层及以下的各层统称
为面向数据通信的层,而将传输层之上的会话层、表示层
及应用层这些不包含任何数据传输功能的层统称为面向应
用的层,如图 8.1所示。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.1 传输层功能概述
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层























图 8.1 传输层在 OSI 模型中的地位
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
TCP/IP的传输层提供了两个主要的协议即传输控制协议
( Transport Control Protocol,简称 TCP)和用户数据
报协议( User Datagram Protocol,简称 UDP)。
8.2.1 TCP协议
为了实现这种端到端的可靠传输,TCP必须规定传输层
的连接建立与拆除的方式、数据传输格式、确认的方式、
目标应用进程的识别以及差错控制和流量控制机制等。与
所有网络协议类似,TCP将自己所要实现的功能集中体现在
了 TCP的协议数据单元中。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
1,TCP分段的格式
TCP的协议数据单元被称为分段( Segment),TCP通过
分段的交互来建立连接、传输数据、发出确认、进行差错
控制、流量控制及关闭连接。分段分为两部分,即分段头
和数据,所谓分段头就是 TCP为了实现端到端可靠传输所加
上的控制信息,而数据则是指由高层即应用层来的数据。
图 8.2给出了 TCP分段头的格式,其中有关字段的说明如下。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
比特 0 4 8 16 19 24 31
源端口 ( Source Port) 目的端口 ( Destination Port)
序列号( Sequence Number)
确认号( Acknowledgment Number)
报头长度
校验和( Checksum)
窗口( Windows)保留
TCP数据部分首部传
送 TCP数据报
图 8.2 TCP报文段的首部
编码位
紧急指针( Urgent pointer)
任选项( Options,长度可变) 填充
TCP
首部
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
源端口:占 16比特,分段的源端口号。
? 目的端口:占 16比特,分段的目的端口号。
? 序列号:占 32比特,分段的序列号,表示该分段在发
送方的数据流中的位置,用来保证到达数据顺序的编号。
? 确认号:占 32比特,下一个期望接收的 TCP分段号,
相当于是对对方所发送的并已被本方所正确接收的分段的
确认。顺序号和确认号共同用于 TCP服务中的确认、差错控
制。
? 报头长度,TCP头长,以 32位字长为单位。实际上相
当于给出数据在数据段中的开始位置。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
? 保留:占 6比特,为将来的应用而保留,目前置为
,0” 。
? 编码位:占 6比特,TCP分段有多种应用,如建立或关
闭连接、传输数据、携带确认等,
窗口:占 32比特,窗口的大小表示发送方可以接收的数
据量,单位为字节。使用可变大小的滑动窗口协议来进行
流量控制。
? 校验和:占 32比特,用于对分段首部和数据进行校验。
通过将所有 16位字以补码形式相加,然后再对相加和取补,
正常情况下应为,0” 。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
? 紧急指针:占 16比特,给出从当前顺序号到紧急数据
位置的偏移量。
? 任选项:长度可变。 TCP只规定了一种选项,即最大
报文段长度( MSS)。
? 填充:当任选项字段长度不足 32位字长时,需要加以
填充。
? 数据:来自高层即应用层的协议数据。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
2.端口和套接字
上面 TCP分段格式中出现了“源端口”和“目的端口”
字段,“端口”是英文 port的意译,作为计算机术语“端
口”被认为是计算机与外界通信交流的出入口。
由网络 OSI参考模型可知,传输层与网络层最大的区别
是传输层提供进程通信能力,网络通信的最终地址不仅包
括主机地址,还包括可描述网络进程的某种标识。所以
TCP/IP协议所涉及的端口是指用于实现面向连接或无连接
服务的通信协议端口,是对网络通信进程的一种标识,其
属于一种抽象的软件结构,包括一些数据结构和 I/O(输入
输出)缓冲区,故属于软件端口范畴。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
每个端口都拥有一个叫端口号的整数描述符,用来标识不同
的端口或进程。在 TCP/IP传输层,定义一个 16比特长度的整数
作为端口标识,也就是说可定义 216个端口,其端口号从 0到
216?1。由于 TCP/IP传输层的 TCP和 UDP两个协议是两个完全独立
的软件模块,因此各自的端口号也相互独立,即各自可独立拥
有 216个端口。
正如图 8.3所示,每种应用层协议或应用程序都具有与传输层
惟一连接的端口,并且使用惟一的端口号将这些端口区分开来。
当数据流从某一个应用发送到远程网络设备的某一个应用时,
传输层根据这些端口号,就能够判断出数据是来自于哪一个应
用,想要访问另一台网络设备的哪一个应用,从而将数据传输
到相应的应用层协议或应用程序。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
Te
lne
t
TCP
FT
P
SM
TP
DNS TF
TP
SN
MP
HT
TP
RI
P
UDP
21 25 53 69 80 161 520 端口号
传输层
应用层
图 8.3 应用层与传输层之间的接口
23
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
端口根据其对应的协议或应用不同,被分配了不同的端
口号。负责分配端口号的机构是 Internet编号管理局
( IANA)。目前,端口的分配有 3种情况,这 3种不同的端
口可以根据端口号加以区别。
( 1)保留端口
这种端口号一般都小于 1024。它们基本上都被分配给了
已知的应用协议(如图 8.3中的部分端口)。目前,这一类
端口的端口号分配已经被广大网络应用者接受,形成了标
准,在各种网络的应用中调用这些端口号就意味着使用它
们所代表的应用协议。这些端口由于已经有了固定的使用
者,所以不能被动态地分配给其他应用程序。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
( 2)动态分配的端口
这种端口的端口号一般都大于 1024。这一类的端口没有
固定的使用者,它们可以被动态地分配给应用程序使用。
也就是说,在使用应用软件访问网络的时候,应用软件可
以向系统申请一个大于 1024的端口号临时代表这个软件与
传输层交换数据,并且使用这个临时的端口与网络上的其
他主机通信。图 8.4显示了使用动态分配的端口访问网络资
源的情况。
在 DOS窗口中使用 netstat命令查看端口使用情况的图示。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
( 3)注册端口
注册端口比较特殊,它也是固定为某个应用服务的端口,
但是它所代表的不是已经形成标准的应用层协议,而是某
个软件厂商开发的应用程序。
大多数注册端口的端口号大于 1 024。
TCP和 UDP都允许 16位的端口值,分别能够提供 65 536个
端口。不论端口号大于还是小于 1024,以上 3种端口都分别
属于 TCP和 UDP。当然,也有些协议的端口既属于 TCP也属
于 UDP。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
当网络中的两台主机进行通信的时候,为了表明数据是由源端
的哪一种应用发出的,以及数据所要访问的是目的端的哪一种服务,
TCP/IP协议会在传输层封装数据段时,把发出数据的应用程序的端
口作为源端口,把接收数据的应用程序的端口作为目的端口,添加
到数据段的头中,从而使主机能够同时维持多个会话的连接,使不
同应用程序的数 据不发生混淆。一台主机上的多个应用程序可同时
与其他多台主机上的多个对等进程进行通信,所以需要对不同的虚
电路进行标识。对 TCP虚电路连接采用发送端和接收端的套接字
( Socket)组合来识别,如( Socket1,Socket2)。所谓套接字实
际上是一个通信端点,每个套接字都有一个套接字序号,包括主机
的 IP地址与一个 16位的主机端口号,如(主机 IP地址,端口号)。
如图 8.5所示表现了源端口与目的端口的作用。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
图 8.9 5 路由具体过程端口的概念示意图
端口 1 端口 2 端口 3 端口 4
主机
A
主机
B
连接 1 连接 2
( ) ( ) ( ) ( )
端口 1 端口 2
( ) ( ) 主机
C
端口 3 端口 4
( ) ( )
连接 3 连接 4
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
3,TCP的连接建立和拆除
TCP连接包括建立与拆除两个过程。 TCP使用三次握手协
议来建立连接。连接可以由任何一方发起,也可以由双方
同时发起。一旦一台主机上的 TCP软件已经主动发起连接请
求,运行在另一台主机上的 TCP软件就被动地等待握手。图
8.6给出了三次握手建立 TCP连接的简单示意。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
SYN=1,ACK=x+1
主机 A 主机 B网络报文
发送 SYN序号= X的分段
接收 SYN分段,并同意建立连接,
发送序号为 y的分段,发送
ACK=x+1
接收 ACK分段,再次确定建立
连接,发送序号为 x+1的分段,
发送确认 ACK=y+1
接收 ACK段
图 8.6 三次握手建立 TCP 连接
SYN=1,ACK=0
SYN=1,ACK=y+1
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
主机 1首先发起 TCP连接请求,并在所发送的分段中将编
码位字段中的 SYN位置为,1”, ACK位置为,0” 。主机 2
收到该分段,若同意建立连接,则发送一个连接接受的应
答分段,其中编码位字段的 SYN和 ACK位均被置,1”,指
示对第一个 SYN报文段的确认,以继续握手操作;否则,主
机 2要发送一个将 RST位置为,1” 的应答分段,表示拒绝建
立连接。主机 1收到主机 2发来的同意建立连接分段后,还
有再次进行选择的机会,若其确认要建立这个连接,则向
主机 2发送确认分段,用来通知主机 2双方已完成建立连接;
若其不想建立这个连接,则可以发送一个将 RST位置为,1”
的应答分段来告之主机 2拒绝建立连接。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
不管是哪一方先发起连接请求,一旦连接建立,就可以
实现全双向的数据传输,而不存在主从关系。 TCP将数据流
看做字节的序列,将从用户进程接收的任意长的数据,分
成不超过 64 KB(包括 TCP头在内)的分段,以适合 IP数据
报的载荷能力。所以对于一次传输要交换大量报文的应用
(如文件传输、远程登录等),往往需要以多个分段进行
传输。
数据传输完成后,还要进行 TCP连接的拆除或关闭。 TCP
协议使用修改的三次握手协议来关闭连接,以结束会话。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
4,TCP可靠数据传输技术
TCP采用序列号、确认、滑动窗口协议等。只不过 TCP的
目的是为了实现端到端结点之间的可靠数据传输,而数据
链路层协议则为了实现相邻结点之间的可靠数据传输。
首先,TCP要为所发送的每一个分段加上序列号,保证
每一个分段能被接收方接收,并只被正确地接收一次。
其次,TCP采用具有重传功能的积极确认技术作为可靠
数据流传输服务的基础。为了避免由于网络延迟引起迟到
的确认和重复的确认,TCP规定在确认信息中捎带一个分段
的序号,使接收方能正确地将分段与确认联系起来。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
第三,采用可变长的滑动窗口协议进行流量控制,以防止由于
发送端与接收端之间的不匹配而引起数据丢失。滑动窗口协议用于
传输层是为了在端到端结点之间实现流量控制。 TCP采用可变长的
滑动窗口,使得发送端与接收端可根据自己的 CPU和数据缓存资源
对数据发送和接收能力作出动态调整,从而灵活性更强,也更合理。
例如,假设主机 1有一个大小为 4096字节长的缓冲区,向主机 2发送
2048字节长度的数据分段,则在未收到主机 2的关于该 2048字节长
度分段的确认之前,主机 1向其他主机只能声明自己有一个 2048字
节长度的发送缓冲区。过了一段时间后,假定主机 1收到了来自主
机 2的确认,但其中声明的窗口大小为 0,这表明主机 2虽然已经正
确收到主机 1前面所发送的分段,但目前主机 2已不能接受任何来自
主机 1的新的分段了,除非以后主机 2给出窗口大于 0的新信息。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
5,TCP流量控制
TCP采用大小可变的滑动窗口机制实现流量控制功能。
窗口的大小是字节。在 TCP报文段首部的窗口字段写入的数
值就是当前给对方设置发送窗口的数据的上限。
在数据传输过程中,TCP提供了一种基于滑动窗口协议
的流量控制机制,用接收端接收能力(缓冲区的容量)的
大小来控制发送端发送的数据量。
在建立连接时,通信双方使用 SYN报文段或 ACK报文段中
的窗口字段捎带着各自的接收窗口尺寸,即通知对方从而
确定对方发送窗口的上限。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
在数据传输过程中,发送方按接收方通知的窗口尺寸和
序号发送一定量的数据,接收方根据接收缓冲区的使用情
况动态调整接收窗口尺寸,并在发送 TCP报文段或确认段时
捎带新的窗口尺寸和确认号通知发送方。
如图 8.8所示。设主机 A向主机 B发送数据。双方确定的
窗口值是 400。设一个报文段为 100字节长,序号的初始值
为 1(即 SEQ1= 1)。在图 8.8中,主机 B进行了三次流量控
制。第一次将窗口减小为 300字节,第二次将窗口又减为
200字节,最后一次减至零,即不允许对方再发送数据了。
这种暂停状态将持续到主机 B重新发出一个新的窗口值为止。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
主机 A 主机 B
主机 A还能发送 300字节
主机 A还能发送 200字节
图 8.9 利用可变滑动窗口进行流量控制
SEQ= 1
SEQ= 101
SEQ= 201
ACK= 201,WIN= 300
丢失!
SEQ= 301
SEQ= 401
SEQ= 201
ACK= 501,WIN= 200
ACK= 601,WIN= 0
SEQ= 501
允许 A再发送 300字节 ( 序号 201至 500)
A还能发送 200字节 ( 序号 301至 500)
A还能发送 100字节 ( 序号 401至 500)
A超时重发, 但不能发送序号 500以后的数据
允许 A再发送 200字节 ( 序号 501至 700)
A还能发送 100字节 ( 序号 601至 700)
不允许 A再发送, ( 到序号 600的数据都收到了 )
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
8.2.2 用户数据报协议( UDP)
1,UDP概述
UDP只在 IP的数据报服务之上增加了很少的功能,这
就是端口的功能(有了端口,运输层就能进行复用和分用)
和差错检测的功能。 UDP在某些方面有其特殊的优点:
① 发送数据之前不需要建立连接,减少了开销和发
送数据之前的时延。
② UDP不使用拥塞控制,也不保证可靠交付,因此
主机不需要维持具有许多参数的、复杂的连接状态表。
③ UDP用户数据报只有 8个字节的首部开销。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
④ 由于 UDP没有拥塞控制,因此网络出现的拥塞不
会使源主机的发送效率降低,这对某些实时应用是很重要
的。很多的实时应用(如 IP电话、实时视频会议等)要求
源主机以恒定的速率发送数据,并且允许在网络发生拥塞
时丢失一些数据,但却不允许数据有太大的时延,UDP正好
适合这种要求。
2,UDP数据报的首部格式
UDP有两个字段:数据字段和首部字段。首部字段只有 8
字节,由 4个字段组成,每个字段都是 2字节,如图 8.9所示,
各字段意义如下。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
比特 0 4 8 16 19 24 31
源端口 ( Source Port) 目的端口 ( Destination Port)
UDP报文长度
UDP数据部分首部


UDP 数
据报
图 8.9 UDP数据报的首部
校验和( Checksum)
紧急指针( Urgent pointer)
首部
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.2 TCP/IP的传输层
? 源端口:占 16比特,源端口号。
? 目的端口:占 16比特,目的端口号。
? UDP报文长度:占 16比特,UDP用户数据报的长度。
? 校验和:占 16比特,防止 UDP用户数据报在传输中出
错。
在 UDP中也采用与 TCP中类似的端口概念来标识同一主机
上的不同网络进程,并且两者在分配方式上也是类似的。
UDP与应用层之间的端口都是用报文队列来实现的。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.3 TCP/IP实用程序
1,hostname命令
此程序用于显示当前计算机的名称,即主机名。
2,ipconfig命令,winipcfg命令
ipconfig程序显示当前计算机 IP协议的一些配置属性,
如 IP地址、网关、子网掩码等。键入 ipconfig/all则可以
得到 IP协议的所有配置属性。
winipcfg这个程序的功能与 ipconfig的功能类似。
winipcfg程序是以窗口界面形式来显示 IP协议配置属性结
果的(且此程序一般是在 Windows 98系统中)。
利用这两个程序,还可以查找到网络适配器的物理地址,
这在某些时候是特别的有用的。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
8.3 TCP/IP实用程序
3,ping和 tracert命令
这两个命令在第 7章网络层已经介绍过。
4,netstat命令,nbtstat命令
当要对网络的整体使用状况了解时,这个实用程序显得较
有效果。通常,用得较多的情形有:
? 统计网络适配器的状态信息,用 netstal �r。
? 统计网络中当前路由表中的所有路由信息,用 netstal
�r。
? 统计网络中数据帧 r的传送情况,用 netstat interval
(如 netstat5)等。
nbtstat这个实用程序使用 NBT( TCP/IP上的 NetBIOS)来
显示协议的统计信息和当前的 TCP/IP连接,其使用情况可类
似参考 netstat。
2010年 5月 21日星期五 2时 19分 24秒 计算机网络技术实用教程 (第 3版 )
习 题
1.请说明对 OSI传输层重要性的理解。
2,TCP/IP的传输层为什么要设计两个提供不同服务的
协议?
3.什么是端口?它在传输层的作用是什么?
4.请说明传输层 TCP协议采用了哪些机制来保证端到端
结点之间的可靠传输?
5.请列举 5到 10个你所知道的著名的 TCP端口或 UDP端口,
并说明它们是提供什么网络应用的?