OSI七层网络模型的详细讲解

2023-05-16

七层网络结构:

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

一般也作五层 应用层、传输层、网络层、数据链路层、物理层(实体层)

 引申问题:TCP/IP协议与http协议的区别:

  • TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”
  • 术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。 
  • TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
  • HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
  • 物理层

实体层。如果我们的电脑需要联网,那么首先需要网线(光缆、电缆、无线电波)等方式都可以,主要规定网络传输的一些电器特性,作用是传输0和1这样的电信号。因为单纯传输0和1是没有意义的,所有引出了数据链路层。

  

  (1)数据通信的基础知识:

 

  • 数据链路层

  多少个电信号算一组,每一个信号位有什么意义,即在实体层的基础上确定了0和1的分组方式,也就我们常说的以太网协议。以太网规定一组电信号构成一个数据包,我们将它叫做帧, 每个帧又分为以下两个部分:

其中head称之为标头(固定长度18byte)、data(46byte~1500byte)即数据。标头包含了数据包的说明项(如发送者、接受者、数据类型等),如果数据的长度大于最大长度即1518的话,数据就不得不分为多个组发送。

  • 回到一个问题,标头的中的发送者和接受者是根据什么标识的呢?  数据包必须从一块网卡传输到另外一个网卡上面,而每一个网卡就会有一个地址,即数据包的发送地址和接收地址,(也称之为Mac地址)每一个网卡在出厂的时候都会有一个全世界唯一的Mac地址,长度为48Bit。 通常使用12个16进制数来表示。(如:14:5c:89:96:44:c1)注意:(有的软件可以更改计算机的Mac地址)前6个16进制数是代表厂商的编号,后6个代表厂商的网卡流水号。
  • 广播: 以太网数据包必须知道接收方的Mac地址才能将数据发送,在知道Mac地址的情况下是怎样发送的呢?以太网中并不是将数据包一对一准确地传输到方法,而是采用一种广播的形式,向本网络的所有计算机发放,让每台收到数据的计算机自行判断是不是接收方。如下图中,1好计算机向2号计算机发送数据包,同一个网络中的3,4,5也接受到这个包,它们读取包头找到接收方的Mac地址,然后与自身Mac地址对比,如果都相同就接受该包,否则就丢弃。 

    

  同一子网中用广播的形式还可行,但是如果不是属于同一子网,全球有成败一计算机,如果不同子网之间任然以以太网广播形式发送数据,显然是不现实的,所以不属于同一子网络的话就有了路由的方式发送数据。路由的意思即如何向不同的子网络去分发数据包,遗憾的是Mac地址只与厂商有光,和网络环境无关,这就导致了网络层的诞生。

  • 网络层

  网络层引入了一套新的地址,让我们能够区分不同的计算机是否在同一子网内,这个地址即网址。于是计算机就有了两个地址,一个就mac地址,一个就是网络地址,两种地址之间没有任何联系,mac地址绑定在网卡之上,网络地址由管理员分配的,网络地址确定计算机所在的子网络,mac地址负责将数据包发送到子网络中的目标网卡上。逻辑上就能知道是先处理网络地址然后处理mac地址的。由此又引入了ip协议。

  • IP协议

  • IP协议定义的地址叫做ip地址,目前广泛使用ipv4, ipv4中一个ip地址由32个二进制位组成,习惯分为4段10进制数字,(192.168.0.1)范围(0.0.0.0~255.255.255.255)互联网上的每一台计算都会分配到一个ip地址,一个ip地址分为两部分 ,假设192.168.0代表网络,后面一个3代表主机。同一子网的网络部分必然相同,事实上一个给一个ip地址我么是无法准确判断哪个部分为网络部分,(可以是前面24为,也可以是前面的16位),那么如何准确判断两个计算机是否属于同一子网络呢?就必须用到子网掩码,子网掩码表示子网络特征的参数,形式上类似ip地址(32位二进制数字),其网络部分全部是二进制1,主机部分全部是二进制0.于是假如一个ip地址的前24为表示网络部分,后8为表示主机部分的话,它的ip地址就为11111111-11111111-11111111-00000000,用10进制表示为225.225.225.0
  • IP数据包:根据ip协议发送的数据就叫ip数据包,ip的数据包也分为标头和数据两个部分,部分如下左图所示:其中必定包含了ip的地址信息,实际上ip数据包是直接放入以太网数据包的数据部分的,所以不用修改以太网的规格,这就是互联网分层结构的一个好处,上层的变动不会涉及下层的结构。于是以太网的数据包可以看做如下右图所示:标头(20-60个byte)主要包含版本号,长度,ip地址等信息。data(最大65515byte)于是当data的大小超过了以太网数据最大值的时候,就会将ip分割为多个以太数据包发送出去。通常发送数据情况下,对方的ip地址是已知的,但是mac地址不得而知,于是就有了ARP协议的存在。

                      

  • ARP协议:假设存在2台计算机,当两个计算机不属于同一子网络的时候,没法知道对方的mac地址,只能将数据包传送到两个子网络连接的网关处处理,当两个主机在同一个子网络的时候就可以使用ARP协议得到对方的mac地址,ARP协议是怎门做的呢?ARP协议发出一个数据包(也包含在以太网的数据包中)此包中包含了查询主机的ip地址和对方的mac地址。(此mac地址是用临时的6组16进制的数字表示一个广播地址)于是所在子网的每台主机都会收到该数据包,收到之后就会取出该包里面的ip地址,然后和自己的ip地址做一个比较,如果是相同的话就做回复,并上报自己的mac地址。如果不相同就丢弃该包。有了ARP协议之后,就可以得到同一个子网络内的主机mac地址。然后把数据发送至任意主机。   引出一个问题:我们在上网的时候同时打开了多个程序,(如浏览器和qq聊天),当我们接受一个数据包的时候,数据包是如何知道它是属于哪个程序的呢?于是就引入了一个参数:端口。
  •  端口:每一个数据包发送到主机的特定端口上,所以不同的程序会取到自己的数据,端口好都是0~65535之间的整数。正好16个二进制位。其中0-1023端口是系统占用的,(本地启动一个80端口可能会提示权限不够)
  • 传输层

   传输层的功能就是建立端口到端口之间的通信,相比之下,网络层是主机与主机之间的通信,只要确定主机和端口就可以实现程序之间的交流。所以unix系统中,把主机加端口叫做套接字(socket)有了它之后就进行网络编程了。网络编程的两个协议:

  ①UDP协议:格式就是在数据前面加上端口号。UDP数据包也由标头和数据包组成,如下左图:标头部分定义发出的端口和接收端口,data部分为具体的内容。然后将整个UDP的数据包又放到ip数据包的数据部分,前面说过ip数据包又是放到以太网数据包中的,所以整个以太网数据包又成了下面右图样子:UDP标头部分只有个字节。总长度不超过65535字节,正好可以放进一个ip数据包。优点:简单易实现。缺点是可靠性差。于是引入了TCP协议。

                             

  ②TCP协议:可以理解为有确认机制的UDP协议。每发出数据包都进行确认,如有遗失就重发。TCP有三次握手。可以保证数据不会丢失,缺点是过程实现复杂,消耗资源大,TCP数据包没有长度限制,通常限制不超哥ip数据长度。确保单个的tcp包不被分割。 TCP数据包是面向连接(如打电话先拨号建立连接)UDP是无连接的。即发送数据之前不需要建立连接。

    

  三次握手:

  

  • 应用层(所有能产生网络流量的程序)

  由于互联网是开放的网络架构,数据的来源五花八门,所以需要事先约定一些格式,不然根本没有办法解读。应用层的作用就是规定应用程序的数据格式。

      

   回到下图:图中1号计算机需要与4号计算机通信,由于1和4不在同一个子网内,于是先需要将数据包发送给子网1 的网关(geteway)也可以理解为路由器,网关1通过路由协议发现4计算机处于2关内,所以网关1会将数据发送给网关2然后由网关2再将数据发送给4号计算机。1号计算机要将数据发送给网关1的话,必须知道网关1的mac地址,所以数据包的目标地址分两种情况:

  1:当通信的计算机属于同一个子网络,只需要知道对方的mac地址和ip地址即可。

  2:当通信双放不在同一个网络。 需要知道网关的mac地址和对方计算机的ip地址。

      

  

  (1)动态ip地址:计算机开机之后自动分配到一个ip地址, 不会被别人设定,使用的协议叫DHCP协议(属于应用层的协议,建立在UDP协议之上所以其整个协议的数据包结果如下:)此协议规定:在每一个子网中,有一台叫做DHCP服务器的计算机专门负责此网络内的ip地址。所以有新的计算机加入到子网中,必须向DHCP服务器发送一个DHCP请求数据包,去申请一个ip地址和相关的网络参数。

        

 

经典面试题:访问网络的过程:

  在浏览器中输入url,然后改url会经过DNS(DomainNameSystem)解析而得到服务器的ip地址。

  如下图所示:蓝色为交换机,右边为服务器,左边为客户计算机,m开头表示mac地址,15.0.0.2表示ip地址。在数据传输的过程中间,ip地址决定了数据包最终到哪里去,mac地址决定数据在路由器中怎么走。

由于数据在传输过程中数据包后面携带的mac地址一直是原mac地址和目标路由器的mac地址,所以它是变化的,服务器在拿到数据的时候是不可能知道客户端的mac地址的,但是可以知道ip地址。

   数据封装的过程:

  

 

注意:数据帧中的FCS为校验码,校验是否数据完整无异常。

OSI模型对计算机网络故障排错的指导意义:

  • 物理层故障,首先查看链接状态,发送和接受的数据包是否正常;
  • 数据连路程故障, MAC冲突, ADSL欠费, 网速没有办法协商一致, 计算机链接遇到所悟的VLAN;
  • 网络层故障 配置错误的IP地址,子网掩码、或网关、路由器没有配置到达目标网络的路由;
  • 应用层故障,应用程序配置错误; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OSI七层网络模型的详细讲解 的相关文章

  • NVIDIA Jetson TX2 更新软件源

    1 xff0c 确定系统版本 ubuntu14 04是trusty xff0c ubuntu16 04是xenial 2 xff0c 先备份原文件sources list xff0c 防止误操作后无法恢复 将原来的内容使用 符号全部注释掉
  • 查看上次安装 Archlinux 的日期

    0x00 前言 刚刚接触到 Archlinux 的时候 xff0c 大家都说这个系统容易挂 xff0c 然而用到现在我也没重装过几回 如何查看上次安装 Archlinux 是什么时候呢 xff1f 下面给出几种方法 0x01 方法 查看文件
  • Ubuntu中文字符显示问题

    文件夹名字无法显示中文 我也不知道到底怎么解决的 xff0c 大概最后是执行了以下 xff0c 就莫名其妙好了 sudo apt install ttf mscorefonts installer y sudo dpkg configure
  • 用户不在sudoers文件中的解决方法&…

    在使用Linux系统过程中 xff0c 通常情况下 xff0c 我们都会使用普通用户进行日常操作 xff0c 而root用户只有在权限分配及系统设置时才会使用 xff0c 而root用户 的密码也不可能公开 普通用户执行到系统程序时 xff
  • Proxmox VE与常见的虚拟化平台比较

    1 Proxmox VE的简要介绍 Proxmox VE的简要介绍 根据Proxmox VE的官网介绍 xff0c Proxmox Virtual Environment xff08 简称Prxomox VE或PVE xff09 由位于奥地

随机推荐

  • Proxmox VE与常见的私有云方案比较(中)

    2 2 SmartX私有云解决方案 SmartX这家公司挺有意思的 xff0c SmartX 是番文的叫法 xff0c 这家公司好像不愿意或者是有意不让人知道他的中文名称叫啥 xff0c 不知道这是不是传说中的卑于内而媚于外 你翻遍了Sma
  • Proxmox VE 7.0的高级安装及系统盘分区-ZFS(中)

    2 2 ZFS文件系统安装方式 从Proxmox VE 3 4开始 xff0c Proxmox VE增加了ZFS文件系统作为可选的文件系统和根文件系统 Proxmox VE官方提供的ISO镜像已经集成了ZFS所需的软件包 xff0c 用户无
  • Proxmox VE逻辑卷管理LVM详解(1-4)

    Proxmox VE基于Debian Linux操作系统 xff0c 也就是说Linux操作系统的逻辑卷管理LVM在Proxmox VE也是适用的 当我们在使用Proxmox VE的时候 xff0c 如果发现某个分区的容量不够用了 xff0
  • KVM虚拟化解决方案系列之KVM部署篇(4-4)

    5 2 Ubuntu上安装虚拟机 Ubuntu上安装虚拟机的过程与CentOS上类似 xff0c 这里我也简单讲一下 第一步 xff0c 创建虚机镜像文件 使用命令 qemu img 创建一个空白的虚拟机镜像 xff0c 格式为qcow2
  • KVM虚拟化解决方案系列之KVM管理工具-绪论篇

    我们在 KVM虚拟化解决方案系列之KVM架构篇 有讲到两个重要的内容 xff0c 一个内容是 要实现一个可运行 可运维的KVM虚拟化解决方案 xff0c 需要解决两个问题 xff0c 第一个是虚拟化技术实现问题 xff0c 第二个是集群虚拟
  • KVM虚拟化解决方案系列之KVM管理工具-libvirt介绍篇

    KVM作为后起之秀 xff0c 在公有云Hytervisor市场中占主宰地位 xff0c 如一大批基于OpenStack二次开发的云厂商 而老牌的商业VMware则在私有云Hytervisor市场中占主宰地位 xff0c 仍然是各大中小企业
  • (状态压缩) 炮兵阵地(P1185)

    题意 xff1a 在一个二维方格中 xff0c 安置大炮 有平原有高山 xff0c 只有平原可以安 大炮的射程是四个方向 xff0c 距离为2格 求 xff1a 最多能安多少个大炮 方法 xff1a 对于每一行的一种状态用一个整数表示 xf
  • 隐藏UITabBarController的tabBar

    隐藏UITabBarController的tabBar的时候 xff0c 如果不做处理那么下方会多处49pix的白条或者其他颜色的条 xff0c 解决这个问题的方法如下 void setTabBarHidden BOOL hidden se
  • 在线编译多文件c++,c,python等

    在线编译 最近在找在线编译c 43 43 的网站 网上有很多 大多数都是单个文件编译运行 无法建立工程 今天 发现一个比较好的网站 可以直接拉取git的代码进行调试 支持打断点单步调试 支持一键commit等 有些功能还没有试 1 网址 h
  • gtest教程(记录小白从0学习gtest的过程)

    gtest使用教程 1 简介 之前对gtest一无所知 最近 找了些相关的资料 学习了下 这里主要记录了学习过程和相关知识点 什么是gtest gtest测试框架是在不同平台上 xff08 Linux xff0c Mac OS X xff0
  • blender摄像机怎么绕物体旋转

    1 添加物体和摄像机运动路径 贝塞尔圆 2 添加摄像机3 摄像机清零 alt 43 G alt 43 r alt 43 s 4 相机 添加跟随路径 标准跟随
  • steam++下载(最新,2023年)

    steam 43 43 改名字了 下载 https steampp net
  • Arduino+Esp32-wroom32E开发环境搭建(2023)

    这两天开始在Arduino下安装esp32 xff0c 经历了从自动安装到手动安装的过程 自动安装 xff0c 三个字评价 xff1a 太慢了 xff0c 然后还每次100 失败 xff0c 无语 然后开始手动安装 最后成功了 1 ardu
  • gtest 死亡测试

    1 死亡测试 在许多应用程序中 xff0c 如果不满足条件 xff0c 断言可能会导致应用程序失败 这些一致性检查确保程序处于已知的良好状态 xff0c 在某些程序状态损坏后尽早失败 如果断言检查了错误的条件 xff0c 则程序可能会在错误
  • 编译动态库

    静态库命令 ar rcs span class token operator span span class token punctuation span o libxxx span class token punctuation span
  • c/c++ backtrace打印函数调用栈

    效果 解析动态库libtest so和可执行文件m 打印原始栈 include lt execinfo h gt span class token keyword void span span class token operator sp
  • windows自动更新变成灰色不能选择的原因

    现象 发现我的电脑 属性 自动更新里面所有的按钮都已经是灰色的了 xff0c 而且每次开机都会自动运行自动更新 xff0c 关闭进程也无法停止 xff0c 几秒钟后又会开始更新 xff0c 而且更新后会要求重新启动 解决 xff1a 控制面
  • 文章UVM and C – Perfect Together的解读与思考

    解读UVM and C Perfect Together 文章获取方式 xff1a 路科验证 gt 资源 gt DVCon2018 USA zip gt 08 3 http rockeric com resource paper 文章主要内
  • flex详解

    先看效果 xff1a http www runoob com try playit php f 61 playcss justify content amp preval 61 space around 布局的传统解决方案 xff0c 基于
  • OSI七层网络模型的详细讲解

    七层网络结构 xff1a 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 一般也作五层 应用层 传输层 网络层 数据链路层 物理层 xff08 实体层 xff09 引申问题 xff1a TCP IP协议与http协议的区别 xf