第05章 传输层.ppt





《第05章 传输层.ppt》由会员分享,可在线阅读,更多相关《第05章 传输层.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 传输层传输层本章导航本章导航:本章主要讲述传输层的概述、TCP协议格式、TCP服务的三次握手过程、TCP的流量控制和拥塞控制、UDP协议的特征和基于UDP的服务应用等。1/31/20231清华大学出版社理论教学要求理论教学要求:o1.理解传输层的基本作用和服务。o2.理解TCP协议的特点和协议格式。o3.掌握TCP服务的三次握手过程。o4.理解TCP的流量控制和拥塞控制方式。o5.了解UDP协议的特点和协议格式。o。1/31/20232清华大学出版社实验教学要求:实验教学要求:o1.掌握TCP三次握手过程的算法描述。o2.掌握基于winsock编写TCP通信程序。o3.掌握基于wi
2、nsock编写UDP通信程序。o4.了解Cisco Tftp服务器的配置使用。o5.掌握Ethereal捕获软件的使用1/31/20233清华大学出版社5.1 传输层概述传输层概述o传输层位于OSI参考模型的第4层,其任务是为上层用户提供独立于具体网络的、可靠的端-端数据传输。在TCP/IP网络体系结构中,传输层包含TCP和UDP两种最重要的协议。o传输层的最终目的是向应用层提供可靠的数据传输服务。传输层中完成这一工作的硬件和软件称为传输实体,传输实体可能在操作系统内核中,或在一个单独的用户进程内,也可能包含在网络应用程序库中,或是位于网络接口卡上。传输服务是通过在两个传输实体间执行传输协议来
3、实现的。当一个客户进程希望和远程服务器进程建立连接时,它必须指出要建立连接的对象,通常采用的方法是定义一个传输地址,令服务器进程在这个地址上监听连接请求,在传输层用传输服务访问点TSAP来表示。o1.传输层服务类型传输层服务类型o传输层服务分为面向连接和无连接两类,分成两类的原因如下:o(1)通信子网不受用户控制,用户可以通过设置来弥补通信子网服务的不足。o(2)不同的网络向上提供的服务接口不同,为使应用程序的设计不依赖于具体网络,在传输层上提供一个统一的编程接口非常必要。1/31/20234清华大学出版社o2.传输层的功能传输层的功能o传输层的功能包含连接管理、流量控制、差错检测等五个方面。
4、o(1)连接管理o连接管理定义了用户建立连接的规则。通常把连接的定义和建立过程称为握手。在数据传输开始时,发送方和接收方都要通知各自的操作系统初始化一个连接,一台主机发起的连接必须被另一台主机接收才行。当所有的同步操作完成后,连接就建立成功,开始进行数据传输。在传输过程中,两台主机通过协议软件来通信以验证数据是否被正确接收。数据传输完成后,发送端发送一个标识数据传输结束的指示,接收端在数据传输完成后确认数据传输结束,连接终止。o(2)流量控制o流量控制就是以网络普遍接受的速度发送数据,从而防止网络拥塞造成数据报的丢失。传输层独立于低层而运行,它定义了端到端用户之间的流量控制。1/31/2023
5、5清华大学出版社o(3)差错检测o数据连路层的差错检测功能提供了可靠的连路传输,但无法检测源点和目的之间的传输错误。传输层的差错检测机制会检测到这种类型的错误。o(4)对用户请求的响应o对用户请求的响应,包括对发送和接收数据请求的响应,以及特定请求的响应,如用户可能要求高吞吐率、低延迟或可靠的服务。o(5)建立通信o传输层建立通信过程中,可以提供面向连接的可靠认证服务和面向无连接的不可靠非认证服务。在TCP/IP网络体系结构中,集中体现该类服务的是TCP协议和UDP协议。1/31/20236清华大学出版社5.2 TCP协议协议oTCP(Transmission Control Protocol
6、),即传输控制协议,它用于在不可靠的互联网中提供可靠的端到端字节流服务。由于互联网络规模大,网络种类繁多,网络的拓扑及流量特性很复杂且动态变化,因此TCP的必须设计为是高度自适应和健壮的。1/31/20237清华大学出版社5.2.1 TCP协议格式协议格式oTCP的传输单元称为分段(Segment),每个TCP段由一个20字节的固定头、选项头以及零个或多个数据字节组成,每个字节都有一个32比特的序号。TCP软件决定段的最大长度,它可以将应用程序的多次输出放进一个段中,也可以将一次输出放到多个段中。段的长度要受到IP包的数据域长度以及链路MTU的限制。TCP通过分段的交互来建立连接、传输数据、发
7、出确认、进行差错控制、流量控制及关闭连接。图5-1给出了TCP分段头的格式。1/31/20238清华大学出版社1/31/20239清华大学出版社o常见选项说明:o源端口和目的端口:分别与源IP地址和目的IP地址一起标识TCP连接的两个端点;o序号:TCP段中第一个字节的序号;o确认序号:准备接收的下一个字节序号;oTCP头长度:包括固定头和选项头;oURG:紧急标志,为1时表明紧急指针域有效;oACK:确认标志,为1时表明确认序号域有效;oPSH:为1时表示要求接收实体立即将数据上交给应用层;oRST:复位标志,为1时表示复位一个连接,或拒绝接收一个非法段,或拒绝建立一个连接;oSYN:建立连
8、接标志,在请求建立连接的段中:SYN=1,ACK=0;在表示接受连接的段中:SYN=1,ACK=1;用SYN来区分与建立连接有关的段,用ACK进一步区分请求和接受动作;oFIN:释放连接标志,为1时表示发送方结束发送,但仍可以接收数据。o窗口大小:TCP使用可变长度的滑动窗口进行流量控制,窗口大小表明发送方可以发送的字节数(从确认序号开始);该域为0表示要求发送方停止发送,过后可以用一个该域不为0的段恢复发送;o校验:对TCP头、数据及伪头结构进行校验;o紧急指针:指出紧急数据的位置(距当前序号的偏移值)1/31/202310清华大学出版社5.2.2 TCP的服务过程的服务过程oTCP的服务过
9、程包括连接建立、数据传输、释放连接三个过程。o1.连接建立连接建立oTCP使用三次握手协议来建立连接。连接可以由任何一方发起,也可以由双方同时发起。一旦一台主机上的TCP软件主动发起连接请求,运行在另一台主机上的TCP软件就被动地等待握手。图5-2给出了三次握手建立TCP连接的过程。1/31/202311清华大学出版社1/31/202312清华大学出版社o主机1首先发起TCP连接请求,并在所发送的分段中将编码位字段中的SYN位置“1”,ACK位置“0”。主机2收到该分段,若同意建立连接,则发送一个连接接受的应答分段,其中编码位字段的SYN和ACK位均被置“1”,指示对第一个SYN报文段的确认,
10、以继续握手操作;否则,主机2要发送一个将RST位置“1”的应答分段,表示拒绝建立连接。主机1收到主机2发来的同意建立连接分段后,还有再次选择的机会,若其确认要建立这个连接,则向主机2发送确认分段,用来通知主机2双方已完成建立连接;若其不想建立该连接,则可以发送一个将RST位置“1”的应答分段来告知主机2拒绝建立连接。o不管是哪一方先发起连接请求,一旦连接建立,就可以实现全双向的数据传输。TCP将数据流看做字节的序列,将从用户进程接收的任意长的数据,分成不超过64KB(包括TCP头在内)的分段,以适合IP数据报的载荷能力。所以对于一次传输要交换大量报文的应用,往往需要以多个分段进行传输。1/31
11、/202313清华大学出版社o2.TCP连接释放连接释放o数据传输完成后,进行TCP连接的释放过程。TCP协议使用修改的三次握手协议来关闭连接,以结束会话。TCP连接是全双工的,可以看作两个不同方向的单工数据流传输。一个完整连接的拆除涉及两个单向连接的拆除。当主机1的TCP数据已发送完毕时,在等待确认的同时可发送一个将编码位字段的FIN位置”1”的分段给主机2,若主机2已正确接收主机1的所有分段,则会发送一个数据确认分段,同时通知本地相应的应用程序,对方要求关闭连接。接着再发送一个对主机1所发送的FIN分段进行确认的分段,否则,主机1就要重传那些主机2未能正确接收的分段。收到主机2关于FIN确
12、认后的主机1需要再次发送一个确认拆除连接的分段,主机2收到该确认分段意味着从主机1到主机2的单向连接已经结束。但是,此时在相反的方向上,主机2仍然可以向主1发送数据,直到主机2数据发送完毕并要求关闭连接。一旦当两个单向连接都被关闭,则两个端结点上的TCP软件就要删除与这个连接的相关记录,于是原来所建立的TCP连接被完全释放。连接的关闭过程如图5-3所示。1/31/202314清华大学出版社1/31/202315清华大学出版社实验实验1 TCP三次握手过程的算法描述三次握手过程的算法描述o本次实验要求读者掌握三次握手的基本过程,认真阅读三次握手的算法描述,尝试编写基于TCP的通信连接程序。o1.
13、过程描述过程描述o(1)客户端发送SYN包到服务器,进行连接请求,SYN=1,同时随机产生一个序号Sequence number=X,表明传送的第一个数据字节的序号为X,并且进入SYN_SEND状态,等待服务器端的确认。o(2)服务器端接到的SYN包后对其确认后,发送一个SYN+ACK包到客户端,设置SYN=1,ACK=1,确认序号ACKnowledgement number=X+1,同时也为自己选择一个序号Sequence number=Y,并且服务器端进入SYN_RECEIVE状态。o(3)客户端收到服务器端的确认后,发送一个ACK包到服务器端,设置ACK=1,其确认序号ACKnowled
14、gement number=Y+1。发送完毕后,客户端进入ESTABLISHED状态,服务器端收到客户端的确认包后也进入ESTABLISHED状态。o2.类类C语言算法描述语言算法描述o(1)客户端相关算法oSYNpACKet=000010;o ACKpACKet=010000;1/31/202316清华大学出版社o*从TCP层的上层获得端口号*oVoid ports(port1,port2)o os_port=port1;o d_port=port2;o oVoid numbers()o os_num=int rand(void)+90;*随机产生一个随机的顺序号*o a_num=0;ooV
15、oid TCPConnection()ooIf(i=1)ooflagspACKet=SYNpACKet;*发送SYN包*oprintf(“进行第一次握手!n”);o*客户端向服务器端发起第一次连接请求*oSendTCPHeader(s_port,d_port,s_num,a_num,flagspACKet);oo*客户端对服务器端的回应作出判断*oIf(i=2)&(GetTCPHeader.flagspACKet=SYNpACKet+ACKpACKet)o oprintf(“第二次握手成功!n”);1/31/202317清华大学出版社oflagspACKet=ACKpACKet;*发送ACK包
16、*o a_num=GetTCPHeader.s_num+1;oprintf(“进行第三次握手!n”);o/*客户端接收到服务器端的SYN+ACK包作出确认,并进入ESTABLISHED状态,等待与服务器端的数据传输*/oSendTCPHeader(s_port,d_port,s_num,a_num,flagspACKet);o oelse printf(“请求失败!”);oo/*客户端向服务器端发起请求后,进入SYN_SEND状态,等待服务器端回应*/oVoid Wait()ooWhile(timesout()*超次终止*/ooWhile(timeout()*超时重传*/ooSendTCPHe
17、ader(s_port,d_port,s_num,a_num,flagspACKet);ooPrintf(“请求超时!”);o1/31/202318清华大学出版社oPrintf(“请求失败!”);o o(2)服务器端相关算法oVoid TCPReturn()oo If(i=1)&(GetTCPHeader.flagspACKet=SYNpACKet)o o Printf(“第一次握手成功!n”);o/*从TCP的下层获得GuestTCP报头信息*/o s_port=GetTCPHeader.d_port;o d_port=GetTCPHeader.s_port;o s_num=int rand
18、(void)+90;/*随机产生一个随机的顺序号*/o a_num=GetTCPHeader.s_num+1;o flagspACKet=SYNpACKet+ACKpACKet;/*发送SYN+ACK包*/o/*服务器端对客户端的请求作出回应*/oPrintf(“进行第二次所握手!”);o/*服务器端对客户端的请求作出确认后,进入SYN_RECEIVE状态(半连接队列),等待最后确认,并进行Wait判断.*/oSendTCPHeader(s_port,d_port,s_num,a_num,flagspACKet);oif(j=2)&(GetTCPHeader.flagspACKet=ACKpA
19、CKet)1/31/202319清华大学出版社oo/*服务器端收到客户端的ACK确认后,将该连接从半连接队列中删除,进入ESTABLISHED状态,等待与客户端的数据传输*/oPrintf(“第三次握手成功!n”);o o/*如果超过等待时间后进行重传,超过系统规定次数则将该连接从半连接队列删除.*/oVoid Wait()oowhile(timesout()*超次终止*oowhile(timeout()*超时重传*ooSendTCPHeader(s_port,d_port,s_num,a_num,flagspACKet);ooPrintf(“超时重传!”);ooPrintf(“连接失败!n”
20、);o1/31/202320清华大学出版社o3.TCP常用端口号常用端口号o端口号是操作系统标识应用程序的一种方法,其取值可由用户定义或者系统分配。TCP端口号采用了动态和静态相结合的分配方法,对于一些常用的应用服务,使用固定的端口号。对于其它的应用服务,尤其是用户自行开发的应用服务,端口号采用动态分配方法,由用户指定。TCP约定01023为保留端口号,作为标准应用服务使用;1024以上是自由端口号,由用户应用服务使用。TCP的一些常用保留端口号如表5-1所示。1/31/202321清华大学出版社1/31/202322清华大学出版社5.2.3 TCP流量控制流量控制oTCP采用可变长度的滑动窗
21、口协议进行流量控制,接收方在返回给发送方的段中报告发送窗口的大小。当窗口为0时发送方停止发送。但有两种情况例外,一是可以发送紧急数据,例如终止在远端计算机上的运行进程;第二种情况可以发送一个1字节的数据段,要求接收方重申窗口大小及下一个准备接收的字节序号,这是为了避免因窗口声明丢失造成死锁的问题。o早期的TCP设计中,没有解决不同速率的数据填充问题。当收发两端的应用程序以不同速率工作时,TCP的发送方将接收方的缓冲区填满,当接收方应用程序从饱和的缓冲区中读取一个字节后,接收方的缓冲区具有可用空间,TCP软件就会生成一个确认,通告一个字节的窗口;发送方得知空间可用后,会发送一个包含一个字节的段,
22、又把空间填满。这个过程会不断重复,导致大量的带宽浪费,这个问题称为糊涂窗口综合症。o现行的TCP标准使用启发式方法来防止糊涂窗口综合症,发送方使用启发式技术避免传输包含少量数据段,而接收方使用启发式技术防止送出可能会引发小数据分组的、具有微小增量值的窗口通告。o启发式技术的思想是,仅当窗口大小增加到缓冲区空间的一半或者一个最大的TCP段中包含的数据字节数时才发送增加窗口的通告。当窗口大小没有达到指定的限度时,推迟发送确认。o推迟确认能够降低通信量并提高吞吐率。如果在确认推迟期间到达新的数据,那么对收到的所有数据只需使用一个确认;如果应用程序在数据到达之后立即产生响应,那么短暂的延迟正好把确认捎
23、带在一个数据段中发送回来;另外,在推迟确认的时间内,如果应用程序从缓冲区中读取了数据,还可以在返回的段中捎带窗口加大通告。o推迟确认的缺点是,当确认延迟太大时,会导致不必要的重传,也会给TCP估计往返时间带来混乱。为此TCP标准规定了推迟确认的时间限度(最多500ms),而且推荐接收方至少每隔一个报文段使用正常方式对报文段进行确认,以便估计往返时间。1/31/202323清华大学出版社5.2.4 TCP拥塞控制拥塞控制oTCP协议根据数据包的超时来判断网络中是否出现了拥塞,并自动降低传输速率。TCP拥塞控制的最根本的办法是降低数据传输速率。超时产生有两个原因,一是数据包传输出错被丢弃,二是拥塞
24、的路由器把数据包丢弃。o由于发送速率受制于接收端的缓冲区大小和网络的处理能力,所以TCP要维护两个窗口,即接收窗口和拥塞窗口。接收窗口是接收端在window size域中通告的窗口,拥塞窗口用于在发生拥塞时将数据流量限制到小于接收缓冲区大小,由此可知,发送窗口等于接收窗口和拥塞窗口的最小值。1/31/202324清华大学出版社o目前TCP使用慢启动和加速递减两种技术来实现拥塞控制。o加速递减策略指的是,一旦发现超时,立即将拥塞窗口的大小减半(最后减到最小值1),对于保留在发送窗口中的段,将重传定时器的时限加倍(按指数规律对重传定时器进行补偿)。拥塞窗口在持续出现超时的时候按指数规律递减通信量和
25、重传速率,从而迅速减少通信量,以便路由器获得足够的时间来清除其发送队列中已有的数据报。o拥塞结束后,TCP恢复传输采用慢启动策略。慢启动策略指的是,在启动新连接的传输或在拥塞之后增加通信量时,仅以一个报文段作为拥塞窗口的初始值,每当收到一个确认之后,将拥塞窗口大小增加1。o为了避免窗口增加过快,TCP还附加了一个限制。当拥塞窗口达到拥塞最大窗口大小的一半时,TCP进入拥塞避免状态,降低窗口增加的速度,仅当窗口中所有的报文段都被确认后,窗口大小增1。因此TCP还必须维护第三个参数,这是一个门限值,指示拥塞窗口大小从指数增加转为线性增加的临界点。o起始时门限值设为64KB(最大的接收窗口值),拥塞
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第05章 传输层 05 传输

限制150内