【计算机网络】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分层模型对比(体系结构对比) 的相关文章

  • 连接被对等方重置:套接字写入错误。我的 Java 代码出了什么问题

    我正在尝试从独立的 java 应用程序创建并维护到主机的 TCP 连接 本地端口和服务器端口相同 8999 连接后 我必须向服务器发送一条消息 lt STX gt username fred password abcd lt ETX gt
  • 有没有办法让 YouTube 的所有 IP 地址都被 Windows 防火墙阻止?

    我想编写自己的防分心工具 我不能 不想使用主机文件 https en wikipedia org wiki Hosts file 或第三方应用程序 使用时IPsec https en wikipedia org wiki IPsec or
  • Socat未关闭tcp连接

    I use socat 1 7 3 1 r0并在alpine 3 3linux服务器 socat d d d PTY link dev ttyFOOBAR echo 0 raw unlink close 0 TCP LISTEN 7000
  • 查找网络中的所有IP地址

    我正在尝试用 C 来做这个 我需要找到我的网络中所有活动的 IP 地址并将它们显示在列表中 我可以 ping 网络中所有可用的 1 255 IP 地址 但我想让这个过程更快 此代码在大约 1 秒内扫描我的网络 255 个 D 级段 我在 V
  • 由于将请求从主线程传递到工作线程,netty 中出现延迟?

    我有一些关于 Netty 服务器端 TCP IP 应用程序的问题 我想知道在将请求从老板线程传递到工作线程时是否会因为 netty 由于缺少配置等 而出现延迟 我在用 new OrderedMemoryAwareThreadPoolExec
  • 如何模拟客户端和服务器之间的套接字断开连接(在 Windows 上)?

    我已经实现了一种 心跳解决方案 我想看看在实际情况下网络 故障 时会发生什么 特别是当套接字上没有流量时发生这种情况 问题 我只有一台电脑 我在windows java上 我想简单地拔掉网线 停用网卡不会影响这两个进程 因为它们在同一个盒子
  • Go TCP 读取是非阻塞的

    我正在尝试用 Go 创建服务器和客户端 我已经成功地与服务器和客户端进行通信 但我遇到的问题是golang中的TCP读取是非阻塞的 我想知道 golang 中的读取是否有可能像 C 中的读取一样阻塞 谢谢 EDIT 这是服务器的源代码 fu
  • Web 服务器可以处理多少个套接字连接?

    假设我要获得共享 虚拟或专用托管 我在某处读到服务器 计算机一次只能处理 64 000 个 TCP 连接 这是真的吗 无论带宽如何 任何类型的托管可以处理多少个 我假设 HTTP 通过 TCP 工作 这是否意味着只有 64 000 个用户可
  • C# - 从客户端检查 TCP/IP 套接字状态

    我想为我的 TCP IP 客户端类提供 CheckConnection 函数 以便我可以检查是否发生了错误 我自己的客户端断开连接 服务器断开连接 服务器卡住等 我有类似的东西 bool isConnectionActive false i
  • 为什么我们可以将 sockaddr 转换为 sockaddr_in

    我明白为什么强制转换很有用sockaddr to sockaddr in 但我不明白这怎么可能 据我所知 它们的大小相同sockaddr in添加了sin zero使其大小相同 我想知道编译器如何知道从哪里获取信息sockaddr in如果
  • Linux环境下串口数据转换为TCP/IP

    我需要从Linux系统的串口获取数据并将其转换为TCP IP发送到服务器 这很难做到吗 我有一些基本的编程经验 但对 Linux 的经验不多 有没有开源应用程序可以做到这一点 在 Linux 中您不需要编写程序来执行此操作 只是pipe h
  • 如何在java应用程序中检测FIN - tcp标志?

    我在两台计算机之间有持久的 TCP 连接 第二台计算机不受我的控制 第二台计算机可以随时发送FIN标志 并且首先必须关闭当前连接 将FIN标志发送回第二台计算机 我如何知道第二台计算机正在发送 FIN 标志 以及何时必须调用 Java 应用
  • WSO2 API 管理器 - 在商店中显示私有 IP

    我已经安装了 API 管理器 1 6 0 并运行了 API 管理器 但问题是商店内显示的 IP 地址是服务器的私有 IP 私有IP通过VPN访问 以下是在商店中显示为 生产 和 沙箱 URL 的 URL http 192 168 6 162
  • 构建多线程 TCP/IP 服务器

    我想构建一个可供最多 100 个并发客户端使用的 TCP IP 服务器 但仍不确定如何开始 至少我需要服务器 监听客户端 并将它们全部存储在数组或列表中 对于每个客户端 它需要根据其客户端状态接收和发送数据 当有人连接或断开连接时 服务器应
  • 简单的跨平台 TCP IP API?

    我不打算使用像 QT 或 wxWidgets 的 API 这样的大东西 我只想要可以在 Android iOS Windows Mac Linux 上运行的简单套接字 我正在制作一个事件驱动的纸牌游戏 所以 TCP 是最好的 本质上 我只想
  • 为什么 TCP 段中的 SYN 或 FIN 位会占用序列号空间中​​的一个字节?

    我试图理解这种设计背后的基本原理 我浏览了一些 RFC 但没有发现任何明显的东西 这并不是特别微妙 这样 SYN 和 FIN 位本身就可以被确认 因此如果丢失则可以重新发送 例如 如果连接关闭而没有发送更多数据 那么如果 FIN 没有发送任
  • 触发“对等方重置连接”

    我想测试当发生 对等方重置连接 错误时我们的应用程序 嵌入式 ftp 服务器 中发生的日志记录 这个帖子 https stackoverflow com questions 1434451 connection reset by peer很
  • 序列化是通过套接字发送数据的最佳选择吗?

    有人告诉我 序列化不是通过套接字发送数据的最佳方法 但他们说他们在一本书上读过一次 并且不确定更好的方法 因为他们以前没有真正做过网络 那么序列化是最好的方法还是有更好的方法 如果这有很大的不同的话 这也是一个游戏 通过搜索有关通过它发送对
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 当使用环回地址使用 TCP/IP 套接字进行 IPC 时,常见的网络堆栈是否会跳过将消息帧封装在较低级别的 PDU 中?

    在某些环境 例如 Java 中 很自然地使用 TCP IP 套接字通过 localhost 地址 IPv4 中的 127 0 0 1 或 IPv6 中的 1 在同一主机上的进程之间传递消息 因为Java倾向于不在其API中公开其他IPC机制

随机推荐

  • 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分层模型对比(体系结构对比)

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