网络分层架构(七/四层协议)详解

OSI七层模型和TCP/IP四层模型

业内普遍的分层方式有两种:OSI七层模型 和TCP/IP四层模型。记忆则为 “应表会传网数物”

关于协议:

① OSI七层模型详解

结构名

功能

主要设备

应用层

是最靠近用户的OSI层。用户接口、应用程序。应用层向应用进程展示所有的网络服务。当一个应用进程访问网络时,通过该层执行所有的动作。

网关

表示层

可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。

网关

会话层

通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。

网关

传输层

定义了一些传输数据的协议和端口号(WWW端口80等),端到端控,确保按顺序无错的发送数据包。如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从会话层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。

网关

网络层

路由,寻址,网络层确定把数据包传送到其目的地的路径。就是把逻辑网络地址转换为物理地址。如果数据包太大不能通过路径中的一条链路送到目的地,那么网络层的任务就是把这些包分成较小的包。在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。

路由器,网桥路由器

数据链路层

保证无差错的数据链路,一方面接收来自网络层(第三层)的数据帧并为物理层封装这些帧;另一方面数据链路层把来自物理层的原始数据比特封装到网络层的帧中。起着重要的中介作用。数据链路层由 IEEE802 规划改进为包含两个子层:介质访问控制(MAC)和逻辑链路控制(LLC)。

交换机、网桥、网卡

物理层

主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

集线器、中继器、电缆,发送器,接收器

② TCP/IP 四层模型详解

4层协议和对应的标准7层协议的关系如下图:

IP的作用:用于区分不同的计算机是否属于同一个子网络。

Mac的作用:用来标识具体用户,为了解决IP盗用的安全问题。

例如一个局域网内,交换机会把IP和Mac地址做一个映射操作,交换机就是根据Mac地址进行发送和接受数据的,而端口号port则是决定与哪个应用进行通信和信息交互。

链路层:以太网规定,连入网络的所有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。通过网卡能够使不同的计算机之间连接,从而完成数据通信等功能。网卡的地址——MAC 地址(全球唯一),就是数据包的物理发送地址和物理接收地址。

链路层速记:ARP(核心协议)

源mac —— 目标mac

ARP 协议作用: 借助 IP 获取 mac 地址。基于MAC地址的这种特点,局域网采用了用MAC地址来标识具体用户的方法。注意:具体实现:在交换机内部通过“表”的方式把MAC地址和IP地址一一映射,也就是所说的IP、MAC绑定。

*: MAC 地址是绑定在网卡上的,它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1]  。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 [2]  。

IP:地址则是管理员分配的

网络层:网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”,这是我们平时所说的IP地址。网络层协议包含的主要信息是源IP和目的IP。

网络层速记:IP(核心协议)

源IP —— 目标IP

IP协议的作用: 在 网络环境中唯一标识一台主机。

IP地址本质:2进制数。—— 点分十进制 IP地址 (string)

IP和MAC的作用:

网络地址(IP):帮助我们确定计算机所在的子网络

MAC 地址:则将数据包送到该子网络中的目标网卡。

处理顺序:从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址

传输层:端口:确定进程

  1. 对于同一个端口,在不同系统中对应着不同的进程
  2. 对于同一个系统,一个端口只能被一个进程拥有

传输层速记:

TCP / UDP(核心协议)

port —— 在 一台主机上唯一标识一个进程。

应用层:接到传输层传递过来的数据就要对数据进行解析,应用层就是规定程序的数据格式

应用层速记:

ftp、http、自定义

对数据进行封装。 解封装

TCP/IP:TCP/IP协议是一个大家族,不仅仅只有TCP和IP协议,它还包括其它的协议

应用关系:通过网络层IP确认交互端,通过MAC确认信息发送目标,最终通过端口指定要发生信息交互的程序

③ 如何实现通信?

数据通信:

封装: 应用层 —— 传输层 —— 网络层 —— 链路层 。 没有经过封装的数据,不能在网络环境中传递。

解封装 : 链路层 —— 网络层 —— 传输层 —— 应用层

从上往下,每经过一层,协议就会在包头上面做点手脚,加点东西,传送到接收端,再层层解套出来,如下示意图:

我们先从应用层开始讲起:

应用层:规定应用数据的数据格式,比如说FTP、DNS、SMTP等等,同时HTTP协议也属于应用层的范围。通俗来讲,应用层决定这一次通信要干嘛。

传输层:建立端口到端口的通信,提供两台计算机之间的数据传输,传输层中包含着两个很叼的协议,分别是TCP和UDP协议。面试中经常提及的三次握手,四次挥手就是TCP协议的部分内容

网络层:通过MAC地址和IP地址将互联网上的任意两台主机建立通信,网络层则是用来处理这些流动的数据包,也就是如果把相应的数据包路由到指定的地点,为通信时的网络传输选择传输路线

数据链路层:数据链路层包含了软件与硬件的接口部分,以及各种网络设备的硬件,也就是整个网络通信过程中最底层的基础设施,确定电信号0和1的分组方式

简单了解了每一层的作用之后,我们试着串起来,摸索一下一次整体的http请求到响应的过程。

拿访问google做个例子

  1. 访问google.com,按下回车。
  2. 应用层准备好请求报文,通过DNS服务进行域名解析,得到google的ip地址,并将报文发到传输层。传输层收到报文后,会将请求的数据包进行拆分,打包,并对每个包裹打上tag。在请求报文的基础上,加上一层TCP的首部信息,然后发往网络层。
  3. 到了网络层以后,IP协议就发挥了巨大的作用,IP协议中需要两个比较重要的信息,那就是ip地址和mac地址。ip已经在应用层通过dns解析出来了,那mac怎么办。。。真尴尬,然而这时ARP协议又冒了出来,它可以根据ip地址反向查询到目标主机的mac地址。好了,现在啥都有了,打包带走,把数据发到数据链路层。
  4. 终于走到基础设施这里了,此时数据包就在一根根光纤中旋转跳跃的奔向目的地,当然,整个过程不一定是直达的,可能需要经过各种中转站,就跟坐火车转车一样的。
  5. 请求到达服务器后,先从数据链路层往上走,并验证消去以太网首部信息,在网络层消去IP首部,在传输层消去TCP首部,就像剥洋葱一样一层一层去皮,最后剩下的就请求报文。在应用层对请求做出处理之后,需要对请求返回一个响应。而整个响应的传输过程就和请求一样,一层一层的封装,响应到达客户端时再一层一层的消去首部,最后呈现响应的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/467275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【超图】SuperMap如何使知识图谱与BIM数据的绑定

作者:taco 近两年知识图谱的概念突然大火了起来,随之而来的就是用户的各种需求,你们的知识图谱能干什么呢?知识图谱有哪些应用呢?在结合客户的一些需求,以及自身的一些想法,写下这篇文章。 一、…

【涨薪技术】0到1学会性能测试 —— 参数化关联

前言 上一次推文我们分享了性能测试工作原理、事务、检查点!今天给大家带来性能测试参数化,检查点知识!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~ 01、性…

类和对象-1

文章目录 面向过程和面向对象的概念类的引入访问限定符类的大小this指针 面向过程和面向对象的概念 面向过程是一种按照步骤顺序执行的编程方式,而面向对象则是以对象为中心,将数据和操作封装在一起。在面向对象编程中,可以通过定义类和对象来…

stm32-模拟数字转化器ADC

接线图: #include "stm32f10x.h" // Device header//1: 开启RCC时钟,包括ADC和GPIO的时钟//2:配置GPIO将GPIO配置为模拟输入模式//3:配置多路开关将左边的通道接入到规则组中//4:配置ADC转…

zookeeper安装配置

zookeeper是什么 ZooKeeper是一个分布式的, 开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是 ​​​​​​​Hadoop和Hbase的重要组件。它是一个为​​​​​​​分布式应用提供一致性服务的软件,提供的功能…

redis学习-Set集合类型相关命令及特殊情况分析

目录 1. sadd key value1 value2 ... 2. smembers key 3. sismember key value 4. scard key 5. srem key value1 value2 ... 6. srandmember key num 7. spop key num 8. smove key1 key2 value 9. sdiff key1 key2 key3 ... 10. sinter key1 key2 ... 11. sunion key1 key2 .…

mybatis缓存(学习笔记17)

1、什么是缓存:存在内存中的临时数据 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘(关系数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决…

分析云星空数据用奥威-金蝶BI,快且直观

财务指标计算难,数量太大,报表需求太多,报表根本做不完?如果云星空用户遇到这种情况,建议用奥威-金蝶BI方案。预设分析模型和BI报表,注册、下载并执行方案,立得200多张BI数据可视化分析报表&…

MS16_016 漏洞利用与安全加固

文章目录 环境说明1 MS16_016 简介2 MS16_016 复现过程3 MS16_016 安全加固 环境说明 渗透机操作系统:kali-linux-2024.1-installer-amd64漏洞复现操作系:cn_windows_7_professional_with_sp1_x64_dvd_u_677031 1 MS16_016 简介 MS16_016 漏洞产生的原因…

【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-网络构建-试卷

极安云科专注职业教育技能竞赛培训4年,包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点,提供完整全面的系统性理论教学与技能培训,成立至今持续优化教学资源与讲师结构&#xff0…

代码随想录刷题day27|组合总和II组合总和II分割回文串

文章目录 day27学习内容一、组合总和-所选数字可重复1.1、代码-正确写法1.1.1、为什么递归取的是i而不是i1呢? 二、组合总和II-所选数字不可重复2.1、和39题有什么不同2.2、思路2.2.1、初始化2.2.2、主要步骤2.2.3、回溯函数 backTracking 2.3、正确写法12.3.1、为什…

NB-IoT模块

目录 一. NB-IoT模块实物图 二. BC20/NB-IoT模块产品规格 三. 指令顺序 1. AT判断BC20模组是否正常 2. ATE0返回OK,已经返回回显 3. ATCSQ 4. AT_CEREG? 5. ATCGATT? 6. ATCGATT? 四. OneNet 连接 1. AT 查看 NB(当前NB),云平台根据这两个…

【全网最详细】ComfyUI下,Insightface安装指南-聚梦小课堂

🥮背景 ComfyUI下使用IP-adapter下的faceID模型的时候,大家可能会遇到如下错误: Error occurred when executing InsightFaceLoader: No module named insightface File "F:\ComfyUI-aki\execution.py", line 151, in recursive_…

寻找可能认识的人

给一个命名为:friend.txt的文件 其中每一行中给出两个名字,中间用空格分开。(下图为文件内容) 题目:《查找出可能认识的人 》 代码如下: RelationMapper: package com.fesco.friend;import or…

【mysql】聚簇索引和非聚簇索引(B树和B+树)

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: mysql 目录 一、索引分类 二、索引的数据结构 2.1 B树:改造二叉树 2.2 B树:改造B树 三、Mysql索引实现—InnoDB引擎 3.1 主键索引(聚簇索引) 3.2 …

在Python中执行分位数回归

线性回归被定义为根据给定的变量集构建因变量和自变量之间关系的统计方法。在执行线性回归时,我们对计算响应变量的平均值感到好奇。相反,我们可以使用称为分位数回归的机制来计算或估计响应值的分位数(百分位数)值。例如&#xf…

每日OJ题_牛客HJ12 字符串反转(IO型OJ)

目录 牛客HJ12 字符串反转 解析代码 牛客HJ12 字符串反转 字符串反转_牛客题霸_牛客网 解析代码 #include <iostream> using namespace std; int main() {string str "";cin >> str;int left 0, right str.size() - 1;while (left < right){ch…

Python——字典

一、字典特性介绍 字典在 Python 中极为重要&#xff0c;是属于映射类型的数据结构。 字典有⼀对⼉⼤括号组成 {} , 字典内的元素都是成对⼉出现的 {"a":1} , 他们⽤英⽂的冒号( : )隔开, 左边叫做键(key),右边的叫值(value), 通常叫做键值对⼉。 每个元素⽤英⽂的逗…

Java项目:62 基于ssm的校园驿站管理系统+jsp

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员管理快递仓库信息&#xff0c;管理待发货信息&#xff0c;管理已收快递&#xff0c;管理物流以及留言信息&#xff0c;管理员工和用户资…

PSCA复位控制集成之复位管理

电源模式转换 进入任何使域中的组件变为非功能性的电源模式的关键要求是确保静止状态。与其他电源域的所有未完成交互&#xff0c;如总线事务&#xff0c;必须已经完成&#xff0c;并且组件必须保持静止状态&#xff0c;而不管其边界的活动如何。 在支持的情况下&#xff0c;…