初识网络基础《网络七层模型详解》

2023-05-16

坚持原创输出,点击蓝字关注我吧

5d709d322f8a11d7639cd357f69b8ffb.png
图片来自网络

目录

  • 一、初识网络基础

  • 二、网络七层模型详解

    • 1.物理层

    • 2.数据链路层

    • 3.网络层

    • 4.传输层

    • 5.会话层

    • 6.表示层

    • 7.应用层

  • 三、总结

一、初识网络基础

其实网络刚刚开始发展的时候,它并没有这么一个复杂的模型,它最开始只有一层。随着网络的发展,网络上的功能越来越复杂,单一的网络结构就不能再满足人们的需求了。

所以呢,人们就开始对网络进行分层。让每一层都执行工作,各司其职,来实现网络上复杂的工作流程。

发展下来就出现了2个非常重要的模型:OSI七层模型、TCP/IP四层协议栈。这两个模型所定义出来的层级,工作都差不太多。

「OSI七层模型:」 是ISO组织在1985年研究的网络互联模型。

「目的:」 刚开始提出来只是为了实现2台机器的互联,怎么实现互联?

提出了一个统一的规范,两台机器使用统一的一个规范标准进行通信。可以把范围扩大,可以实现很多台机器的「互联」

形成了互联网最早的形态。「互联网」的形态其实就是这个时候提出来的。所有的网络活动基本上都在这七层中间来实现的。

在浏览器里输入百度的网址,按下回车就返回了百度的页面,这个过程就基本都可以在OSI七层模型中找到每一层的实现历程。

为了详细知道,输入百度网址返回一个页面,这个过程具体怎么实现的,就需要详细了解下这七层分别做什么样的工作。

二、网络七层模型详解

1.物理层

1.1实现两台机器互联,机器和机器之间如何通信?

最开始的需求是把两台机器联接起来,让它们通信。物理层就根据这个需求运用而生。

物理层实现了什么功能呢?

它提供了肉眼可见的物理介质,比如网线(双胶线)、光纤、无线电波,这些都可以实现机器之间的基本连接。

1.2机器间的通信是以什么样的形式存在呢?

像这样的一个信息在物理介质里面其实就是一个计算机语言,比如说:0101二进制的一个形式存在。

在专业名词里这个二进制也叫做电信号(比特流)。物理层的出现能够让两台电脑通过物理介质发送比特流了。

比特流还是0101这样一个机器的语言,这种0101的比特流其实是一个没有什么意义的一个数据。怎么让它变成一个有意义的数据呢?

2.数据链路层

针对这个需求,就产生了数据链路层。对无意义的比特流进行分组,这些0101的二进制的电信号,对这些二进制以8个为一组。8位一组形成了一个字节,这样的一个数据被它进行分组之后,然后根据这个分组,依次按顺序发送数据。

2.1这样的数据就会变成一个有特殊意义,上面层级能够认识的数据,这就是数据链路层实现的第一个需求。

虽然数据变成机器间可以认识的一个有意义的数据,但是机器收到这个数据怎么知道这个数据是发给我的呢?

2.2怎么确认这个数据是发给我的呢?网络中是怎么去定义这个事情?

数据链路层定义了mac地址。机器都有一个网卡,(电脑-以太网-适配器-详细信息,可以看到无线网卡的物理地址,其实就是每一块网卡的独有的地址,理解成这个网卡的身份证)。mac地址是唯一的,mac地址就是标识这台机器的物理地址,现在如果电脑a发给电脑b一个信息,需要带上mac地址。

就像寄信,寄信的时候需要写寄件人的地址和收件人的地址。

对应物理网卡,物理网卡其实也有个原mac地址,把自己mac地址带上,也会带上收件人的地址(目的地址),就知道我要发给谁并告诉对方是谁发的,方便对方给我回信。

那它就知道应该向谁去回复。这个就是通过mac地址解决的。

2.3数据链路层的数据格式:帧。

通过数据链路层,计算机之间可以正常传数据包,但是现在有2个主机,一个主机a,主机f,两台主机间通信,但是中间隔着bcde主机,它们两个不是直接连接的机器,它们两个怎么实现直接通信呢?

如果两个主机离得特别远,中间可以实现通信的路径有很多条,怎么选择最近的路径通信呢?

数据链路层通过mac地址识别对方主机和自身的主机,怎么知道对方的mac地址?

3.网络层

3.1第一个解决怎么知道对方的mac地址?

定义了一个协议:arp的协议,实现的功能就是做地址解析,通过ip地址去知晓对方的mac地址。

3.2第二个需求:主机a和主机f之间隔着很多别的主机,两个主机可能不在一个子网里面,就没办法直接通信。去判断它们两个是否在一个子网,怎么判断?

定义了一个协议:ip协议去判断发送者和接收者是否在同一个子网,怎么发送数据。

3.3路径很多,怎么选择最优的路径?

网络层同样定义了一组协议,就是路由协议

一组路由协议:静态路由协议,动态路由协议(rip,ospf,bgp协议)。这些都是常用的动态路由协议。

这三个需求都是网络层给大家解决的问题。网络层是最关键的一层,实现的功能特别多。

数据包在网络里可以正常发送了,如果发送的数据特别的多或者单个数据包特别大,在网络中传输需要很长的时间,中间的网络中断了,怎么才能保证重传?

如果重传,怎么确定数据包完整且正确?

4.传输层

实现的第一个功能,对发送的数据进行一个封装。

通过tcp协议udp协议封装的。这2个协议对数据包进行封装后,让数据包一个一个按顺序依次发送。

这样封装能够保证数据包是完整且准确的。还有一个功能,就是两台主机,都是用两个应用进行通信(例如两个人qq聊天)。

所以,怎么判断我的电脑上的qq发送给你的,你就是用qq回应的呢?

我的电脑上不止一个应用程序,那我怎么判断你是用qq接收数据而不是用别的呢?

也是通过传输层实现,定义了端口的概念,实现应用程序的寻找。

当数据包到达传输层后,会有一个端口,然后呢,我们的应用程序通过端口寻找到对应的程序,就去发给对应程序进行数据处理。

5.会话层

如果数据特别大,中断需要重传,是不是不应该重头开始传,应该断点续传,就由会话层实现的。

会话层:从校验点继续恢复数据进行重传。这个功能对网络上的数据传输很重要(大文件传输)。

实现了自动收发包的功能以及自动寻址的功能。

6.表示层

计算机有很多的操作系统:windows/mac/linux系统

各种系统间的语法不一样的。不同系统间进行通信的话,这个就是表示层的工作了。

其实就是一个翻译的工作,提供一种公共语言,让不同系统间可以进行通信。

表示层和会话层没有定义协议的功能,所以没有定义协议。

7.应用层

有了6个层级的工作,都是为了应用层服务的。

用户在浏览器访问百度界面,属于应用层的操作。

数据已经从一个主机上的应用传到另一个主机上的应用了,这样一个基本的功能是可以实现的。

但是数据包从底层传上来,只有物理层的时候进行了一个组装,在数据链路层形成了一个字节流。

上面层级并没有重新进行一个数据的组装,到了上面依然是一个字节流的格式,不好被应用识别和操作。

所以应用层通过定义了各种应用协议来规范一个数据的格式。

比如最熟悉的http协议,https协议,ftp协议,dns协议,tftp协议,smtp协议。这些都是应用层定义来规范数据的格式,方便系统、软件、程序进行识别和操作。

以上就是七层模型的工作流程。

三、总结

掌握网络基础知识是为了应对面试、进入公司遇到搭建测试环境或调试测试环境的时候需要用到网络基础知识。这是测试工程师需要掌握的必备技能。


8a86020c10864e5d619de523a6da449d.png

公众号「清菡软件测试」首发,更多原创文章:清菡软件测试148+原创文章,欢迎关注、交流,禁止第三方擅自转载。如有转载,请标明出处。

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

初识网络基础《网络七层模型详解》 的相关文章

  • 教程 | 简单实用的pandas技巧:如何将内存占用降低90%

    pandas 是一个 Python 软件库 xff0c 可用于数据操作和分析 数据科学博客 Dataquest io 发布了一篇关于如何优化 pandas 内存占用的教程 xff1a 仅需进行简单的数据类型转换 xff0c 就能够将一个棒球
  • 哈佛大学cs50课程笔记_哈佛CS50指南:如何为您选择正确的课程(带有免费证书)

    哈佛大学cs50课程笔记 In January I wrote an article on Class Central about CS50 Harvard s Introduction to Computer Science which
  • 使用Docker快速安装部署mysql

    使用Docker快速安装部署mysql的前提 xff1a 首先需要确保已经安装了Docker环境 如果没有安装Docker的话 xff0c 可以参考上一篇的内容 xff1a Linux上安装Docker 有了Docker环境后 xff0c
  • docker下gitlab安装配置使用(完整版)

    docker 安装gitlab以及使用 一 安装及配置 1 gitlab镜像拉取 gitlab ce为稳定版本 xff0c 后面不填写版本则默认pull最新latest版本 docker pull gitlab gitlab ce 拉取镜像
  • Linux 配置Gradle

    一 下载gradle 如果windows中有可以直接拷贝 xff0c 如果没有可以去官网下载 http www gradle org downloads 二 解压下载得到的gradle unzip gradle 2 2 1 all zip
  • gitlab配置通过smtp发送邮件(QQ exmail腾讯企业为例)

    首先祭出官网文档链接 xff1a https docs gitlab com omnibus settings smtp html 其实官网已经说的很清楚了 xff0c 并且给出了QQ邮箱的范例 xff08 BAT还是屌的 xff09 1
  • 文本编辑器Notepad++使用技巧

    除了语法高亮 xff0c 一般不用操作 还有两点经常使用的 xff1a 正则表达式查找替换和列模式编辑 这些可以在VS Eclipse Word等里也有 xff0c 但是有时打开一个文件就慢了 本来想总结记录一下技巧的 xff0c 却无意中
  • linux系统磁盘block、inode占满处理

    1 磁盘的block占满 xff0c 查看命令 df vh 然后查看占用百分比 2 磁盘inode占满 xff0c 查看命令df ih 同样也是查看占用百分比 block占满处理办法 需要用到的命令如下 LL 列出当前目录下的文件 df v
  • Code::Blocks平台下Fortran的编译

    问题背景 xff1a 因为之前学习数值方法 xff0c 有用到Fortran的地方 xff0c 所以上网查了一些资料 关于Fortran语言的编辑器安装 xff0c 目前本人接触到的支持Fortran的编辑器有VisualStdio和Cod
  • powershell远程连接

    在Linux中 xff0c 我们可以使用安全的SSH方便的进行远程管理 但在Windows下 xff0c 除了不安全的Telnet以外 xff0c 从Windows Server 2008开始提供了另外一种命令行原创管理方式 xff0c 那
  • 2022年学习总结暨2023年规划

    2022年总结 2022年是我在C站的创作元年 xff0c 在第一年也收获了不少成就 xff0c 比如 Java领域新星创作者 发布100篇博文 拿到了C站的书包 吃到了C站的月饼 成功上榜了330 43 截止目前收获粉丝8600 43 在
  • 《Prometheus+Grafana 实践派》专栏介绍

    专栏名称 Prometheus 43 Grafana 实践派 专栏介绍 本专栏根据本公司统一监控落地实践编写 在该专栏您将学到 企业级监控的选型Prometheus的基础知识Grafana的基础知识快速搭建Prometheus 43 Gra
  • 泊松分布–计算概率分布的公式

    Probability Distributions play an important role in our daily lives We commonly use them when trying to summarise and ga
  • Prometheus 的介绍和安装

    介绍 Prometheus 是一个开源的监控和报警系统 最初由SoundCloud于2012年创建 随着越来越多的公司采用Prometheus以及非常活跃的社区 Prometheus于2016年加入云原生基金会 成为Kubernetes之后
  • 因为锁的问题,我们被扣了1万

    前言 春节放假期间 xff0c 一个项目上的积分接口被刷 xff0c 而且不止一个人在刷 xff0c 并且东西也被兑走 xff0c 放假晚上被人叫起来排查问题 xff0c 通过这个人的积分明细观察 xff0c 基本一秒就能获取一次 xff0
  • Prometheus 告警机制介绍及命令解读

    本文您将了解到Prometheus 告警模块Alertmanager的架构介绍 核心概念 命令解析和AMTool的基本使用 Prometheus的告警模块并不存在于Prometheus中 而是 以独立项目Alertmanager存在 Pro
  • Prometheus 告警模块配置深度解析

    本文您将了解到Prometheus 告警模块Alertmanager 配置的深度解析 Alertmanager 配置解析 Alertmanager 配置可以用命令行配置 也可以通过配置文件配置 命令行用来配置不可变的系统参数 配置文件用来定
  • 不会前端没事,用GWT Boot和Spring Boot构建Web程序

    本文介绍了一种使用Java构建Web应用程序的方式 xff0c 其中GWT或者J2CL是必不可少的 xff0c 另外还有多个UI框架可以配套使用 xff0c 比如Domino UI VueGWT GWT Material Design GM
  • Prometheus 监控云Mysql和自建Mysql(多实例)

    本文您将了解到 Prometheus如何配置才能监控云Mysql 包括阿里云 腾讯云 华为云 和自建Mysql Prometheus 提供了很多种Exporter 用于监控第三方系统指标 如果没有提供也可以根据Exporter规范自定义Ex
  • 2023年 Java 发展趋势

    GitHub 语言统计表明 xff0c Java在编程语言中排名第二 xff0c 而在2022年的TIOBE指数中 xff0c Java排在第四 抛开排名 xff0c Java是自诞生以来企业使用率最高的编程语言 xff0c 作为一种编程语

随机推荐