【网络】掌握网络基础概念

news2024/11/13 9:51:25

文章目录

  • OSI七层模型
  • TCP/IP五层(或四层)模型
  • 为什么要有TCP/IP协议
  • 网络传输的基本流程
    • 网络传输流程图
    • 数据包封装和分用
  • 网络中的地址管理
    • IP地址
    • Mac地址
    • 比较IP地址和Mac地址

OSI七层模型

OSI即Open System Interconnection,开发系统互连。OSI七层模型是一个逻辑上的定义和规范,每一层都有其特定的功能和协议。OSI七层模型是一种框架性的设计方法,其主要功能就是使不同的两台主机实现数据传输。下面是七层网络模型的结构图:
在这里插入图片描述
OSI七层模型提供了一个通用的框架,不同厂商和技术可以通过遵循该模型实现互操作性。

值得注意的是:即使在网络的角度上来看,七层模型设计的非常完善,但是在实际的操作过程中,会话层和表示层一般是不能接入到操作系统中的,所以在工程实践中,最终实现的大多都是5层协议。

TCP/IP五层(或四层)模型

四层模型就是不算物理层。TCP/IP是一组协议的代名词,它还包含了许多协议,组成了TCP/IP协议簇。TCP/IP协议簇是目前最广泛的网络通信的协议集。具体的TCP/IP协议套件是一个分层模型,相比于OSI七层模型,TCP/IP模型更加简洁和实用。下面介绍TCP/IP每个层次的作用:

  • 应用层:提供直接面向用户的应用服务,通过不同的应用协议实现各种网络功能,如电子邮件、文件传输和网页浏览。常见的协议有HTTP和SSH协议
  • 传输层:负责两台主机之间的数据传输,即端到端之间,包括数据分段、传输控制、错误检测与纠正。使用到的协议有:TCP协议和UDP协议
  • 网络层:负责数据包的路由和转发,确保数据从源主机传输到目的主机,处理数据包的逻辑地址(IP地址)寻址和路由选择。使用到的协议有IP协议
  • 数据链路层:负责在相邻节点之间传输数据帧,包括物理介质访问、数据帧的封装和解封等。协议有以太网、WI-FI(无线网络)等。
  • 物理层:负责信号的的传递方式,比如现在以太网通用的网线(双绞线)、早期采用的同轴电缆、光纤、电磁波等。物理层的能力大小决定了数据传输的上限。
    在这里插入图片描述

对于上述对TCP/IP各个层次作用的解释的一些名词做出解释

  • 端口:端口是一个用于标志一台主机运行某个程序的整数

  • 数据分段:将较大的数据包拆分成更小的数据段的过程

  • 数据帧:数据帧(Data Frame)是在计算机网络中用于数据传输的基本单位,组成部分有:

    • 帧头:包含了控制信息,如目标地址、源地址、数据帧类型或长度等。通俗一点讲就是它的作用就是找到目标主机和目标主机如何正确接收这些数据的方法
    • 数据部分:实际传输的数据
    • 帧尾:包含校验等错误检测信息,用于检查数据在传输过程中是否损坏
  • 路由:路由是指数据根据特定算法确定到目的地址的传输路径的一个过程,简单来说们,就是选择合适路径的过程

此外,一般来说:

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容
  • 对于一台路由器,实现了从网络层到物理层
  • 对于一台交换机,实现了从数据链路层到物理层
  • 对于集线器,只实现了物理层

为什么要有TCP/IP协议

本质就是两个需要通信的两个主机距离变远了。之所以要遵循协议,这是为了两个主机能够在同一个规则下进行数据传输,这样即使相隔很远,只要遵循规则,我们就能做到正确的传输数据。那为什么是TCP/IP协议呢?因为TCP/IP协议有以下特征:灵活性,支持全球网络、可靠性和安全性等。协议即规则
下面给出TCP/IP协议栈与操作系统 的宏观关系示意图:
在这里插入图片描述
由于都遵循TCP/IP协议,两台主机封装的数据和解包的数据在同一个层次中是一致的。这句话是什么意思呢?意思就是假如主机A发送一个数据帧给主机B,假设在A的传输层中得到的数据是XXX,那么在B接收到数据帧后解包,在B的传输层中得到的数据也是XXX。当然这里的数据可能是某个结构体。

网络传输的基本流程

网络传输流程图

两台计算机设备通过TCP/IP协议通信的过程如下:

  • 局域网通信:
    在这里插入图片描述
  • 跨网络通信:
    在这里插入图片描述

数据包封装和分用

  • 数据包在不同的协议层有不同的称谓,比如在传输层就叫数据段,在网络层就叫数据报,在数据链路层就叫数据帧
  • 发送数据时,数据从应用层开始往下,每依次经过一层协议就要在数据首都加上一段数据,这个过程称为封装
  • 接收数据时,数据从物理层开始往上,每依次经过一层协议就要剥掉响应的首部数据,这个过程称为解包
  • 解包时,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.比如在网络层解包后发现该数据使用的是TCP协议,那么在向上传递数据时就会选择TCP协议而不是UDP。这个过程也被称为分用
  • 对于每一层来说,上一层的传递的数据部分都被称为有效载荷,本层加的数据首部称为报头,所以报文=报头+有效载荷

下面给出封装和解包过程:
在这里插入图片描述

在这里插入图片描述
分用示意图:
在这里插入图片描述

网络中的地址管理

IP地址

IP地址是在网络层用IP协议标识和定位设备的逻辑地址,其中IP协议分为IPv4和IPv6。IPv4下的IP地址是一个4字节,32位的无符号整数表示,通常写成四个十进制数字,每个数字占一个字节,数据范围是[0-255]。IPv6下的IP地址是16字节,采用八组十六进制数字,每组都是16位,即两个字节。

作用:

  • 唯一标识一台网络上的设备
  • IP地址帮助路由器决定数据包如何从源地址传输到目标地址
  • 路由器根据目标IP地址将数据包从一个网络传输到另一个网络

Mac地址

Mac地址是用于在数据链路层标识和定位设备的物理地址,由48位二进制表示,通常用十六进制的表示,被厂商预先分配给网卡。

作用:

  • 每个网卡都有唯一的Mac地址,用于在局域网中唯一标识设备
  • 在局域网中,数据帧的源地址和目标地址是MAC地址,通过MAC地址确保数据帧能够准确地从发送端传输到接收端。

比较IP地址和Mac地址

IP地址可以在不同的网络中标识唯一设备,帮助路由器将数据包从一个网络到另一个网络。Mac地址用于定位网络内部的目标设备。这俩各种再网络传输过程中起到了不可替代的作用。

简单来说,IP地址告诉路由器数据应该转发给哪一个网络,Mac地址告诉路由器数据应该发给这个网络的那一台主机

下面给出网络通信的流程图:
在这里插入图片描述

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

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

相关文章

电气电工增加收入需规避的16大陷阱

电工接线是电气工程中非常重要的环节,为什么实施项目之后,存在电工叫苦,老板说亏,这到底是什么原因?是什么影响了电工的效率,阻碍了电工收入的增加? 下面我们汇总一下平时在项目中遇到的陷阱&a…

spring核心内容基本解读、spring中IOC控制反转入门案例,debug带你剖析Spring容器机制和结构(图文讲解,简单易懂)。

目录 1.spring核心内容大概解读 2.spring的IOC(控制反转容器机制剖析) 2.1 来份快速入门案例 2.2 debug剖析spring容器的机制和结构 1.spring核心内容大概解读 1. 在线文档 : https://docs.spring.io/spring-framework/docs/current/reference/html/ 2. 离 线 文 档 …

STM32智能健康监测系统教程

目录 引言环境准备智能健康监测系统基础代码实现:实现智能健康监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:健康监测与管理问题解决方案与优化收尾与总结 1. 引言 智能健康监测系统通…

SDXL 1.0 下载和部署

SD XL 1.0 重磅更新!免费开源可商用(附在线使用本地部署教程) - 优设网 - 学设计上优设 三、本地部署 SDXL 1.0 SDXL 1.0 的源文件已经在 Huggingface 上开源了,我们可以通过 Stable Diffusion WebUI 在本地免费使用 SDXL 1.0&am…

[C/C++入门][ifelse]19、制作一个简单计算器

简单的方法 我们将假设用户输入两个数字和一个运算符&#xff08;、-、*、/&#xff09;&#xff0c;然后根据所选的运算符执行相应的操作。 #include <iostream> using namespace std;int main() {double num1, num2;char op;cout << "输入 (,-,*,/): &quo…

python项目为什么用WSGI

小背景 Java用的时间久了&#xff0c;web项目启动的时候直接启动主程序就行&#xff0c;因为spring web项目内置了Tomcat web服务器&#xff0c;服务器的配置一般也是采用默认的配置&#xff0c;所以很少关注底层实现&#xff0c;关注点主要在应用程序功能。 初学python的时候…

DDei在线设计器-HTML渲染

Html渲染 HtmlViewer插件通过将一个外部DIV附着在图形控件上&#xff0c;从而改变原有图形的显示方式。允许使用者自己定义HTML通过HTML元素。本示例演示了通过Html来扩展渲染图形&#xff0c;从而获得更加丰富的图形展现。 通常情况下&#xff0c;我们创建的图形控件&#xff…

Wireshark抓取HTTP

HTTP请求响应 使用wireshark抓取 本地机器是192.168.33.195&#xff0c;远程机器是192.168.32.129&#xff0c;远程HTTP服务端口是9005 TCP/IP实际共分为4层&#xff0c;抓包信息中可以看到各层的数据&#xff0c;最上面的数据帧包含了所有数据。 附&#xff1a;抓取本地H…

【Harmony】SCU暑期实训鸿蒙开发学习日记Day2

目录 Git 参考文章 常用操作 ArkTS的网络编程 Http编程 发送请求 GET POST 处理响应 JSON数据解析 处理响应头 错误处理 Web组件 用生命周期钩子实现登录验证功能 思路 代码示例 解读 纯记录学习日记&#xff0c;杂乱&#xff0c;误点的师傅可以掉了&#x1…

体验智慧校园学工管理的社团类型功能

在智慧校园学工管理的框架下&#xff0c;社团类型的精细化管理成为了激发学生兴趣、促进社团多样性与规范性的关键。这一功能的核心在于构建一个清晰的社团分类体系&#xff0c;确保每一种社团都能在其所属领域内蓬勃发展&#xff0c;同时&#xff0c;也便于校园管理者进行有效…

C#与C++交互开发系列(一):引言:为什么需要C#与C++交互开发

C#与C交互开发系列&#xff08;一&#xff09;&#xff1a;引言&#xff1a;为什么需要C#与C交互开发 欢迎来到C#与C交互开发系列博客的第一篇。在这个系列中&#xff0c;我们将探讨如何在C#与C之间实现互操作性&#xff0c;并逐步深入理解其应用场景和技术实现。本文将介绍什么…

植物大战僵尸全新版本Q版少女助阵好感度系统加持安卓winmac全兼容

植物大战僵尸全新版本Q版少女助阵好感度系统加持安卓winmac全兼容 链接: https://pan.baidu.com/s/11UFm4r8FKhkGAxM8dLVA8Q?pwdqnx8 提取码: qnx8

C++ ───List的使用

目录 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list的迭代器失效 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&…

算法——双指针(day2)

目录 202.快乐数 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 11.盛最多水的容器 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 202.快乐数 力扣链接&#xff1a;202.快乐数 题目解析&#xff1a; 本文中最重要的一句话就是重复平方和…

Elasticsearch基础(三)

目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.3.精准查询 1.4.地理坐标查询 1.5.复合查询 2.搜索结果处理 2.1.排序 2.2.分页 2.3.高亮 2.4.总结 3.RestClient查询文档 3.1.快速入门 3.2.match查询 3.3.精确查询 3.4.布尔查询 3.5.排序、分页 3.6.…

C语言 | Leetcode C语言题解之第233题数字1的个数

题目&#xff1a; 题解&#xff1a; int countDigitOne(int n) {// mulk 表示 10^k// 在下面的代码中&#xff0c;可以发现 k 并没有被直接使用到&#xff08;都是使用 10^k&#xff09;// 但为了让代码看起来更加直观&#xff0c;这里保留了 klong long mulk 1;int ans 0;f…

大数据量接口响应慢-传输优化

问题 接口一次性返回大量数据&#xff0c;导致JSON数据大小过大&#xff0c;带宽大小不足&#xff0c;导致接口响应时间过长 解决方案 通过数据传输压缩来降低传输数据的大小&#xff0c;从而提高传输效率 服务器端压缩 springboot项目配置application文件&#xff0c;通过…

零基础学习Python(三)

1. 多重继承 一个子类可以继承多个父类&#xff0c;这与一些编程语言的规则不通。 如果多个父类中有同名的变量和方法&#xff0c;子类访问的顺序是按照继承时小括号里书写的顺序进行访问的。 可以用issubclass(B, A)方法判断B是否为A的子类。 2. 绑定 类中的方法通过参数s…

【代码随想录笔记】数组

目录 1、二分查找 2、移除元素 3、有序数组的平方 4、螺旋矩阵II 1、二分查找 对于二分搜索法&#xff0c;有两个边界问题是容易把握不准的 1. 是left < right还是left < right 2. 当nums[middle] > target时&#xff0c;需要更新右边界&#xff0c;那是right …

【深度学习入门篇 ⑥】PyTorch搭建卷积神经网络

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…