OSI模型和TCP/IP协议族

1、协议分层

两个实体之间要进行通信就需要有一个协议。而当通信比较复杂时就有必要将这个复杂的任务划分为多层,就需要有多个协议,每一层都有自己的协议。

2、ISO

国际标准化组织(International Standard Organization , ISO)是一个多国团体,专门就一些国际标准达成世界范围内的一致。全世界大约有3/4的国家派代表参加。一个全方位覆盖网络通信问题的ISO标准就是开放系统互连(OSI ,Open Systems Interconnection)模型。

3、OSI

开放系统互连(OSI ,Open Systems Interconnection)模型。一个开放系统(Open System)就是一组协议的集合,它使得两个不同系统之间能够互相通信,而不用考虑底层体系结构。OSI模型的作用就是展示两个不同的系统之间怎样才能做到互相通信,且不需要改变底层的用剑或软件逻辑。为OSI框架的各种协议的创建童工基础是OSI模型的本意。

OSI模型是一个分层的框架结构,目的是为了设计出能够让各种类型的计算机系统相互通信的网络系统。由7个独立且相关的层组成,每层都定义了信息通过网络传输的完整过程的一部分。

                                                       

处于一台机器上上的每一层都要调用紧挨的下一层的服务。例如,第3层使用第2层提供的服务,同时向第4层提供服务。而机器与机器之间看起来就像是一台机器中的第x层与另一台机器中的第x层之间在相互通信。这种通信由协议来控制。


上述7层可以看成分属于三个组。第1、2、3层(物理层、数据链路层、网络层)是网络支撑层,这些层的任务是在物理上将数据从一个设备传送到另一个设备(如,电气规约、物理连接、物理编址、以及运输的定时和可靠性)。第5、6、7(会话层、表示层、应用层)可以看成是用户支撑层,这些层使得一些本来没有关系的软件系统之间有了互操作性。第4层(运输层)将这两部分链接起来,使得底层所发送的是高层使用的形式。OSI的高层几乎都是用软件来实现的,而低层的则是硬件和软件的结合,物理层绝大部分是硬件。

4、OSI模型中的各层

  [1]物理层(physical layer)负责把逐个的比特从一跳(结点)移动到下一跳。协调通过物理媒体传送比特流时所需的各种功能。

物理层涉及到接口和传输媒体的机械和电气规约。物理层关心以下内容:

(1)接口和媒体的物理特性:  物理层定义了设备与传输媒体之间接口特性,定义了传输媒体的类型。

(2)比特的表示:  物理层的数据由一串没有任何解释道的比特流(0和1的序列)组成。发送时,比特必须经过编码变成信号——电的或光的。

(3)数据率:  传输速率,即每秒发送的比特数。

(4)比特的同步:发送设备和接收设备的时钟必须是同步的。

(5)线路配置:考虑设备与媒体的连接。点对点配置(point-to-point configuration)时两个设备通过专用链路连接在一起。多点配置(multipoint configuration)时若干个设备共享一条链路。

(6)物理拓扑:网状、星状、环状、总线拓扑。

(7)传输方式:单工、半双工、全双工。


[2]数据链路层(data link layer)把物理层转换成可靠的链路。使物理层对上层(网络层)看起来像是无差错的。链路层的任务:


(1)组帧:数据链路层把从网络层收到的比特流划分成可以处理的数据单元,称为帧(frame)。

(2)物理编址:若这些帧需要发给本网络内的另一个系统,那数据链路层就要在帧上附加一个首部,指明帧的发送方或接收方。若这个帧要发送给本网络以外的另一个系统,则接收方地址应当是连接本网络和下一个网络的连接设备的地址。

(3)流量控制:协调接收方吸收速率和发送方发送速率。
(4)差错控制:数据链路层增加了一些措施来检测并重传受损伤的帧或丢失帧。

(5)接入控制: 当两个或更多设备连接到同一条链路时,数据链路层决定任一时刻该由哪一个设备对链路有控制权。


[3]网络层(network layer)负责把分组从源点交付到终点。这可能要跨越多个网络,如果说数据链路层监督的是同一个网络上的两个系统之间的分组交付,那么网络层则要确保每个分组从源点出发并最终抵达目的地。若两个系统连到同一条链路上,则一般来说就不需要网络层了;若连在不同的网络上,而这些网络是由一些连接设备连接起来的,那么就需要网络层来完成从源点到终点的交付。网络层的任务包括:


(1)路由选择:当多个独立的网络或链路互相连接组成互联网 ,这些设备(路由器或交换机)就要为数据分组选路或交换以到达它们最终的目的地。
 (2)逻辑编址:由数据链路层实现的物理编址处理的是本地寻址问题。若分组穿过了网络的边界,就需要另一种编址系统来区分源系统和目的系统。网络层给从上层传来的分组附加一个首部,其中包括发送方和接收方的逻辑地址。

[4]运输层(transport layer)负责完整报文的进程到进程的交付(process-to-process delivery).进程是运行在主机上的应用程序。网络层管理的是单个分组从源点到终点的交付(source-to-destination delivery),它并不考虑这些分组之间的关系。网络层独立的处理每个分组,运输层要确保整个报文原封不动的按序到达,要监督从源点到终点这一级的差错控制和流量控制。运输层的任务包括:

(1)服务点编址:计算机往往在同一时间运行多个程序。因此,从源点到终点的交付并不仅仅是从某个计算机交付到另一个计算机,同时还指交付到另一个计算机的特定进程。因此,运输层的首部必须包括一种称为服务点地址的地址(或端口地址)。网络层将各分组送抵正确的进程。
(2)分段与重装 :一个报文被划分为若干个可传输的报文段,每个报文段应包含一个序号。在报文到达终点时,运输层利用这些序号能够将他们重装起来,同时对在传输时丢失的分组也能够识别并替换为正确的分组。
(3)连接控制:运输层可以是无连接的,也可以是面向连接的。无连接的运输层把每个报文段看成是独立的数据报,并把这些报文段交付给终点设备上的运输层。面向连接的运输层在发送报文段之前,先要与终点设备上的运输层建立一条连接,当全部数据都传送完毕后,连接就被释放掉。
(4)流量控制:运输层的流量控制是端到端的,不同于数据链路层层对单条链路上的流量控制。
(5)差错控制:运输层的差错控制也是端到端的,不是只限于单条链路上的差错控制。发送端的运输层必须确保整个报文无差错(无损伤、无丢失、无重复)地到达接收端的运输层。

[5]会话层(session layer) 对某些进程来说,下四层(物理层、数据链路层、网络层、运输层)提供的服务还不够充分,会话层就是网络的对话控制器。用于建立、维持并同步正在通信的系统之间的交互。会话层的任务:

(1)对话控制:会话层允许两个系统进入对话状态。允许两个进程之间的通信按半双工或全双工方式进行。
(2)同步:会话层允许进程在数据流中插入若干个检查点(同步点)。如,某系统要发送一个2000页的文件,那么可以在每100页后插入一个同步点,这样就保证了以每100页为一个单元的数据独立的接收和确认。这种情况下,如果传输到第523页时计算机崩溃了,那系统恢复后只需要重传501~523页,第501以前的就不用重传了。

[6]表示层(presentation layer)考虑的问题是两个系统所交换的信息的语法和语义。表示层的任务有:

(1)转换:分别位于两个系统上的进程所交换的信息的形式通常都是字符串、数字等,这些信息在传送之前必须转变为比特流。由于不同的计算机使用不同的编码系统,表示层的任务就是在这些不同的编码方法之间提供互操作性。发送方的表示层把信息从与发送方相关的格式转换为一种公共的个好似,接收方的表示层把这种公共格式转换为与接收方相关的格式。
(2)加密:加密就是发送方将原始信息转换为另一种形式,然后将转换后的报文发送到网络上。
(3)压缩:数据压缩减少了信息中所包含的比特数。

[7]应用层(application layer),让用户可以接入网络。应用层给用户提供了接口,也提供多种服务支持,如电子邮件、远程文件访问和传送、共享数据库管理等。应用层提供的特定服务有:

(1)网络虚拟终端:是物理终端的软件版本,用来使用户能够登录到远程主机上。为此,这个应用程序创建一个软件对远程主机的终端进行仿真。用户的计算机先与这个软件终端交谈,然后这个软件终端再和主机交谈。远程主机认为它正在和自己的终端交谈,因此就允许你进行登录。
(2)文件传送、存取和管理(File Transfer Access and Management FTAM):这个应用程序允许用户访问远程主机中的文件(改变数据或读取数据)、将文件从远程计算机读取到本地计算机上来使用以及在本地上管理和控制远程计算机上的文件。
(3)邮件服务:这个应用程序提供转发和存储电子邮件的基本功能。
(4)名录服务:这个应用程序提供分布式数据库源,以及对全球各种对象和服务信息的存取。
                                                                 
                                                                 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊s3的使用方法_使用jclouds库在Amazon S3上上传

亚马逊s3的使用方法在Java世界中&#xff0c;有几种很好的方法可以将内容上传到S3存储桶-在本文中&#xff0c;我们将研究jclouds库为此提供的功能。 要使用jclouds –特别是本文中讨论的API&#xff0c;应将此简单的Maven依赖项添加到项目的pom中&#xff1a; <dependency…

在PhotoShop中改像素m*n

快捷键&#xff1a;CtrlAlti&#xff0c;如图&#xff0c;改为28*28

Spring Boot Redis简介

1.概述 在本文中&#xff0c;我们将通过Spring Data Redis库回顾如何将Redis与Spring Boot结合使用的基础知识。 我们将构建一个应用程序&#xff0c;演示如何通过Web界面执行CRUD操作Redis 。 Github上提供了该项目的完整源代码。 2.什么是Redis&#xff1f; Redis是一个开源…

Dijkstra-解决最短路径问题

1、从A开始&#xff08;也可以从其他点&#xff0c;此处选择从A&#xff09; 将A 加入树&#xff0c;A被圈红 列出最短路径数组&#xff1a; 2、 确定从A到其他顶点的最短距离为50&#xff0c;A-->B 将B加入树&#xff1a; 更新最短路径数组&#xff1a; 比较到C的距离&a…

jackson使用_如何在Jackson中使用PropertyNamingStrategy

jackson使用Jackson api被广泛用于将json转换为Object并将Object转换为JSON。因此&#xff0c;如果您有json字符串并想在java对象中进行转换&#xff0c;请创建与json中的字段相同的bean的字段名。 Jackson在将json字段映射到java对象字段时遵循标准的bean约定&#xff0c;但是…

简单排序--冒泡排序

冒泡排序&#xff1a; public void sort(){int out,in;//out指向已经排好序的前一个for( outnElements-1;out>1;out--){for(in0;in<out;in){if(arr[in]>arr[in1]){swap(in,in1);//相邻的两个元素比较&#xff0c;交换}}}}//实现冒泡排序相邻的元素两两比较&#xff0c…

jca使用_使用JCA的密码学–提供者中的服务

jca使用Java密码体系结构&#xff08;JCA&#xff09;是一个可扩展的框架&#xff0c;使您能够使用执行加密操作。 JCA还促进实现独立性&#xff08;程序不应该在乎谁提供加密服务&#xff09;和实现互操作性&#xff08;程序不应该与特定加密服务的特定提供者联系在一起&#…

简单排序--选择排序

选择排序&#xff1a; public void sort(){int out,in,min;for(out0;out<nElements-1;out){min out;for(inout1;in<nElements;in)if(arr[in]<arr[min])min in;swap(out,min);//将min放在out位置&#xff0c;out始终指向最小值的下一个位置&#xff0c;即下一个min要…

Java 9模块服务

接线与查找 Java长期以来都有一个ServiceLoader类。 它是在1.6中引入的&#xff0c;但是自Java 1.2以来就使用了类似的技术。 一些软件组件使用了它&#xff0c;但是使用并不广泛。 它可以用于模块化应用程序&#xff08;甚至更多&#xff09;&#xff0c;并提供一种使用应用程…

简单排序--插入排序

插入排序&#xff1a; public void sort(){int in,out,temp;for(out1;out<nElements;out){temp arr[out];in out;while(in>0&&arr[in-1]>temp){arr[in] arr[in-1];//待插入的数据比其之前的数字大的右移&#xff0c;从小到大排序--in;//依次左移}arr[in] …

ejb 2.1 jboss_JBoss AS 8中的Java EE 7和EJB 3.2支持

ejb 2.1 jboss你们中有些人可能已经知道Java EE 7规范的Public Final Draft版本已经发布 。 除此以外&#xff0c;此版本的Java EE还引入了EJB规范的EJB 3.2版本。 与EJB 3.1规范相比&#xff0c;EJB 3.2具有一些新功能。 我在这里引用EJB 3.2规范中的文本&#xff0c;总结了新…

一些工厂实例

我时不时地发现自己摸索了一些旧的代码&#xff0c;以找到示例“我在哪里做过工厂一样的事情”。 上周再次发生这种情况时&#xff0c;我决定只查找所有示例&#xff0c;并创建一个示例项目和有关它的博客文章。 所以在这篇文章中&#xff0c;我&#xff1a; 从简单的“原始…

Android Studio Problems

p1、VT-x is disabled in BIOS 一般开机按F2进入BIOS界面&#xff0c;在configuration中将 Intel Virtulization Technology设置为Enabled p2、Genymotion显示DISCONNECTED&#xff0c;在Genymotion设置页面&#xff0c;将SDK路径改为Android Studio的SDK路径

eclipse工程导入Android Studio

在eclipse中选中要导出的工程&#xff08;此工程在eclipse中最好不要有错误&#xff09;&#xff0c;右键选择Export->Generate Gradle build files 在本地工程里生成了一个build.gradle文件。 在AS中选择 导入成功后会生成一个import-summary.txt 导入成功。

idea中drl文件_得分DRL:在OptaPlanner中更快,更轻松

idea中drl文件对于OptaPlanner &#xff08; Drools Planner&#xff09;6.0.0.Beta1&#xff0c;我已经用更优雅的ConstraintMatch系统替换了ConstraintOccurrence。 结果是您的DRL评分文件为&#xff1a; 快多了 更容易读写 错误的发生率要低得多&#xff0c;因为它们使得…

超棒的Glide图片加载

GitHub开源&#xff1a;https://github.com/bumptech/glide 超棒的工具&#xff0c;竟然还可以加载.gif !!Glide完全基于Picasso&#xff0c;沿袭了其简洁风格&#xff0c;并在其基础上做了大量优化与改进。 1、Glide默认的Bitmap格式是RGB_565&#xff0c;而Picasso默认ARGB_…

JUnit 5符合AssertJ

JUnit 5在断言库中带来了很多改进&#xff0c;这主要归功于Java 8和Lambda Expression支持以及新断言&#xff08;如assertAll &#xff0c; assertTimeout或assertThrows 。 尽管我真的很喜欢JUnit 5&#xff0c;但我相信AssertJ在生产级单元测试中仍然是必须的&#xff0c;我…

开源GraphView的使用--数据统计

最近做室内定位需要绘出加速度传感器输出的三个方向的加速度曲线&#xff0c;找到了开源https://github.com/jjoe64/GraphView-Demos&#xff0c;省去了要重新学MatLab **。 在http://www.android-graphview.org/download--getting-started.html下载.jar包。 1、GraphView的使…