计算机网络模型、网络传输、封装分用的详细讲解

news2025/1/16 8:46:30

文章目录

  • 计算机网络
    • 前言
    • 1. 初始网络
    • 2. 网络通信相关知识
      • 2.1 TCP/IP五层网络模型
      • 2.2 OSI七层模型
    • 3. 网络传输
      • 3.1 封装
      • 3.2 分用
      • 3.3 数据传输的中间过程

计算机网络

前言

在互联网诞生之前,人们通过发电报等方式进行通信,这种方式是非常不稳定的,通信链路容易被打断。由于战争时期需要更好的通信手段,此时就将原本两点之间简单的通信链路,扩展成复杂的链路,保证就算有一条链路被打断也能进行通信,就类似于我们现在的互联网。紧接着就诞生出局域网,利用交换机将几台主机连接起来进行通信,但是局域网只是小范围的联机,随着社会发展对联机范围需求增大,通过增加路由器交换机数量就慢慢发展为广域网。

1. 初始网络

互联网: 始于 1969年的美国,又称因特网,是一种公用信息的载体, 大众传媒的一种。

  1. 互联网是由一些使用公用语言互相通信的计算机连接而成的网络, 即广域网局域网及单机按照一定的通讯协议组成的国际计算机网络。
  2. 组成互联网的计算机网络包括小规模的局域网(LAN) 、城市规模的城域网(MAN) 以及大规模的 广域网(WAN) 等等。
  3. 这些网络之间通过普通电话线、 高速率专用线路、 卫星、 微波和光缆等线路连接起来。

解释说明: 局域网、城域网、广域网只是按网络的作用范围区分,但是没有一个明确的界限。

总结: 网络发展,从单机到局域网再到广域网最后发展成移动互联网阶段,通过交换机和路由器进行通信。

2. 网络通信相关知识

上述谈到主机通过网络进行通信,那么我们如何确定对方的位置?
由此就有IP地址端口号的出现。

IP地址:用于标识一台主机的位置(在网络中用于标识一个节点,或者网络设备的接口), 本质上是应该4字节,32位的整数,往往写成点分十进制。3个点,将整个ip分成4部分,每部分1个字节(取值范围0-255)。
在这里插入图片描述
IPV4地址范围:0.0.0.0~255.255.255.255

 例如:192.168.0.136

端口号:用于标识主机上的某个程序。 例如我们用QQ进行通信时,当我们主机接收到另一台主机的信息,那么我们主机如何确定是通过什么程序进行解读呢?就是通过端口号来确定是QQ的消息。

我们知道了主机之间如何知道对方的位置,那么我们如何进行通信呢?我们发送数据的格式应该是怎样的才能”沟通无障碍“呢?
由此我们出现了协议

协议:也就是约定, 发送方约定了他发送数据是什么格式,我们接收方也通过该格式接收数据,这样就能正确通信。

网络通信的本质是通过光纤、网线、无线电信号、光信号、进行传输,也就是一系列的高电平和低电平,对应着我们二进制0、1。协议就是规定好这些二进制数据对应的含义。

对于网络复杂的环境,一个协议会过于复杂,由此我们可以对协议进行分层,也就是根据我们常说的TCP/IP五层网络模型(当下广泛使用的,也可称为四层网络模型)和OSI七层网络模型(教科书上常出现的),进行分层。

注意: 分层后,我们层次之间的耦合程度比较低,上层协议不用了解下层协议的细节,下层也不用了解上层协议的细节;同时方便我们对某一层协议进行替换。

2.1 TCP/IP五层网络模型

  1. 应用层:应用程序使用传输的数据,由应用程序实现。

  2. 传输层:只考虑数据传输的起点和终点,由系统内核封装。

  3. 网络层:主要负责两个遥远的节点之间的路径规划。用系统内核封装。通常被称为IP层,但是网络层协议不只是IP协议,还包括ICMP协议,IPX协议(已淘汰)等。

  4. 数据链路层:主要关注的是两个相邻节点的传输,由硬件和驱动实现。可以向网络层提供服务(段内通信),负责组帧、物理编址,差错控制。数据链路层的PDU称为Frame(帧),以太网是最常见的数据链路层协议。

    1. 以太网:①以太网是一种广播式数据链路层协议,支持多点接入。 ②个人电脑的网络接口遵循的就是以太网标准。③一般情况下,一个广播域对应着一个IP网段。
    2. MAC地址:①MAC地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。②MAC用于在一个IP网段内,寻址找到具体的物理设备。③工作在数据链路层的设备,例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。
  5. 物理层:是网络通信的基础,由硬件和驱动实现。物理层根据物理介质不同,将数字信号转换为光信号,电信号或者是电磁波信号。主要使用二进制比特流(PDU)进行传输。

TCP/IP模型对应的协议
在这里插入图片描述

2.2 OSI七层模型

OSI七层网络模型:

  1. 物理层: 在媒介上传输比特流。
  2. 数据链路层:将分组数据封装为帧;在数据链路上实现数据的点到点、或点到多点方式的直接通信;差错检测。
  3. 网络层: 定义逻辑地址;实现数据从源到目的地的转发。
  4. 传输层: 建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等待。
  5. 会话层: 在通信双方之间建立、管理和中止会话。
  6. 表示层: 进行数据格式的转换,以确保一个系统生产的应用层数据能够被另外一个系统的应用层所识别和理解。
  7. 应用层: 对应用程序提供接口

具体结构如图:
在这里插入图片描述

3. 网络传输

以上介绍了我们通过协议分层,约定数据传输格式,不同主机可以对我们的数据正确的获取。那么我们的数据是如何在协议分层的背景下进行网络传输的呢?
由此就引出封装分用

  1. 发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装。
  2. 接收方收到数据,要把数据从上到下,依次交给对应层次的协议,进行解析。

以下以QQ发送消息为例介绍封装分用的详细过程:

3.1 封装

  1. 发送方在编辑框输入:消息内容后,应用层(qq应用程序)拿到用户数据,进行封装成应用层数据包。以下是一个简化的过程,用于解释说明,数据包的本质是字符串拼接。
    在这里插入图片描述
  2. 传输层拿到上述数据,应用层要调用传输层提供的api来处理这个数据,以下以UDP协议为例介绍。UDP针对上述数据包再进行封装,也就是加上UDP数据报头。(一个典型的数据报是报头+载荷构成)。在这里插入图片描述
  3. 传输层到网络层,接下来将这个数据报交给网络层协议,我们以网络层最常见的IP协议进行举例。加上IP协议的报头。在这里插入图片描述
  4. 网络层交给数据链路层,最典型的就是以太网协议,在前面加上以太网帧头,在后面加上以太网帧尾。在这里插入图片描述在这里插入图片描述

解释说明: mac地址,也叫物理地址,描述一个主机在网络上的位置,与网卡绑定,理论上全世界的网卡都有一个自己唯一的mac地址。功能与IP地址相似,但是目前两个地址分别作用于不同的地方。IP用来进行网络层的路径规划,mac用于进行描述数据链路层,即将进行传输的相邻节点。

5.数据链路层就将上述以太网数据帧交给物理层,物理层就将上述0101的二进制数据,转换为光信号或者电信号或者电磁波信号进行传输。

注意: 上述过程,由我们的操作系统完成,我们不需要实现。

3.2 分用

接收过程与我们的发送过程正好相反,我们接收就是自下到上依次分用,去掉报头。此处我们只考虑接收方主机的过程。

  1. 物理层,网卡接收到高低电平的二进制数据后,对信号进行解析,还原成0101的二进制序列。
  2. 从物理层到数据链路层,将上述的0101数据当作一个以太网数据帧,(此处我们是认为以以太网线接收的数据,所以使用以太网协议处理)。
  3. 从数据链路层到网络层,去掉帧头帧尾,将中间的载荷交给网络层,此时在以太网数据帧的帧头有一个消息类型,能够知道网络层的协议,此时就能交给对应的协议处理
  4. 从网络层到传输层,网络层的IP协议进行解析数据报,去掉IP报头,以及其他操作,再将载荷交给传输层的协议。我们IP数据报的报头也有一个字段,标识传输层的协议类型。
  5. 传输层到应用层,此处由UDP解析处理,去掉UDP协议报头,取出载荷,将数据交给应用层 。根据端口号来区分交给那个程序。
  6. 应用层,此时由qq程序,解析应用层数据报,取出以下字段,放到程序界面。此时就实现了一个消息发送与接收的过程。
    在这里插入图片描述

3.3 数据传输的中间过程

注意: 以上封装与分用的解释说明过程,并没有涉及到数据传输中间,经历很多节点转发的过程。
实际情况:

  1. 我们的电脑从应用层封装到物理层后,发给交换机。我们交换机会进行分用,分用到数据链路层,就知道当前数据报的目的mac。然后**将数据重新分装,此时源mac和目的mac就会改变,**然后继续转发。
  2. 转发到路由器时,路由器会将接受的数据分用到网络层,此时就能得到目的IP,进行下一阶段的寻路。(ip协议是一边传输,一边规划路径),然后将数据重新封装,从网络层分装到物理层,经过数据链路层时也会调整mac地址。
  3. 依次类推,直到到达目的电脑时,就会从物理层分用到应用层,然后应用程序进行解析。

总结: 中间的交换机只需要封装分用到数据链路层,更改源mac和目的mac。中间的路由器则需要封装分用到网络层,更改源mac目的mac,以及目的ip进行下一阶段的路径规划。==这也就是通常说的,交换机是”二层转发“,路由器是”三层转发“。==但是实际上随着发展,交换机与路由器的差别在减小,封装分用不仅仅只是两层或者三层。

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

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

相关文章

读写锁的原理与实现

文章目录 什么是读写锁生产消费模型 VS 读写模型 读写锁的pthread库接口读者&&写者模式 模拟实现读写锁思路1——用两个锁来实现(读者优先)模拟实现 思路2——两个条件变量一个锁(写者优先)模拟实现 可以看看之前写的文章…

d2l Nadaraya-Waston核回归

注意力机制里面的非参数注意力汇聚 目录 1.目标任务 2.数据生成 2.1构造原始数值 3.非参数注意力汇聚 4.对注意力机制的理解 1.目标任务 使用y_train(有噪声),拟合y_truth(没噪声)。给你所有的y_train,构造注意力权重生成拟合曲线。 2.数据生成 n_train 50…

五款高效易用的项目管理软件,提升团队工作效率

项目管理软件是为了协助团队或公司便捷和高效地完成工作任务和管理项目而专门设计的软件工具。有了它,团队成员可以共享资源,跟踪项目进度和成果,识别问题并及时解决。与传统的手工方式相比,项目管理软件可以提高工作效率和生产力…

Centos7上安装vscode和ssh

Centos7上安装vscode和ssh 一.前言二.Centos7上安装vscode三,Centos7上配ssh3.1 查看是否安装ssh环境3.2 配置ssh配置文件3.3 启动ssh服务 一.前言 在用linux环境编译项目的时候,比较习惯用ubuntu环境,而对centos环境的一些命令工具使用的比…

外链是什么意思,什么是外链

外链就是指在别的网站导入自己网站的链接。导入链接对于网站优化来说是非常重要的一个过程。导入链接的质量间接影响了我们的网站在搜索引擎中的权重。外链是互联网的血液,是链接的一种。没有链接的话,信息就是孤立的,结果就是我们什么都看不…

计算机网络笔记(方老师408课程)(持续更新)

文章目录 前言互联网概述互联网发展的三个阶段互联网标准化机构 互联网的组成边缘部分的通信方式核心部分的交换方式 我国计算机网络的发展计算机网络的类别计算机网络的性能速率、带宽、吞吐量时延时延带宽积往返时间RTT(Round-Trip Time)利用率非性能特…

SpringCloud分布式配置中心——Config

Config 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 由于微服务越来越多,项目越来越庞大,每一个项目都至少有两三个不同环境的application.properties文件,不易管理,假设我们数据库迁移&#xff…

笔记--java sort() 方法排序

背景 最近在刷一道算法题 《字符串重新排序》时,发现自己有思路但是写代码的时候就无从下手了 而且看了答案之后还没看懂 关键就是基础不好 对于排序没有理解(虽然我学过常用的排序算法 但是都是理念 实践少) 目的 从实践和原理出发 重点是从…

参数处理、查询语句

一、Mybatis参数处理 1、数据准备 pojo类: public class Student {private Long id;private String name;private Integer age;private Double height;private Character sex;private Date birth;// constructor// setter and getter// toString }2、单个简单类型…

设计模式 -- 命令模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

线性表详解

目录 1.线性表的定义和特点 2.案例 2.1一元多项式的计算 可以通过下面这个题目简单练习一下 2.2稀疏多项式的计算 2.3图书信息管理系统 3.线性表的类型定义 4.线性表的顺序表示和实现 4.1线性表的顺序储存表示 4.2顺序表中基本操作的实现 5.线性表的链式表现和实现 …

vba:inputbox

inputbox函数与方法 1.区别一:外观区别 InputBox 函数 在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的 String。 Application.InputBox 方法 显示一个接收用户输入的对话框。返回此对话框中输入的信息。 -----…

分享一个国内使用的ChatGPT的方法

介绍 ChatGPT ChatGPT是一种基于自然语言处理技术的对话生成模型。它是由OpenAI公司开发的一种语言模型,可以在大规模语料库上进行无监督学习,并生成高质量的自然语言文本。ChatGPT可以用于多种应用场景,例如智能客服、语音助手、聊天机器人…

JAVA学习笔记(注解)

1. JDK预定义注解 (1) Deprecated(表示标记对象已过时) (2) SuppressWarnings("all") (忽略标记对象的警告) 2. 元注解(用于描述注解的注解) Target 描述注解所生效的位置 Retention 描述注…

SpringBooot

目录 一、简介 1、使用原因 2、JavaConfig (1)Configuration注解 (2)Bean注解 (3)ImportResource注解 (4)PropertyResource注解 (5)案例 3、简介 4…

Faster-RCNN代码解读8:代码调试与总结

Faster-RCNN代码解读8:代码调试与总结 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现,不要多想,我还没有厉害到可以一个人复现所有代码。所以,是参考别人的代码,进行自己的解读。 ​ 代码来自于B站的UP主&#xff0…

网络协议-前端重点——DNS和CDN

目录 DNS的基础知识 统一资源定位符(URL)(网址) DNS(Dimain Name System)(域名系统) DNS Query过程 DNS记录 A记录 AAAA记录 CNAME记录(Canonical Name Record) MX记录&#…

Blender3.5 视图切换

目录 1. 数字小键盘切换视图1.1 正交顶视图1.2 正交前视图1.3 正交右视图1.4 透视图1.5 四格视图 2. 鼠标点击切换视图2.1 点击视图,根据需求选择对应视图2.2 点导航栏的坐标轴切换 3. 启用字母区数字键3.1 编辑——偏好设置——输入——勾选“模拟数字键” 1. 数字…

Linux驱动——高级I/O操作(四)

目录 几种I/O模型总结 异步通知 几种I/O模型总结 阻塞 IO:在资源不可用时,进程阻塞,阻塞发生在驱动中,资源可用后进程被唤醒,在阻塞期间不占用CPU,是最常用的一种方式。 非阻塞 I/O: 调用立即返回,即便是在资…

《Unity Shader 入门精要》第10章 高级纹理

第10章 高级纹理 10.1 立方体纹理 在图形学中,立方体纹理 (Cubemap) 是环境映射 (Environment Mapping) 的一种实现方法。 和之前见到的纹理不同,立方体纹理一共包含了6张图像,这些图像对应了…