05-网络的四层协议和七层协议

2023-11-12

TCP/IP网络分层模型

        TCP/IP的设计创造性的提出了分层的概念,把复杂的网络通信划分出多个层次,再为每一个层次分配不同的职责,层次内只专心做好自己的事情,用分而治之的思想把一个大麻烦拆分成了数个小麻烦,从而解决了网络的难题。

        TCP/IP协议总共有四层,就想搭积木一样,每一层需要下层的支持,同时又支撑着上层,任何一层被抽掉都可能会导致整个协议栈坍塌。

        第一层叫做链接层(linke layer),负责以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标记网络上的设备,所有有时候也叫MAC层。

        第二层叫网际层或者网络互联层(Internet layer),IP协议就处在这一层。因为IP协议定了IP地址的概念,所以就可以在链接层的基础上,使用IP地址取代MAC地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把IP地址再翻译成MAC地址就可以了。

        第三层叫做传输层(transport layer),这个层协议的职责是保证数据在IP地址标记的两点之间可靠的传输,是TCP协议工作的层次,另外还有一个它的伙伴UDP。

        TCP协议是一个有状态的协议,需要与对方建立连接后才能发送数据,而且保证数据不丢失不重复。而UDP则比较简单,它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发送到对方。两个协议的另一个重要区别在于数据的形式。TCP的数据是连续的“字节流”,有先后顺序,而UDP则是分散的小数据包,是顺序发,乱序收。

        第四层叫做应用层(application layer),由于下面的三层把基础打得非常好,所以在这一层就百花齐放了,有各种面向具体应用的协议。例如Telnet、SSH、FTP、SMTP等等,当然还有HTTP。

        MAC层的传输单位是帧(frame),IP层的传输单位是包(packet),TCP层的传输单位是段(segment),HTTP的传输单位则是消息或者报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

        OSI网络分成模型

        OSI的全称是开放式互联网通信参考模型(Open System Interconnection Reference Model)

TCP/IP发明于1970年代,当时除了它还有很多其他的网络协议,整个网络世界比较混乱。这个时候国际标准组织(ISO)注意到了这种现象,感觉野路子太多,想要来个大一统。于是 设计出了一个新的网络分层模型,想用这个新框架来统一既存的各种网络协议。

        OSI模型分了七层,部分层次和TCP/IP很像,从下到上分别是:

        1.第一层:物理层,网络的物理形似,例如电缆、光纤、网卡、集线器等等;

        2.第二层:数据链路层,它基本相当于TCP/IP的链路层;

        3.第三层:网络层,相当于TCP/IP里的网际层;

        4.第四层:传输层,相当于TCP/IP里的传输层;

        5.第五层:会话层,维护网络中的连接状态,即保持会话和同步;

        6.第六层:表示层,把数据转为合适、可理解的语法和语义;

        7.第七层:应用层,面向具体的应用传输数据。

        OSI分成模型在发布的时候就明确的表明是一个参考,不是强制标准,但OIS模型也是有优点的。对比一下就可以看出,TCP/IP是一个纯软件的栈,没有网络应用最根基的电缆、网卡等物理设备的位置。而OIS则不足了这个缺失,在理论层面上描述网络更加完整。

        还有一个更重要的形式上的优点:OSI为每一层标记了明确的编号,最底层是一层,最上层是七层,而TCP/IP的层次从来只要名字而没有编号。显然,在交流的时候说七层要比应用层更简单快捷。

        综合以上几点,在OSI模型之后,四层和七层这样的说法就逐渐流行开了。不过在实际工作中,这种说法只是理论上的层次,而不与显示完全对应。

        两个分层模型的映射关系

        TCP/IP和OSI一个是四层模型,一个是七层模型,这两者应该如何映射或者说如何解释呢?

OSI在设计之初就参考了TCP/IP等多个协议,可以比较容易但不是很精确地实现了对应关系。

        1.第一层:物理层,TCP/IP里无对应;

        2.第二层:数据链路层,对应TCP/IP的链接层;

        3.第三层:网络层,对应TCP/IP的网际层;

        4.第四层:传输层,对应TCP/IP的传输层;

        5.第五、六、七层:统一对应到TCP/IP应用层;

        OSI的分层模型在四层以上分的太细,而TCP/IP实际应用时的会话管理、编码转换、压缩等和具体应用经常联系的很紧密,很难分开。例如,HTTP协议就同时包含了连接管理和数据格式定义。所谓的四层负载均衡就是指工作在传输层上,基于TCP/IP协议的特性,例如IP地址、端口号等实现对后端服务器的负载均衡。所谓的七层负载均衡就是指工作在应用层上,看到的是HTTP协议,解析HTTP报文里的URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。

        TCP/IP协议栈的工作方式

        TCP/IP协议栈是如何工作的呢?

        你可以把HTTP利用TCP/IP协议栈传输数据想象成一个发快递的过程。假设你想把一个玩具送给你朋友,但你需要先用个塑料袋套一下,这件玩具相当于HTTP协议里要传输的内容,比如HTML,让后HTTP协议为它加一个HTTP专用附加数据。你把玩具交给快递小哥,为了保护货物,他又加了层包装再贴了个标签,相当于在TCP层给数据再次打包,加上了TCP头。接着快递小哥下楼,把包括放进了车里,运送到集散地点,然后装进大卡车里,相当于在IP层、MAC层对TCP数据包加上了IP头、MAC头。之后经过漫长的运输,包裹到达目的地,要卸货再放进另一位快递员的三轮车,就是在IP层、MAC层传输后拆包。快递员到了你朋友家门口,撕掉标签,去除了TCP层的头,你朋友再拆掉塑料袋包装,也就是HTTP头,最后拿到了玩具,也就是真正的HTML页面。

        这个比喻里省略了很多TCP/IP协议里的细节,比如建立连接、路由、数据切分与重组、错误检查等,但核心的数据传输过程差不多。

        HTTP协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。

        接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层去拿到自己的数据。

        但下层的传输过程对于上层是完全透明的,上层也不需要关心下层的具体细节,所以就HTTP层次来看,它不管下层是不是TCP/IP协议,看到的只是一个可靠的传输链路,只要把数据加上自己的头,对方就能原样收到。

        

 

        小结

        1.TCP/IP分为四层,核心是二层的IP和三层的TCP,HTTP在第四层;

        2.OSI分为七层,基本对应TCP/IP,TCP在第四层,HTTP在第七层;

        3.OSI可以映射到TCP/IP,但这期间一、五、六层消失了;

        4.日常交流的时候我们通常使用OSI模型,用四层、七层等术语;

        5.HTTP利用TCP/IP协议栈逐层打包再拆包,实现了数据传输,但下面的细节并不可见。

        有一个辨别四层和七层比较好的小窍门,两个凡是:凡是由操作系统负责处理的就是四层或四层以下,否则凡是需要由应用层序(也就是自己写的代码)负责处理的就是七层。

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

05-网络的四层协议和七层协议 的相关文章

随机推荐

  • ABB 120 六轴机械手臂编程调试(三)

    下一步进行机械手臂的程序编写 程序只是进行简单的点位运动 实现抓取功能 程序控制的点位表 输入点位 点位描述 输出点位 点位描述 DI5 夹取完成 DO5 夹取物料 DI6 放料完成 DO6 放下物料 DI7 回原点 DO7 设备就绪 DI
  • Python练习——基础练习题2

    因为控制台会让不断输入 索性就把input放到注释里了 这一片主要练习if判断和while循环 初级 判断下列语句的打印结果 1 print True and True or True 2 print True and True or Fa
  • 因果图分析法例子

    某软件规格说明书包含这样的要求 第一列字符必须是A或B 第二列字符必须是一个数字 在此情况下进行文件的修改 但如果第一列字符不正确 则给出信息L 如果第二列字符不是数字 则给出信息M 解答 1 根据需求 分析出原因和结果如下 原因 1 第一
  • smbms(超市管理系统)源码 + 分析

    在项目开始之前 我们首先要对项目的整体架构分析一下 该项目一共分为四个模块 登录注销 用户管理 订单管理 供应商管理 其中用户管理 订单管理以及供应商管理都是需要对数据库进行crud的 项目的整体架构图如下 1 前期准备 1 项目架构 2
  • Android中Activity跳转到具体的Fragment的方法

    1 首先在需要跳转的Activity写此代码 Intent intent new Intent from MainActivity class intent addFlags Intent FLAG ACTIVITY SINGLE TOP
  • 理解Android上下文Context

    Context使用场景总的来说分为两大类 使用Context调用方法 比如启动Activity 访问资源 调用系统级服务等 调用方法时传入Context 比如弹出Toast 创建Dialog等 Activity Service和Applic
  • 安装snownlp报错 error: subprocess-exited-with-error

    安装snownlp报错error subprocess exited with error 解决方案重新安装importlib metadata pip uninstall importlib metadata pip install im
  • Zabbix监控平台部署实验——自定义zabbix监控项目

    Zabbix系列文章目录 第一章 Zabbix5 0版本的安装教程 第二章 Zabbix监控平台部署实验 自定义zabbix监控项目 目录 Zabbix系列文章目录 前言 二 操作步骤 1 安装配置环境 2 授权zabbix server可
  • STM32HAL库的基本使用(1)- GPIO引脚配置

    前言 作者使用的是STM32L431RCT的开发板 Cortex M4的内核 是大学老师教学用的 原理图如下 原理图下载链接 https pan baidu com s 1c8WFBO9bPxarzaOKqDrl0Q pwd 6666 提取
  • Android中Recycler网格布局管理器GridLayoutManager用法

    使用RecyclerView可以制作出类似GridView的样式 但比GridView更加强大 这里我们就介绍一下RecyclerView和GridLayoutManager结和的用法 1 GridLayoutManager常用方法 构造函
  • ROS:开机自启动

    Ubuntu14 04 网上很多资料说在 etc rc local中添加脚本 实验之后完全没用 可能是系统版本不对 解决 Ubuntu14 04 开机项命令 gnome session properties 点击 add name 名字 c
  • mysql count(*)、count(1) 、count(列名)、count(distinct expr)

    文章目录 概述 优化 MyISAM InnoDB 参考文档 https dev mysql com doc refman 8 0 en group by functions html function count 概述 count 为 SQ
  • 蓝桥杯每日一题2023.9.8

    蓝桥杯2023年第十四届省赛真题 飞机降落 C语言网 dotcpp com 题目描述 N 架飞机准备降落到某个只有一条跑道的机场 其中第 i 架飞机在 Ti 时刻到达机场上空 到达时它的剩余油料还可以继续盘旋 Di 个单位时间 即它最早 可
  • Learning Video Object Segmentation from Static Images

    Abstract 论文灵感来源于 实例分割和目标跟踪 特点 1 我们的模型在每帧的基础上进行 并由前一帧的输出导向下一帧中的关注对象 2 一个高度准确的视频目标分割可以用一个卷积神经网络并用静态的图片来训练 3 使用在线和离线的策略 前者产
  • 为什么那么多的人选择到Java培训机构学习

    目前IT行业Java编程是最炙手可热的技术 Java应用范围广泛 企业在大量招收Java人才 薪水也随之上涨 发展前景越来越好 因此现在有越来越多的人发现了这片美丽的新大陆 都正在拼命往里的挤 一些觉得Java培训机构费用贵的同学会选择自学
  • public Map kaoYanAllStation() { Map map = new HashMap<>(); ...

    首先 根据代码中的注释可以看出 该方法主要是获取各种气象数据 对其进行计算和比较 然后将结果存储在一个 Map 对象中返回 为了优化这段代码 可以考虑以下几个方面 减少重复代码 在代码中可以看到 获取历年同期降水和温度数据的代码几乎一模一样
  • LVS常用模式(DR、NAT、TUN)以及ldirector和keepalived

    1 LVS简单介绍 1 lvs定义LVS是Linux Virtual Server的简写 意即Linux虚拟服务器 是一个虚拟的服务器集群系统 LVS集群采用IP负载均衡技术和基于内容请求分发技术 调度器具有很好的吞吐率 将请求均衡地转移到
  • Java学习教程,Java从入门到精通,全套Java视频教程+笔记+配套工具

    目录 一 大纲 一 Java基础 二 计算机基础 三 工具的使用 四 数据库 五 web前端 六 JavaWeb 七 框架 八 互联网分布式技术 发现身边很多自学java却放弃的 真的挺可惜的 白白浪费了几个月宝贵的时间 且放弃一次 就会有
  • 第二十二章 Spring AOP⾥⾯的代理知识

    1 静态代理和动态代理 什么是代理 为某 个对象创建 个代理对象 程序不直接 原本的对象 是由创建的代理对象来控制对原对象 通过代理类这中间 层 能有效控制对委托类对象的直接访问 也可以很好地隐藏和保护委托类对象 同时也为实施不同控制策略预
  • 05-网络的四层协议和七层协议

    TCP IP网络分层模型 TCP IP的设计创造性的提出了分层的概念 把复杂的网络通信划分出多个层次 再为每一个层次分配不同的职责 层次内只专心做好自己的事情 用分而治之的思想把一个大麻烦拆分成了数个小麻烦 从而解决了网络的难题 TCP I