收藏 分销(赏)

网络协议一讲.ppt

上传人:人****来 文档编号:14515503 上传时间:2026-10-04 格式:PPT 页数:83 大小:969.04KB 下载积分:10 金币
下载 相关
网络协议一讲.ppt_第1页
第1页 / 共83页
网络协议一讲.ppt_第2页
第2页 / 共83页


点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,网络协议分析与编程,第二卷,:,设计、实现与内核,2026/10/4,参考资料:,用,TCP/IP,进行网际互联,第一卷,,Douglas E.Comer,著,电子工业出版社,TCP/IP,详解卷一:协议,,,W.Richard Stevens,著,范建华等译,谢希仁校,机械工业出版社,TCP/IP,详解卷二:实现,TCP/IP,网络原理与技术,,周明天、汪文勇编著,清华大学出版社,查找有关的,Rfc,2026/10/4,第一讲,引言与概述,操作系统中的,TCP/IP,软件结构,网络接口层,地址发现及绑定,(ARP),(1-4,章,),2026/10/4,计算机网络的概念,计算机网络,互连起来、独立运行的计算机的集合,各计算机是独立自主的,其运行不依赖于其他计算机,计算机之间的连接是物理实现的,计算机之间能够进行信息交换,采用分组通信的方式,计算机网络的概念结构,主机,(,Host,),通信子网,(,Communication,Subnet,),转发结点,用于转发数据包的专用计算机,2026/10/4,H,H,H,H,主机,通信子网,转发,结点,计算机网络的结构,网络拓扑,归根结底最终就是信道的拓扑结构,种类:总线型、星型、环型、树型、网状,拓扑结构不同,其访问技术、性能、应用场合等也不同,延迟、吞吐率、可靠性、信道利用率、设备开销,.,信道的种类,点到点,(,point-to-point,),信道,两台主机(或转发结点)之间存在一条独享的物理信道,可能存在带宽浪费,但控制简单,一般用于广域网中的长距离通信,广播,(,broadcasting,),信道,所有主机共享一条信道,通信数据以广播形式发送,带宽利用率高,但需要进行信道访问控制,常用于局域网中:总线型、环型,.,2026/10/4,数据交换的方式,电路交换,通信双方建立一条实际的物理链路,存储转发和分组交换,报文交换,(,message switching,),分组交换,(,packet switching,),通信子网的内部机制,面向连接,提供虚电路(,virtual circuit,)服务,无连接,提供数据报(,datagram,)服务,2026/10/4,网络系统结构,开放系统互连参考模型,计算机网络体系结构必须支持:,异种计算机的互连,多种通信技术和各种通信介质,多种业务,因此,需要对计算机网络体系结构进行研究和标准化,网络体系结构的研究采用模型化的方法,2026/10/4,ISO/OSI,模型,网络层,数据链路层,物理层,传输层,应用层,表示层,会话层,网络层,数据链路层,物理层,传输层,应用层,表示层,会话层,对等协议,物理介质,系统,A,系统,B,第,N+1,层,第,N,层,PDU,SDU,H,PDU,第,N-1,层,SDU,N+1,层,协议实体,N+1,层,协议实体,N,层,协议实体,SAP,SAP,其它的网络系统结构,其它网络体系结构,ARPANET,SNA,(,System Network Architecture,),DNA,(,DECNET,),TCP/IP,.,2026/10/4,ISO/OSI,数据链路层,物理层,网络层,传输层,应用层,表示层,会话层,通路控制,数据链路控制,物理层,传输控制,端用户,功能管理服务,数据流控制,路由控制,传输组,数据链路控制,物理层,网络服务,端用户,网络应用,会话控制,传输控制,IMP-IMP,物理层,HOST-HOST,用户层,文件传输协议,远程通信协议,源,IMP-,目的,IMP,数据链路,物理层,IP,TCP/UDP,应用,ARPA,SNA,DNA,TCP/IP,TCP/IP,网络的体系结构,TCP/IP,技术的发展,设计目标,实现异种网的网际互连,是最早出现的系统化的网络体系结构之一,顺应了技术发展网络互连的应用需求,采用了开放策略,与最流行的,UNIX,操作系统相结合,2026/10/4,TCP/IP,网络的特点,互连网中,每一个网络是可自维持的,一个网络无论是否与其它网络互连,其自身都是可以自主运行的。,通过网关(路由器)来连接多个网络,构成互连网,互连网中,每一个网络都是可以全局唯一标识的,采用尽力而为,(,best-effort,),的服务方式,使用应答,-,重发机制,源端没有收到目的端返回的应答时,将重发数据包。,路由器中维护任何与特定数据流相关的状态,互连网是非集中式控制的,网络的运行不依赖于任何一个集中的管理实体。,2026/10/4,TCP/IP,网际互联的体系结构,2026/10/4,TCP/IP,的网络互连,网际互连是通过,IP,网关,(,gateway,),实现的,网关提供网络与网络之间物理和逻辑上的连通功能,网关是一种特殊的计算机,同时属于多个网络,2026/10/4,TCP/IP,提供网络级的互连,连通性,分组可在网络中任何结点之间传递(不论其是否具有直接的物理连接),透明性,对用户和高层的应用隐藏了各网络的底层细节,对拓扑结构的适应,能适应不同的网络拓扑结构以及拓扑的变化,网络中每个计算机都具有全局性的标识符(地址、名字),G,1,网络,1,网络,3,G,2,网络,2,G,1,网络,1,网络,2,TCP/IP,网络互连的透明性,通过,TCP/IP,实现的网际互联隐藏了网络的细节(包括底层网络技术、拓扑结构等),提供通用的一致性的网络服务。互联网或,Internet,在逻辑上是一个统一的、整体的虚拟网络。用户完全可将其看作是一个单一的网络。,2026/10/4,G,N,G,N,G,H,H,H,H,Internet,N,H,H,H,H,H,H,Internet,TCP/IP,协议的体系结构,TCP/IP,协议栈定义了四个层次,数据链路,定义各种介质物理连接的特性,定义在不同介质上信息帧的格式,IP,(,Internet protocol,),层,转发和路由功能:根据分组的目地,IP,地址,将分组从源端转发到目的地。,路由器(,router,):,TCP/IP,网络中专用的,IP,分组转发设备。,TCP/UDP,(传输层),TCP,提供面向连接的、可靠的传输服务,UDP,提供无连接的、不可靠的传输服务,应用层,Telnet,、,Web,、,FTP,、,e-Mail,2026/10/4,IP,数据链路,TCP/UDP,应用,TCP/IP,体系,TCP/IP,和,OSI,模型,2026/10/4,TCP/IP,和,OSI,模型,2026/10/4,IP,分组,IP,分组,IP,头,网络层(,IP,协议)的协议控制单元,传输头,传输层(,TCP/UDP,)的协议控制单元,净荷,承载应用层的数据,可变长度,2026/10/4,Data Link,帧头,传输层头,UDP/TCP,IP,头,应用数据,版本号,头长度,服务类型,分组,总长度,标识,标志,分段偏移,生存时间,协议,分组头校验和,源地址,目的,地址,选项,最大,64K Bytes,IP,路由器,路由器的功能,利用“最佳路径”将分组从一个网络转发到另一个网络,与其它路由器进行信息交换(各网络的位置、可达性等),信息交换采用特定协议来完成,路由协议也用于进行最佳路径的计算,路由器的结构转变,2026/10/4,共享总线,处理机,网 络,接 口,.,网 络,接 口,网 络,接 口,高速交换,机构,处理机,网络适配器,:,:,:,:,网络适配器,网络适配器,网络适配器,分组转发,分组转发:,分组从一个网络到另一个网络的过程,跳,(,hop,)、,下一跳,(,next-hop,),路由器:,转发通路上的一个路由器被称为一跳(站)。转发通路上,与某路由器相邻接的下游路由器称为其,下一跳路由器,。,路由器的基本组件:,路由表、转发器、路由协议,2026/10/4,网络,1,R,1,R,2,A,网络,3,网络,2,B,A-B,通路上的下一跳路由器为,R,2,路由表,入口,转发,路由更新,目的地址,分组,下一跳地址,路由协议,分组,路由更新,出口,hop-by-hop,的选路方式,特点:,在一个路由器中,,IP,分组被转发到哪里决定于:,该路由器的路由表的内容,分组的目的地址,分组转发的一个例子,2026/10/4,网络,1,网络,2,A,R,B,路由器,R,IP,数据链路,物理层,TCP/UDP,应用程序,IP,数据链路,物理层,TCP/UDP,应用程序,IP,数据链路,物理层,数据链路,物理层,主机,A,主机,B,网络,1,网络,2,Data,生成一个数据包,A-B,Data,传输层封装,T-H,+,Data,1.,IP,层封装,T-H,IP-H,+,目的,IP,地址,=B,2.,确定传送的下一站,下一站,IP,地址,=R,Data,计算,R,的物理地址,PR,数据链路帧封装,T-H,IP-H,+,目的物理地址,=PR,F-H,解除数据链路帧的封装,F-H,Data,T-H,IP-H,Data,IP,选路,T-H,1.,取出目的,IP,地址,目的地址,=B,2.,确定传送的下一站,下一站,=B,IP-H,Data,计算,B,的物理地址,PB,数据链路帧封装,T-H,IP-H,+,目的物理地址,=PB,F-H,解除数据链路帧的封装,F-H,Data,T-H,IP-H,解除,IP,包的封装,Data,T-H,IP-H,解除传输层的封装,Data,T-H,数据包到达,对端的应用,Data,Internet,的发展,拓扑结构的演变,以,ARPA,网为主干的核心结构,2026/10/4,本地,网点,1,ARPANET,主干网,本地,网点,3,本地,网点,2,本地,网点,4,R,R,R,R,核心系统,核心路由器,Internet,的发展,拓扑结构的演变,对等主干结构,NSFNET,的引入,2026/10/4,本地,网点,本地,网点,本地,网点,本地,网点,NSFNET,骨干,ARPANET,骨干,R,R,R,R,核心路由器,对等骨干的多重互连,Internet,的发展,拓扑结构的演变,自治系统,(,Autonomous System,),的引入,自治系统:由一个机构进行统一管理的网络和路由器的集合,2026/10/4,自治系统,AS,自治系统,AS,主干网络,自治系统,网络,R,R,R,核心路由器,AS 2#,R,R,R,AS 3#,R,R,R,AS 1#,R,R,R,TCP/IP,协议,TCP/IP,互联网协议族在全世界范围内已经成为开放系统互联的标准。与其他任何协议相比,,TCP/IP,互联网协议能够提供更好的互操作性可以在绝大多数销售商的系统中使用。并且它可兼容多种网络技术,在这一点上,它比其他任何一个协议族都要强。,INTERNET,将当今世界范围内的学校、政府部门、盈利性或非盈利性组织以及个人都联系在一起。,除了常规地在专用工业网上使用,TCP,IP,外,许多组织也使用,TCP,IP,协议,通过与,INTERNET,连接,相互通信。内联网是使用,TCP,IP,协议的专用互联网。,2026/10/4,了解细节的必要性,尽管,TCP/IP,流行并得到了广泛应用,可是对于大多数计算机专家来说,协议的细节,以及实现它们的软件的结构仍然是个谜,从表面上看,是否理解,TCP/IP,的内部细节并不重要,但是,使用,TCP/IP,的程序员们都知道,如果能够完全了解协议是如何运作的,则能编出更健壮的程序代码。,研究,TCP/IP,输入输出的细节,能够使程序员形成一个概念模型。用于解释各部分是如何交互作用的,并有助于理解如何使用。层机制。,2026/10/4,协议间交互作用的复杂性,人们普遍认为,,TCP/IP,技术难以理解的一个主要原因是,:,有关的文章往往单独地讨论每一个协议,而没有去考虑多个协议是如何相互配合协同工作的。例如,各个协议标淮文档往往只描述一个协议应该如何工作,它脱离系统的其他部分,孤立地讨论某个协议的行为以及对报文的响应。其实,这些协议最难理解的部分,正是它们之间的交互作用。,TCP/IP,技术中包含了多个协议,这些协议之间相互影响。为了完全理解一个协议的细节及其实现方案,我们必须考虑到它与协议族中的其他协议之间的交互作用。,2026/10/4,第,2,章 操作系统中的,TCP/IP,软件结构,2026/10/4,2.1,引言,在绝大多数运行,TCP/IP,软件的计算机中都利用,个操作系统来管理资源,比如管理某些外部设备。操作系统提供对并行处理的支持:即使在单处理器的计算机上操作系统也能够通过迅速切换,CPU,的服务对象使用户感觉多个程序在同时执行。另外、操作系统管理着主内存,其中存放了正在执行的程序,同时它还管理着存放文件系统的二级,(,非易失,),存储器。,TCP/IP,软件,般位于操作系统内部,并且可以被在机器上运行的所有应用程序所共享。因此,虽然多个程序可以同时唤醒像,TCP/IP,这样的程序代码段,但在操作系统中,该程序代码段是唯一的。当然,每个唤醒过程必须是独立的,这样一个程序的数据传输就不会影响到另一个程序。我们还会看到,可以被多个并发执行的程序使用的代码段无疑要比单程序中的代码段复杂很多。,2026/10/4,2.2,进程的概念,在操作系统中有几个抽象概念,这些概念在理解,TCP/IP,协议的实现时要用到。其中最重要的应该是“进程”或者说“控制线程”。从概念上讲,一个进程就是一次计算过程,并且它独立于其他计算过程。一个操作系统提供创建新进程和结束现有进程的机制。在我们将要使用的范例系统中,程序调用函数,create,创建一个新进程。,create,函数返回一个整型的进程标识号。在对进程操作时,利用进程标识号来引用该进程。,procid=create(arguments);,进程一旦被创建,就独立于它的创建者而工作。若要结束一个进程,则需要在程序中调用,kill,,并将,create,函数返回的进程标识号作为参数,传递给,kill,kill(procid);,2026/10/4,2.3,进程的优先级,我们曾说过,所有的进程并发执行但这种说法过于简单化。事实上,设计软件的程序员给每一个进程都分配有一个“优先级”。操作系统在给各进程分配,cpu,使用权时参照各进程的优先级。我们采用的优先级分配策略简单易懂:,CPU,对没有被阻塞的进程赋予最高优先级。如果多个进程具有相同的优先级那么,cpu,将在这几个进程之间快速切换。,协议软件中的优先级策略是非常有用的,因为它允许程序员赋予某进程在执行时优先于其他进程的权力。例如,现有一个普通的应用程序和一个协议软件,该协议软件必须从硬件中接收抵达的分组。设计者可以给实现该协议的进程以高优先级,迫使它先于应用程序的进程执行。由于操作系统处理了所有的进程调度细节,进程本身可以不包含任何有关调度的代码。,2026/10/4,2,4,进程的同步通信,如果每个进程都是一个独立的计算过程那么数据是怎样从一个进程传递到另一个进程的呢,?,答案是:操作系统必须提供允许进程之间相互通信的机制。我们使用以下三种机制,:,计数信号量,(semaphore),、端口和消息传递。,通常,计数信号量就是通用的进程同步机制。操作系统提供一个函数,screate,,如有必要,调用它以创建信号量。,screat,返回一个信号量标识号,在此之后的有关该信号量的操作中必须用到这个信号量标识号。,Semid=screate(initcount);,2026/10/4,2,4,进程的同步通信,为了防止进程之间相互干扰,所有允许多个进程并发执行的协议软件必须使用信号量来实现互斥操作。要做到这一点,程序员必须为所有应受保护的代码段提供,个信号量其初始值均为,1,。,S=screate(1);,然后,程序员用,wait,和,signal,语句将关键代码包围起来,.,Wait(s);,critical code,Signal(s),2026/10/4,2,4,进程的同步通信,除了提供互斥机制以外,本书的范例中还利用信号量来保持队列访问的同步。由于队列的容量有限,因此队列的同步也是必要的。假设一个队列空间可以容纳,N,个数据项,有多个并发进程要将它们生成的数据置入该队列中。与此同时我们假设另外一组进程将从队列中提取数据并处理它们,(,一般来讲,是多个进程插入,一个进程提取,),。通常往队列中插入数据的进程称为“生产者”,而从队列中提取数据的进程称为“消费者“。,在访问一个长度为,N,的队列时,需要两个信号量来调度生产者和消费者、这两个信号量初始化如下:,S1=screate(N);,S2=screate(0);,2026/10/4,2,4,进程的同步通信,信号量被初始化以后,生产者和消费者利用它们来协调同步。一个生产者的执行如下:,Wait(s1);,insert item in next availabe slot,Signal(s2);,而消费者执行:,Wait(s2);,extract oldest item from queue,Signal(s1);,信号量保证了当队列全满时生产者进程被阻塞,而当队列全空时,消费者进程被阻塞。除此之外生产者和消费者可以正常运行。,2026/10/4,2,5,进程间通信,在,unix,操作系统中,“端口”,(Port),这个抽象模型把进程的数据集中传送到一点处理。我们把端口看成是一个有限的消息队列,该消息队列有两个控制访问的信号量;程序调用,pcreate,函数生成,个端口,其入口参数指定队列的大小。,pcreate,返回一个端口标识号,用于引用该端口。,Portid=pcreate(size);,生成一个端口后,进程可以调用过程,Psend,和,preceive,来置入和取出端口中的数据项。,Psend,过程向端口发送消息。,Psend(portid,message);,psend,需要两个入口参数:一个端口标识号和一个要发送的单个消息,(,在,tcp/ip,代码中,消息经常是一个指针,指向某一分组,),。,2026/10/4,2,5,进程间通信,Preceive,从端口中提取一个消息,Message=preceive(port);,就像我们建议的那样,在我们的实现方案中使用了信号量机制,如果端口全满则调用,psend,的进程将被阻塞,而如果端口全空,则调用,preceive,的进程将被阻塞。一旦某个进程由于调用,psend,过程而被阻塞,那么它将保持阻塞状态,直至另一个进程调用了,Preceive,为止,反之亦然。因此,在设计用到端口的进程体系时,程序员必须保证该体系不会使进程永远被阻塞,.,2026/10/4,2,5,进程间通信,为了使进程能够判断调用,psend,是否会导致阻塞,系统提供了一个函数:,pcount,,它允许进程检测一个端口是否已满。,n=pcount(portid);,2026/10/4,2,5,进程间通信,消息传送,我们说过,进程还可以通过消息传送来实现相互通信以及传送同步。消息传送允许一个进程直接将消息发送给另外一个进程。进程通过调用,send,函数将消息发送给其他进程。,send,函数以一个进程标识号和一个消息作为入口参数,并将给定的消息发送到指定的进程。,Send(msg,pid);,一个进程调用,receive,来等待某个消息的到达,Message=receive();,2026/10/4,2,5,进程间通信,在系统中,调用,receive,的进程将被阻塞,直至某个消息到达,而调用,send,函数的进程总是继续运行。如果在两次连续的,send,调用之间没有进程调用,receive,函数以接收消息,那么第二次调用,send,函数时将返回,syserr,而该消息将允法发送。构造,个良好的系统以保证消息不会丢失的工作由程序员来完成。为了协助消息交换的同步,程序可以调用函数,recvclr,,该函数删除所有正在等待被接收的消息,但并不阻塞进程。,Message=recvclr();,Message=recvtim(50);,2026/10/4,2,6,设备驱动程序和输入、输出程序,与许多操作系统相同,在一个分组到达时,unix,操作系统安排网络接口设备中断处理器的正常工作。由设备驱动程序代码处理该中断,并清理设备,使它可以继续接收下一个分组。,设备驱动程序同时还要为发送或接收该分组的程序提供一个方便的端口。实际上,它允许进程等待传入的分组,(,此时被阻塞,),。从进程的观点来看,设备驱动程序隐藏在常规,I/o,接口背后使传入分组的捕获更加容易。例如,要向以太网的一个接口发送一个帧,(,分组,),程序调用如下所示:,Write(device,,,buff,,,len);,其中,device,是设备描述符,指定某个以太网接口设备,,buff,给出将要传送的帧所处的缓冲区地址,,1en,是以八位组计数的帧长度。,2026/10/4,2,7,网络的输入和中断,既然我们已经了解了由操作系统提供的各种设施,不妨来研究一下,tcp/ip,范例软件的整体结构。回想一下,在操作系统中包含有设备驱动软件,该软件用来与硬件,i/o,设备通信,并处理中断。这些程序代码隐含在称为“设备”的概念模型里。系统中包含了多个这种“设备”,其中每一个“设备”,都对应着一个与机器直接相连的网络,(,许多主机只有一个网络接口,而网关或路由器有多个网络接口,),。,2026/10/4,2,7,网络的输入和中断,2026/10/4,2,8,向高层协议传递分组,由于输入操作发生在中断期间,此时设备驱动程序代码不能调用任何过程来进一步处理输入分组、它必须立即从中断中返回,因此中断过程并不直接调用,IP,。再者,由于系统使用一个独立的进程实现,IP,,因此设备驱动程序也不可能直接调用,IP.,事实上,系统应用了前面所述的队列以及消息传送原语,以实现进程之间通信的同步。当一个携带,IP,数据报的分组到达后,中断过程必须将该分组置入队列中,并调用,send,函数通知,IP,进程已有一个数据报到达。如果此时,IP,进程手头没有分组可处理,则调用,receive,函数等待下一个数据报的到达。每一个网络设备都有一个相对应的输入队列,而唯一的,IP,进程从所有的队列中提取数据报进行处理。,2026/10/4,2,8,向高层协议传递分组,2026/10/4,2.9lP,协议与传输协议之间的数据报传递,一旦,IP,进程接受了一个传入的数据报它必须决定对将其发往何处做进一步处理。如果数据报中的内容是一个,TCP,报文段,则必须将其交付给,TCP,模块。如果它携带的是用户数据报,(UDP),,则必须将其交付给,UDP,模块,以此类推。,由于,TCP,比较复杂,因而在许多设计方案中,由一个独立的进程来处理传入的,TCP,报文段。由于,IP,和,TCP,作为各自独立的进程执行,因而,IP,和,TCP,必须利用进程间的通信机制来通信。它们应用前面介绍过的端口机制。,IP,调用,Psend,将报文段存放在端口内,而,TCP,调用,preceive,来读取端口中的报文段。,处理传入,UDP,数据报的进程结构与处理,TCP,进程采用的结构差别很大。由于,UDP,比,TCP,要简单得多,,UDP,模块不作为独立进程存在。事实上,它是由一些常规过程组成,,IP,进程通过调用来处理传入的,UDP,数据报。,2026/10/4,2.9lP,协议与传输协议之间的数据报传递,2026/10/4,2,10,向应用程序的传递操作,由于每个应用程序都作为一个独立的进程执行,它必须利用由系统提供的通信原语,才能与实现协议的进程协调。,2026/10/4,2,11,输出时的信息流,对应于输出设备的输出队列是整体设计思想的重要组成部分。有了这些队列,进程生成一个分组后,就可以将其存放在队列中等待输出,而进程继续往下执行,无须等待发送该分组。同时,硬件也可以并行地连续发送分组。当,个分组到达底层时,如果硬件正处于空闲状态,(,队列中没有分组存在,),,那么执行输出任务的进程将该该分组放入队列中,同时调用一设备驱动程序来启动硬件。当输出操作完成后,硬件向,CPU,发出中断请求。此时设备驱动程序从中断处理部分开始工作,将刚被发送出去的分组从队列中删除。如果队列中还有其他等待发送的分组,那么中断处理程序将重启硬件。,2026/10/4,2,12,从,TCP,经过,IP,到网络输出,与,TCP,的输入一样,,TCP,的输出也是很复杂的。输出时必须先建立连接,所传送的数据必须放在报文段中,在对方发来确认之前,报文段必须不断重发。一旦某个报文段被装入一个数据报中后,就可交付给,IP,,由,IP,来处理选路和传送。系统软件利用了两个,TCP,进程来处理这一复杂过程。第一个进程被称作,TCPOUT,,由它来处理大部分的报文分段和数据传输细节。另一个进程是,,TCPTIME,,它管理着一个定时器,并为超时重发事件定时、当某个报文段不得不重发时,它将通知,TCPOUT.,2026/10/4,第,3,章 网络接口层,2026/10/4,3,1,引言,本章详细讨论最底层,也就是网络接口层。从概念上来看,网络接口层管理网络的硬件,完成从,IP,地址到硬件地址的映射过程,封装并发送分组,接收传入分组并将其发往对应的模块。在本章中,将会了解到设备驱动程序和接口软件的结构,这种结构使高层协议软件能够区分并控制一台机器上的多个网络硬件接口。本章还涉及缓冲区管理及如何将分组发往各自对应的模块以进一步处理。第,4,章将讨论地址转换及封装处理。,在这里我们有意忽略了对网络设备驱动程序代码的介绍。因为其中包含了许多底层细节问题,这些细节只有在非常熟悉某种网络硬件设备的情况下,才能完全理解。而本章的重点是网络接口层的组成,理解它们是掌握高层协议软件的基础。,2026/10/4,3,2,网络接口抽象模型,网络接口抽象模型定义了操作系统中的协议软件与底层硬件之间的接口。它隐蔽了硬件细节,使协议软件能够使用相同的数据结构作用于不同的网络硬件。,3,2,1,接口数据结构,为了实现网络接口层软件与硬件的相对独立,我们定义了一个数据结构,用以保存所有与硬件无关的接口信息,(,例如,硬件是在正常工作还是发生了故障,),,并协调各个协议软件,使它们主要通过这个数据结构来完成与硬件的交互作用。在我们的范例程序中,网络接口由一个数组构成,其中每个数组元素对应于该机器上的一个硬件接口。接口数组中的各个元素通过数组索引被整个系统使用。,2026/10/4,3,3,以太网的基本定义,尽管我们有意避免大多数底层设备驱动程序的细节问题,但是在本书中,些基本的定义还是会经常用到。例如,在,netif.h,的声明中引用了,c,数据结构,ep,,,ep,定义了以太网数据报存储进入缓冲区的格式。因为以太网作为本节的网络例子在全书中都会出现,所以,ep,还是需要重视的,声明是在文件“,ether.h”,中。,2026/10/4,3,3,1,应用中的统计数据,保存接口的统计数据对程序调试与网络管理来说很重要。例如,文件,netif.h,中的,ni_iucast,字段包含对传入的广播,(,或非广播,),数据分组数目的记录,而,ni_idiscard,和,ni-odiscard,字段记录差错时必须丢弃的输入和输出数据分组数目。,接口的数据结构分别在字段,ni_hwa,和,ni_hwa,中记录硬件的物理,(,硬件,),地址和物理,(,硬件,),广播地址。物理地址的长度取决于底层硬件,因此协议软件利用数据结构,hwa,来代表这种地址。每一个硬件的地址都起始于一个整数形式的长度字段,这样高层的协议软件不必知道硬件的细节问题就可以处理硬件的地址。,2026/10/4,3,。,5,本地主机接口,IP,协议除了要在各个网络接口之间给数据报选择路由外,还必须给那些往返于本机,IP,协议和上层协议软件之间的数据报进行选择路由。,IP,与本机之间的交互作用可由以下两种方法实现,:,在,IP,程序段中对此种情况进行明确判别,附加一个本机网络接口,在我们的设计思想中采用了伪网络接口技术。伪网络接口既没有与之相关的设备驱动程序,也没有具体的硬件设施。,2026/10/4,3,6,缓冲区管理,传入的分组必须被保存在内存中,并将其传递给适当的协议软件做进一步处理。同时,应用程序产生的输出数据也必须以分组的形式存储在内存中,并将其传递给网络硬件设备传送出去。因此,网络接口层接受内存中准备外发的数据,并把将要传递给上层协议软件的传入数据放入内存中。协议软件的有效性最终取决于如何管理保有这些分组的存储器。一个良好的设计要做到快速分配存储空间,并能避免分组在各层协议软件之间移动时的数据复制。,3,6,1,大缓冲区方案,3,6,2,链表方案,(Mbuf),2026/10/4,3,7,传入分组的多路分解,当一个分组到达时,网络接口层中的设备驱动程序软件检查分组中的类型字段,以确定使用哪种协议软件来处理此分组。在编写接口软件时,设计者们通常采用以下两种基本手段:或者将多路分解程序编成代码放在一个过程中,或者利用一张表格,将分组类型与适当的过程一一对应。,一般说来,使用代码的方式最为有效,但这意味着当有新的协议加入时,软件必须重新编译,因此在试验阶段时,利用表格方式则更方便。在范例中,我们选择了利用一个过程对分组进行多路分解。,2026/10/4,第,4,章 地址的发现及绑定,(ARP),2026/10/4,4,1,引言,在上一章中我们了解了网络接口层的组成,其中包括为网络硬件服务的设备驱动程序,设备驱动程序相关的、用于发送外发分组和接受传入分组的软件。设备驱动程序直接与网络硬件通信,并只能使用网络物理地址发送和接收分组。,本章将详细讨论地址转换协议,(ARP),软件,它也同样属于网络接口层。,ARP,将上层的,IP,地址与底层的物理地址进行绑定,(binding),。地址绑定软件形成了只能使用,IP,地址的上层协议软件与只能使用物理地址的下层设备驱动程序软件之间的分界线。在稍后的章节中将讨论一些高层协议,那时将很清楚地看出,ARP,是如何做到使高层协议与物理地址完全独立的。,2026/10/4,4,2 ARP,软件在理论上的结构,从理论上讲,,ARP,软件可划分为三部分:,输出模块,输入模块,一个高速缓存管理程序。,2026/10/4,4,3 ARP,设计方案举例,我们例举的,ARP,软件遵循以下几个简单的设计规则,单一的,ARP,高速缓存,全局替换策略。,高速缓存中的超时与删除,分组以多队列的形式等待发送,互斥访问,2026/10/4,TCP/IP 和 OSI 模型,pae-ae_attempts=0;,arpsend的入口参数是一个指针,指向高速缓存中的一个表项。,if(pae&pae-ae_state=AS_RESOLVED),24 进程的同步通信,一旦某个进程由于调用psend过程而被阻塞,那么它将保持阻塞状态,直至另一个进程调用了Preceive为止,反之亦然。,462 发送等待发送的分组,/都满足则是我们要找的表项,/,没有则先做arp 地址绑定。,计算机之间的连接是物理实现的,在我们的范例程序中,网络接口由一个数组构成,其中每个数组元素对应于该机器上的一个硬件接口。,47 ARP高速缓存的管理,另外,arpinit为相应的RARP协议初始化几个数据项,这些与本章中的程序代码关系不大。,如果此时IP进程手头没有分组可处理,则调用receive函数等待下一个数据报的到达。,一旦某个进程由于调用psend过程而被阻塞,那么它将保持阻塞状态,直至另一个进程调用了Preceive为止,反之亦然。,4,3 ARP,设计方案举例,一般说来,为每个接口分配一个独立的高速缓存,或采用本地替换策略,这或多或少的保持了网络接口之间的相对独立性。因为在最糟糕的情况下,如果某个网络接口上的通信量所涉及的目的站数目大大超过了其他网络接口,那么,从使用频繁的网络接口发送来的绑定,通过替换来自其他网络的绑定,占据了大部分高速缓存。其弊病与任何运行不良的高速缓存一样:高速缓存总是保持着,100%,的容量,但在其中查找到某个表项的概率却很小。我们的设计方案假定管理员会监督网络性能问题,并在出现这样的问题时,分配附加高速缓存空间。,2026/10/4,4,4 ARP,高速缓存的数据结构,/*arp.h-SHA,SPA,THA,TPA*/,/*Internet Address Resolution Protocol (see RFCs 826,920)*/,#defineAR_HARDWARE1/*Ethernet hardware type code*/,/*Definitions of codes used in operation field of ARP packet*/,#defineAR_REQUEST1/*ARP request to resolve address*/,#defineAR_REPLY2/*reply to a resolve request*/,#defineRA_REQUEST3/*reverse ARP request(RARP packets)*/,#defineRA_REPLY4/*reply to a reverse request(RARP)*/,structarp,u_shortar_hwtype;/*hardware type*/,u_shortar_prtype;/*protocol type*/,u_charar_hwlen;/*hardware address length*/,u_charar_prlen;/*protocol address length*/,u_shortar_op;/*ARP operation(see list above)*/,u_charar_addrs1;/*sender and target hw&proto addrs*/,/*charar_sha?;-senders physical hardware address*/,/*charar_spa?;-senders protocol address(IP addr.)*/,/*charar_tha?;-targets physical hardware address*/,/*charar_tpa?;-targets protocol address(IP)*/,;,#defineSHA(p)(&p-ar_addrs0),#defineSPA(p)(&p-ar_addrsp-ar_hwlen),#defineTHA(p)(&p-ar_addrsp-ar_hwlen+p-ar_prlen),#defineTPA(p)(&p-ar_addrs(p-ar_hwlen*2)+p-ar_prlen),#defineMAXHWALENEP_ALEN/*Ethernet*/,#defineMAXPRALENIP_ALEN/*IP*/,#define ARP_HLEN8/*ARP header length*/,#defineARP_TSIZE50/*ARP cache size*/,#defineARP_QSIZE10/*ARP port queue size*/,/*cache timeouts*/,#define ARP_TIMEOUT600/*10 minutes*/,#defineARP_INF0 x7fffffff/*infinite timeout value*/,#defineARP_RESEND1/*resend if no reply in 1 sec*/,#defineARP_MAXRETRY4/*give up after
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 网络/通信

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服