【计算机网络】OSI参考模型与TCP/IP分层模型对比(体系结构对比)

2023-11-05

#笔记整理

协议

简单来说,协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定“。这种约定使得那些由不同厂商的设备、不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。就好比两个人使用不同国家的语言就行对话,是无法相互理解的。因此两台计算机之间必须能够支持相同的协议,并遵循相同协议进行处理,才能实现相互通信。

OSI参考模型

在协议的标准化上,ISO(international organization for standards)国际标准化组织制定了一个国际标准:
OSI(open systems interconnection)开放式通信系统互联参考模型。

在这里插入图片描述

OSI的七层协议模型的概念清楚,理论也较为完整,但它即复杂又不实用。

而TCP/IP分层模型则不同,它得到了非常广泛的应用。

TCP/IP 模型

在这里插入图片描述
TCP/IP 是一个四层的模型,在学习计算机网路的原理时往往采取折中的方法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层的体系结构模型。
不过,五层模型只是为了介绍网络原理而设计的,实际应用还是 TCP/IP 四层模型。
(有些资料也将模型称为体系结构,即OSI 体系结构TCP/IP 体系结构
另外,有时也称 TCP/IP 为网际协议族(internet Protocol suite)
在这里插入图片描述

OSI模型与TCP/IP对比图:

在这里插入图片描述
在这里插入图片描述
(五层模型只是为了介绍网络原理而设计的,实际应用还是 TCP/IP 四层模型)

OSI模型每个分层的作用:
  • 应用层:为应用程序提供服务并规定应用程序通信相关的细节。
  • 表示层:将各种数据转换成网络标准传输格式,如使用何种编码格式。
  • 会话层:负责决定建立和断开连接(数据流动的逻辑链路)的时机、采用何种连接方法,以及数据的分割等数据传输相关的管理(实际的建立、断开连接的处理有传输层负责)。
  • 传输层:保证传输的可靠性。只在通信双方节点上进行操作,不在路由器上进行操作。
  • 网络层:将数据传输到目标地址。主要负责寻址和路由选择。负责将数据发送至最终目标地址。
  • 数据链路层:负责物理层面上互连的、节点之间的通信传输。将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。添加包含MAC地址的头部。负责每一个以太网区间内的通信。
    FCS(Frame Check Sequence)由数据链路层生成,一般是循环冗余校验(CRC)
  • 物理层:负责0、1比特流与电压高低、光的闪灭之间的转换。

OSI协议分层的优点:
如同计算机软件中的模块化开发,分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统。具有较好的扩展性和灵活性。
此外,通过分层能够细分通信功能,更易于单独实现每个分层的协议,并界定各个分层的具体责任和义务。
OSI协议分层的缺点:
过分的模块化,使处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑等问题。

TCP/IP模型各分层作用:
  • 硬件(物理层)
    TCP/IP的最底层,由负责数据传输的硬件组成。

  • 网络接口层(数据链路层)
    利用以太网中的数据链路层进行通信。
    FCS(Frame Check Sequence)由数据链路层生成,一般是循环冗余校验(CRC)。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。

  • 互联网层(网络层)
    该层使用IP协议,相当于OSI模型中的第3层网络层。
    相关协议介绍:
    IP
    基于IP地址转发分包数据。使用IP地址作为主机的标识,可以跨越网络发送数据包,使整个互联网都能收到数据的协议。
    IP是分组交换的一种协议,但是它不具有重发机制。因此,属于非可靠性传输协议。
    ICMP
    IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个异常通知。ICMP就是为这一功能制定的。它有时也用来诊断网络的健康状况。
    ARP
    从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。

  • 传输层
    和OSI模型的传输层类似,主要功能是让应用程序之间实现通信。使用端口识别应用程序。
    相关协议介绍:
    TCP
    一种面向有连接的传输层协议。可以保证两端通信主机之间的通信可达。
    可以处理在传输过程中的丢包、传输顺序乱掉等异常情况。此外还能有效利用带宽,缓解网络拥堵。
    为了建立与断开连接,需要至少7次的发包收包,导致网络流量浪费。此外,为了提高网络的利用率,该协议还定义了各种各样复杂的规范,因此不利于视频会议等场合使用。
    UDP
    一种面向无连接的传输层协议。不关心对端是否收到了数据,若需要检查对端是否收到,需要在应用程序中实现。
    常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

  • 应用层
    对应于OSI模型中的会话层、表示层、应用层合一。
    相关协议介绍:
    HTTP
    浏览器与服务端之间的通信所用的协议,属于OSI应用层协议。
    HTML属于表示层协议。
    SMTP(Simple Mail Tranfer Protocol)
    发送邮件使用的协议
    MIME
    扩展之后用于规定电子邮件的格式,属于表示层协议。
    FTP(File Transfer Protocol)
    文件传输协议,进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。(会话层负责控制管理这两个连接)
    TELNET & SSH (Teletypewriter Network & Secure Shell)
    远程登陆协议
    SNMP (Simple Network Management Protocol)
    网络管理协议,使用SNMP管理的主机、网桥、路由器等称作SNMP代理(agent),而进行管理的那一端叫做管理器(Manager)。SNMP正是这个Manager与Agent所要用到的协议。
    在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB (Management Information Base)访问。因此,SNMP属于应用协议,MIB属于表示层协议。

如有错误,欢迎指正! ?

——————————————————————

内容来源:
1.《计算机网络(第7版)》
2. 《图解TCP/IP》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机网络】OSI参考模型与TCP/IP分层模型对比(体系结构对比) 的相关文章

  • 如何使用 Nmap 检索 TCP 和 UDP 端口? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我需要在使用 Nmap 的同一扫描中以尽可能最快的方式检索 TCP 和 UDP 端口 我会尽力解释得更好 如果我使用最常用的命令 nmap 192 1
  • 通过 TCP/.NET SSLStream 发送文件很慢/无法正常工作

    我正在编写一个与 SSL 配合使用的服务器 客户端应用程序 通过SSLStream 它必须做很多事情 不仅仅是文件接收 发送 目前 它的工作原理是 只有一个连接 我总是使用从客户端 服务器发送数据SSLStream WriteLine 并使
  • 计算 TCP 重传次数

    我想知道在LINUX中是否有一种方法可以计算一个流中发生的TCP重传的次数 无论是在客户端还是服务器端 好像netstat s解决了我的目的
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • 使用 IdTCPClient 和 IdTCPServer 发送和接收 TMemoryStream

    我在 XE2 中找到了 Remy Lebeau 的 IdTCP 组件聊天演示 我想玩一下 可以发现 我想使用这些组件发送图片 最好的方法似乎是使用 TMemoryStream 如果我发送字符串 连接工作正常 字符串传输成功 但是当我将其更改
  • TCP打孔问题

    我尝试使用 Python 3 中概述的原则为防火墙编写一个基本的 TCP 打孔器本文 http www bford info pub net p2pnat index html 不过 我无法连接任何东西 这是代码 usr bin pytho
  • 使用 TCP 时是否需要使用校验和来保护我的消息?

    使用 TCP 作为网络协议 在通过线路发送消息之前 我会为每条消息的大小 以及可能的校验和 添加前缀 我想知道 计算和传输消息的校验和是否有意义 以确保消息将被不变地传递 如果以及何时传递 例如因为一些网络错误 目前 我在发送消息本身之前发
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • “192.168.1.1/21”是什么意思?

    当他们在 IP 地址后面写上一个斜杠和一个数字时 这意味着什么 斜杠后面的部分是要使用多少个子网掩码位 由于使用无类路由 您可以使用斜线而不是说 A 类或 B 类 例子 192 168 1 1 24 is 192 168 1 1 255 2
  • 服务器套接字在 Close_Wait 中挂起

    场景如下 我正在从 C 服务器应用程序向客户端发送大量数据 突然数据流停止 客户端没有数据更新并且端口被阻塞 发生这种情况时 服务器端症状是 Close Wait 在该端口 netstat 操作将在日志中阻塞 错误代码 135 无法从客户端
  • 正则表达式匹配IP地址[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是正则表达式的新手 我想使用preg match函数用于查找字符串是否为 IP 地址 例如 string 10 0 0 1 preg m
  • C# P2P聊天应用程序设计

    我想创建一个不使用显式服务器的简单聊天应用程序 主要要求是用户可以同时与许多朋友聊天 就像在 Skype 等上一样 我在这里指的不是会议聊天 而是多个单独的聊天窗口 目前 我只想要一个 LAN 消息应用程序 但如果设计能够轻松扩展到 Int
  • 本地主机上的 .net HTTP_X_FORWARDED_FOR NULL

    抱歉 如果其他地方已经回答了这个问题 我找不到它 如果没有 我会尝试查找访问过该站点的机器的原始 IP 根据我的基本理解 变量HTTP X FORWARDED FOR无论代理和其他过滤器如何 都会显示用户的 IP 如果这是真的 我正在尝试对
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 应用程序多播的最佳教程? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我最近意识到 IP 多播 显然在公共互联网上工作得不太好 和应用程序多播 显然在 IRC 和 PSYC 中使用 根据http en wikipedia
  • 使用套接字和 AsyncTask 强制关闭

    堆栈的人们大家好 请参阅下面我的班级代码和我的 LogCat 尝试连接时我受到强力关闭 如果有人能帮助我找出原因 我将不胜感激 基本上代码的作用是 从意图中获取 IP 地址 连接到端口 32 的 IP 然后发送一个命令 等待响应并发送另一个
  • 多个客户端如何同时连接到服务器上的一个端口(例如 80)? [复制]

    这个问题在这里已经有答案了 我了解端口工作原理的基础知识 但是 我不明白的是多个客户端如何同时连接到端口 80 我知道每个客户端都有一个唯一的 对于他们的机器 端口 服务器是否从可用端口回复客户端 并简单地声明回复来自 80 这是如何运作的
  • 如何用单线程实现TCP上的全双工通道?

    我正在编写的网络库需要通过 TCP 套接字发送和接收消息 消息可以随时发送或接收 即应该作为全双工通道工作 我能够使用两个线程来实现这样的场景 调用 send 的主线程和一个主要在 receive 调用处阻塞的专用线程 我的问题是 是否可以
  • 代码来检测Android设备自己的IP地址?

    我想了解可以检测 Android 设备的 IP 地址和 Android 客户端名称的代码 以便在我们的应用程序中使用此 Ip 地址和客户端名称 任何人都可以帮助我吗 提前致谢 如果您在 Android 手机上运行此程序 这将告诉您您自己的
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定

随机推荐

  • Selenium Web自动化基础

    1 selenium环境配置 selenium是一个python的开源库 使用pip就可以安装 直接在cmd或者pycharm的终端执行pip install selenium 即可完成selenium库的安装 如果出现以下 Error c
  • 跟着angularjs2官方文档学习(四)

  • MySQL的复制原理以及流程,读写分离有哪些解决方案?

    MySQL的复制原理以及流程 主从复制 将主数据库中的DDL和DML操作通过二进制日志 BINLOG 传输到从数据库上 然后将这些日志重新执行 重做 从而使得从数据库的数据与主数据库保持一致 主从复制的作用 主数据库出现问题 可以切换到从数
  • 安卓手机格式化怎么弄_安卓手机怎样进入格式化?

    展开全部 硬格方法如下 在关机状态下 同时32313133353236313431303231363533e58685e5aeb931333365646261按住开机键和侧音量键下键 以开启手机 长按侧音量键下键约15秒钟 直至手机屏幕显示
  • shell脚本实现for循环打印数组

    array beijing tianjin hebei echo array 0 for i 0 i lt array i do echo array i done 数组要用括号加空格的方式进行声明 利用 或 可以将数组扩展成列表 然后使用
  • 电子产品量产工具项目开发中遇到的问题(更新......)

    1 找不到tslib h库的头文件 这是因为找不到tslib库的头文件 确定工具链中头文件 库文件目录 对于 IMX6ULL 命令如下 echo main arm linux gnueabihf gcc E v 找到了编译器arm linu
  • Python数据分析之pandas学习

    Python中的pandas模块进行数据分析 接下来pandas介绍中将学习到如下8块内容 1 数据结构简介 DataFrame和Series 2 数据索引index 3 利用pandas查询数据 4 利用pandas的DataFrames
  • 记一次win10+VM16双机调试的经历

    折腾了两天 终于成功 基础配置 宿主机和客户机均为win10 虚拟机是vm16 一 宿主机中的虚拟机配置 1 打开设置 删除打印机 也可以不删 网上很多教程 2 点击添加 选择串行端口 确定 3 选择2中添加的串行端口 选择 使用命名管道
  • CSS cubic-bezier() 函数 贝塞尔曲线 动画

    https www runoob com cssref func cubic bezier html
  • Jgit基础教程(Java调用git)

    前言 最近公司需要做一个java调用git的工具 这里简单的介绍了一下基本操作方法以及一些衍生的信息获取 或有不对的地方请大家批评指正 转载请注明出处 一 Jgit依赖导入
  • 【C】快速求最大公约数的三种办法

    最大公因数 也称最大公约数 最大公因子 指两个或多个整数共有约数中最大的一个 a b的最大公约数记为 a b 同样的 a b c的最大公约数记为 a b c 多个整数的最大公约数也有同样的记号 求最大公约数有多种方法 常见的有质因数分解法
  • yolo类检测算法解析——yolo v3

    每当听到有人问 如何入门计算机视觉 这个问题时 其实我内心是拒绝的 为什么呢 因为我们说的计算机视觉的发展史可谓很长了 它的分支很多 而且理论那是错综复杂交相辉映 就好像数学一样 如何学习数学 这问题似乎有点笼统 有点宽泛 所以我都会具体问
  • JavaWeb(13)超市订单管理系统smbms——登录功能及优化

    一 项目搭建 1 搭建一个maven web项目 2 配置Tomcat 3 测试项目是否能够跑起来 4 导入jar包 jsp servlet mysql驱动 jstl stand 5 创建项目包结构 6 编写实体类 ORM映射 表 类映射
  • [Shell] 常用写法

    iF9PzeAQm9 H7oi r6YdLk6 lxJ d c 常识 ls ls lh time style Y m d H M S awk condition move1 move2 文件名1 文件名2 NR 行数 索引 NF 列数 一般
  • JVM--基础--19.4--垃圾收集器--Parallel Scavenge

    JVM 基础 19 4 垃圾收集器 Parallel Scavenge 1 结构图 2 Parallel Scavenge 并行 收集器 2 1 特征 新生代收集器 使用复制算法 并行的多线程收集器 控制的吞吐量 吞吐量 运行用户代码时间
  • Android Surface解析

    源码截图是Android 5 1 1 r6 一 App和Surface的关系是怎样的 不论是用Skia绘制二维图像 还是用OpenGL绘制三维图像 最终Application都要和Surface交互 Surface 是什么 Handle o
  • Ubuntu企业级初始配置实战

    第1章 Ubuntu安装后初始化配置 1 使用xshell远程连接Ubuntu 此部分见老男孩老师视频演示 2 配置Ubuntu网卡 修改网卡配置注意事项 1 ubuntu从17 10开始 已放弃在 etc network interfac
  • ftp登录报错:530 This server does not allow plain FTP. You have to use FTP over TLS

    filezilla 状态 不安全的服务器 不支持 FTP over TLS 相关的详细问题如下 解决方案1 如果服务器是 FileZilla Server 的话 提示信息是 530 This server does not allow pl
  • 【转】Dr.com 5.20破解教程

    Dr com 5 20破解教程 方法一 1 首先下载相关工具 Process Explorer 大家可以自行百度 一般绿色汉化版就可以 右键选择以管理员权限运行process的主程序 然后运行drcom客户端程序drmain exe 并登录
  • 【计算机网络】OSI参考模型与TCP/IP分层模型对比(体系结构对比)

    笔记整理 协议 简单来说 协议就是计算机与计算机之间通过网络实现通信时事先达成的一种 约定 这种约定使得那些由不同厂商的设备 不同的操作系统组成的计算机之间 只要遵循相同的协议就能够实现通信 就好比两个人使用不同国家的语言就行对话 是无法相