TCP/IP协议族包含了很多协议,这些协议之间的依赖关系可以通过下图描述。4.TCP/IP模型的协议依赖关系上图中列出的协议并未详尽。其中DNS比较特殊,它既依赖TCP,也依赖UDP。OSPF用于路由信息维护,它的报文直接封装在IP数据报中投递,所以把它列IP层。PPP、ARP、RARPIP、ICMP、IGMP、OSPFUDPTCPSNMP、BOOTP、DHCP、RIPDNSNFSBGP、SMTP、POP、IMAP、FTP、Telnet、HTTP应用层传输层IP层网络接口层除前面已经提到的协议外,图中其他协议的含义和用途如下:4.TCP/IP模型的协议依赖关系(2)SMTP(SimpleMailTransferProtocol,简单邮件传送协议):用于电子邮件的发送。POP(PostOfficeProtocol,邮局协议):用于电子邮件的接收。IMAP(InternetMessageAccessPotocol,因特网报文访问协议):用于电子邮件的接收。SMNP(SimpleNetworkManagementProtocol,简单网络管理协议):用于网络管理。NFS(NetworkFileSystem,网络文件系统):用于文件共享。BOOTP(BootstarpProtocol,自举协议):用于无盘工作站的引导。DHCP(DynamicHostConfigurationProtocol,动态主机配置协议):用于主机IP地址等信息的动态分配。IGMP(InternetGroupManagementPotocol,因特网群组管理协议):用于组播通信。IP应用1应用2应用n……网络1网络2网络n……TCP/IP沙漏模型4.TCP/IP模型的协议依赖关系(3)在描述TCP/IP协议族时,有一个非常著名的沙漏模型,如图所示。它意味着IP位于所有通信的中心,是唯一被所有应用程序所共有的协议,由此可见IP的重要地位。从功能上看,IP层屏蔽了底层物理网络之间的差异,向上提供一种一致的服务,是Internet的核心技术。5.TCP/IP分层模型中的两个边界在TCP/IP协议的四层结构中有两个重要的边界:一个是操作系统边界,它是将操作系统与应用程序分开的边界;另一个是协议地址边界,它是将高层互联网地址与低层物理网卡地址分开的边界,如下图。应用层传输层IP层网络接口层概念模型操作系统边界协议地址边界OS外部的软件OS内部的软件使用IP地址使用物理地址5.TCP/IP分层模型中的两个边界(2)操作系统边界把系统和应用区分开来,操作系统边界的上面是应用层,应用层处理的是用户应用程序(用户进程)的细节问题,提供面向用户的服务。传输层以及其下各层属于操作系统内部实现,应用层则属于操作系统外部实现。这一点在我们使用Window操作系统时得到很好的体现。例如,我们可以安装QQ、MSN等各类应用软件,但是传输层以下的各层我们是看不见的。(1)操作系统边界5.TCP/IP分层模型中的两个边界(3)需要说明的是,以上关于操作系统边界的描述并不严格。应用层协议的含义非常广泛,如果我们自己开发一个应用程序,也可以制定相应的协议。然而在众多的应用层协议中,如DNS、FTP、HTTP等特定的网络应用则是被IETF标准化了,这些协议都已经在操作系统中实现。所以关于操作系统边界最准确的表述应该是:传输层及其以下各层的协议、应用层中被标准化的协议以及操作系统厂商自定义的协议均属于操作系统内部实现。操作系统边界(续)5.TCP/IP分层模型中的两个边界(4)问题思考:编写网络应用程序时如何访问操作系统内部的服务?操作系统边界(续)我们需要不断开发各种新的网络应用,这些网络应用需要使用通信基础设施提供的服务。由于这些设施已经被封装在操作系统内核中了,因而应用往往无法直接访问操作系统内核。这个问题该如何解决?应用层传输层IP层网络接口层Socket编程接口套接字(Socket)是目前连接网络应用和操作系统的一个常用接口。程序员可以使用套接字编写各类应用程序,调用低层协议栈提供的服务。5.TCP/IP分层模型中的两个边界(5)地址边界以上是网络层(IP层),IP层及其上各层使用IP地址;地址边界以下是网络接口层,网络接口层使用物理地址。为了使连接在一起的不同网络能互相寻址,需要使用统一的互联网地址(IP地址)。地址边界带来了怎样的问题需要思考?IP数据报中包含的是IP地址,当它被向下递交给网络接口层后,该层会把它封装到数据帧里,而帧中包含的是物理地址。那么如何由IP地址找到相应的物理地址呢?—答案:通过ARP和RARP协议。(2)协议地址边界13.11.10.03数据10.11.23.2100-0a-3d-54-7e-4f10.11.23.2500-0a-3d-54-68-7913.11.10.0310.11.23.25401-0a-3d-53-09-7a13.11.10.25401-0a-3d-54-0a-7b01-0a-3d-53-09-7a13.11.10.03数据0xff13.11.10.03数据13.11.10.03数据5.TCP/IP分层模型中的两个边界(6)IP地址与物理地址在网络传输中的应用看图说话2.3.3TCP/IP协议的工作过程1.“点到点”与“端到端”的概念点到点与端到端在协议分层模型中具有特殊的含义。在实际通信过程中,源端和目的端往往由于不在一个物理网络中因而报文从源端投递到目的端需要经过路由器转发。举例如图,通信双方A和B分别位于网络1和网络3中。连接N1、N2、N3网络的是路由器R1和R2。N1N2N3主机A主机B路由器1路由器2你能说出从主机A到主机B基于TCP/IP协议模型的数据传递过程吗?1.“点到点”与“端到端”的概念(2)主机A发出的数据在自己的协议栈中逐层向下递交,并通过N1投递给R1。R1收到数据后,提取其中包含的IP数据报,选路后决定通过N2发送给R2,因此R1再沿着自己的协议栈逐层向下递交,并通过N2发送给R2。R2收到数据后,提取其中包含的IP数据报,选路后决定通过N3发送给主机B,因此R2又沿着自己的协议栈逐层向下递交,并通过N3发送给主机B。到达主机B后,数据会逐层向上递交,最后交给相应的应用程序。(以上过程示意如下:)N1N2N3主机A主机B路由器1路由器2主机A到主机B的数据传递过程应用层传输层IP层网络接口层应用层传输层IP层网络接口层N1N2N3IP层网络接口层IP层网络接口层1.“点到点”与“端到端”的概念(3)N1N2N3主机A主机BR1R2应用层传输层IP层网络接口层应用层传输层IP层网络接口层N1N2N3IP层网络接口层IP层网络接口层端到端端到端点到点点到点点到点点到点点到点点到点1.“点到点”与“端到端”的概念(4)主机A主机B在上述过程中,主机A的应用层和传输层看到是其通信对等端的相应层,而A、R1、R2和B的IP层和网络接口层看到的是与自己直连的下一跳设备的相应层。从这一点上看,通常称应用层和传输层是端到端的,而其下各层则称是点到点的。R1R2举例说明:设有一个以太网和一个令牌环网通过路由器互联的网络如下图所示。假设以太网中的主机A要与令牌环网中的主机1使用文件传输协议FTP完成一次文件传输过程,主机A中的FTP客户程序就要向主机1中的FTP服务器程序提出请求。由此开始了在TCP/IP协议控制下的主机A与主机1之间的通信过程。ABC以太网路由器12令牌环网2.在TCP/IP协议控制下的通信过程2.在TCP/IP协议控制下的通信过程(2)上图中,主机A和主机1都使用TCP/IP协议,由前面所述的四层协议栈组成。但要注意主机A的物理网络是以太网,链路层使用的是以太网网卡和以太网驱动程序;主机1由于在令牌环网中,因而使用令牌环网网卡及驱动程序。路由器是一个具有多个接口的网络互联设备,它的功能是把分组从一个网络转发到另一个网络。在TCP/IP协议中,网络互联是通过网络层(IP层)来实现的,因此路由器通常只处理与互联网数据传输有关的低两层协议。该例中的路由器有一个与以太网相连的接口和一个与令牌环网相连的接口。与以太网相连的接口要能处理在以太网中传输的数据帧,与令牌环网相连的接口要能处理在令牌环网中传输的数据帧,这两种类型的数据帧通过路由器的网络层(IP层)相互转发。2.在TCP/IP协议控制下的通信过程(3)可以把主机A和主机1通过路由器进行通信的过程抽象成下图所示的TCP/IP协议通信模型。客户方FTP程序TCP协议IP协议以太网驱动程序主机A以太网以太网驱动程序令牌环网驱动程序IP协议路由器令牌环网FTP服务器TCP协议IP协议令牌环网驱动程序主机1该模型中,主机A和主机1组成了端到端(EndtoEnd)的系统。与我们在上一节分析过的OSI相同,TCP/IP的传输层完成的也是端到端的通信。本例针对FTP应用传输层使用的是TCP协议,在其他类型网络应用的通信中也可以使用UDP协议。该模型中,在端系统中必须具有TCP/IP协议的完整的四层结构。中间的路由器(也称为中间系统)一般只把网络中传输的数据包从一个网络转发到另一个网络,因此它只需有网络接口层和网络层就可以进行工作。2.在TCP/IP协议控制下的通信过程(4)3.TCP/IP协议通信的数据封装与传递过程同样用本例来说明,当FTP应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入物理网络。封装与解封的整个过程如下图所示。客户数据FTP头TCP头IP头IP数据报客户数据FTP头TCP头TCP段客户数据FTP头应用层数据包客户数据主机A客户数据FTP头TCP头IP头以太网头以太网数据帧路由器接收以太网数据帧并根据目标IP地址转发到令牌环网接口客户数据FTP头TCP头IP头IP数据报客户数据FTP头TCP头TCP段客户数据FTP头应用层数据包客户数据主机1客户数据FTP头TCP头IP头令牌网头令牌环网数据帧发送端数据封装过程接收端数据解封过程TCP/IP协议模型中的网络应用程序(应用层协议)一般是以客户-服务器(Client/Server,C/S)方式工作的。客户(client)和服务器(server)都是指一次通信中所涉及的两个应用进程。4.应用层的客户-服务器方式计算机的进程(process)就是运行着的计算机程序。为解决具体应用问题而彼此通信的进程称为“应用进程”。应用层的具体内容就是规定应用进程在通信时所遵循的协议。主动发起联系的一方称为客户程序,它为用户提供向网络请求服务的接口;被动等待联系的一方称为服务器程序,它负责接受用户的服务请求,提供资源共享,并可同时处理多个客户的请求.客户是服务请求方,服务器是服务提供方。C/S方式描述的进程之间服务和被服务的关系。在进行通信时临时成为客户,但它也可在本地进行其他的计算。被用户调用并在用户计算机上运行,在打算通信时主动向远地服务器发起通信。可与多个服务器进行通信。不需要特殊的硬件和很复杂的操作系统。4.应用层的客户-服务器方式(2)在实际应用中,客户软件和服务器软件通常具有以下主要特点。客户软件:服务器软件的特点:一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。在共享计算机上运行。当系统启动时即自动调用并一直不断地运行着。被动等待并接受来自多个客户的通信请求。一般需要强大的硬件和高级的操作系统支持。功能较强的计算机可同时运行多个服务器进程。4.应用层的客户-服务器方式(3)客户-服务器方式的工作模式4.应用层的客户-服务器方式(4)客户进程和服务器进程使用TCP/IP协议进行通信的工作模式如下图:应用层应用层客户-服务器建立通信关系的两个主要步骤是:客户首先发起连接建立请求,然后服务器接受连接建立请求。以后就逐级使用下层提供的服务。附注:因特网技术文档-请求注解(RFC)RFC(RequestForComments)是一系列关于因特网的技术文档。RFC涉及计算机网络的概