1、第第第第第第6 6 6 6 6 6章章章章章章 传输层传输层传输层传输层传输层传输层23l了解传输层的数据传输服务了解传输层的数据传输服务 l掌握掌握TCPTCP与与UDPUDP协议的报文格式协议的报文格式l掌握掌握TCPTCP与与UDPUDP协议的工作原理协议的工作原理l掌握掌握TCPTCP/IPIP实用程序实用程序4传输层存在的必要性传输层存在的必要性 传输协议的分类传输协议的分类 数据传输服务数据传输服务56789 1011121314DATE(seq=j,ACK=i)CR(seq=i)CA(seq=j,ACK=i)主机1 主机2 REJECT(ACK=j)重复的CR(seq=i)CA(
2、seq=j,ACK=i)主机1 主机2 15ACK(seq=j)DR(seq=i)DR(seq=j,ACK=i)主机1 主机2 ACK(seq=j)DR(seq=i)DR(seq=j,ACK=i)主机1 主机2 启动计时器 超时释放 丢失 16171819传输层端口传输层端口 TCPTCP协议报文格式协议报文格式 连接的建立与关闭连接的建立与关闭其它传输服务其它传输服务2021222331 源端口(16bits)序列号(32bits)确认号(32bits)TCP 头长 保留位 标志位 窗口(16bits)校验和(16bits)填充 选项 紧急指针(16bits)数据(长度可变)0 15 16
3、目的端口(16bits)4 10 2425 TCP 实体A TCP 实体B SEQ=100 CTL=SYN SEQ=300 ACK=101 CTL=SYN,ACK SEQ=101 ACK=301 CTL=ACK SEQ=101 ACK=301 CTL=ACK DATA 一二三或建立连接的三次握手过程建立连接的三次握手过程2627 主 机1 发 送DR并 启 动 计 时 器 释 放 连 接 DR DR 发 送ACK ACK 丢 失 主 机2 启 动 计 时 器 (超 时)释 放 连 接 发 送DR并 主 机1 发 送DR并 启 动 计 时 器 释 放 连 接 主 机2 发 送DR并 启 动 计
4、时 器 DR DR 发 送ACK 释 放 连 接 ACK(a a)三次握手释放连接的正常操作三次握手释放连接的正常操作 (b b)最后确认最后确认TPDUTPDU丢失的情况丢失的情况28 丢失 ACK DR DR DR DR 主机1 主机2 释放连接 发送DR并 启动计时器 发送DR并 启动计时器(超时)释放连接 发送ACK 发送DR并 发送DR并 启动计时器 启动计时器 丢失 DR N个超时 释放连接 丢失 发送DR并(超时)释放连接 发送DR并 启动计时器 发送DR并 启动计时器 主机1 主机2 启动计时器 (c c)应答丢失的情况应答丢失的情况 (d d)应答丢失以及后续应答丢失以及后续
5、DR丢失情况丢失情况294.4.流量控制流量控制 在数据传输过程中,在数据传输过程中,TCPTCP协议提供一种基于动态滑动窗协议提供一种基于动态滑动窗口协议的流量控制机制,使接收方口协议的流量控制机制,使接收方TCPTCP实体能够根据自己当实体能够根据自己当前的缓冲区容量来控制发送方前的缓冲区容量来控制发送方TCPTCP实体传送的数据量。实体传送的数据量。假设接收方现有假设接收方现有2048 2048 B B的缓冲区空间,如果发送方传的缓冲区空间,如果发送方传送了一个送了一个10241024B B的报文段并被正确接收到,那么接收方要确的报文段并被正确接收到,那么接收方要确认该报文段。然而,因为
6、它现在只剩下认该报文段。然而,因为它现在只剩下10241024B B的缓冲区空间的缓冲区空间(在应用程序从缓冲区中取走数据之前),所以,它只声(在应用程序从缓冲区中取走数据之前),所以,它只声明明10241024B B大小的窗口,期待接收后续的数据。当发送方再次大小的窗口,期待接收后续的数据。当发送方再次发送了发送了10241024B B的的TCPTCP报文段后,由于接收方无剩余的缓冲区报文段后,由于接收方无剩余的缓冲区空间,所以,最终的确认其声明的滑动窗口大小为空间,所以,最终的确认其声明的滑动窗口大小为0 0。30 此时发送方必须停止发送数据直到接收方主机上的此时发送方必须停止发送数据直到
7、接收方主机上的应用程序被确定从缓冲区中取走一些数据,接收方重应用程序被确定从缓冲区中取走一些数据,接收方重新发出一个新的窗口值为止。新发出一个新的窗口值为止。当滑动窗口为当滑动窗口为0 0时,在正常情况下,发送方不能再时,在正常情况下,发送方不能再发送发送TCPTCP报文段。但有两种情况例外,一是紧急数据可报文段。但有两种情况例外,一是紧急数据可以发送,比如,立即中断远程的用户进程;二是为防以发送,比如,立即中断远程的用户进程;二是为防止窗口声明丢失时出现死锁,发送方可以发送止窗口声明丢失时出现死锁,发送方可以发送1 1 B B的的TCPTCP报文段,以便让接收方重新声明确认号和窗口大小。报文
8、段,以便让接收方重新声明确认号和窗口大小。315.PUSH操作操作 在一个在一个TCPTCP连接上进行正常数据传送过程中,发送方会按规连接上进行正常数据传送过程中,发送方会按规定的方式来分段和发送上层协议递交的数据。这样,对于递交定的方式来分段和发送上层协议递交的数据。这样,对于递交了该数据的上层协议来说,在数据发送完成前,无法知道自身了该数据的上层协议来说,在数据发送完成前,无法知道自身递交的数据是否在发送。递交的数据是否在发送。PUSH PUSH(推进)数据机制可使得上层协议递交的数据能够迅速推进)数据机制可使得上层协议递交的数据能够迅速地从本地推向远地,而不受发送方当前发送窗口大小和发送
9、方地从本地推向远地,而不受发送方当前发送窗口大小和发送方式所限制。式所限制。当发送方当发送方TCPTCP收到上层协议的收到上层协议的PUSHPUSH操作请求时,它将在流操作请求时,它将在流量控制允许的范围内进行数据分段并发送本地量控制允许的范围内进行数据分段并发送本地TCPTCP缓冲区中所缓冲区中所有数据(有数据(TCPTCP段头中的段头中的PSHPSH标志位被置位)。当接收方标志位被置位)。当接收方TCPTCP收到收到带有带有PSHPSH标志的标志的TCPTCP数据段后,将迅速把这些数据段递交给上层数据段后,将迅速把这些数据段递交给上层接收协议并结束当前的接收命令。接收协议并结束当前的接收命
10、令。326.紧急数据紧急数据 任何一个任何一个TCPTCP输出段都可以携带紧急数据(输出段都可以携带紧急数据(Urgent DataUrgent Data),),以支持上层协议间紧急信息的快速传递。紧急数据必须位于以支持上层协议间紧急信息的快速传递。紧急数据必须位于数据段中所有数据的最前端,并在数据段中所有数据的最前端,并在TCPTCP段头中设置如下字段:段头中设置如下字段:(1)(1)设置设置URGURG标志位,表示当前数据段中携带有紧急数据。标志位,表示当前数据段中携带有紧急数据。(2)(2)设置紧急指针,紧急指针与当前输出段的序号之和指出数设置紧急指针,紧急指针与当前输出段的序号之和指出
11、数据流中紧急数据最后一个字节。对于一个包含该字节的数据据流中紧急数据最后一个字节。对于一个包含该字节的数据段来讲,其紧急数据长度从段序号开始一直延续到该字节为段来讲,其紧急数据长度从段序号开始一直延续到该字节为止。止。33 当接收方当接收方TCPTCP收到含有紧急数据的收到含有紧急数据的TCPTCP数据段后,首先数据段后,首先把紧急数据从正常数据流中分离出来,并保存在适当地把紧急数据从正常数据流中分离出来,并保存在适当地方。然后,以一定的方式通知上层协议,希望它尽快地方。然后,以一定的方式通知上层协议,希望它尽快地响应和处理。响应和处理。当发送方当发送方TCPTCP接到上层协议递交的紧急数据后
12、,并不接到上层协议递交的紧急数据后,并不是立即发送紧急数据,而是把它们排入正常数据的发送是立即发送紧急数据,而是把它们排入正常数据的发送队列中。此后,发送方队列中。此后,发送方TCPTCP每发送一个数据段都要带有每发送一个数据段都要带有URGURG标志和紧急指针,直到出现真正含有紧急数据的数据标志和紧急指针,直到出现真正含有紧急数据的数据段为止;也就是说,含有段为止;也就是说,含有URGURG标志和紧急指针的数据段不标志和紧急指针的数据段不一定就含有紧急数据,只有包含紧急指针开始到该字节一定就含有紧急数据,只有包含紧急指针开始到该字节为止皆为紧急数据。为止皆为紧急数据。发送方发送方TCPTCP
13、即使发送窗口为即使发送窗口为0 0时也要对带有时也要对带有URGURG标志的标志的数据段实行强制发送,不管它们是否含有紧急数据。数据段实行强制发送,不管它们是否含有紧急数据。347.多路复用机制多路复用机制 TCP TCP协议的多路复用功能是通过端口机制提供的。协议的多路复用功能是通过端口机制提供的。端口是端口是用于标识用于标识TCPTCP连接的地址集,一个主机上的多个应用进程可连接的地址集,一个主机上的多个应用进程可以通过不同的端口同时使用以通过不同的端口同时使用TCPTCP实体进行通信,从而达到多实体进行通信,从而达到多路复用的目的。路复用的目的。不同主机上的不同主机上的TCPTCP实体对
14、端口地址的选取是独立的,只要实体对端口地址的选取是独立的,只要保证本地端口地址的惟一性就可以保证整个保证本地端口地址的惟一性就可以保证整个TCPTCP连接的惟一连接的惟一性,即网间惟一的性,即网间惟一的IPIP地址和本地惟一的端口地址将惟一地确地址和本地惟一的端口地址将惟一地确定通信连接的一端。一个本地端口可以同时与多个远地端口定通信连接的一端。一个本地端口可以同时与多个远地端口建立通信连接。建立通信连接。在在TCPTCP协议内部定义了一个协议内部定义了一个“周知周知”端口的集合,属于端口的集合,属于该集合的端口都对应了某一确定的上层服务,如该集合的端口都对应了某一确定的上层服务,如FTPFT
15、P服务、服务、TelnetTelnet服务等。服务等。35UDPUDP协议数据单元协议数据单元 UDPUDP协议报文格式协议报文格式 UDPUDP协议工作原理协议工作原理3637 IP 首部(20B)UDP 报头(8B)UDP 数据 IP 分组数据 UDP 报文 38源端口(16bits)目的端口(16bits)长度(16bits)校验和(16bits)数据(长度可变)0 15 16 31 UDPUDP报文格式如图所示报文格式如图所示:39UDPUDP报头各个字段意义如下:报头各个字段意义如下:(1)(1)源端口号、目的端口号:分别用于标识和寻找源源端口号、目的端口号:分别用于标识和寻找源端和
16、目的端的应用进程。它们分别与端和目的端的应用进程。它们分别与IPIP报头中的源端报头中的源端IPIP地址和目的端地址和目的端IPIP地址组合就惟一确定一个地址组合就惟一确定一个UDPUDP连接。连接。(2)(2)报文长度:包括报文长度:包括UDPUDP报头和数据在内的报文长度,报头和数据在内的报文长度,以字节为单位,最小值为以字节为单位,最小值为 8 8(报头长度)。(报头长度)。(3)(3)校验和:校验和:可选字段。若计算校验和,则对可选字段。若计算校验和,则对IPIP首首部、部、UDPUDP报头和报头和UDPUDP数据全部计算在内,用于检错,即数据全部计算在内,用于检错,即由发送端计算校验
17、和并存储,由接收端进行验证。否由发送端计算校验和并存储,由接收端进行验证。否则,取值为则,取值为0 0。4041421.IPConfig IPConfig实用程序可用于显示当前的实用程序可用于显示当前的TCP/IP配置设置值。配置设置值。下面是几个常用的选项:下面是几个常用的选项:Default(缺省值,无选项)缺省值,无选项)当不带任何选项使用当不带任何选项使用IPConfig时,时,它为每个已配置的接口显示它为每个已配置的接口显示IP地址、子网掩码和缺省网地址、子网掩码和缺省网关值。关值。All 使用全部选项,使用全部选项,IPConfig能为能为DNS和和WINS服务器显示服务器显示它已
18、配置要使用的附加信息,并显示内置于本地网卡中的物理它已配置要使用的附加信息,并显示内置于本地网卡中的物理地址。地址。Release和和Renew 只对向只对向DHCP服务器租用服务器租用IP地址的计算机地址的计算机起作用。起作用。Release选项将接口租用的选项将接口租用的IP地址归还给地址归还给DHCP服务服务器;器;Renew选项将向选项将向DHCP服务器重新租用接口的服务器重新租用接口的IP地址。地址。在在UNIX/Linux系统中,可以使用系统中,可以使用ifconfig实用程序查看和实用程序查看和修改修改TCP/IP配置信息。配置信息。432.Ping Ping程序是最基本的查找并
19、排除网络故障的工具。程序是最基本的查找并排除网络故障的工具。Ping使用使用ICMP将数据报发送到另一个主机并等待应将数据报发送到另一个主机并等待应答。它能够以毫秒为单位显示发出回送请求到返回回答。它能够以毫秒为单位显示发出回送请求到返回回送应答之间的时间量,还能显示送应答之间的时间量,还能显示TTL值。值。Ping命令最命令最常用的方式是:常用的方式是:ping hostname|ip_address 当检查网络是否有故障时,首先当检查网络是否有故障时,首先Ping主机自己的主机自己的IP地址,这可以检测始发的网络接口的设置是否正确;地址,这可以检测始发的网络接口的设置是否正确;然后,可以试
20、着然后,可以试着Ping缺省网关,直到缺省网关,直到Ping远程主机。远程主机。这样,可以容易判断出问题的所在。这样,可以容易判断出问题的所在。443.ARP ARP是一个重要的是一个重要的TCP/IP协议,用于确定对应协议,用于确定对应IP地址的物理地址。使用地址的物理地址。使用ARP命令,可以查看主机命令,可以查看主机ARP高速缓存中的当前内容,也可以用人工方法输入永久性高速缓存中的当前内容,也可以用人工方法输入永久性的的IP地址地址-物理地址对。物理地址对。按照缺省设置,按照缺省设置,ARP高速缓存中的项目是动态的。高速缓存中的项目是动态的。每当发送一个指定地址的数据报且高速缓存中不存在
21、当每当发送一个指定地址的数据报且高速缓存中不存在当前项目时,前项目时,ARP便自动增加项目;如果项目输入后不便自动增加项目;如果项目输入后不进一步使用,则进一步使用,则IP地址地址-物理地址对就会在几分钟内失物理地址对就会在几分钟内失效。因此,如果效。因此,如果ARP高速缓存中项目很少或者根本没高速缓存中项目很少或者根本没有项目,则不必感到奇怪。有项目,则不必感到奇怪。454.TraceRoute TraceRoute是是TCP/IP查找并排除故障的主要工查找并排除故障的主要工具。它不断用更大的具。它不断用更大的TTL发送发送UDP数据报并探测数数据报并探测数据经过的网关的据经过的网关的ICM
22、P回应。最后,它得到数据报回应。最后,它得到数据报从源主机到目标主机的路由信息。对于每个从源主机到目标主机的路由信息。对于每个TTL,TraceRoute将发送三个数据报并报告每个数据报将发送三个数据报并报告每个数据报所花费的往返时间。这个功能可以用来检测网络瓶所花费的往返时间。这个功能可以用来检测网络瓶颈。颈。TraceRoute命令最常用的方式是:命令最常用的方式是:traceroute hostname|ip_address Microsoft公司的操作系统使用命令公司的操作系统使用命令tracert,而而不使用不使用traceroute。46477.NetStat NetStat实用程
23、序用于显示与实用程序用于显示与IP、TCP、UDP和和ICMP协议相关的统计数字。这些统计数字涉及发送和接收的数协议相关的统计数字。这些统计数字涉及发送和接收的数据报统计、差错统计等情况。据报统计、差错统计等情况。下面列出下面列出NetStat实用程序常用的选项:实用程序常用的选项:netstat s 显示各个协议的统计数字。显示各个协议的统计数字。netstat e 显示以太网的统计数字。显示以太网的统计数字。netstat r 显示路由表信息。显示路由表信息。netstat a 显示一个所有的有效连接的列表,包括已显示一个所有的有效连接的列表,包括已建立的连接、监听连接请求的端口。建立的连
24、接、监听连接请求的端口。488.Net Use/View Net Use和和Net View能够使用和查看计算机之间的能够使用和查看计算机之间的NetBIOS连接,它们是连接,它们是Net命令的子命令。命令的子命令。NetBIOS使用通用命名约定(使用通用命名约定(Universal Naming Convention,UNC)来标识计算机和访问共享点。共享点是指在共来标识计算机和访问共享点。共享点是指在共享计算机上的一个共享目录。享计算机上的一个共享目录。UNC名字总是以两条反名字总是以两条反斜线开头,后随计算机名,计算机名与共享点名字之间斜线开头,后随计算机名,计算机名与共享点名字之间用反
25、斜线分隔。用反斜线分隔。Net Use用于建立或取消到达特定共享点的映像驱用于建立或取消到达特定共享点的映像驱动器名的连接,动器名的连接,Net View用于查看共享计算机上的共用于查看共享计算机上的共享资源列表。享资源列表。49练练 习习 题题1.传输层提供的传输服务有哪些?传输层提供的传输服务有哪些?2.传输协议分为几类?分别面向哪些网络服务?传输协议分为几类?分别面向哪些网络服务?3.TCP的连接管理分为几个阶段?简述的连接管理分为几个阶段?简述TCP连接建立连接建立的的“三次握手三次握手”机制。机制。4.解释为什么传输连接突然释放掉就可能会丢失用户解释为什么传输连接突然释放掉就可能会丢失用户数据,而数据,而TCP的连接释放方法就可保证不丢失数据。的连接释放方法就可保证不丢失数据。5.TCP和和UDP有何主要区别?有何主要区别?TCP和和UDP的数据格式的数据格式分别包含哪些信息?分别包含哪些信息?6.举三个例子来说明举三个例子来说明TCP/IP实用程序的作用。实用程序的作用。