《数据通信与计算机网络传输层.ppt》由会员分享,可在线阅读,更多相关《数据通信与计算机网络传输层.ppt(48页珍藏版)》请在三一办公上搜索。
1、第7章 传输层,本章主要讲解有关传输层的一些概念和基础知识。通过本章的学习,读者要知道传输协议(Transport Protocol)是整个网络体系结构中的关键技术之一,还要了解传输层位于网络层与应用层之间,其主要功能是负责应用程序之间的通信,主要有连接端口管理、流量控制、错误处理、数据重发等工作。本章应重点掌握和理解以下内容:l 掌握有关端口和插口的概念、作用和使用方法l 掌握关于TCP协议的基础知识l 了解UDP协议的基础知识,7.1.1 传输层概述,传输层位于网络体系结构的第四层,如果将其上的各层均作为应用层,则传输层直接与上层应用层进行数据通信,是整个网络体系结构的核心部分。需要注意的
2、是在通信子网中没有传输层,它只存在于通信子网以外的各主机中,如果将整个网络体系结构从网络功能和用户功能角度来划分,传输层不包括在网络功能部分,而是属于用户功能层的最低层。,7.1 传输层提供的服务,7.1.1 传输层概述,7.1 传输层提供的服务,传输层的位置,7.1.2 提供给高层的服务,传输层的最终目标是利用网络层提供的服务向其用户(一般是应用层的进程),提供有效、可靠且价格合理的服务。其主要任务是:在优化网络服务的基础上,从源端机到目的端机提供可靠的、价格合理的数据传输,使高层服务用户在相互通信时不必关心通信子网实现的细节,即与所使用的网络无关。所以在通信子网内的各个交换节点以及连接各通
3、信子网的路由器中,都没有传输层。,7.1 传输层提供的服务,7.1.2 提供给高层的服务,例如,设两台计算机主机A和主机B要进行数据通信,如图7-2所示,在计算机A和计算机B上同时有两个应用程序在运行,每对应用程序需要通过两个互连的网络才能进行数据通信,如主机A上的应用程序AP1要和主机B上的应用程序AP3进行通信,数据传输的过程如图7-3所示:,7.1 传输层提供的服务,7.1.2 提供给高层的服务,图7-2 多进程通信情况,7.1 传输层提供的服务,7.1.2 提供给高层的服务,图7-3 应用程序进行数据通信的过程,7.1 传输层提供的服务,7.1.2 提供给高层的服务,由上图可以看出数据
4、在两台主机间传送的整个过程,在物理层上可以透明地传输数据的比特流;在数据链路层上使得各条链路能传送无差错的数据帧(数据帧按顺序、无丢失、不重复);在网络层上提供了路由选择和网络互连的功能,使得主机A发送的数据段能够按照合理的路由到达主机B。但是在这一过程中,到达主机B的数据并不一定是最可靠的,为了提高网络服务的质量,在传输层需要再次优化网络服务,并向高层用户屏蔽通信子网的细节,使高层用户看见的就好像在两个传输层实体之间有一条端到端的、可靠的、全双工的通信通路一样。,7.1 传输层提供的服务,7.1.2 提供给高层的服务,在整个通信的过程中,数据在传输层上,才是第一次实现真正意义的端到端的数据通
5、信。要想实现传输层的功能,必须在主机中装有传输层协议,此协议一般都可支持多个进程的连接。如上述例子中,它同时支持了两对应用进程进行通信。在传输层中完成传输功能的硬件和软件被称为传输实体TSAP(Transport Service Access Point),通过传输实体,传输层可以向应用层提供传输服务,7.1 传输层提供的服务,7.1.2 提供给高层的服务,图7-4 传输层与其上下层之间的关系,7.1 传输层提供的服务,7.1.3 TCP/IP协议中的传输层,在TCP/IP协议中有两个并列的协议:UDP和TCP。UDP(User Datagram Protocol,用户数据报协议)是面向无连接
6、的,即在进行数据传输之前不需要建立连接,而目的主机收到数据报后也不需要发回确认。这种协议提供了一种高效的传输服务。TCP(Transmission Control Protocol,传输控制协议)是面向连接的,即在进行数据传输之前需要先建立连接,而且目的主机收到数据报后要发回确认信息。这种协议提供了一种可靠的传输服务。与UDP相比提供了较多的功能,但是相对的报文格式和运行机制也较为复杂。,7.1 传输层提供的服务,7.1.4 端口,TCP/IP传输层可以通过协议端口(protocol port,简称端口)来标识通信的应用进程。传输层就是通过端口与应用层的应用程序进行信息交互的,应用层各种用户进
7、程通过相应的端口与传输层实体进行信息交互。端口实际上是一个16Bit长的地址,范围可以从0至65535。将0至1023端口号称为熟知端口(Well-Known Port),其余1024至65535端口号称为一般端口或(动态)连接端口(Registered/Dynamic),在数据传输过程中,应用层中的各种不同的服务器进程不断地检测分配给它们的端口,以便发现是否有某个应用进程要与它通信。,7.1 传输层提供的服务,7.1.4 端口,各端口的意义,7.1 传输层提供的服务,7.1.4 端口,7.1 传输层提供的服务,7.1.4 端口,通过SMTP进行通信的主机,7.1 传输层提供的服务,7.1.4
8、 端口,为了使得多主机多进程通信时,不至于发生上述的混乱情况,必须把端口号和主机的IP地址结合起来使用,称为插口或套接字(Scoket)。由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源端机了。插口包括IP地址(32位)和端口号(16位),共48位。如上图6-6所示:(,200)和(,25)就是一对插口,在整个Internet中,在传输层上进行通信的一对插口都必须是唯一的。在上述的例子中,使用的是TCP协议,若使用UDP协议,虽然在进行通信的进程间不需要建立连接,但是在每次传输数据时,都要给出发送端口和接收端口,因此同样也要使用插口。,7.1 传输层提供的服务,7.2 传输控
9、制协议TCP,TCP是TCP/IP体系中的传输层协议,是面向连接的,因而可以提供可靠的全双工信息服务。在数据传输的过程中,应用层的数据报传送到传输层后,加上TCP首部,就构成了TCP的数据传送单位,称为报文段(Segment),在发送的时候作为IP数据报的数据。加上IP首部后成为IP数据报;在接收的时候,网络层将IP数据报的IP首部去掉后上交给传输层,得到TCP报文段,传输层再将TCP首部去掉,然后上交给应用层,得到应用层所需要的报文段,7.2.1 TCP报文的格式,7.2 传输控制协议TCP,7.2.1 TCP报文的格式,7.2 传输控制协议TCP,1源端口号和目的端口号各占16位,2个字节
10、,分别标识连接两端的两个通信的应用进程 2发送序号占32位,4个字节,TCP的序号编号是对每一个字节进行编号,因此在这个字段中给出的数字是本报文段所发送的数据部分的第一个字节的序号 3接收序号又称作确认序号,占32位,4个字节,确认序号指的是期望收到对方下次发送的数据报的第一个字节的序号,也就是期望收到的下一个报文段的首部中的发送序号,同时确认以前收到的报文。,7.2.1 TCP报文的格式,7.2 传输控制协议TCP,4数据偏移占4位,此字段指出在TCP数据报内实际的数据到TCP报文段的起始位置的距离,实际上就是整个TCP报文段首部的长度。数据偏移字段存储的数值的单位是32位的字。5保留字段与
11、标志位占6位,设置的值为0,供功能扩展使用,新的TCP版本有些位已被启用。标志位,共有6个,每个占1位:(1)紧急比特位(URG),(2)确认比特(ACK),(3)紧迫比特(PSH),(4)重建比特(RST),(5)同步比特(SYN),(6)终止比特(FIN),7.2.1 TCP报文的格式,7.2 传输控制协议TCP,6窗口占2字节,设置的值为发送方接收窗口的大小,单位为字节 7检验和占2字节,用来检验首部和数据部分以及伪首部之和 8紧急指针与紧急比特配合使用处理紧急情况,指出在本报文段中的紧急数据的最后一个字节的序号,7.2.1 TCP报文的格式,7.2 传输控制协议TCP,9选项和填充TC
12、P首部可以有多达40字节的可选信息。此字段为可变部分,它们用来将附加信息传递给目的站,或用来将其它选项对齐。TCP定义了两类选项:一字节选项和多字节选项,7.2.2 TCP的编号与确认,在TCP报文段首部含有确认序号字段,通过它可以完成TCP报文的确认,具体的确认是对接收到的数据的最高序号进行确认,返回的确认序号是已经收到的数据的最高序号加1。由于TCP采用全双工的通信方式,因此进行通信的每一方都不必专门发送确认报文段,可以在传送数据的同时进行确认,这种方式称为捎带确认。,7.2 传输控制协议TCP,7.2.3 TCP的流量控制机制,两用户进程间的流量控制和链路层两相邻结点间的流量控制类似,都
13、要防止快速的发送数据时超过接收者的能力,采用的方法都是基于滑动窗口的原理。但是链路层常采用固定窗口大小,而传输层则采用可变窗口大小和使用动态缓冲分配。在TCP报文段首部的窗口字段写入的数值就是当前设定的接收窗口的大小。假设发送端要发送的数据为8个报文段,每个报文段的长度为100个字节,而此时接收端许诺的发送窗口为400个字节,具体情况如下图所示:,7.2 传输控制协议TCP,7.2.3 TCP的流量控制机制,滑动窗口机制,7.2 传输控制协议TCP,7.2.3 TCP的流量控制机制,7.2 传输控制协议TCP,发送端 接收端,7.2.3 TCP的流量控制机制,实际上实现流量控制并非仅仅为了使得
14、接收方来得及接收而已,还要有控制网络拥塞的作用。比如接收端正处于较空闲的状态,而整个网络的负载却很多,这时如果发送方仍然按照接收方的要求发送数据就会加重网络负荷,由此会引起报文段的时延增大,使得主机不能及时地收到确认,因此会重发更多的报文段,更加剧了网络的阻塞,形成恶性循环。为了避免发生这种情况,主机应该及时地调整发送速率。,7.2 传输控制协议TCP,7.2.3 TCP的流量控制机制,发送端主机在发送数据时,既要考虑到接收方的接收能力,也要考虑网络目前的使用情况,发送方发送窗口大小应该考虑以下几点:(1)通知窗口(advertised window):这是接收方根据自己的接收能力而确定的接收
15、窗口的大小。(2)拥塞窗口(congestion window):这是发送方根据目前网络的使用情况而得出的窗口值,也就是来自发送方的流量控制。当中最小的一个最为适宜,即:发送窗口=Min通知窗口,拥塞窗口 进行拥塞控制,Internet标准推荐使用三种技术,即慢启动(slow-start),加速递减(multiplicative decrease)和拥塞避免(congestion avoidance)。,7.2.4 TCP的差错控制,7.2 传输控制协议TCP,1差错检测和纠正TCP中的差错检测是通过三种简单工具来完成的:检验和、确认和超时。每一个报文段都包括检验和字段,用来检查受到损伤的报文
16、段;若报文段受到损伤,就由目的TCP将其丢弃。TCP使用确认的方法来证实收到了某些报文段,它们已经无损伤地到达了目的TCP。TCP不使用否认。若一个报文段在超时截止期之前未被确认,则被认为是受到损伤或已丢失。,7.2.4 TCP的差错控制,7.2 传输控制协议TCP,2受损伤的报文段图7-15所示为一个受损伤的报文段到达目的站。,7.2.4 TCP的差错控制,7.2 传输控制协议TCP,3丢失的报文段对于一个丢失的报文段。这与受损报文段的情况完全一样。4重复的报文段当含有同样序号的分组作为另一个收到的报文段到达时,目的TCP丢弃这个分组。5失序的报文段对失序的报文段不确认,直到收到所有它以前的
17、报文段为止,7.2.4 TCP的差错控制,7.2 传输控制协议TCP,6丢失的确认,7.2.5 TCP的重发机制,7.2 传输控制协议TCP,在传输层中,TCP确认到达的时间概率分布不是很集中,所以确定超时重发的时间就很困难。TCP采用了一种自适应算法来计算重发超时时间。这种算法把每次每个报文段发出的时间和收到此报文段确认的时间都记录下来,两时间之差称为报文段的往返时延。针对所有发送正确的报文段的往返时延进行加权平均,得到报文段的平均往返时延RT,而将TCP测量该往返时延所用的时间设为M,根据得到的时延,按照下列公式进行计算修正的RT:RT=RT+(1-)M式中,是修正因子,一般取值为7/8。
18、,7.2.5 TCP的重发机制,7.2 传输控制协议TCP,1988年,Jacobson提出一种动态的确定超时重发时间的方法,他提出的变化要与确认到达时间的概率密度函数的标准偏差大致成比例,并建议采用平均偏差作为对标准偏差的粗略估计。在这种算法中,需要保存另一个修正因子D(偏差值),按照下列公式进行新的计算:D=D+(1-)|RT-M|这时得到的D值与上面的RT值相比,更加令人满意。但是当数据段重发,并确认到达后,不清楚确认是针对先发的数据段还是对重发的数据段进行的,如果只是进行凭空的猜测将导致对数据的严重破坏。,7.2.6 TCP的传输连接管理,1.TCP连接的建立 第一次握手:源端机发送一
19、个带有本次连接序号的请求。第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有本次连接序号和源端机连接序号的确认。第三次握手:源端机收到含有两次初始序号的应答后,再向目的主机发送一个带有两次连接序号的确认。,7.2 传输控制协议TCP,7.2.6 TCP的传输连接管理,TCP协议中连接建立的过程,7.2.6 TCP的传输连接管理,2.连接的释放 第一次握手:由进行数据通信的任意一方提出要求释放连接的请求报文段。第二次握手:接收端收到此请求后,会发送确认报文段,同时当接收端的所有数据也都已经发送完毕后,接收端会向发送端发送一个带有其自己序号的报文段。第三次握手:发送端收到接收端的要求释放
20、连接的报文段后,发送反向确认。,7.2.6 TCP的传输连接管理,TCP连接的释放过程,*7.3 一个TCP/IP数据包实例,为了读者便于理解,我们在网上捕获了一个数据包,学习时可以对照曾经讲过的TCP/IP各层数据报的格式来阅读下面的数据例子。在分析这个例子的时候,请注意以下几个方面:(1)网络上传输的数据包是逐层封装的(2)数据包是从最底层开始分析的(3)数据的下面,是分层对协议报头各字段的分析。,*7.3 一个TCP/IP数据包实例,数据包实例:00 03 0f ff ba f1 02 e0 3b e8 6c 13 08 00 45 0005 a8 19 1b 40 00 77 06 a
21、d f1 d3 61 a8 af d2 1fe9 12 00 50 0c cc 20 d9 04 4c d6 20 e3 fe 50 10fe f2 39 89 00 00 协议分析:Frame 1(1462 on wire,1462 captured)Arrival Time:Apr 27,2004 15:37:08.310024000 Frame Number:1 Packet Length:1462 bytes Capture Length:1462 bytes,*7.3 一个TCP/IP数据包实例,Ethernet II 00 03 0f ff ba f1;Destination:00
22、:03:0f:ff:ba:f1 02 e0 3b e8 6c 13;Source:02:e0:3b:e8:6c:13 08 00;Type:IP(0 x0800)Internet Protocol,Src Addr:(211.97.168.175),Dst Addr:lao-ji(210.31.233.18)45;Version:4(0100B);Header length:20 bytes(0101B)00;Differentiated Services Field:Default;ECN:0 x00)0000 00.=Differentiated Services Codepoint:De
23、fault(0 x00).0.=ECN-Capable Transport(ECT):0.0=ECN-CE:0 05 a8;Total Length:1448 19 1b;Identification:0 x191b,*7.3 一个TCP/IP数据包实例,4;Flags:0 x04.1.=Dont fragment:Set.0.=More fragments:Not set0 00;Fragment offset:077;Time to live:11906;Protocol:TCP(0 x06)ad f1;Header checksum:0 xadf1(correct)d3 61 a8 af
24、;Source:211.97.168.175(211.97.168.175)d2 1f e9 12;Destination:lao-ji(210.31.233.18),*7.3 一个TCP/IP数据包实例,Transmission Control Protocol,Src Port:http(80),Dst Port:3276(3276),Seq:551093324,Ack:359247974200 50;Source port:http(80)0c cc;Destination port:3276(3276)20 d9 04 4c;Sequence number:551093324;Next
25、 sequence number:551094732d6 20 e3 fe;Acknowledgement number:35924797425;Header length:20 bytes,*7.3 一个TCP/IP数据包实例,010;Flags:0 x0010(ACK)0.=Congestion Window Reduced(CWR):Not set.0.=ECN-Echo:Not set.0.=Urgent:Not set.1.=Acknowledgment:Set.0.=Push:Not set.0.=Reset:Not set.0.=Syn:Not set.0=Fin:Not set
26、fe f2;Window size:6526639 89;Checksum:0 x3989(correct)00 00;Urgent,*7.3 一个TCP/IP数据包实例,Hypertext Transfer Protocol Data(1408 bytes)0000 e8 92 31 1e 01 18 5c 47 36 ff d3 a7 03 93 2a 42.1.G6.*B0010 19 db 4c 01 f8 8f 97 95 fe e6 ee c1 13 2f e0 ee.L./.(数据略),7.4 用户数据协议UDP,7.4.1 UDP数据报的格式,7.4 用户数据协议UDP,7.4
27、.2 UDP的工作原理由于UDP提供的是一种面向无连接的服务,它并不保证可靠的数据传输,不具有确认、重发等机制,而是必须靠上层应用层的协议来处理这些问题。UDP相对于IP协议来说,唯一增加的功能是提供对协议端口的管理,以保证应用进程间进行正常通信。它和对等的UDP实体在传输时不建立端到端的连接,而只是简单地向网络上发送数据或从网络上接收数据。并且,UDP将保留上层应用程序产生的报文的边界,即它不会对报文合并或分段处理,这样使得接收方收到的报文与发送时的报文大小完全一致。,7.4.2 UDP的工作原理,此外,一个UDP模块必须提供产生和验证检验和的功能,但是一个应用程序在使用UDP服务时,可以自由选择是否要求产生检验和。当一个IP模块在收到由IP传来的UDP数据报后,首先检验UDP检验和。如果检验和为0,表示发送方没有计算检验和。如果检验和非0,并且检验和不正确,则UDP将丢弃这个数据报。如果检验和非0,并且正确,则UDP根据数据报中的目标端口号,将其送给指定应用程序等待排队。,7.4 用户数据协议UDP,