网络中的七层模型、五层模型、四层模型
一:ISO 七层模型
OSI模型有7层结构,每层都可以有几个子层。
70年代以来,国外一些主要计算机生产厂家先后推出了各自的网络体系结构,但它们都属于专用的。
为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。
国际标准化组织ISO 1981年正式推荐了一个网络系统结构----七层参考模型,叫做开放系统互连模型(Open System InterconnectionOSI)。由于这个标准模型的建立使得各种计算机网络向它靠拢大大推动了网络通信的发展。
OSI7层从上到下分别是:
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层
其中高层,即7654层定义了应用程序的功能,下面3层,既321层主要面向通过网络的端到端的数据流。
1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnetHTTPFTPWWWNFSSMTP等。
2)表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。
3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,
在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPCSQL等。
4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCPUDPSPX
5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IPIPX等。
6)数据链路层:他定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATMFDDI等。
7)物理层OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45802.3等。
二:TCP/IP分层模型(大学的教科书中用这个五层模型)
1、应用层:确定进程之间通信的性质以满足用户需求;应用层协议如支持万维网应用的http协议、支持的smtp协议、支持文件传送的ftp协议等等
2、运输层:负责主机间不同进程的通信;协议有面向连接的TCP(传输控制协议)、无连接的UDP(用户数据报协议);数据传输的单位称为报文段或用户数据报
3、网络层:负责分组交换网中不同主机间的通信;作用有二:发送数据时,将运输层中的报文段或用户数据报封装成IP数据报;选择合适路由
4、数据链路层:负责将网络层的IP数据报组装成帧
5、物理层:透明地传输比特流
三:TCP/IP分层模型(四层)
TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。下图表示了TCP/IP分层模型的四层。
┌────────┐┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
        ││ 
        ││
第四层,应用层 ││ 
        ││    
        ││     
        ││       
└────────┘└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
┌────────┐┌─────────┬───────────┐
第三层,传输层 ││TCP          UDP   
└────────┘└─────────┴───────────┘
┌────────┐┌─────┬────┬──────────┐
        ││     ICMP         
第二层,网间层 ││     └────┘         
        ││       IP           
└────────┘└─────────────────────┘
┌────────┐┌─────────┬───────────┐
第一层,网络接口││ARP/RARP 其它         
└────────┘└─────────┴───────────┘
2.2 TCPIP四层参考模型
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与
许多其他的协议协同工作。
TCP/IP分层模型的四个协议层分别完成以下的功能:
第一层    网络接口层
网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution ProtocolARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
第二层    网间层
网间层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message ProtocolICMP)用来提供网络诊断信息。
第三层    传输层
传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
第四层    应用层
应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括FingerWhoisFTP(文件传输协议)GopherHTTP(超文本传输协议)Telent(远程终端协议)SMTP(简单邮件传送协议)IRC(因特网中继会话)osi参考模型包括几层、NNTP(网络新闻传输协议)等,这也是本书将要讨论的重点。

TCP/IP通信设计程序
对于通信设计,我们一般可以根据用例很轻松的设计出一个通信范例出来。然而,据此就认为TCP/IP编程很容易就不对了。TCP/IP编程是一门很重要的学问。其复杂性主要体现在通信方式和报文格式的多样性上。
一,通信方式,主要有两类:
1,一个Client方连接一个Server方,称为点对点。
2,多个Client方连接一个Server方,这个就是我们通常的并发服务器。
二,连接方式
1,长连接
ClientServer方先建立通讯连接,连接建立以后不断开,然后再进行报文的发送和接收。这种方式由于通信连接一直存在,可以使用下面的命令查看连接是否建立:
netstat -f inet | grep 端口号。 这种方式通常用于点对点通信。
2,短连接
Client 方与Server方每进行一次报文收发交易时才进行通信连接,交易完成以后就断开连接。此种连接方式适用于多个客户端和一个Server的的那种连接方式。
三,报文发送和接收方式
1,异步
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分为两种情况:
1),异步双工: 接收和发送在同一个子程序中,有两个不同的子进程分别负责发送和接收;
2),异步单工: 接收和发送由两个不同的应用程序来完成。
2,同步
报文发送和接收是同步进行,即报文发送后等待接收返回报文。 同步方式一般要考虑超时的问题,即报文发出去以后不能无限等待,需要设定超时时间。超过该时间,发送方不再等待,读返回报文,直接通知超时返回。
实际通信方式是这三类通信方式的组合。比如书上的范例一般是同步短连接的Client/Server应用程序。
其中,异步长连接双工是最为复杂的一种通信方式。有时候经常会出现在不同银行,不同城市的两套系统上进行通信。
四,报文格式
通信的报文格式多样性更多,相应的必须设计相应的读写报文和发送报文的函数。
(一)阻塞与非阻塞方式
1,非阻塞方式
读函数不停地进行读动作,如果没有报文接收到,等待一段时间以后超时返回,这种方式需要设置超时时间。
2,阻塞方式
如果没有报文接收到,则函数一直处于等待状态,直到有报文到达。
(二)循环读写方式
1,一次性直接读写报文
一次性发送的报文,全部都读写完。
2,不指定长度循环读
一般发生在短连接进程中,受网络路由的限制,一次较长的报文在传输的过程中被分解成好几个包。一次读取可能 不能够完全读完报文,这就需要循环的反复读,直到读完为止。
3,带长度报文循环读写
这种情况一般是在长连接进程中,由于长连接中没有条件能够判断循环读什么时候结束,所以必须加上长度报文头。
读函数先读取报文头的长度,再根据这个长度去读取实际的报文。
通常的Web服务器都是采用的长连接,即客户端一次请求完后,不关闭连接,保持一段时间的连接。下次客户端再次请求时,不用创建新的连接,复用所保持的连接即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。