网络概念,《TCP/IP五层网络模型》与《数据的网络传输---“封装”与“分用”过程》

news2024/11/25 1:56:51

文章目录

    • 概念
    • 协议
    • 协议分层
    • TCP/IP五层网络模型
    • 数据的网络传输---“封装”与“分用”
      • “封装”与“分用” 的过程
    • 接收过程

概念

局域网:把一些设备通过交换机/路由器连接起来。
广域网:把更多的局域网也相互连接称为广域网。
交换机:交换机是一个网络设备,是用于连接多台设备,实现网络数据传输与交换。
路由器:用于连接多个逻辑上分开网络的一种设备,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。
ip地址:描述一个主机在互联网上的位置,由32位组成。
端口号:通过端口号区分一个主机上的应用程序。、

协议

协议的概念: 协议就是一种约定,发送方约定了数据传输的格式,接收方也得理解这个协议,这样两边才能进行通信。
网络的传输是通过:网线、光纤、 无线、电信号或者光信号来进行传输。

“网线”:传输的是高低电平,高低电平通过0和1表示
“光纤”:传输的是光信号,通过波长和频率调制成不同频率的光,通过不同频率来表示0和1

虽然可以传输了二进制数据,但是这0和1是啥意思?
因此,在传输之前我们需要让发送方和接收方约定好吗,每一组0和1是啥意思。

协议分层

分层概念: 一个协议太复杂,就可以拆分成多个协议,将不同的协议进行分类,同时针对不同的类别进行分层,相当于约定了层级和层级之间的调用关系,要求上层协议调用下层协议;下层协议提供给上层提供支持,不能跨层调用。

分层的好处

  • 层次之间 耦合度较低,上层协议不必了解下层的细节,下层也不用了解上层的实现细节。
  • 方便替换对某一层的协议。

在这里插入图片描述
真正的网络协议是怎么分层的?

  • OSI七层网络模型
  • TCP/IP五层网络模型

TCP/IP五层网络模型

应用层: 关注传输的数据的用途。
传输层: 不考虑路径,只关注起点和终点。
网络层: 主要关注两个遥远的节点之间,路径规划。
数据链路层: 主要关注两个相邻节点之间的传输。
物理层: 网络通信上的基础设施,网线,光纤,网络接口等。

数据的网络传输—“封装”与“分用”

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

“封装”与“分用” 的过程

1.当我发送消息(你好)给对方,此时应用层拿到上述内容,进行封装,封装成应用层数据包。

在这里插入图片描述

2.传输层拿到上述数据应用层要调用传输层提供的api,来处理这个数据,传输层有很多协议,最典型的是UDP和TCP,此处以UDP为例。UDP针对上述数据报在进行封装。一个典型的数据报都是通过报头+载荷构成

在这里插入图片描述

3.传输层到网络层,网络层最常见的协议是IP协议。到达网络层还要进行封装,添加IP协议报头。

在这里插入图片描述

4.网络层交给数据链路层,最典型协议“以太网”(平时使用网线上网);基于网络层的基础上在封装以太网数据帧。 mac地址也是描述一台主机在网络上的位置,它的功能和ip很相似,ip地址用于网络层的路径规划,而mac地址用于描述数据链路层,两个即将进行传输的相邻节点的地址,mac和网卡绑定,理论上每个设备都有自己唯一的mac地址但是ip不是。

在这里插入图片描述

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

接收过程

首先接收方物理层,网卡收到信号,对信号进行解析,还原成0101这样的数据,从物理层交给数据链路层此时就把该系列的数据当作一个以太网数据帧(此处是从以太网收到数据,就是要交给以太网协议来处理),把帧头和帧尾去掉取出中间的载荷,往上交给网络层,网络层的ip协议解析数据报,也是去掉ip报头,传输给传输层,传输层由udp来解析处理,去掉报头取出载荷把数据交给应用层,根据端口号来区分具体的应用程序,此时该应用程序解析数据报放到程序界面中。

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

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

相关文章

采用桥接模式使虚拟机\笔记本\linux台式机互通

目录 一、环境:二、连接模式1. 桥接模式2. 主机共享模式3. NAT模式 三、配置1. 笔记本WIFI网络配置2. VM配置3.虚拟机配置3.1. 先看网络信息,确定修改ens333.2. 修改ens333.3. 重启网络 四、测试五、错误解决5.1 现象5.2 解决办法5.3 结果 一、环境&…

Spring中Bean的作用域和Spring生命周期

从前面的文章中我们看出Spring是用来存储和读取Bean的,因此Spring中Bean是最核心的资源,所以我们将对Bean进行深入的理解。 Bean的作用域 现在有一个公共的Bean,提供给了两个用户去使用,但是在使用过程中,用户一修改…

Android Studio 修改AVD模拟器文件默认存储路径

AndroidStudio默认的模拟器文件路径为:C:\Users\用户名\.android\avd路径,通常windows系统上,C盘不是太大,而avd文件却不小,通常几个GB,所以有必要将avd路径换到一个非系统盘。 更换方法如下:H…

LeetCode:6. N 字形变换

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 题解目录 一、🌱[6. N 字形变换](https://leetcode.cn/problems/zigzag-conv…

5.3 Bootstrap 模态框(Modal)插件

文章目录 Bootstrap 模态框(Modal)插件用法选项方法事件 Bootstrap 模态框(Modal)插件 模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离…

C语言:杨氏矩阵中查找某数(时间复杂度小于O(N))

题目: 有一个数字矩阵(二维数组), 矩阵的每行从左到右是递增的,矩阵从上到下是递增的, 请编写程序在这样的矩阵中查找某个数字是否存在, 要求:时间复杂度小于O(N)。 思路&#xff1…

Linux中docker的基本操作

文章目录 一、docker概述1.1 什么是docker1.2 Docker与虚拟机的特性区别1.3 容器在内核中支持2种重要技术1.4 docker的核心概念 二、安装docker三、Docker 镜像操作四、Docker 容器操作 一、docker概述 1.1 什么是docker 是一个开源的应用容器引擎,基于go语言开发…

Spring Web MVC 详解(1)

目录 一、介绍 MVC 二、Spring MVC 的三个基本功能 1.1 连接功能 1.2 Spring MVC 的创建和使用 1.3 RequestMappig 介绍 1.4 Spring MVC 实现用户和 Spring 程序的连接 1.5 GetMapping 和 PostMaping 注解 1.6 Get 和 Post请求注解的多种写法 2.1 获取请求中参数的功…

Redis的内存回收与内存淘汰策略

对于redis这样的内存型数据库而言,如何删除已过期的数据以及如何在内存满时回收内存是一项很重要的工作。 常见的redis内存回收的工作主要分为两个方面: 清理过期的key在内存不足时回收到足够的内存用以存储新的key 清理过期的key 我们很少在redis中…

直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”

各位CSDN的uu们你们好呀,今天小雅兰的内容是数据结构与算法啦,是排序!!!下面,让我们进入七大排序的世界吧!!! 排序的概念及其运用 排序的概念 排序:所谓排序…

算法提高-动态规划-斜率优化DP

斜率优化DP AcWing 300. 任务安排1AcWing 301. 任务安排2AcWing 302. 任务安排3AcWing 303. 运输小猫 AcWing 300. 任务安排1 #include <iostream> #include <cstring>typedef long long LL;using namespace std;const int N 5e3 10;int st[N], sc[N]; LL f[N];…

全志F1C200S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面既然已经搞定了spi-nor驱动,那么下一步考虑的就是怎么从spi-nor flash上面加载uboot、kernel和rootfs。目前spi-nor就是一块白片,上面肯定什么都没有,那么这个时候,我们要做…

贤鱼的刷题日常-P3375 【模板】KMP 字符串匹配

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;例题讲解P3375 【模板】KMP 字符串匹配 ✅创作者&#xff1a;贤鱼 ⏰预计时间&#xff1a;25分钟 &#x1f389;个人主页&#xff1a;贤鱼的个人主页 &#x1f525;专栏系列&#xff1a;c &#x1f341;贤鱼的个人社区&…

(css)清除el-table背景色

(css)清除el-table背景色 效果&#xff1a; <el-table:data"gridData":header-cell-style"{text-align:center,color: #fff}":cell-style"{text-align:center,color: #fff }" ><el-table-column type"index" label"序号…

linux下 UART串口相关

RS232的串口设备在linux 上会被识别为 /dev/ttyS* 或者 ttymxc* 一、串口简介 操作串口我们一般通过以下指令&#xff1a; 1、查看串口波特率等信息&#xff1a; stty -F /dev/ttyS0 -a #ttyS0为要查看的串口 2、设置串口参数&#xff1a; stty -F /dev/ttyS0 ispeed 115…

Qt实现双控制柄的Slider

目标 实现带有左右两个控制柄的滑动条&#xff1b;控件可设定最小值和最大值&#xff1b;控件可设定控制柄的最小距离&#xff1b; 效果演示 思路 1. 标准的Slider控件只有一个Handle&#xff0c;所以想要通过改造QSlider来实现两个Handle是非常困难的&#xff0c;“自绘”…

SpringBoot+jasypt-spring-boot-starter实现配置文件明文加密

1.使用环境 springboot:2.1.4.RELEASE JDK:8 jasypt-spring-boot-starter:3.0.2 2.引入依赖 !-- 配置文件加密 --> <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><ver…

rust学习-智能指针

适用场景 有一个在编译时未知大小的类型&#xff0c;想在需要确切大小的上下文使用该类型值 示例1 无意义的例子&#xff1a;将一个单独的值存放在堆上并不是很有意义&#xff0c;b更应该放到栈上 fn main() {let b Box::new(5);// box 在 main 的末尾离开作用域时&#x…

R语言 PCA筛选变量

#PCA-筛选变量 X <- data[,2:415] pca <- prcomp(X, center TRUE, scale. TRUE) # 进行主成分分析 summary(pca) # 查看各个主成分的解释方差比例 library(factoextra) #碎石图依赖-fviz fviz_eig(pca,addlabelsT) #碎石图 X_selected <- pca$x[,1:20] # 选择前n个主…

pytorch实现图像投影变换

import cv2 import torchdef cpu_remap(numpy_img,mapx,mapy):return cv2.remap(numpy_img,mapx,mapy,cv2.INTER_LINEAR)def gpu_remap(numpy_img,map_tensor):numpy_img:原始图像格式为ndarraymap_tensor:[N,H,W,C]用于grid_sample的map参数&#xff0c;需要规制到-1到1# 准备…