网络中的七层模型、五层模型、四层模型
一:ISO 七层模型 
OSI模型有7层结构,每层都可以有几个子层。
70年代以来,国外一些主要计算机生产厂家先后推出了各自的网络体系结构,但它们都属于专用的。
为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。
国际标准化组织ISO 1981年正式推荐了一个网络系统结构----七层参考模型,叫做开放系统互连模型(Open System InterconnectionOSI)。由于这个标准模型的建立,使得各种计算机网络向它靠拢, 大大推动了网络通信的发展。下面我简单的介绍一下这7层及其功能。
OSI7层从上到下分别是:
  7 应用层
        6 表示层
   5 会话层
        4 传输层
        3 网络层
        2 数据链路层
      1 物理层
   其中高层,既7654层定义了应用程序的功能,下面3层,既321层主要面向通过网络的端到端的数据流。
  1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnetHTTP,FTP,WWW,NFS,SMTP等。
  2)表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。
  3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,
在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPCSQL等。(4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCPUDPSPX
  5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。
  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   
  └────────┘└─────────┴───────────┘
osi参考模型的作用  ┌────────┐┌─────┬────┬──────────┐
          ││     ICMP         
  第二层,网间层 ││     └────┘         
          ││       IP           
  └────────┘└─────────────────────┘
  ┌────────┐┌─────────┬───────────┐
  第一层,网络接口││ARP/RARP     其它     
  └────────┘└─────────┴───────────┘
      图2.2 TCP/IP四层参考模型


  TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
  TCP/IP分层模型的四个协议层分别完成以下的功能:
第一层
网络接口层
  网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
第二层
网间层
  网间层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(In
ternet Control Message Protocol,ICMP)用来提供网络诊断信息。
第三层
传输层
  传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
第四层
应用层
  应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括FingerWhoisFTP(文件传输协议)GopherHTTP(超文本传输协议)Telent(远程终端协议)SMTP(简单邮件传送协议)IRC(因特网中继会话)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小时内删除。