OSI模型和TCP/IP分层模型?看完这一篇就够了!
Posted zaijianba
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSI模型和TCP/IP分层模型?看完这一篇就够了!相关的知识,希望对你有一定的参考价值。
最近看了《图解TCP/IP》这本书,于是将这本书中的精髓做一个归总,以便之后查阅。
1.何为协议?
1.1 介绍
协议就是计算机与计算机之间通过网络实现通信事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果使用的协议不同,就无法通信。
Windows操作系统的平板电脑和Mac操作系统的一体机电脑,虽然操作系统不同,硬件组成不同,但是只要事先达成一个详细的约定,并遵循这一约定进行处理方可建立通信。
2 协议分层与OSI参考模型
2.1 OSI参考模型
协议分层就如同计算机软件中的模块化开发,OSI参考模型的建议是比较理想化的一种分层模型。
- OSI参考模型中定义了每一层的“作用”
- 定义每一层作用的是“协议”
- “协议”是约定,其具体内容为“规范”
- 我们日常所使用的就是遵循各个协议具体“规范”的产品和通信手段
2.2 OSI参考模型中各层作用
2.2.1 物理层
信号和介质
比特流与电子信号之间的切换
? 物理层(Physical Layer)是计算机网络OSI模型中最低的一层。物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层。
? 物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
2.2.2 数据链路层
数据帧与比特流之间的转换
? 数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。
2.2.3 网络层
路径选择、路由及逻辑寻址
? 网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
2.2.4 传输层
管理两个节点之间的数据传输
关键层次之一,TCP/UDP运行在传输层
? 传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。由于一个主机同时运行多个进程,因此运输层具有有复用和分用功能。传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控制、分段/重组和差错控制来保证数据传输的可靠性。传输层的一些协议是面向链接的,这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。
2.2.5 会话层
为会话实体间建立连接??数据传输阶段??连接释放
? 会话层(Session)是建立在传输层之上,利用传输层提供的服务,使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。
2.2.6 表示层
数据的压缩、解压、加密、解密
语法转换、语法协商、连接管理
? 表示层向上对应用层服务,向下接受来自会话层的服务。表示层为在应用过程之间传送的信息提供表示方法的服务,它只关心信息发出的语法和语义。
? 表示层位于OSI分层结构的第六层,它的主要作用之一是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。与第五层提供透明的数据运输不同,表示层是处理所有与数据表示及运输有关的问题,包括转换、加密和压缩。每台计算机可能有它自己的表示数据的内部方法,例如,ASCII码与EBCDIC码,所以需要表示层协定来保证不同的计算机可以彼此理解。
? 通过前面的介绍,我们可以看出,会话层以下5层完成了端到端的数据传送,并且是可靠,无差错的传送.但是数据传送只是手段而不是目的,最终是要实现对数据的使用.由于各种系统对数据的定义并不完全相同,最易明白的例子是键盘,其上的某些键的含义在许多系统中都有差异.这自然给利用其它系统的数据造成了障碍.表示层和应用层就担负了消除这种障碍的任务.
2.2.7 应用层
直接为应用进程提供应用服务
每个应用有不同的应用协议
? 应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。
? 应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务.其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE.
2.3 OSI 7层模型应用通信实例
至上而下和至下而上
附加首部信息
封装和解封装
- 发送方从模型的第七层到第一层至上而下传输数据,接收方则至下而上从第一层到第七层传输数据
- 发送端发送信息的过程中,每个分层上,在处理上一层传过来的数据时,都会在数据中附上当前协议需要包含的“首部信息”
- 接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原装。
3 TCP/IP协议
3.1 介绍
协议“簇”
? TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
3.2 TCP/IP协议分层模型
TCP/IP分层模型将OSI参考模型的应用程、表示层、会话层统一归为应用层
TCP/IP更强调“在计算机上实现协议应该开发哪种程序
? 由于TCP/IP尽早地制定了可行性较强的协议,提出了应对技术快速革新的协议,并及时进行后期改良的方案,因此打败了OSI模型,成为了事实上的标准。
? 由上图可见??,OSI和TCP/IP在分层模块上稍有区别,TCP/IP分层模型将应用程、表示层、会话层统一划入应用层,OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。
3.3 TCP/IP分层模型应用通信实例
3.4 通信过程数据变化
帧和数据包都是数据的传输形式。
- 数据链路层:Frame(帧)
- 网络层:Packet(数据包)
- 传输层:
- TCP的叫做Segment(数据段)
- UDP的叫做Datagram(数据报)
应用层:Message(消息)
- Frame(帧),工作在二层,数据链路层传输的是数据帧,包含数据包,并且增加相应MAC地址与二层信息;
Packet(数据包),工作在三层,网络层传输的是数据包,包含数据报文,并且增加传输使用的IP地址等三层信息。
Packet(数据包):封装的基本单元,它穿越网络层和数据链路层的分解面。通常一个Packet映射成一个Frame,但也有例外:即当数据链路层执行拆分或将几个Packet合成一个Frame的时候。
通信过程数据结构变化大致如下:
3.4.1 传输层报头解析
加入端口信息
TCPUDP协议
? 每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包,所以需要在数据包中加入端口信息。
TCP数据报头??:
UDP数据报头??:
常见端口信息??:
应用进程 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
关于TCP/UDP等协议的异同点将在另一篇博客中专门介绍
3.4.2 网络层数据报头解析
IP数据报
IP协议
源IP地址、目标IP地址
3.4.3 数据链路层报头解析
MAC帧
LLC帧
3.4.5 数据封装过程总结
? 上层数据→→在传输层添加TCP头(包含端口信息等)→→在网络层添加IP头(包含IP协议等信息)→→在数据链路层添加LLC头和MAC头(包含MAC地址等信息)→→翻译成比特流(1101101...)
4 总结
? 以上内容是我对《TCP/IP图解》这本书中分层模型等知识点的总结,数据在传输过程中是一个不断封装和解封的过程,一个数据要传输到另一个接收端,必须经过层层封装,封装的意义在于让发送端数据能够定位接收端的位置,让数据精准的被接受端应用程序接受。
此篇博客并没有讲解各层具体的协议,这些内容将在下一篇博客中详细说明。
参考资料:
————————————————————————————————————————————
版权声明:本文为吴恺的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.cnblogs.com/zaijianba/p/11520397.html
为了更好的阅读体验,推荐转至我的个人博客查看此篇博客。
个人博客文章链接:https://www.wukailiving.cn/dui-tcp-ip-de-zong-jie.html
如有不足之处,欢迎指正!
以上是关于OSI模型和TCP/IP分层模型?看完这一篇就够了!的主要内容,如果未能解决你的问题,请参考以下文章