总结:OSI七层协议

2023-11-11

一、OSI七层协议

每层运行常见设备:

二、物理层

计算机之间需要用光缆、电缆、双绞线、无线电波等连接,完成组网,才能通讯

物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应 1,低电压对应 0

三、数据链路层

单纯的电信号 0 和 1 没有任何意义,必须规定电信号多少位一组,每组什么意思

数据链路层功能:定义传输数据的分组方式,数据格式

以太网协议

早期时各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议(ethernet)

规定:

  • 一组点消耗构成一个数据包,叫做 帧

  • 每一数据帧分成:报头 head 和数据 data 两部分

head包含(固定 18 个字节)

  • 发送者/源地址,6个字节
  • 接受者/目标地址,6个字节
  • 数据类型,6个字节

data包含(最短46个字节,最长1500字节)

  • 数据包的具体内容

head 长度 + data 长度 = 最短 64字节,最长1518字节,超过最大限制就分片发送

mac地址

head 中包含的源和目标地址由来,以太网协议(ethernet)规定接入 Internet 的设备都必须具备网卡,发送端和接收端的地址便是 mac地址,以便能找到发送和接收者

mac 地址:每块网卡出厂时都有一个唯一的 mac地址,长度为 48 位 2进制,通常由 12 位 16 进制数表示(前六位是厂商编号,后六位是流水线号)

查看mac地址:本地连接 —— 详细信息 —— 物理地址

广播:

有了 mac 地址,同一网络内(同一局域网)的两台主机就可以互相通讯了(一台主机通过 arp 协议获取另一台主机的mac地址),ethernet 采用最原始的方式,广播的方式进行通讯,即计算机基本靠吼

四、网络层

有了 以太网协议、mac 地址、广播的发送方式,理论上世界上的计算机都可以互相通讯了。但是世界上的互联网是由一个个的局域网构成的,如果所有的通讯都是以以太网的广播方式传播,那么一台机器发送,全世界的机器都会收到,这将是一种灾难。

于是就有了网络层,定义了一种协议 —— ip 协议

ip 协议

  • 规定网络地址的协议叫 ip 协议,定义的地址为 ip 地址, 广泛地采用 v4版本即 ipv4,它规定网络地址由 32 位 2进制表示
  • 范围 0.0.0.0 -- 255.255.255.255
  • 一个 ip 地址通常写成四段十进制数,例如:172.16.10.1

在现实生活中,我们如果要给对方写信,除了信件内容以外,还需要填写信封地址。信封有两个重要信息。一个是收件地址,一个是收件人。收件地址表示这封信要寄到哪里?收件人表示信要寄给谁?同样的道理,在网络世界中,我们要发信息给别人,也需要知道收件地址、收件人。他们就是MAC地址和IP地址。MAC地址就是收件地址,IP地址就是收件人。

如果把网络比喻为我们生活的城市,那网卡就是城市中的建筑,MAC地址就是这些物理建筑的地址。而IP地址就是这些建筑中的人。

arp 协议

ARP协议(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址

通信是基于 mac 的广播方式实现,计算机在发包时,获取自身的mac 是容易的,如何获取目标主机的 mac 地址,就需要通过 arp 协议

一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。

arp 协议功能:获取目标主机的 mac 地址,然后广播的方式发送数据包

如何获取mac地址?通过目标设备的IP获取。

协议工作方式:

每台主机 ip 都是已知的

例如:主机 172.16.10.10/24 访问 172.16.10.11/24

01. 首先通过 ip 地址和子网掩码区分出自己所处的子网

场景 数据包地址
同一子网 目标主机mac,目标主机 ip
不同子网 网关 mac,目标主机 ip

02. 分析172.16.10.10/24 与 172.16.10.11/24 处于同一网络(如果不是,那么下表中目标 ip 为 172.16.10.1 ,通过 arp 协议获取网关的mac,由网关去获取目标的 mac

源 mac 目标 mac 源 ip 目标 ip 数据部分
发送端主机 发送端 mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 数据

03. 这个包含以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标 ip 为自己的,就响应,返回自己 mac

同一局域网内,pc 1 与 pc 2 怎么通讯

  • 计算是否在同一局域网内(连接同一交换机在同一局域网内,即 ip 网段前面一样就在同一局域网内)
  • 利用 arp 协议获取 pc 2 的 mac 地址
pc1 mac		FF:FF:FF:FF:FF:FF		192.168.11.10/24		192.168.11.11/24

首先以上述格式发包,通过交换机广播,所有 pc 拆包,然后根据 ip 来区分是否是自己的包,当符合时,回包:

pc2 mac 	pc1 mac		192.168.11.11/24		192.168.11.10/24

这样,pc 1 就获得了 pc 2的 mac 地址

  • 发包(pc 1 --> pc 2)
pc1 mac 	pc2 mac 	192.168.11.10/24	192.168.11.11/24	数据

不在同一局域网内,pc1 与 pc4 通讯

  • 计算,是否在同一局域网内
  • 利用 arp 协议获取 网关 1 的mac,再由网关去联络网关2,最后获得 pc4 的mac
# 获取 网关 1 mac
pc1 mac 	FF:FF:FF:FF:FF:FF	192.168.11.10/24	192.168.11.1/24(网关)		

再将数据发给网关 1,由网关1 转发给网关 2

# 将数据发给网关1,这里的目标 ip 是 pc4,而不是网关1
pc1 mac 	网关1 mac		192.168.11.10/24	172.16.45.10/24		数据
  • pc4 --> pc1(回包),也是先判断是否在同一局域网,再按照上述的方式回

注意:网关之间是通过路由传输

五、传输层

网络层的 ip 区分子网,以太网的 mac 找到目标 主机,但是实际使用的是 应用程序,那么要实现应用程序之间的通讯,是通过 端口来标识应用程序的,即应用程序与网卡光联的编号。

传输层的功能:建立端口到端口的通信

补充:端口范围:0 - 65535 , 0 -1023 为系统占用端口

tcp协议:

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

以太网头 ip 头 tcp头 数据

udp协议:

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

以太网头 ip头 udp头 数据

六、应用层

用户使用的应用程序,工作于应用层

应用层功能:规定应用程序的数据格式

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

socket

两个进程需要进行通讯,最基本的一个前提是能够唯一的标识一个进程,在本地进程中我们可以使用 PID 来唯一标识一个进程,但 PID 只在本地唯一,网络中的两个进程 PID 冲突的几率很大。这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程 。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

七、总结

  • 物理层:形成一堆电信号,光缆就是在物理层
  • 数据链路层:将电信号分组(以太网协议 ethernet)
    • 规定每台计算机都必须有一个网卡,上面有 mac 地址(唯一标识)
    • 同一局域网以广播形式传播,不同局域网通过 网关
  • 网络层:ip 协议、arp 协议
    • ip 协议可以区分是否在同一局域网
    • arp 协议可以获取目标计算机 mac 地址
  • 传输层:TCP、UDP协议,应用软件之间通过端口传输,不同计算机的同一端口不冲突
  • 应用层:规定应用程序的数据格式,在不同层上有不同的格式
  • socket 抽象层:在 tcp、udp 协议之上,用户编写出一个应用软件时,需要定义其端口号,而单纯的使用 tcp、udp 协议去设定端口号费时费力,socket 大大节省了时间,只需简单的设置即可
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

总结:OSI七层协议 的相关文章

  • IPv4、IPv6、UDP、TCP数据报首部格式分析

    一 IPv4首部格式 图片来源 图解TCP IP 通过wireshark抓QQ的数据报 IPV4的数据报格式和上面的一致 现在进行分析 相对重要的会红色标记 1 版本 version 由4比特构成 表示标识IP首部的版本号 如上是版本号为4
  • 二三层报头及IP分片详解

    一 报文数据格式 二 二层数据格式 二层以太帧格式 DMAC 6字节 SMAC 6字节 type 2字节 DATA 46 1500字节 CRC 4字节 字段 长度 含义 DMAC 6字节 目的MAC地址 IPV4为6字节 该字段确定帧的接收
  • Transmission Control Protocol (TCP)

    TCP协议 Transmission Control Protocol 是在IP协议之上的 确保IP数据包可靠传输的协议 TCP协议拥有一些用于解决基于数据包的问题 例如丢包 包序错乱 重复包及包损坏 由于TCP协议是IP协议之上最常用的协
  • OSI七层模型和TCP/IP五层模型

    一 OSI七层模型 七层模型从下往上依次为物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 各层功能如图所示 应用层 与其它计算机进行通讯的一个应用 它是对应应用程序的通信服务的 例如 一个没有通信功能的自处理程序就不能执行通信的
  • 【计算机网络】湖科大微课堂笔记 p50-53 路由选择协议概述、路由信息协议RIP、开放最短路径优先OSPF、边界网关协议BGP的基本工作原理

    文章目录 路由选择协议概述 小结 路由信息协议RIP的基本工作原理 小结 一些例题 开放最短路径优先OSPF的基本工作原理 小结 边界网关协议BGP的基本工作原理 小结 一些例题 路由选择协议概述 因特网采用分层次的路由选择协议 域间路由选
  • 【SMTP】【POP】电子邮件相关协议分析

    一 实验环境 通过普通路由器连接英特网的计算机一台 通过VMWare安装的Linux虚拟机一台 抓包工具 Wireshark 邮件处理软件 Foxmail 二 实验原理 SMTP工作原理 SMTP提供了一种邮件传输的机制 当收件方和发件方都
  • springboot多模块打包配置问题

    工程案例结构 baidu 聚合过程 baidu web 子模块web工程 baidu service 子模块 baidu config 子模块配置工程 注意事项 配置步骤 1 baidu 聚合工程 工程下的 pom xml 文件案列如下
  • 11、每日最新新闻接口,免费好用

    1 前言 在线自定义参数接口 这个是RollToolsApi通用系列接口的其中一个 内部包含了3个小接口 能实现获取分类新闻列表和新闻详情 这个接口的特点是内容更新延迟低 查看接口完整信息 https www mxnzp com doc d
  • 【网络】传输层-UDP协议

    文章目录 UDP报文格式 UDP协议特性 无连接 不可靠 面向数据报 UDP缓冲区 UDP特性对于编程的影响 基于UDP的应用层协议 netstat工具 pidof命令 UDP报文格式 查看Linux系统下的 usr include net
  • 西门子PLC如何与多个三菱PLC建立无线通信?

    对一个大型工厂 由于生产线的不断改造 新老流程的不断更新 这些PLC系统往往是由不同的制造商提供的 那么在智慧工厂的实现中 常会遇到不同品牌PLC之间需要进行相互通讯的情况 由于场地和生产能效的原因 在后期的系统改造中 通常需要采用无线的方
  • MN316 OpenCPU丨HTTP使用介绍

    HTTP Hyper Text Transfer Protocol 即超文本传输协议 是一个简单的请求 响应协议 通常运行在 TCP 之上 它指定了客户端可能发送给服务器消息类型以及得到什么类型响应 HTTPS Hyper Text Tra
  • js的引入方式有哪几种,js的三种引入方式

    本篇文章给大家谈谈js引入方式有几种 分别是什么 以及js的引入方式有哪几种 希望对各位有所帮助 不要忘了收藏本站喔 一 JavaScript诞生于1995年由Netscape公司开发 JavaScript是一种解释性语言 也是一种基于对象
  • 解决websocket集群的session共享问题

    在websocket中 服务端主要使用的是session打交道 但是由于session无法实现序列化 不能存储到redis这些中间存储里面 因此这里我们只能把session存储在本地的内存中 那么如果是集群的话 我们如何实现session准
  • udp多播组播

    import socket struct time 组播地址和端口号 MCAST GRP 239 0 0 1 MCAST PORT 8888 创建UDP socket对象 sock socket socket socket AF INET
  • Linux中使用HTTP协议进行远程访问的示例——你的“云端”小伙伴

    大家好 今天我们要聊聊的是如何在Linux中使用HTTP协议进行远程访问 是的 你没有听错 就是那个我们每天用来浏览网页的HTTP协议 首先 我们需要明白HTTP是什么 HTTP 全名为超文本传输协议 Hypertext Transfer
  • 基于5G数据采集传输的食药冷链云解决方案

    对于食品医药行业 一些产品可能需要保持在稳定温度范围内进行保存与运输 才能保证产品质量与安全 为加强冷链运输中的温湿度管理 物通博联提供基于5G数采通信网关的工业物联网解决方案 帮助企业随时了解冷链过程中各种温湿度的变化 从而及时觉察到异常
  • 什么是DLNA

    DLNA旨在解决个人PC 消费电器 移动设备在内的无线网络和有线网络的互联互通 使得数字媒体和内容服务的无限制的共享和增长成为可能 DLNA的口号是Enjoy your music photos and videos anywhere an
  • SSM知识点铺垫--Http工作原理?

    HTTP Hypertext Transfer Protocol 是一种用于在网络上传输超文本的协议 它是一个无状态的协议 意味着每次请求之间没有保留状态 HTTP的工作原理涉及客户端和服务器之间的通信 主要包括请求 Request 和响应
  • 网络协议与攻击模拟_01winshark工具简介

    一 TCP IP协议簇 网络接口层 没有特定的协议 物理层 PPPOE宽带拨号 应用场景 宽带拨号 运营商切网过来没有固定IP就需要拨号 家庭带宽一般都采用的是拨号方式 数据链路层 网络层 IP v4 v6 ARP 地址解析协议 RARP
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网

随机推荐

  • 介绍一个界面库附防QQ2009教程

    牛人的BLOG http blog csdn net ringphone界面库 http blog csdn net ringphone archive 2010 01 05 5132830 aspx循序渐进实现仿QQ界面 一 园角矩形与双
  • springboot集成mybatis+mysql/impala实现双数据源

    最近大数据服务端项目开发需要springboot框架通过impala查询工具直接查hadoop的HDFS数据源 同时也需要查大数据聚合mysql数据 需要实现双数据源 所以研究了下 在springboot框架下 通过java语言来连接imp
  • shared_ptr在Qt项目中使用,慎重

    偶然查到到了一个崩溃 记录一下 一个继承自QObject的自定义类 里面有什么并不重要 class TestProcess public QObject Q OBJECT 摘取了部分实现 眼尖的大佬不妨看下 下面的代码是不是有问题 shar
  • java初学(九)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    给定一个排序数组和一个目标值 在数组中找到目标值 并返回其索引 如果目标值不存在于数组中 返回它将会被按顺序插入的位置 你可以假设数组中无重复元素 示例 1 输入 1 3 5 6 5 输出 2 示例 2 输入 1 3 5 6 2 输出 1
  • 使用WebContext.Items 存储Linq to sql 的DataContext实例引发"InvalidCastException"错误

    为了保证在一次请求过程中 使用同一个DataContext实例 我们项目使用WebContext items 来存储这个实例 最近不知道怎么回事 总是偶然性的抛出下面这个类型转换失败错误 百思不得其解 最后在MSDN的一个帖子里找到一种解释
  • 如何获取li标签中的值

    前言 最近在做动态添加表单 管理员从后台添加了菜单 一般用户登录 可以看到管理员新添加的菜单 和菜单中的属性 但是问题来了 动态添加完了 到展示给一般用户的页面 现在能想到的就是for循环出来的 但是要去到for循环出来的li标签的值怎么取
  • 机器视觉毕业设计 深度学习人脸识别系统设计与实现 - opencv python

    文章目录 0 前言 1 机器学习 人脸识别过程 人脸检测 人脸对其 人脸特征向量化 人脸识别 2 深度学习 人脸识别过程 人脸检测 人脸识别 Metric Larning 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕
  • SpringBoot项目引入token设置

    一 先了解熟悉JWT JSON Web Token 看这些介绍 结构之类的 确实挺无聊的 想直接进入主题的话 就跳过第一大步 望各位同仁给出相关意见 以备我来更加深入的学习 1 JSON Web Token是什么鬼 这个东西 反正理解成一个
  • Ubuntu安装ftp

    1 安装 sudo apt install vsftpd 2 添加一个用户 sudo adduser ftp zhang 然后输入密码Zhang 520 之后会自动在 home 创建ftp zhang目录 3 修改配置文件 sudo vi
  • Python循环语句简单练习题及答案解析

    1 这里的问题是猜出电脑里存储的数字是什么 你将要编写一个能够随机生成一个0到100之间且包括0和100的数字的程序 这个程序提示用户连续地输入数字直到它与那个随机生成的数字相同 对于每个用户输人的数字 程序会提示它是否过高还是过低 所以
  • 7、寻找最好成绩

    问题描述 建立一个对象数组 内放若干个学生的学习数据 学号 成绩 设计一函数max 使用学生对象数组作为参数 在max函数里找出这些学生中成绩最高者 并输出其学号及成绩 在main函数中使用并测试之 在main函数中读入学生数据 创建学生对
  • UpLoad-labs靶场通关笔记

    目录 UpLoad labs靶场通关 运行环境 Pass 01 Pass 02 Pass 03 Pass 04 Pass 05 Pass 06 Pass 07 Pass 08 Pass 09 Pass 10 Pass 11 Pass 12
  • php api接口 致命错误,条纹 - 致命错误 - 未提供API密钥 - PHP

    提交charge php条带支付页面时 我一直收到以下错误 我也没有使用作曲家 我不确定为什么会发生这种错误 致命错误 未捕获异常 Stripe Error Authentication 并显示消息 未提供API密钥 提示 使用 Strip
  • 数据结构初识

    一 初识数据结构 1 什么是数据结构 2 什么是是算法 3 数据结构和算法的重要性 4 如何学好数据结构和算法 5 数据结构和算法的拓展阅读推荐 1 什么是数据结构 数据结构是计算机存储 组织数据的方式 指相互之间存在一种或多种特定关系的数
  • jquery循环语句if-else if-else

    jquery循环语句if else if else callbackFun 函数 开始是写的if if else 结果是不管第一个if有没有匹配到 会再次判断 如果匹配到第二个if 则第二个if中的语句执行 没有匹配到第二个if 则else
  • Unable to connect to Command Metric Stream 'api/turbine/stream?cluster=REPORTS' Error: {"isTrusted"}

    Spring Boot Admin 整合Hystrix UI Module Turbine UI Module 报如下错误 首先确保你的admin server引入了一下的依赖
  • Nginx配置文件详解

    Nginx配置文件 Nginx的核心配置文件默认是放在 usr local nginx conf nginx conf worker processes 1 events worker connections 1024 http inclu
  • 阿里云Nas文件存储的各种场景使用

    文章目录 1 ECS服务器挂载NAS文件存储 1 1 添加NAS挂载点 1 2 为ECS挂载NAS存储 image 202202012230314501 3 验证ECS服务器是否挂载了NAS存储 1 4 卸载挂载的NAS存储 2 通过命令行
  • JAVA在linux上运行带包的class文件

    以Test java为例子 Test java的类路径为ut test Test java 1 新建ut目录 再新建test目录 把Test java拷贝到test目录下 2 cd 到该目录 运行javac Test java 3 然后cd
  • 总结:OSI七层协议

    一 OSI七层协议 每层运行常见设备 二 物理层 计算机之间需要用光缆 电缆 双绞线 无线电波等连接 完成组网 才能通讯 物理层功能 主要是基于电器特性发送高低电压 电信号 高电压对应 1 低电压对应 0 三 数据链路层 单纯的电信号 0