网络协议栈基本概念21.5.2计算机网络模型(续1)1、OSI模型(7)应用层(6)表示层(5)会话层(4)传输层(3)网络层(2)数据链路层(1)物理层网络服务平台。面向通信的功能。用户服务平台。面向用户的应用进程,使得一些无关的软件具有互操作性。31.5.2计算机网络模型(续2)数据链路层物理层网络层传输层会话层表示层应用层数据链路层物理层网络层数据链路层物理层网络层主机A主机B应用层协议表示层协议会话层协议传输层协议主机网络层-路由器协议路由器路由器通信子网层间接口层次7654321主机物理层-路由器协议主机数链层-路由器协议通信子网内部协议数据链路层物理层网络层传输层会话层表示层应用层41.5.2计算机网络模型(续3)2、TCP/IP参考模型(4)应用层该层向用务提供一组常用的应用程序,为不同主机上的进程或应用之间提供通信。(3)传输层该层提供端对端系统的数据传送服务。(2)互联网层该层使用网际协议实现穿越多个网络的路由选择功能。(1)网络接入层该层是端系统和通信子网之间的接口,实现端系统与其相连的网络进行数据交换。1.5.2计算机网络模型(续4)OSI与TCP/IP的比较5TCP/IP模型应用层传输层互联网层网络接口层会话层应用层物理层OSI模型数据链路层网络层传输层应用层表示层会话层61.5.3若干重要概念(续20)2、实体、协议、服务和服务访问点实体(entity)指任何可发送或接收信息的硬件或软件进程。实体通常指一个特定的软件模块。协议(protocol)是控制两个对等实体进行通信的规则的集合。协议的语法定义了所交换信息的结构或格式;协议的语义定义了源端和目的端所要完成的操作。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下层所提供的服务。71.5.3若干重要概念(续21)2、实体、协议、服务和服务访问点(续1)协议是很复杂的通信规则,必须将各种不利的条件事先都估计到,而不能假定一切情况都是很理想和很顺利的。必须非常仔细地检查所设计协议能否应付所有的不利情况。o应注意:事实上难免有极个别的不利情况在设计协议时并没有预计到。在出现这种情况时,协议就会失败。因此,协议往往只能应付绝大多数的不利情况。81.5.3若干重要概念(续22)2、实体、协议、服务和服务访问点(续2)服务(service)指同一开放系统中某一层向它的上一层提供的操作,但不涉及这些操作的具体实现。协议和服务是两种截然不同的概念。协议是不同开放系统的对等实体之间进行虚通信所必须遵守的规定。服务是下一层向本层通过层间接口提供的“看得见”的功能。本层的服务用户只能看见服务而无法看见下面的协议。亦即下面的协议对上面的服务用户是透明的。协议是“水平的”,即协议是控制对等实体之间通信的规则。服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。91.5.3若干重要概念(续23)2、实体、协议、服务和服务访问点(续3)服务访问点SAP(ServiceAccessPoint)指同一开放系统中相邻层的实体提供服务的交互处。是位于相邻层的界面上,也就是相邻层实体交互的逻辑接口。又称端口(port)。在OSI模型中,对等层实体传送数据的单元,称为协议数据单元PDU(ProtocolDataUnit)。相邻层实体间传送数据的单元,称为服务数据单元SDU(ServiceDataUnit)。相邻层实体通过SAP一次交互信息的数据单元,称为接口数据单元IDU(interfaceDataUnit)。SDU可以与PDU不一样,既可以是多个SDU合成一个PDU,也可以是一个SDU划分为几个PDU。101.5.3若干重要概念(续24)2、实体、协议、服务和服务访问点(续4)相邻两层之间的关系协议交换原语交换原语服务用户提供服务服务提供者第n层第n+1层服务用户SAPSAP111.5.3若干重要概念(续35)5、服务原语在OSI模型中,相邻层之间的服务可用原语(primitive)和参数(parameter)来表示。原语是相邻层实体交互时所交换的一些必要信息,定义了所执行的操作,其具体实现是通过中断、函数调用、系统调用或OS提供的进程控制机制完成的。参数用于传递数据和控制信息。一个服务由一组原语操作来描述,用户进程通过原语操作来访问该服务。两种服务所用的原语是不同的。一个完整的服务原语由名字、类型和参数组成。123.4.2争用访问技术(续5)2、CSMA(CarrierSenseMultipleAccess)技术CSMA是对用于有线信道ALOHA系统的一种改进,它要求每个站都设置一硬件(即载波监听装置,“载波”是指在公用信道上传输的信号。),用来在发送数据之前监听同一信道上其他站是否也在发送数据。如果该站监听到有别的站正在发送,就暂不发送数据,从而减少发送冲突的可能性,也提高了整个系统的吞吐量和信道利用率。133.4.2争用访问技术(续6)根据每个站所采用的载波监听策略,CSMA可分为以下几种类型:①非坚持CSMA如果进行载波监听时发现信道空闲,则将准备好的帧发送出去;如果监听到信道忙,就不再继续坚持听下去,而根据协议的算法延迟一个随机时间再重新监听。②1坚持CSMA当监听到信道空闲时,就立即发送帧;如果监听到信道为忙,则继续监听下去,一直坚持到信道变成空闲为止。③P坚持CSMA当监听到信道为空闲时,以概率p立即发送帧,而以概率(1-p)延迟一段时间τ(端─端传播时延)再重新监听信道;当监听到信道为忙时,则继续监听下去,一直坚持到信道空闲为止。CSMA也可以采用时隙式,同样有上述三种类型。149.2.2CSMA/CD协议以太网采用一种协调工作机制,称为载波监听多点接入/冲突检测CSMA/CD(CarrierSenseMultipleAccess/CollisionDetection)协议。“载波监听”指加接在以太网上的每个站在发送数据之前,先要检测总线上是否有其他站正在发送数据,如果有,就暂时不发送数据,以免发生冲突(常称“碰撞”)。“载波监听”只是用来表明检测总线上信号存在与否的一种技术手段。“多点接入”指计算机以多点接入的方式连接到同一根总线上。“冲突检测”指计算机边发送数据边检测总线上信号电压的变化情况。159.2.2CSMA/CD协议(续1)如何进行冲突检测?“冲突检测”就是计算机边发送数据边检测信道上的信号电压大小的变化情况。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了发送冲突。所谓“冲突”就是信号发生了碰撞。因此“冲突检测”也称为“碰撞检测”。169.2.2CSMA/CD协议(续2)检测到冲突后怎么办?当信号发生冲突时,总线上传输的信号产生了严重的失真,接收站就无法从中恢复出有用的信息。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再重新执行发送操作。179.2.2CSMA/CD协议(续3)电磁波在总线上的产生冲突的原因是有限的传播速率当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。A向B发出的信息,要经过一定的时间后才能传送到B。B若在A发送的信息到达B之前发送自己的帧(因为这时B的载波监听检测不到A所发送的信息),则必然要在某个时间和A发送的帧发生碰撞。碰撞的结果是两个帧都变得无用。189.2.2CSMA/CD协议(续4)传播时延对载波监听的影响1kmABt碰撞t=2A检测到发生碰撞t=B发送数据B检测到发生碰撞t=t=0为单程端到端传播时延注:电磁波在电缆中的传播速度只是在自由空间中的65%,即1km长电缆的传播时延约为5s。5s19为单程端到端传播时延t=B检测到信道空闲发送数据t=/2发生碰撞AABABt=0A检测到信道空闲发送数据ABBt=B检测到发生碰撞停止发送STOPt=2A检测到发生碰撞STOPAB1kmABt碰撞t=2A检测到发生碰撞t=B发送数据B检测到发生碰撞t=t=0209.2.2CSMA/CD协议(续6)几点结论使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。每个站在发送数据之后的一小段时间内,一定存在着遭遇信号冲突的可能性。这种发送的不确定性使得整个以太网的平均通信量远小于以太网的最高数据率。219.2.2CSMA/CD协议(续7)强化冲突实现冲突检测的方法很多,如基于模拟技术的接收信号电平比较法、信号编码波形特征鉴别法和发/收同时进行的逐位比较法等。在实际应用中还要采用一种强化冲突的措施。当发送帧的站监听到冲突时,除了立即停止正常发送之外,还要继续发送若干比特(通常为32比特或48比特)的人为干扰信号(jammingsignal),以强化所发生的冲突,使得所有站都能确知现在已经发生了冲突。229.2.2CSMA/CD协议(续8)CSMA/CD强化冲突的示意图(B也能检测到冲突,但图中未绘出B发送的干扰信号)TJABTBtB发送数据A检测到冲突出现冲突信道占用时间A发送数据B检测到冲突239.2.2CSMA/CD协议(续9)争用期若先发送数据帧的A站,在发送数据帧后最多要经过时间2(两倍的端到端往返时延)方可知道发送的数据帧是否遭遇到冲突。以太网的端到端往返时延2称为争用期(contentionperiod)或碰撞窗口。只有经过争用期这段时间而没有检测到冲突,才能肯定这次发送不再会发生冲突。9.2.2CSMA/CD协议(续10)争用期(续)争用期的长短与发送速率有关。以太网的争用期为51.2s。对于10Mb/s以太网,争用期内可发送512bit(64字节)称为最短有效帧长。否则将作为无效帧处理。以太网还规定了帧间最小间隔为9.6s,相当于96比特时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。24259.2.2CSMA/CD协议(续11)如何避免冲突?当检测到冲突之后,通信双方都要各自延迟一段随机的时间实行退避,然后再继续载波监听。由于退避时间是随机的,适配器又无记忆功能,一次冲突所涉及的两个站就不可能在下一次发送中再次发生冲突。为了使这种退避能保证系统的稳定,以太网采用一种称为截断二进制指数退避算法,来确定重发帧所需的时延。269.2.2CSMA/CD协议(续12)截断二进制指数退避算法①确定基本退避时间,它就是争用期。②从整数集合{0,1,…,2k-1}中随机取一整数,记为r。重传被推迟的时间是r倍的争用期。整数集合中的参数k,可按下式计算:k=Min[重传次数,10](9-1)此式表明,当重传次数不超过10时,参数等于重传次数;当重传次数超过10时,参数就不再增大而一直等于10。③当重发次数达到16次仍不能成功时,则丢弃该帧,并向高层报告差错情况。279.2.2CSMA/CD协议(续13)截断二进制指数退避算法(续)若连续多次发生冲突,则表明可能有较多的站参与争用信道。使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。289.2.2CSMA/CD协议(续14)CSMA/CD协议的要点:(1)适配器从网络层获得一个分组,加上首部和尾部,组成以太网帧,放入适配器的缓存中,准备发送。(2)若适配器检测到信道空闲,就发送帧。若检测到信道忙,则继续检测并等待信道转为空闲,然后发送帧。(3)在发送过程中继续检测信道。若检测到碰撞,则在发送干扰信号后就中止数据的发送。(4)在中止发送后,适配器就执行指数退避算法,等待r倍争用时间(512比特时间)后,返回到步骤(2)。