OSI模型和TCP/IP协议族(三)
TCP/IP协议族
TCP/IP协议族的开发要比OSI模型更早,因此TCP/IP协议族的分层结构无法准确地与OSI模型一一对应。原始的TCP/IP协议族定义为建立再硬件基础上的四个软件层,不通过目前TCP/IP协议族被认为是一个五层模型,其层的命名类似于OSI模型中相应的层。如下图所示:

OSI和TCP/IP协议族的比较 当我们比较这两个模型时会发现,再TCP/IP协议族中没有会话和表示这两层。即使在OSI模型发布后,TCP/IP协议族也没有因此而增加这两层。在TCP/IP协议族中通常认为应用层是OSI模型的最高三层的合并,如下如所示: 
采用这一决定的理由有两个。首先,TCP/IP有多个传输层协议,而会话层的某些功能在一些传输层协议中已具备。其次,应用层并不仅仅是一个软件,这一层允许开发的应用程序有很多。如果特定的应用程序需要用到会话层和表示层中某些相应的功能,那么这些功能也可以包含在该应用软件中进行开发。 TCP/IP是一种分层协议,它由多个交互的模块构成,每个模块都提供了特定的功能,但是这些模块并不是必须互相依赖的。OSI模型具体规定了哪一层应该具备哪些功能,而TCP/IP协议族的每一层则包含的是一些相对独立的协议,可以根据系统的需要把这些协议混合并重新搭配使用。术语"层次化"指的是每一个上层协议都由一个或多个下层协议来支持。 接下来我们将简单地讨论一下TCP/IP协议族中各层的作用。在研究每一层所起的作用时,考虑一个专用的互联网要比考虑全球因特网更加简单。我们假设在一个小型的专用互联网内使用TCP/IP协议族。这种互联网是由若干个小型的称之为链路的网络组成的。一条链路(link)就是允许一组计算机互相通信的一个网络。例如,一个办公室中所有计算机都通过网线连接在一起,这种连接关系就形成了一条链路。若某私人企业中的若干台计算机通过卫星信道互相连接,此连接也是一条链路。就像我们在后面会讨论的那样,一条链路有可能是服务小范围区域的LAN(局域网),也有可能是服务很大范围区域的WAN(广域网)。我们还要假设不同链路通过称为路由器或者交换机的设备相连接在一起,这些设备会为数据选路以送抵它们最终的目的地。如下图所示为我们虚构的一个互联网,用来说明TCP/IP各层的作用。图中有6条链路和四个路由器(R1到R4),在这幅图中只画出了两台计算机,计算机A和计算机B。

物理层 在物理层,TCP/IP没有定义任何特定的协议。它支持所有标准的和专用的协议。在这一层,通信发生在两跳或两个结点之间,可能是计算机,也可能是路由器。通信以比特为单位。当两个结点之间建立连接后,就会有一个比特流在它们之间流动。但是对于物理层来说每个比特都将被独立对待。下图所示为结点之间的通信,我们假设此时两台计算机都已知道了与对方通信的最有效路径是经过路由器R1、R3和R4。至于如何知道则属于后面讨论内容。
请注意,如果一个结点与n条链路相连,那么它需要n个物理层协议,每条链路各需要一个,原因在于不同的链路可能使用不同的物理层协议。图中只显示了此次通信所涉及到的物理层,每台计算机仅涉及一条链路,而每台路由器仅涉及两条链路,如上图所示,这些比特在计算机A和计算机B之间的旅程是由四个独立的短途旅程构成的。计算机A以链路1所使用的协议格式向路由器R1发送各比特。路由器R1以链路3所使用的协议格式向路由器R3发送这些比特,以此类推。路由器R1有三个物理层(在我们假设的场景中只显示了两个),连接到链路1的物理层根据链路1所使用的协议的格式来接受这些比特,连接到链路3的物理层根据链路3所使用的协议的格式来发送这些比特。此次通信过程中涉及的其他两个路由器的情况也于此相同。
物理层的通信单位是比特 除了传送比特之外,物理层的其他任务也与OSI模型的物理层相对应,且主要取决于提供链路的底层技术。例如,在后面我们就会讨论局域网和广域网的物理层有很多协议可用。
数据链路层
OSI模型和TCP/IP协议族(三)的更多相关文章
- OSI模型和TCP/IP协议族(一)
1990年以前,再数据通信和组网文献中占主导地位的分层模型是开放系统互连(Open System Interconnnection,OSI)模型.当时所有人都认为OSI模型将是数据通信的最终标准,然而 ...
- <TCP/IP原理> (二) OSI模型和TCP/IP协议族
1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...
- OSI模型和TCP/IP协议族(二)
OSI模型中的各层 物理层 物理层(physical layer)协调通过物理媒体传送比特流时所需要的各种功能.物理层涉及到接口和传输媒体的机械和电器规约.它还定义了这些物理设备即接口为了实现传输必须 ...
- OSI模型与TCP/IP协议族
OSI模型与TCP/IP协议族 年之后,TCP/IP协议族逐渐成为占主导的商用体系结构,广泛应用于Internet中,并通过广泛的測试.而OSI模型从来没有被全然实现过. 一.OSI模型: OSI与I ...
- OSI 七层模型和 TCP/IP 协议比较
OSI (Open System Interconnection), 开放式系统互联参考模型.从下到上七层模型功能及其代表协议: 物理层(Physical) :规定了激活.维持.关闭通信端点之间的 ...
- [转]从OSI网络模型到TCP/IP协议族简介
OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型成为开放式系统互联参考模型,是一个把网络通信在逻辑上的定义,也可以理解成为定义了通用的网络通信 ...
- 漫谈网络通信——从OSI网络模型到TCP/IP协议族
OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型成为开放式系统互联参考模型,是一个把网络通信在逻辑上的定义,也可以理解成为定义了通用的网络通信 ...
- TCP/IP协议族(三) 数字签名与HTTPS详解
前面几篇博客聊了HTTP的相关东西,今天就来聊一聊HTTPS的东西.因为HTTP协议本身存在着明文传输.不能很好的验证通信方的身份和无法验证报文的完整性等一些安全方面的确点,所以才有了HTTPS的缺陷 ...
- TCP/IP知识总结(TCP/IP协议族读书笔记一)
一.简述TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/互联网互联协议,又名网络通信协议.是Internet最基 ...
随机推荐
- C/C++语言简介之关键字
关键字又称为保留字,就是已被C语言本身使用,不能作其它用途使用的字.例如关键字不能用作变量名.函数名等标识符.由ISO标准定义的C语言关键字共32个:auto.double.int.struct.br ...
- 硬件能力与智能AI-Zoomla!逐浪CMS2 x3.9.2正式发布
北京时间2017年9月10日,领先的CMS网站内容管理系统与生产力软件研发厂商-Zoomla!逐浪CMS团队发布其年度重要产品:Zoomla!逐浪CMS2 x3.9.2,引领国内门户.移动.微商以及生 ...
- 3.数码相框-通过freetype库实现矢量显示
本章主要内容如下: 1)矢量字体原理 2)使用freetype库实现矢量字体显示 1. 矢量字体原理 将汉字的笔划边缘用直线段描述成封闭的曲线,并将线段各端点的坐标经压缩存储,如下图所示: 由于每个汉 ...
- HDU - 1175 bfs
思路:d[x][y][z]表示以z方向走到(x, y)的转弯次数. 如果用优先队列会超时,因为加入队列的节点太多,无用的节点不能及时出队,会造成MLE,用单调队列即可. AC代码 #include & ...
- mysql 导出每张表中的100条数据..............
windows下配好MYSQL 环境变量,cmd 然后: mysqldump -uroot -p123 [数据库名]--where "1=1 limit 100" --lock-a ...
- pycharm安装,svn使用,远程开发调试,接口测试,连接服务器
磨刀不误砍柴工,配置完美的编辑器,在开发时,能帮助我们节约大量的时间成本,从而是我们的精力放在业务逻辑实现上面! 接下来将介绍 使用pyhcarm如何使用svn,远程开发调试,接口测试,已经连接远程服 ...
- 关于HC04超声波模块测距的思考(51版)
之前写过一篇HC04的使用文章,当时是使用stm32来实现的,原文链接. 后来又多次使用51来驱动这个模块,有时候有测距需要,使用了几次,总是感觉我上次那个程序不是很好, 所以这次对它进行了改进.虽然 ...
- JVM 指令
1.Demo 2.Class 文件说明 2.1 Class文件结构 2.2 jvm type, method signature 2.3 泛型表示 3.方法说明 3.1 方法结构 3.1.1 Thre ...
- mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】
1.使用order by对查询的结果进行排序,asc升序,desc降序: 也可以在order by后指定多个字段名和排序方式进行多级排序: 2.使用limit限制查询结果的数量: 上图中的0,代表查询 ...
- directdraw显示rgb555
// TODO: 在此添加控件通知处理程序代码 height=width=widthBytes=0; m_screen.SetWindowPos(&CWnd::wndBottom,0,0, ...