网络安全之OSI七层模型详解

news2024/11/29 20:58:25

OSI七层模型分为控制层(前三层)和数据层(后四层)。从第七层到一层为;

应用层(7)接收数据

表示层(6)将数据翻译为机器语言

会话层(5)建立虚连接避免不同流量影响控制层面

传输层(4)区分流量与定义数据传输方式

网络层(3)为数据编制,寻址

数据链路层(2)定义格式,局域网或广域网

物理层(1)网络硬件的物理性质

前四层均在主机设备,后三层均在所有网络设备。

应用层:接收用户的数据。

表示层:将逻辑语言(即软件语言)转换成为机器语言(二进制语言),翻译,加密。

会话层:为每一种流量建立一条虚连接(避免每一种类型数据流量混杂,放置不同类型流量互相影响控制层面)。

传输层:两大功能;1.区分流量。2.定义数据传输方式。

1.区分流量;打上端口号(port ID)1-65535,其中分为静态端口和动态端口,静态端口(1-1023)是与流量一一对应并绑定的,其每一个数字都有对应的服务。动态端口(1024-65535)。常见的端口号有;HTTP--80(使用TCP协议),HTTPS--443(TCP),TELNET远程登录服务--23(TCP),SSH远程登陆“安全性较高,加密认证”--22(TCP),RIP--512(UDP),DNS--域名解析53(TCP和UDP)。

动态端口与流量一一对应,静态端口与流量一一对应并绑定。

2.定义数据传输方式:两种传输方式,可靠传输与不可靠传输。

可靠体现在于保证信息能传过去,不可靠只管传不管到,就相当于都能发数据,但前者保证传到,后者表示我传了,但是到没到就不知道了。

可靠传输的好处:数据完整,数据量小。

不可靠传输:1.大流量。2.实时性较高。3.对数据丢失不敏感。———适合于视频语音这种实时性比较高的传输,要求延迟低,不可能这边说了句话传过去时都过了几分钟甚至于几小时那种,可靠传输虽然也能但是对设备性能要求太高所以不合适。

怎么保证可靠传输有两个个机制保障:1.确认机制。2.重传输机制。——确认机制顾名思义就是传过去后要对方返回一个确认包,确认自己收到,若是在发送数据一段时间后没有收到对方发回的确认包则再发一次数据过去,直到收到对方发回的确认包,这就是重传输机制。

传输层封装有TCP和UDP,这两个都有一个端口号,它们将数据封装成一定格式。

TCP:传输控制协议,是一种面向连接的可靠协议。

UDP:用户数据包协议,是一种非面向连接的不可靠协议。

面向连接就是在数据连接之前,双方进行协商,确保数据可以传输,中间网络是通畅的。

如何保证面向连接;使用三次握手机制,下图为TCP三次握手机制讲解;

TCP三次握手可靠在于其采用的隐式确认+隐式确认,但通过TCP三次握手并不能说明TCP是一个面向连接的可靠协议,这只能保证面向连接,其可靠性要靠确认机制与重传输机制。

下图为TCP四次分手机制讲解:

以上四次分手中,客户端都是请求对方关闭对自己端口要断开连接,然后服务器确认之后看有无数据要发,发完数据或没有数据发则请求对方也关闭开放的这个端口,最后客户端再进行一个确认即可。注意的是中间有两个序列号用来确认对方身份,回复过来的就要序列号+1。

在传输TCP数据中有优化机制。

优化机制包括:流程控制(滑动窗口机制)、重排序;

流程机制:发送方根据接收方的处理能力与接收缓存大小来控制发送数据的速率,避免超出接收方能力而不能及时处理,TCP要求发送方维持一个接收窗口,接收方根据当前接收缓存大小动态调整接收窗口大小,其大小反映了接收方的容量。

重排序:TCP报文段作为IP数据来传输,在IP数据包的到达可能会失序,TCP报文段也可能失序,特殊情况下,TCP会将接收到的数据进行重排序,确保顺序正确后再交给应用层。

数据的分段传输:传输较大数据时会按照MTU值进行分段传输。

MTU:最大传输单元,默认为1500字节,可以修改(但不建议修改),超过1500字节就切片发送保证数据为1500字节以内。

扩充:

TCP数据帧与UDP数据帧结构;

TCP数据结构:

每一行32比特(4字节),一共5行,OPTION可选项与padding是垫片,填充项进行全0填充,这一行可有可无,DATA为我们的真实传输数据内容。所以标准的TCP头部大小为20个字节,source port为源端口(一般为随即的端口号),destination port为目标端口(访问的目标端口号)。sequence number为序列号,代表着数据的顺序。acknowledgement number为确认号,确认数据时使用,如果不需要确认则为全0,若是需要确认例如四次分手中的,ACK+序列号,则为序列号+1。dataoffset为数据偏移值,用于过于大的数据时进行分片,代表这个分片距离完整数据包头部的偏移值,第一个分片偏移值为0,第二个分片偏移值为第一个分片数据大小,第三个分片偏移值为前两个分片数据大小之和……。reserved为保留位。UGR为紧急值。ACK为标记位。PSH为暂停位,为1则暂停传输数据。RST为重置位。SYS为同步请求。FIN为终止。widow为窗口号,用于一次性发送多少个数据的确认。checksum为校验和,用于计算完整性。urgent pointer为紧急指针,一般默认为0用不到,option国内一般不用,国外的用。

UDP数据结构:

length为长度。标准的UDP大小为8个字节。

IPv4和IPv6数据包头部结构:

IPv4头部大小一般默认为20字节。version版本号大小4bit,0100=4为IPv4,0110=6为IPv6。IHL为IP头部长度,大小为4bit,默认值为0101=5,单位是32bit(4字节)也就是说IPv4头部大小为60字节到20字节之间,但其大小只能在20到60字节之间四字节递增。type of service 为服务类型TOS,大小为8bit,对数据流量进行标记时使用,QOS(服务质量)就是在此标记上进行,但TOS打标记不牵扯到QOS。total length为总长度,占16bit,描述的是ip数据包的总长度(头部加数据部分)。identicaltion 为标识符占16个bit,判断分片之间是不是一个数据的分片。flags占3个bit第一个bit为R保留位,第二个bit为DF不分片位若为0则没有置位代表数据被分片了,第三bit位MF更多分片位为0时代表后面没有分片了。fragment offset为分片偏移值占13bit,单位是字节,该分片距离完整数据包头部的前面的偏移值是多少(与TCP偏移值相似)。time to live 生存时间占8bit,范围0~255,单位最早为秒,现在为跳数(即可被路由次数,就是经过路由器次数)。protocol 协议号占8bit 范围0~255,0被保留,范围为1~255,用来描述上层使用什么协议。header checksum头部校验和占8bit,用来计算IP头部完整性。source address 源IP地址代表从哪来。destination address 目标IP地址,代表去哪里。options可选项,定义数据传输过程中进行标识,主要四个功能,严格选路;将数据到达目标地址中经过的所有路由记录在option中,严格选路就规定了数据必须走哪条路。松散路由;根严格选路相似,但是数据经过指定的几个路由器即可。记录路由;把数据怎么去的和回来时经过的路由器IP记录。时间戳;数据到达目标的时间。padding 填充项,默认为空,若是有信息,OPTION+PADDING必须是32bit或32bit的倍数。

IPv6针对IPv4存在的问题进行了重新的设计;IP长度128位bit。IPv4中的红色部分在IPv6中取消了,但是IPv6中加入了扩展头部进行分片之类的功能,因为2,4层都要进行校验,认为3层就没必要校验了。蓝色部分只是换了个名。traffic class流量分类。payload length总长度。next header下一个头部。hop limit跳数。flow label 流标签,目前是保留的。

————————————————————————————————————————

网络单元:

最小单位;bit(比特),一个二进制0,1

1000bit=1kb

1000kb=1Mb

1000Mb=1Gb

1000Gb=1Tb……

byte(字节)一个字节为8bit

1000B=1KB

1000KB=1MB

1000MB=1GB

1000GB=1TB……

以上单位中一个为bit一个为字节,其中换算中前者是小写b后者是大写B。

为什么是1000kb=1Mb一千为换算而不是1024,因为互联网中是1000,没有1024这一个概念,文件系统NTFS或FAT32,exFAT是按照1024个单位去换算的。这也是为什么100G的U盘插上电脑后,读取文件时是按照1024单元换算,导致我们看到的是小于100G的内存。

bit我们只在统计流量时使用,一般是用字节。

速率单位:

100Mbps=100兆比特每秒

12.5MBPS=12.5兆字节每秒

————————————————————————————————————————

PDU(协议数据单元);

4层PDU,也叫segment、分段、分片。数据分段,分片就是说的4层PDU。

4层PDU关注的是TCP还是UDP,端口号是多少,不同层PDU又有不同的叫法,4层PDU还有一个读法,保温,数据报文。

5,6层有的认为没有PDU,华为叫7层PDU为APDU,5层为SPDU,6层为PPDU。

思科对567层没有PDU的叫法。

网络层:

网络层的主要内容就是对数据进行编制,寻址。

编制协议:IP(IPv4,IPv6),IPX,aplle talk,novell,NSAP

IP地址:32个二进制,0和1构成用于编制。

网络掩码:32个二进制,连续的1+连续的0构成,连续的1代表网络位,连续的0代表主机位。

IPv4:采用32位二进制进行编制,一个二进制称为一位bit。

IPv6:采用128位二进制进行编制。

地址分类:

地址一共分为A/B/C/D/E共五类地址

地址分类详情可以查看该本文:TCP/IP卷一详解第二章Internet地址结构概要-CSDN博客

需要补充的是:特殊地址都不能配置;

单播:A、B、C类都属于单播地址,点对点(一对一)通信。

组播:一对多,D类地址:源服务器将资源发送到一个组播组上,当用户需要资源时,访问该组播组并成为组员,然后该组播组将资源复制传递给用户,可以更好的将数据转发和复制给尽可能远的网络节点,减轻资源服务器的负载。

1、1.0.X.X 无效地址(保留地址) 0.0.0.0 无效地址 占位

2、127.0.0.1 本地测试(127.X.X.X测试地址)

3、网络号:主机位全为0的IP就不是IP了,是一个网段。

4、受限广播地址:255.255.255.255 全为1,只能在同一网段中广播

5、直接广播地址:定向广播地址,网络位不变,主机位全为1;例如192.168.56.255/24 向192.168.56.0网段中所有用户发送广播,可以指定网段内广播,只需地址改为该网段的网络号不变,主机位全为1.

6、本地链路地址(link-local):{169.254.0.0 255.255.0.0}只有在上不了网时才出现,只有微软的有,当没有DHCP分配地址时,系统分配的。

该层3层PDU:packet包(数据包)

数据链路层:

数据链路层进行二层封装用来判断数局域网(以太网Ethernet)或广域网(PPP,HDLC,ATM)

二层根据物理层的不同传输介质来定义二层的格式。

数据链路层会根据不同的物理封装来定义二层封装,主要分为局域网封装和广域网封装。MAC地址也叫物理地址,硬件地址,烧录地址。

局域网封装分为两个子层:

LLC层:逻辑链路控制子层;主要任务是描述上层使用的什么协议。

MAC层:介质访问控制子层/媒体访问控制子层;主要用于我们在一个网段内通信,怎么通信。

MAC地址构成:48个二进制书写12个十六进制,书写方式为减分十六进制或点分十六进制;

减分十六进制XX-XX-XX-XX-XX-XX,用于终端,主机,手机,服务器。

点分十六进制XXXX.XXXX.XXXX,用于连接设备上,路由器,防火墙ASA。

MAC地址共48位二进制,由美国一机构掌握,买一个即前24位固定的MAC地址范围。

前24位:厂商ID——OUI(统一资源标识符)

后24位:产品ID——interface ID(接口标识符)

MAC地址无法修改但能伪装;优先网卡配置高级里>本地管理地址中>手动输入伪装。无线的比较麻烦。

二层PDU:frame帧

物理层:

该层关注网络硬件的机械特性、光学特性、电学特性(传输介质:光纤,双绞线)

双绞线(RJ45)又叫网线,一根网线中有8根线,两两绞合在一起。

双绞线有两种线序:

568A线序:绿白,绿,橙白,蓝,蓝白,橙,棕白,棕

568B线序:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕

平行线:又称直通线,线序相同,不同层设备使用平行线

交叉线:线序不同,同层设备使用交叉线。

全反线:又称为console线,配置线,线序相反,用于用户控制网络设备。

屏蔽双绞线(STP):屏蔽信号,屏蔽干扰,但也会减弱自身传输的信号,传输距离不远。

非屏蔽双绞线(UTP):不屏蔽信号。

弱电:路由器,双绞线使用。

强电:工业用电。

光纤两优点:快、抗干扰。

双绞线按拧度分类:3类,4类——(10Mbps),5类,超5类——(100Mbps),超6类——(1000Mbps)在6类线中8根线同时使用。一般双绞线中的8根线不是8根同时使用的,只使用其中的一部分,剩下的用作电话线或备用。

拧度:1cm拧一圈,1.5cm拧一圈等,这种称为拧度。

注意的是,并不是拧度越高传数据路带宽越高,主要是看材质。

OSI七层模型各层的工作的基本原理我们就差不多了解了,总的来讲OSI七层可以规划为一个数据的封装与解封装。

我们把数据产生的过程称为封装。接收数据进行读取的过程称为解封装。

下图为一个数据从产生传输到接收的完整封装和解封装过程:

网络层:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

http协议 tomcat如何访问资源 servlet理论介绍

tomcat介绍 bin是启动命令; conf是配置,可以修改端口号; lib是依赖的jar包; logs是日志 webapps是重点,在这里新建我们自己的javaWeb项目 tomcat如何访问资源 tomcat通过统一资源定位符(URL)来…

开源软件托管平台gogs操作注意事项

文章目录 一、基本说明二、gogs私有化部署三、设置仓库git链接自动生成参数四、关闭新用户注册入口 私有化部署gogs托管平台,即把gogs安装在我们自己的电脑或者云服务器上。 一、基本说明 系统环境:ubuntu 20.4docker安装 二、gogs私有化部署 前期准…

权限及权限操作

1.命令行解释器 Linux将命令行解释器称为外壳程序shell 命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈,解决了用户和操作系统沟通成本的问题。与此同时,命令行解释器还能够拦…

环境变量(全)

概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执…

设计模式——模板设计模式(Template Method)

模板设计-base 什么是模板? 举个简单的例子,以AABB的格式,写出一个词语,你可能会想到,明明白白,干干净净等, 这个AABB就是一个模板,对模板心中有了一个清晰的概念之后,…

[hpssupfast@mailfence.com].Elbie勒索病毒如何恢复数据和预防

[hpssupfastmailfence.com].Elbie是一种新型勒索病毒,快速恢复重要数据请添加技术服务号(safe130)。以下是关于elbie勒索病毒的详细信息: 病毒介绍: elbie勒索病毒,也称为PHOBOS勒索软件,它通过加密文件并要求支付赎金以恢复对文…

spring模块(六)spring监听器(1)ApplicationListener

一、介绍 1、简介 当某个事件触发的时候,就会执行的方法块。 当然,springboot很贴心地提供了一个 EventListener 注解来实现监听。 2、源码: package org.springframework.context;import java.util.EventListener; import java.util.fu…

【数据结构】双向循环链表专题解析

实现自己既定的目标,必须能耐得住寂寞单干。💓💓💓 目录 •✨说在前面 🍋知识点一:双向链表的结构 • 🌰1."哨兵位"节点 • 🌰2.双向带头循环链表的结构 🍋…

Java - Json字符串转List<LinkedHashMap<String,String>>

需求&#xff1a;在处理数据时&#xff0c;需要将一个Object类型对象集合转为有序的Map类型集合。 一、问题 1.原代码&#xff1a; 但在使用时出现报错&#xff1a; Incompatible equality constraint: LinkedHashMap<String, String> and LinkedHashMap 不兼容的相等…

社区送水小程序软件开发

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

猫头虎分享已解决Bug || 已解决ERROR: Ruby Gems安装中断 ⚠️ Bug 报告:Gem::RemoteFetcher::FetchError

猫头虎分享已解决Bug || 已解决ERROR: Ruby Gems安装中断 ⚠️ Bug 报告&#xff1a;Gem::RemoteFetcher::FetchError 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; …

四川汇昌联信:拼多多运营属于什么行业?

拼多多运营属于什么行业?这个问题看似简单&#xff0c;实则涉及到了电商行业的深层次理解。拼多多运营&#xff0c;顾名思义&#xff0c;就是在拼多多这个电商平台上进行商品销售、推广、客户服务等一系列活动。那么&#xff0c;这个行业具体包含哪些内容呢?下面就从四个不同…

redis深入理解之实战

1、SpringBoot整合redis 1.1 导入相关依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId&g…

Webstorm免费安装教程

一、介绍 WebStorm 具有智能化的代码编辑功能&#xff0c;如代码补全、重构、代码导航、错误检测等等&#xff0c;这些功能可以帮助开发人员提高编码效率&#xff0c;减少出错的可能性。同时&#xff0c;WebStorm 也集成了各种流行的前端框架和库&#xff0c;如 React、Angula…

Python3实现三菱PLC串口通讯(附源码和运行图)

基于PyQt5通过串口通信控制三菱PLC 废话不多说&#xff0c;直接上源码 """ # -*- coding:utf-8 -*- Project : Mitsubishi File : Main_Run.pyw Author : Administrator Time : 2024/05/09 下午 04:10 Description : PyQt5界面主逻辑 Software:PyCharm "…

【Linux】轻量级应用服务器如何开放端口 -- 详解

一、测试端口是否开放 1、测试程序 TCP demo 程序&#xff08;可参考&#xff1a;【Linux 网络】网络编程套接字 -- 详解-CSDN博客&#xff09; 2、测试工具 Windows - cmd 窗口 输入命令&#xff1a;telnet [云服务器的公网ip] [port] 二、腾讯云安全组开放端口 1、安全组设…

简单贪吃蛇的实现

贪吃蛇的实现是再windows控制台上实现的&#xff0c;需要win32 API的知识 Win32 API-CSDN博客https://blog.csdn.net/bkmoo/article/details/138698452?spm1001.2014.3001.5501 游戏说明 ●地图的构建 ●蛇身的移动&#xff08;使用↑ . ↓ . ← . → 分别控制蛇的移动&am…

【C++】list原理讲解及其实现

目录 一、认识list底层结构 二、list的构造类函数 三、迭代器 四、数据的访问 五、容量相关的函数 六、关于数据的增删查改操作 前言 要模拟实现list&#xff0c;必须要熟悉list的底层结构以及其接口的含义&#xff0c;在上一篇我们仔细讲解了list的常见接口的使用及其含义&…

consul启动Error_server_rejoin_age_max (168h0m0s) - consider wiping your data dir

consul 启动报错&#xff1a; consul[11880]: 2024-05-12T08:37:51.095-0400 [ERROR] agent: startup error: error"refusing to rejoin cluster because server has been offline for more than the configured server_rejoin_age_max (168h0m0s) - consider wiping you…

IntelliJ的Maven编译返回找不到有效证书

文章目录 小结问题及解决找不到有效证书找不到org.springframework.stereotype.Service问题IntelliJ: Cannot resolve symbol springframework 参考 小结 将IntelliJ工程拷贝到新的机器中&#xff0c;返回Maven编译返回找不到有效证书的问题&#xff0c;进行了解决。 问题及解…