9.1网络模型

9.1.1. OSI七层模型

OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式网络互联參考模型。其为国际标准组织指定的一个指导信息互联、互通和协作的网络规范。

开放是指仅仅要遵循OSI标准,位于世界上不论什么地方的不论什么系统之间都能够进行通信,开放系统是指遵循互联协议的实际系统,如电话系统。

从逻辑上能够将OSI开放系统互联分为七层模型,由下至上分别为物理层、数据链路层。网络层、传输层、会话层、表示层和应用层。

当中。上三层称为高层,用于定义应用程序之间的通信和人机界面:下四层称为底层,用于定义数据怎样进行端到端的传输(end to end)。物理规范以及数据与光电信号间的转换。

七层例如以下:

(1)    应用层。应用层也称为应用实体,通常是指应用程序,该层主要负责确定通信对象,并确保有足够的资源用于通信,常见的应用层协议有FTP、HTTP、SNMP等。

(2)    表示层。

表示层一般负责数据的编码以及转化,确保应用层可以正常工作,该层是界面与二进制代码间相互转化的地方,公式改层负责进行数据的压缩,解压,加密解密等,该层也可以依据不同的应用目的将数据处理为不同的格式,表现出来就是各种各样的文件扩展名。

(3)    会话层。

会话层主要负责在网络中的两个结点之间建立、维护、控制会话。区分不同的会话,以及提供单工(Simplex)、半双工(half duplex)、全双工(Full duplex)3种通信模式的服务。

NFS、RPC、X Windows等都工作在该层。

(4)    传输层。

传输层是OSI模型中最重要的一层,它主要负责切割。组合数据,实现端到端的逻辑连接。数据在上三层是总体的,到了这一层開始被切割。这一层切割后的数据被称为段(Segment)。三次握手(Three-way handshake)、面向连接(Connnection-Oriented)或非面向对象(Connectionless-Oriented)的服务、流量控制(Flow control)等都发生在这一层。工作在传输层的一种服务是TCP/IP中的TCP(传输控制协议),还有一项传输层服务是IPX/SPX协议集的SPX(序列包交换)。常见的传输层协议有TCP、UDP、SPX等。

(5)    网络层。网络层是将网络地址翻译为物理地址。并决定将数据从发送方路由到接收方的。主要负责管理网络地址、定位设备、决定路由,路由器就是工作在该层,上层的数据段在这一层被切割。封装后叫做包(Packer)。

包有两种,一种为用户数据包(Data packets)。

是上层传下来的用户数据。还有一种为路由更新包(Route update o packets)。是直接由路由器发出来的。用来和其它路由器进行路由信息的交换。

常见的网络协议有IP、RIP、OSPF等。

(6)    数据链路层。

数据链路层为OSI模型的第二层,控制物理层和网络层之间的通信,主要负责物理传输的准备。包含物理地址寻址、CRC校验、错误通知、网络拓扑、流量控制、重发等。

MAC地址和交换机都工作在这一层。上层传下来的包在这一层被切割封装后叫做帧(Frame)。常见的数据链路层协议有SDLC、STP、帧中继、HDLC等。

(7)    物理层。物理层是实实在在的物理链路,它规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。它为上层协议提供了一个数据传输的物理媒介,负责将数据以比特流的方式发送、接收。常见的物理媒介有双绞线、同轴电缆等。属于物理层相关的规范有EIA/TIA RS-232、EIA/TIA RS-449、RJ-45等。

9.1.2 TCP/IP模型

TCP/IP(TransmissionControl Prorocol/Internet Protool传输控制协议,英特网互联协议)是最主要的Internet协议。

由网络层的IP与传输层的TCP构成。如今人们常提到的TCP/IP并非指TCP和IP两个详细的协议,而是指的TCP/IP协议簇。

TCP/IP定义了电子设备怎样连入Internet,以及数据怎样在它们之间传输的标准。它基于四层參考模型,各自是网络接口层、网际层、传输层、应用层,每一层都呼叫它的下一层所提供的网络来完毕自己的需求。

当中网络接口层负责底层的传输。常见的协议有Ethernet 802.3、Token Ring 802.5、X.25、HDLC、PPP ATM等。网络层负责不同计算机之间的通信,一般包含IP/ICMP等内容。传输层提供应用程序间的通信。主要包含格式化信息流、提供可靠传输等。应用层用于向用户提供应用服务,如电子邮件、远程登录等。

应用层协议一般有FTP、TELNET、SMTP等。属于TCP/IP协议簇的全部协议都位于该模型的上面三层。

TCP/IP并非全然符合OSI七层模型。它的每一层都相应于OSI七层模型中的一层或者多层。图下所看到的的是TCP/IP四层模型和OSI七层模型相应图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9lbV9vZl9zdW5zaGluZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

9.1.3 B/S 与C/S的差别

C/S是Client/Server(client/server端)的缩写,在C/S架构中,server通常採用高性能的PC、工作站或者小型机,并且採用大型数据库系统,比方SQL Server、DB2、Oracle或Sybase等。client须要安装专用的client软件。

B/S是Brower/Server(浏览器/server)的缩写,client通常仅仅须要安装一个浏览器(Browser),如FireFox、IE、Chrome等就可以,server安装SQL Server、DB2、Oracle或Sybase等数据库。在B/S架构中,用户界面全然通过浏览器实现,一部分事务逻辑在前端实现,主要事务逻辑在server端实现。浏览器通过Webserver同数据库进行数据交互。

详细而言,两种设计结构存在下面几个方面的差别:

(1)    硬件要求不同。C/S一般建立在专用的网络上。是小范围的网络环境:而B/S一般构建于局域网之上,不须要专门的网络硬件环境。仅仅要能接入网络就可以。在B/S架构的应用中,client仅仅须要可以执行浏览器就行了。

(2)    架构要求不同。

C/S程序更加注重流程。须要对权限多次校验。对系统执行速度能够较少考虑。而B/S对安全以及訪问速度须要多重的考虑。建立在须要更加优化的基础之上。比C/S有更高的要求。

(3)    安全要求不同。C/S一般面向相对固定的用户群,对系统安全的控制能力较强。一般高度机密的信息系统适宜採用C/S结构,能够通过B/S公布部分能够公开的信息。B/S构建在局域网之上,对安全的控制能力相对弱。可能面向不可知的用户。

(4)    系统维护不同。C/S程序因为总体性导致升级比較困难。可能须要重做一个全新的系统,而B/S基于构建组成。仅仅须要进行构建局部的更换就能够实现系统的无缝升级。将系统维护的开销减小到最小。用户从网上自己下载安装就能够实现升级。

(5)    软件的重用性不同。由于总体性考虑,C/S程序中构件的重用性不如在B/S架构下的构件的重用性好。由于B/S的多重用结构,要求构件相对独立的功能,可以相对较好的重用,而C/S则非常难做到这一点。

(6)    用户接口不同。C/S多是建立在操作系统平台上的,表现方法有限,而B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流,而且大部分难度较小。成本低。

9.1.4 MVC结构

MVC是模型(Model)、视图(View)和控制(Controller)这三个词的第一个字母。

它是一种眼下广泛流行的应用模型。它的目的是实现Web系统的职能分工。图9-3所看到的为MVC模型关系图。当中。模型层实现系统中的业务逻辑,通常能够用JavaBean或EJB来实现:视图层则用于与用户的交互,通经常使用JSP来实现:控制层则是模型与视图View之间沟通的桥梁,它能够把用户的请求分派并选择恰当的视图来显示它们,同一时候他也能够解释用户的输入并将其映射为模型层能够运行的操作。

MVC强制性地分离Web应用的输入、处理和输出。设计的MVC应用程序能被分成3个核心部件:模型、视图、控制器。它们各自处理自己的任务。

(1)模型(业务逻辑层)

模型表示企业数据和业务逻辑,它是应用程序的主体部分。业务流程的处理过程相对于其他层来说是黑箱操作。模型接受视图请求数据。并返回终于的处理结果。

业务模型的设计能够说是MVC最基本的核心。眼下流行的EJB模型就是一个典型的应用样例。

它从应用技术实现的角度对模型做了进一步的划分,以便充利用现有的组件,但它不能作为应用设计模型的框架,它只告诉设计人员按这样的模型设计就能够利用某些技术组件。从而降低了技术上的困难,能够专注于业务模型的设计。

MVC把应用的模型按一定的规则抽取出来。抽取的层次非常重要。这也是推断设计人员是否优秀的主要根据,抽象与详细不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而仅仅告诉设计人员应该怎样组织管理这些模型,以便于模型的重构和提高重用性。

业务模型另一个非常重要的模型那就是数据模型。数据模型主要指实体对象的数据持续化。比如,将一张订单保存到数据库,从数据库获取订单,将这个模型单独列出,全部有关数据库的操作仅仅限制在该模型中。

(2)视图(表示层)

视图是用户看到并与之交互的界面。对早期的Web应用来说。。视图就是由HTML元素组成的界面。在新式的Web应用中。HTML依然在视图中扮演着重要的角色,但一些新的技术已经层出不穷,它们包含abibeFlash和XHTML,XML/XSL等一些标识语言和Web服务等。

随着Web应用开发技术的发展,用户要求的日益提高,怎样处理应用程序的界面以及变得越来越有挑战性。MVC架构一个大的优点是它能为Web应用处理非常多不同的视图。

在视图中事实上没有真正的业务出处理发生,无论这些数据是联机存储的还算一个雇员列表,作为视图来讲,他仅仅是作为一种输出数据而且同意用户操纵的方式。

视图功能强大,主要表如今下面几个方面:

1) 依据客户类型显示信息。

2) 显示商业逻辑(模型)的结构。而不关心信息怎样获得何时获得

(3)控制器

控制器接受用户的输入并调用模型和视图去完毕用户的需求。所以,当用户单击Web页面中的超链接和发送HTML表单的时候呢。控制器(比方Servlet)本就并不输出不论什么东西和运行不论什么处理。他仅仅是接受请求并决定调用哪个模型构建去处理请求。然后确定用哪个视图来显示模型处理的返回的数据。

MVC的长处

MVC的这样的特殊的设计结构,给我们带来了非常多的便捷,通过MVC架构的使用,大大地提高了Web应用的开发效率。详细来说,MVC设计架构主要由下面几个方面的长处:

1) 低耦合性(关联性不足,喜欢散架)。

由于视图层和业务层分离,使得修改视图层代码时不须要又一次编译模型和控制器的代码。相同的一个应用的业务流程或者业务规则的改变。仅仅须要修改,MVC的模型层就可以。由于模型与控制器的视图相分离。所以非常easy改变应用程序的数据层和业务规则。

2) 高重用性和可适用性。因为技术都是在不断进步的,如今訪问应用程序能够有越来越多的方式。MVC模式同意使用不相同式的视图来訪问同一个server的代码。 包含不论什么Web(HTTP)浏览器或者无线浏览器(WAP)。比如,用户能够通过计算机也能够通过手机来在淘宝上购买某样爆款,尽管订购的方式不一样,但处理订购产品的方式是一样的。

因为模型返回的数据没有进行格式化,尽管订购的方式不一样,但处理订购产品的方式是一样的。

因为模型返回的数据没有进行格式化,所以相同的构件能够被不同的界面使用。比如。非常多数据可能用HTML来表示。可是也有可能用WAP来表示,而平这些表示所须要的命令【仅是改变视图层的实现方式】,而控制层和模型层无需做不论什么改变。

3) 较低的声明周期成本。MVC使得开发和维护用户接口的技术含量减少。

4) 部署高速。使用MVC模型能够相当大地缩减开发时间,它使得程序猿(开发者)集中精力于逻辑业务。而界面程序猿(HTML和JSP开发者)集中精力于表现形式。

5) 可维护性。

分离视图层和业务逻辑层也使得Web0应用更易维护和改动。

6) 有利于软件project化管理。

因为採用了分层思想,每一层不用的应用具有某些同样的特征。有利于通过project化、工具化管理程序代码。

【程序猿笔试面试复习】之中的一个 网络与通信篇(一) 几大网络模型:OSI、TCP/IP、B/S与C/S、MVC结构的更多相关文章

  1. Java程序猿笔试面试之String1

    1.怎样实现字符串的反转比如:"how are you"--->"you are how" public class InverseString { pu ...

  2. Java程序猿笔试面试之String4

    怎样删除String中反复的字符good? 思想一:蛮力法,进行双重循环,此算法的复杂度为O(n^2),n是指字符串的长度 public class RemoveSameChar { public s ...

  3. Java程序猿笔试面试之String

    1.怎样实现字符串的反转比如:"how are you"--->"you are how" 2.怎样推断2个字符串是否有同样的字符组成 比如"a ...

  4. 程序猿Web面试之jQuery

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/powertoolsteam/article/details/32325013  又到了一年一度的 ...

  5. 各大IT公司校园招聘程序猿笔试、面试题集锦

    转自:http://blog.csdn.net/hackbuteer1/article/details/7959921#t4 百度一面 1.给定一个字符串比如“abcdef”,要求写个函数编程“def ...

  6. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  7. 漫谈程序猿系列:她发现了一个Bug……

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  8. 【笔试面试】神马搜索C++程序猿电话面试

    面试时间:2015.07.15 预约时间:2015.07.14.电话面试前一天,会电话咨询你方面电话面试的时间. 面试环节: 无自我介绍(这是我面试这么多家公司碰到的第一次),直接面试内容. 问题1: ...

  9. 【程序员笔试面试必会——排序①】Python实现 冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序

    最近在准备笔试题和面试题,把学到的东西整理出来,一来是给自己留个笔记,二来是帮助大家学习. 题目: 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例:  输入:[1,2,3,5,2, ...

随机推荐

  1. JS构造函数、对象工厂、原型模式

    1.对象创建的3中方法 1.1.对象字面量 var obj = { name: "mingzi", work: function () { console.log("wo ...

  2. 23种JavaScript设计模式

    原文链接:https://boostlog.io/@sonuton/23-javascript-design-patterns-5adb006847018500491f3f7f 转自: https:/ ...

  3. canvas和svg小记

    一.关于canvas <canvas> 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形 例如,它可以用于绘制图形,创建动画. <canvas> ...

  4. Android布局之LinearLayout

    LinearLayout 1.核心属性 高度:layout_height   (基于内容 wrap_content:基于父控件:) 宽度:layout_width 方向:orientation  (纵 ...

  5. JAVA工程命名规范

    Java推荐的包声明命名约定是反向域名. 例如 - com.abysm.myproject

  6. 使用Microsoft excel 2007 进行数据分析---环境配置

    使用Microsoft excel 2007 进行数据分析---环境配置 使用前须要安装SQL server 2008 data mining Add-ins for Microsoft excel  ...

  7. SSH无password登陆配置

    摘录一 在192.168.42.142机器上 1)执行:ssh-keygen -t rsa 2)然后拍两下回车(均选择默认) 3)执行: ssh-copy-id -i /root/.ssh/id_rs ...

  8. 39.C语言操作数据库

    一.准备工作: sqlite3工具集:链接:https://pan.baidu.com/s/1mjufXZa 密码:2ui7 安装步骤: 打开如下文件夹,找到sqlite3.dll,并放入系统目录 2 ...

  9. split---将文件分割成多个小文件

    split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等. 选项 -b:值为每一输出档案的大小,单位为 byte. -C:每一输出档中,单行的最大 ...

  10. JS原生方法被覆盖后的恢复办法

    alert 被覆盖 今天装修博客园,调试了下JS代码发现 alert() 方法被官方覆盖了,查看源码得知 alert 的功能被替换成了 console.log. 恢复 var _frame = doc ...