《【教学课件】第六章传输层.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第六章传输层.ppt(50页珍藏版)》请在三一办公上搜索。
1、第六章 传输层,主要内容传输服务传输协议Internet传输协议,6.1传输服务,引入传输层的原因:消除网络层的不可靠性;提供从源端主机到目的端主机的可靠的、与实际使用 的网络无关的信息传输。传输服务传输实体:完成传输层功能的硬软件;传输层实体利用网络层提供的服务向高层提供有效、可靠的服务,用服务质量QoS来衡量;传输层提供两种服务面向连接的传输服务:连接建立,数据传输,连接释放无连接的传输服务。,传输层协议数据单元TPDU,传输服务原语(Transport Service Primitives),传输用户(应用程序)通过传输服务原语访问传输服务一个简单传输服务的原语,Berkeley Soc
2、kets(伯克利套接字),伯克利套接字应用举例(1),一个服务程序和几个远程客户程序利用面向连接的传输层服务完成通信。建立连接服务程序调用socket创建一个新的套接字,并在传输层实体中分配表空间,返回一个文件描述符用于以后调用中使用该套接字;调用bind将一个地址赋予该套接字,使得远程客户程序能访问该服务程序;调用listen分配数据空间,以便存储多个用户的连接建立请求;,伯克利套接字应用举例(2),调用accept将服务程序阻塞起来,等待接收客户程序发来的连接请求。当传输层实体接收到建立连接的TPDU时,新创建一个和原来的套接字相同属性的套接字并返回其文件描述符。服务程序创建一个子进程处理
3、此次连接,然后继续等待发往原来套接字的连接请求。客户程序调用socket创建一个新的套接字,并在传输层实体中分配表空间,返回一个文件描述符用于在以后的调用中使用该套接字;调用connect阻塞客户程序,传输层实体开始建立连接,当连接建立完成时,取消阻塞;数据传输双方使用send和receive完成数据的全双工发送。释放连接每一方使用close原语单独释放连接。,6.2 传输服务的要素,寻址方法:定义传输服务访问点TSAP(Transport Service Access Point),将应用进程与这些TSAP相连。在Internet中,TSAP为(IP address,local port);
4、Fig.6-8远方客户程序如何获得服务程序的TSAP?方法1:预先约定、广为人知的,象telnet是(IP地址,端口23);方法2:从名字服务器(name server)或目录服务器(directory server)获得TSAP一个特殊的进程称为名字服务器或目录服务器(TSAP众所周知);用户与名字服务器建立连接,发送服务名称,获得服务进程的TSAP,释放与名称服务器的连接;与服务进程建立连接。,传输层寻址(Addressing),当服务程序很多时,使用初始连接协议(initial connection protocol)。一个称为进程服务器(process server)的进程(inetd
5、)同时在多个端口上监听;远方客户程序向它实际想访问的服务程序的TSAP发出连接建立请求;如果没有服务程序在此TSAP上监听,则远方客户和进程服务器建立连接;进程服务器产生所请求的服务进程,并使该进程继承和远程客户的连接;进程服务器返回继续监听;远方客户程序与所希望的服务程序进行数据传输。Fig.6-9,传输层连接的建立(1),建立连接网络可能丢失、重复包,特别是延迟重复包(delayed duplicates)的存在,导致传输层建立连接的复杂性;解决延迟重复包的关键是丢弃过时的包;两次握手方案A发出连接请求CR TPDU,B发回连接确认CC TPDU;失败的原因:网络层会丢失、存储和重复包。,
6、传输层连接的建立(2),三次握手方案(three-way handshake)A 发出序号为X的CR TPDU;B 发出序号为Y的CC TPDU并确认A的序号为X的CR TPDU;A 发出序号为X+1的第一个数据TPDU,并确认B的序号为Y的CR TPDU。Fig.6-11(DATA序号应为X+1)三次握手方案解决了由于网络层会丢失、存储和重复包带来的问题。,传输层连接的释放(1),释放连接两种连接释放方法非对称式:一方释放连接,整个连接断开,存在丢失数据的危险;,传输层连接的释放(2),对称式:每个方向的连接单独关闭,双方都执行DISCONNECT才能关闭整条连接。由于两军问题(two-ar
7、my problem)的存在,可以证明不存在安全的通过N次握手实现对称式连接释放的方法;但是在实际的通信过程中,使用三次握手+定时器的方法释放连接在绝大多数情况下是成功的。,流控和缓存(Flow Control and Buffering),缓存:由于网络层服务是不可靠的,传输层实体必须缓存所有连接发出的TPDU,而且为每个连接单独做缓存,以便用于错误情况下的重传。接收方的传输层实体既可以做也可以不做缓存。流控:传输层利用可变滑动窗口协议来实现流控。所谓可变滑动窗口协议,是指发送方的发送窗口大小是由接收方根据自己的实际缓存情况给出的。为了避免控制TPDU丢失导致死锁,主机应该周期性的发送TPD
8、U。,6.3Internet传输协议(1),传输控制协议TCP(Transmission Control Protocol)面向连接的、可靠的、端到端的、基于字节流的传输协议;RFC 793,1122,1323,2018,2581等。用户数据协议UDP(User Data Protocol)无连接的端到端传输协议RFC 768,一、TCP 协议(1),服务模型应用程序访问TCP服务是通过在收发双方创建套接字来实现的;套接字的地址是用(IP地址,主机端口号)来表示的。256以下的端口号被标准服务保留,如FTP/21,TELNET/23;每条连接用(套接字1,套接字2)来表示,是点到点的全双工通道
9、;TCP不支持多播(multicast)和广播(broadcast);TCP连接是基于字节流的,而非消息流,消息的边界在端到端的传输中不能得到保留;,TCP的保留端口,一、TCP 协议(2),对于应用程序发来的数据,TCP可以立即发送,也可以缓存一段时间以便一次发送更多的数据。为了强迫数据发送,可以使用PUSH标记;对于紧急数据(urgent data),可以使用URGENT标记。TCP协议需要解决的主要问题可靠的传输滑动窗口流量控制可变滑动窗口慢启动slow start、拥塞避免congestion voidance 等 连接的管理建立连接:三次握手释放连接:三次握手+定时器,一、TCP 协
10、议(3),TCP 协议按字节分配序号,每个字节有一个32位的序号;传输实体之间使用段(segment)(TPDU)交换数据;每个段包含一个20字节的头(选项部分另加)和0个或多个数据字节。段的大小必须首先满足65535字节的IP包数据净荷长度限制,还要满足底层网络传输介质的最大传输单元(MTU)的限制,比如以太网的MTU为1500字节;TCP实体使用滑动窗口协议,确认序号等于接收方希望接收的下一个序号。,(a)按单独IP数据报发送的四个512字节的数据块(b)在一次READ调用中传递给应用程序的2048字节的数据.,TCP段头(1),TCP段头(2),源端口和目的端口:各16位;序号和确认号:
11、以字节为单位编号,各32位;TCP头的长度:4位,长度单位为32位字,包含可选项域;6位的保留域;6位的标识位:置1表示有效URG:和紧急指针配合使用,发送紧急数据;ACK:确认号是否有效;PSH:指示发送方和接收方将数据不做缓存,立刻发送或接收;RST:由于不可恢复的错误重置连接;SYN:用于连接建立指示;FIN:用于连接释放指示,TCP段头(3),窗口大小:用于基于可变滑动窗口的流控,指示发送方从确认号开始可以再发送窗口大小的字节流;校验和:为增加可靠性,对TCP头,数据和伪头计算校验和;可选项域。,TCP连接管理(1),三次握手建立连接服务器方执行LISTEN和ACCEPT原语,被动监听
12、;客户方执行connect原语,产生一个SYN为1和ACK为0的TCP段,表示连接请求;服务器方的传输实体接收到这个TCP段后,首先检查是否有服务进程在所请求的端口上监听,若没有,回答RST置位的TCP段;若有服务进程在所请求的端口上监听,该服务进程可以决定是否接受该请求。在接受后,发出一个SYN置1和ACK置1的TCP段表示连接确认,并请求与对方的连接;发起方收到确认后,发出一个SYN置0和ACK置1的TCP段表示给对方的连接确认;,TCP连接管理(2),若两个主机同时试图建立彼此间的连接,则只能建立一条连接。单向的连接释放释放连接时,发出FIN位置1的TCP段并启动定时器,在收到确认后关闭
13、连接。若无确认并且超时,也关闭连接。,TCP连接管理(3),TCP A TCP B1.CLOSED LISTEN2.SYN-SENT-SYN-RECEIVED3.ESTABLISHED-ESTABLISHED5.ESTABLISHED-ESTABLISHED Basic 3-Way Handshake for Connection SynchronizationNote that the ACK does not occupy sequence number space(if it did,we would wind up ACKing ACKs!).,TCP连接管理(4),TCP连接管理的有
14、限状态机,TCP传输策略(1),TCP的窗口管理机制基于确认和可变窗口大小;Fig.6-29窗口大小为0时,正常情况下,发送方不能再发TCP段,但有两个例外紧急数据可以发送;为防止死锁,发送方可以发送1字节的TCP段,以便让接收方重新声明确认号和窗口大小。如何改进传输层的性能?策略1:发送方缓存应用程序的数据,等到形成一个比较大的段再发出;策略2:在没有可能进行“捎带”的情况下,接收方延迟发送确认段;,TCP传输策略(2),策略3:使用Nagle算法:当应用程序每次向传输实体发出一个字节时,传输实体发出第一个字节并缓存所有其后的字节直至收到对第一个字节的确认;然后将已缓存的所有字节组段发出并对
15、再收到的字节缓存,直至收到下一个确认;策略4:使用Clark算法解决傻窗口症状(silly window syndrome)傻窗口症状:当应用程序一次从传输层实体读出一个字节时,传输层实体会产生一个一字节的窗口更新段,使得发送方只能发送一个字节;Fig.6-30解决办法:限制收方只有在具备一半的空缓存或最大段长的空缓存时,才产生一个窗口更新段。,TCP拥塞控制(1),出现拥塞的两种情况:快网络小缓存接收者慢网络大缓存接收者Fig.6-31导致网络拥塞的两个潜在因素是:网络能力和接收能力。TCP处理第一种拥塞的措施:在连接建立时声明最大可接受段长度;利用可变滑动窗口协议防止出现拥塞;,TCP拥塞
16、控制(2),TCP处理第二种拥塞的措施发送方维护两个窗口:可变发送窗口和拥塞窗口,按两个窗口的最小值发送;拥塞窗口依照慢启动(slow start)算法和拥塞避免(congestion avoidance)算法变化。慢启动(slow start)算法连接建立时拥塞窗口(congwin)初始值为该连接允许的最大段长,阈值(threshold)为64K;发出一个最大段长的TCP段,若正确确认,拥塞窗口变为两个最大段长;发出(拥塞窗口/最大段长)个最大长度的TCP段,若都得到确认,则拥塞窗口加倍;重复上一步,直至发生丢包超时事件,或拥塞窗口大于阈值。,TCP拥塞控制(3),在窗口尺寸中指数增长(pe
17、r RTT)(不会太慢)RTT:Round Trip Time,初始化:Congwin=1for(each segment ACKed)Congwin+until(loss event OR CongWin threshold),Host A,one segment,RTT,Host B,two segments,four segments,TCP拥塞控制(4),拥塞避免(congestion avoidance)算法若拥塞窗口大于阈值,从此时开始,拥塞窗口线形增长,一个RTT周期增加一个最大段长,直至发生丢包超时事件;当超时事件发生后,阈值设置为当前拥塞窗口大小的一半,拥塞窗口重新设置为一个
18、最大段长;执行慢启动算法。Fig.6-32,/*slowstart is over*/*Congwin threshold*/Until(loss event)every w segments ACKed:Congwin+threshold=Congwin/2Congwin=1perform slowstart,拥塞避免,w is the current value of the congestion window,and w is larger than threshold.After w acknowledgments have arrived,TCP replaces w with w+
19、1.,二、UDP 协议(1),为什么设计UDP(User Datagram Protocol)?不需要建立连接(减少延时)简单:发送者和接收者都不需要连接的状态短报头无拥塞控制:UDP可按需发送RFC 768无连接:UDP收发者间不需要握手每个UDP报文独立处理经常用于流多媒体数据传输低负载速率敏感,二、UDP 协议(2),使用UDP的上层协议:RIP,路由信息周期发送DNS,避免TCP连接建立延迟SNMP,当网络拥塞时,网管也要运行。网管信息带内(in-band)传输,用UDP比用可靠的、具有拥塞控制的TCP效果要好。对于要求高可靠的上层协议,可靠性由上层提供。,UDP头格式,本章作业,试说明运输层在网络体系结构中的作用。说明端口号的作用以及常用的端口号获取方式。说明三次握手协议是如何保证连接建立和释放的安全性的?试描述TCP是如何实现拥塞控制的。TCP采用了哪些策略来保障传输的可靠性?,