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

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" >

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化、工具化管理程序代码。

时间: 06-15

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

【程序员笔试面试复习】之一 网络与通信篇(一) 几大网络模型:OSI、TCP/IP、B/S与C/S、MVC结构

9.1网络模型 9.1.1. OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式网络互联参考模型.其为国际标准组织指定的一个指导信息互联.互通和协作的网络规范. 开放是指只要遵循OSI标准,位于世界上任何地方的任何系统之间都可以进行通信,开放系统是指遵循互联协议的实际系统,如电话系统. 从逻辑上可以将OSI开放系统互联分为七层模型,由下至上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中,上三层称为高层,用

Java程序猿笔试面试之String1

1.怎样实现字符串的反转比如:"how are you"--->"you are how" public class InverseString { public void swap(char[] arr,int front,int end){//将char[]反转 while(front<end){ char temp=arr[end]; arr[end]=arr[front]; arr[front]=temp; front++; end--; } }

Java程序猿笔试面试之String4

怎样删除String中反复的字符good? 思想一:蛮力法,进行双重循环,此算法的复杂度为O(n^2),n是指字符串的长度 public class RemoveSameChar { public static String removeDuplicate(String s){ char[] c=s.toCharArray(); for(int i=0;i<c.length;i++){ if(c[i]=='\0'){ continue; } for(int j=i+1;j<c.length;j

连载《一个程序猿的生命周期》- 42.一个时代有一个时代人的使命

     摘要:我们这代人,80后这代人,从农村或山里走出来这代人,站在父辈的肩膀上前行,应该带有使命感.至少,从我的境遇来讲,深知他们那代人很不容易,所以不能辜负他们的期望,尽管他们嘴上没有表达.      最近,公司安排回老家的工业园区做实验,为了带着孩子能够和父母一起待几天,尽管是卖苦力的活,也欣然接受了. 本来今天中午约了人一起吃饭,但是对方有事,就改下周了.晚饭过后,被父母”教育“一顿,大意是:别整天瞎整,老老实实上班,赚点工资,比上不足比下有余就行了,周末带着孩子一家三口出去玩玩或回

iOS笔试面试复习

00 项目 1.约跑 1.0 服务器搭建 1.1 注册登录模块 1.2 个人信息和头像模块 1.3 跑友列表模块 1.4 聊天加载模块 1.5 用户消息模块 1.6 地图显示和定位以及路径跟踪模块 1.7 用户运动记录显示模块 1.8 跑友圈模块 2.音乐播放器 3.乐淘 4.ZigBee 5.文兄漫画 6.城觅 01 三方库 1.SDWebImage 作用 原理 用法?B   图片下载 缓存 2.AFNetworking 作用 原理 用法? 断点续传? 3.百度地图SDK 4.FMDB 5.M

Java程序员笔试面试之Java基础

1.==与equals与hashcode的区别作用 ①==是用来比较数值是否相等,也可以用来比较引用是否相等,也就是比较是否指向同一个对象. ②equals方法是Object提供的方法,因此每一个对象都有equals方法,他的实现也是通过==运算符实现的,所以在没有覆盖equals()方法的前提下,equals方法跟==是完全一样的 ③相比==运算符equals方法特殊之处就是他可以被覆盖,例如String,他可以比较2个独立对象的内容是否相等,例如: String s1=new String(

Java程序员笔试面试之java基础知识

1.finalize()方法的使用 2.Java程序初始化的顺序 3.Java中变量的类型 4.构造函数 5.为什么java中有些interface没有任何方法 6.java中的反射机制是什么 7.java中创建对象的方式有多少种 8.多态实现的机制是什么,编译时多态,运行时多态, 9.overload和override区别,以及各自的注意事项 10.abstract class和interface有什么区别

Java程序员笔试面试之String3

public class SameString { //思想二:每一个字符都对应着自己的ASC码,第一个思想的算法复杂度为O(nlogn),一般可以利用空间来降低时间复杂度 //可以开辟一个大小为256的数组空间,并且将256个数组元素都置为0,然后遍历第一个字符串把字符的ASC作为数组下标,数组元素都加1, //然后遍历第二个字符串将数组元素的各个值都减1,如果最后数组元素的值为0的话说明就是相同的字符串.此算法的时间复杂度为O(n) public static void compare(St

Java程序员笔试面试之String1

1.如何实现字符串的反转例如:"how are you"--->"you are how" public class InverseString { public void swap(char[] arr,int front,int end){//将char[]反转 while(front<end){ char temp=arr[end]; arr[end]=arr[front]; arr[front]=temp; front++; end--; } }