冰冰学习笔记:初识网络

news2024/11/24 12:38:26

欢迎各位大佬光临本文章!!!

还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。

本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬、帅哥、美女点点支持,您的每一分关心都是我坚持的动力。

我的博客地址:bingbing~bang的博客_CSDN博客https://blog.csdn.net/bingbing_bang?type=blog

我的gitee:冰冰棒 (BingbingSuperEffort) - Gitee.comhttps://gitee.com/BingbingSuperEffort



前言

        什么是计算机网络呢?计算机网络专业术语的表达就是链接分散计算机设备以实现信息传递的系统。传递信息?那计算机网络不就是远距离的主机通信吗。是的,在同一个主机中进行通信我们可以使用管道或者共享内存。当两个主机想进行通信的时候,我们就需要网络进行通信。

1.网络的发展

        计算机一开始的发展并没有网络的概念,每个主机之间都是独立执行任务,但是随着时代的发展,人们发现有些任务单靠一个主机是无法进行完成的,每个人都在自己主机上进行任务的执行,但是这些数据无法实时的共享。此时如果想让不同的主机实现数据的共享,那我们就需要将主机之间连接起来进行数据共享。随着主机的数量不断扩大,我们这个小集合需要和其他的集合进行通信,那我们就需要将这些主机统统连起来,那我们就需要交换机和路由器将一些小的集群连接在一起,这就是局域网(LAN)。随着局域网的不断扩大,我们需要将千里之外的主机进行互相连接,这些局域网之间慢慢的都联通了,就形成广域网(WAN)。但是我们要注意,局域网和广域网只是相对的概念,广域网也可以看成大的局域网。

2.初识协议

        什么是“协议”呢?简单来说,协议就是一种约定。例如在我们华夏大地,有多个民族共存,每个民族都有自己的方言,各民族之间如果要进行沟通难度非常大,那么我们如何让这些讲不同语言的民族进行沟通呢?这我们就需要制定一个共同的“约定”,让每个人都遵守,使用这个约定进行沟通,也就是大家都说的普通话。

        对于计算机来说,计算机之间的传输媒介是光信号和电信号,通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。大家都使用共同的协议进行数据的传递,就不会在关注不同操作系统,不同路由器厂商,不同的硬件设备带来的差异了。这个协议就是网络协议

3.网络协议

        那么网络协议是什么样的呢?我们都知道,网络解决的就是远距离主机进行通信的问题。随着距离的增加,通信之间也变得复杂。为了保证通信能够正常进行,网络协议通常都是分层的,网络的分层,可以让我们的功能进行解耦,便于维护

        在我们进行打电话进行交流时,两个人通过电话可以实时的进行沟通。但实际上我们是通过手机对数据的层层传递才将声音数据传递到对面的手机上,对面的手机再通过层层的解析最后转换成我说的内容给对面听。

        实际上的网络通信层数更加复杂,但是每一层之间又相互解耦,无论哪一层发生变化,都不影响其他层。 而网络协议分成了7层。

3.1OSI七层模型

        OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范。该模型把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI 七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。但是这个7层模型仅仅是理想状态下的分层状态,实际上在真正实施的时候,有些层次没法明确区分,因此最常用的还是TCP/IP五层协议。

3.2TCP/IP五层模型

        在TCP/IP五层模型中,将应用层、表示层、会话层合在了一起。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

(1)物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆 (现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

(2)数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。

(3)网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。

(4)传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。

(5)应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

        物理层我们考虑的比较少。因此很多时候也可以称为TCP/IP四层模型。

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

4.网络传输的基本流程

4.1局域网通信原理

        局域网是构成广域网的一部分,两台主机在同一局域网中是可以直接进行通信的。

        每一台主机都有网卡,每一张网卡都有自己的地址,叫做MAC地址,就像我们的身份证一样,标识网卡的唯一性。而MAC地址虽然全球唯一,但是不应用于全球,只是在局域网中标识自己的唯一性。

        我们可以通过ifconfig命令查看主机的MAC地址和IP地址(这里的ip地址指的是ipv4,云服务器中的MAC地址是虚拟地址)。

        在同一个局域网中,通常会包含多个主机,当一个主机想要和另一个主机进行通信的时候,主机1想和主机3进行通信,此时主机1会将信息发送到局域网中,而在同一局域网下的其他主机都会收到这条信息。但是其他主机会发现目标地址(MAC地址)不是自己,因此就会丢弃掉这些报文,最终只有主机3会收到信息。

        通常主机之间的局域网通信技术为以太网,其通信方式:发出的消息所有人都能收到,但当MAC1想把消息发给MAC3,MAC2想把消息发给MAC4,但是它们不能同时发消息(数据覆盖)。以太网发送消息的原则是只允许一个主机在任何一个时刻在局域网中发消息。否则就会发生碰撞,如果发生了碰撞就把消息作废然后重发。

        如何去看待局域网中的网络资源:站在系统的角度看待网络资源就是临界资源。

        而令牌环的传输方式是谁有令牌谁发送,这就类似与锁。

4.2网络传输过程

        当两个主机想要进行通信时,在同一网段的两个主机之间不需要路由器就可以直接通信,主机A 将信息打包逐层向下交付,直到链路层将数据通过以太网交付给另一个主机,另一个主机在层层解包向上交付。

        但是在这个过程中,AB两台主机每一层的协议都会以为自己在和对面同一层进行交互,两边的分装和解包都是一样的协议。 

        如果要跨网络进行传输,就需要路由器来实现两个 不同网段之间的连接,这也就决定了,路由器至少要具备不同网络之间的转换协议。

4.3数据包封装与分用

        前面提到的报文实际上是报头和有效载荷的统称,那报头又是什么呢?报头实际上就是每一层的协议规则,对应每一层依据这个规则解析数据包和封装数据包。

        不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装。

        在这个过程中,每一层都在和对面的同层进行通信,规则都一样,因此可以通过报头来进行数据包的封装和分用。

5.IP和MAC地址

        IP协议有两个版本, IPv4和IPv6,提到IP协议, 如果没有特殊说明的, 默认都是指IPv4。IPv4采用4个字节表示,IPv6采用16个字节表示。

        MAC地址通常在局域网使用,IP地址通常在广域网使用。

        MAC地址用来识别数据链路层中相连的节点;长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。

        那么两个有什么区别呢?

        IP地址代表一个数据的起始地址和目标地址,即谁发出的,最终发给谁,表示起点和终点。在从起点走到终点的过程中总需要一些中转站,而MAC地址就是中转站的地址。例如我从山东到重庆,这是我的起点和终点。但在行走的过程中,我需要途径河南,安徽,湖北,湖南,最终到重庆。河南,安徽就是MAC地址。
 

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

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

相关文章

剑指offer30天打卡活动

文章目录 Day1: 用两个栈实现队列包含min函数的栈 一、用两个栈实现队列OJ链接 本题思路:定义两个栈,(Enqueue)是用来存储入队的元素,(Cnqueue)用来出队的,那么如何进行操作呢&am…

Win10 显示WLAN不安全,并且链路速度54/54 (Mbps),通过K3C路由器修改协议解决,无线网卡连接速度只有54Mbps

省流 换个安全协议就好了。 使用有线等同隐私(WEP)或临时密钥完整性协议(TKIP)加密配置时,客户端设备的WiFi数据传输速率不会超过54Mbps, 问题 我用的是K3C路由器,今天跑百度网盘感觉很奇怪,突然就只有10MB/s了,感觉…

盖子的c++小课堂——第十八讲:栈

前言 OK呀,说到做到,我们的粉丝们也是很给力呀,终于破了400粉~~ 我太感动了aaaaaaaaaaaaaaaaaaaaaaaa 话不多说,我们直接开始! 栈的定义 栈,是什么? 例1-弹夹 你见过手枪吗?它…

安装Node.js和创建Vue-cli工程

NodeJs中文网:下载 | Node.js (nodejs.org) 注意事项: 最好下载Node16版本,除非你后续使用的Vue-cli版本比较高,像我使用的Vue-cli3和4.1.1版本去创建工程,然后run运行会报错Error: error:0308010C:digital envelope …

echarts自定义legend样式

转载自: https://blog.csdn.net/changyana/article/details/126281275 目标样式: 使用legend中的formatter以及textStyle.rich legend: { // 对图形的解释部分orient: vertical,right: 10,y: center,icon: circle, // 添加formatter: function(name)…

绘制图形、ROI截取、高斯三角形

1、直线 2、圆形 3、椭圆 4、矩形 5、多边形 6、文字 //图形绘制 void test1() {Mat img Mat::zeros(Size(512, 512), CV_8UC3);//生成一个黑色图像用于绘制几何图形//绘制圆形circle(img, Point(50, 50), 25, Scalar(255, 255, 255), -1);//绘制一个实心圆circle(img, Point(…

Flutter 轮播图 flutter_swiper属性说明使用

今天分享的内容是关于图片轮播的实现,使用到的库是flutter_swiper,如果有出现空检查报错的,可以使用flutter_swiper_null_safety 轮播图效果如下: 先贴出基本参数详解: 参数说明itemBuilder列表的构造indicatorLayou…

Redis持久化之RDB和AOF

6、Redis持久化 6.1、背景 首先Redis作为一种缓存性数据库,如果缓存中有数据,他可以很快的把数据返回给客户,至于为什么他可以很快的将数据返回给客户,主要是因为他是一种内存性数据库,不需要额外的IO操作&#xff0…

报错:Destructuring assignments are not supported by current javaScript version

报错信息:当前JavaScript 版本不支持非结构化赋值 报错示例: 报错的原因是:这种语法是EcmaScript6才有的,以往的版本没有,修改一下javaScript的版本即可,方法如下:找到setting----->Languag…

接口自动化测试项目,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等

项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化,但是没有代码基础不知道怎么做?或者有自动…

解密Vue 3:透过原理看框架,揭开它的神秘面纱

文章目录 1. 响应式系统2. 组件化3. 虚拟 DOM4. 编译器5. 插件系统附录:前后端实战项目(简历必备) 推荐:★★★★★ Vue 3 是一种用于构建用户界面的现代 JavaScript 框架。它基于响应式编程和虚拟 DOM 技术,并通过组件…

postgresql(一):使用psql导入数据库

使用psql导入数据库 1、概述2、具体问题3、总结 1、概述 大家好,我是欧阳方超。 听说postgresql越来越流行了?psql是一个功能强大的命令行工具,用于管理和操作PostgreSQL数据库。它提供了一个交互式环境,允许用户执行SQL查询、创…

MISA代码配置运行

MISA源码github链接:click here IDE: Pycharm专业版2022.2.2 python3.8 一、创建虚拟环境: 尝试 源码中给了environment.yml,可以用以下命令创建,但可能是由于某些库的版本问题,尝试失败。 conda env create -f environment.…

协议分层与OSI参考模型【图解TCP/IP(笔记三)】

文章目录 协议分层与OSI参考模型协议的分层理解协议的分层OSI参考模型OSI参考模型中各个分层的作用 协议分层与OSI参考模型 协议的分层 OSI参考模型将通信协议中必要的功能分成了7层。通过这些分层,使得那些比较复杂的网络协议更加简单化。 在这一模型中&#xf…

Python_字典包含关系判定方法

Python中的字典是一种无序的数据结构,它由键和对应的值组成 在实际编程中我们经常需要判断一个字典是否包含另一个字典的所有键值对 本文将介绍一种种简单而有效的方法来判定字典之间的包含关系。 a {"a": 1, "b": 2, "c": 3, &q…

zabbix 应用(贼详细!)

目录 一:添加 zabbix 客户端主机 1、关闭防火墙,修改主机名 2、服务端和客户端都配置时间同步 ​3、服务端和客户端都设置 hosts 解析 4、设置 zabbix 的下载源,安装 zabbix-agent2 5、修改 agent2 配置文件 6、启动 zabbix-agent2 7、 在…

OpenCV读取一张8位无符号单通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

XXX汽车SAP ERP系统接口提速,助力生产物流业务数据快速处理(投稿数字化月报一)

XXX汽车ERP系统中数据量第一大接口-生产订单下达接口&#xff0c;一直是ESB总线重点关注的重要接口。从2019年项目初发给MOM生产、LES物流系统到现在&#xff0c;下游接收系统已经增加到15个之多。针对该接口下达数据缓慢的情况&#xff0c;SAP项目开发团队攻坚克难&#xff0c…

购买上帝的男孩——好文分享

购买上帝的男孩——好文分享 一个小男孩捏着1美元硬币&#xff0c;沿街一家一家商店地询问&#xff1a;“请问您这儿有上帝卖吗&#xff1f;”店主要么说没有&#xff0c;要么嫌他在捣乱&#xff0c;不由分说就把他撵出了店门。 天快黑时&#xff0c;第二十九家商店的店主热情…

QtMqtt —— 3、搭建Mqtt服务,修改QMqtt源码进行消息订阅测试(附源码)

效果 搭建EMQX即Mqtt服务 为了调试程序,我们需要一台MQTT服务器。EMQ公司官方提供了测试的MQTT服务器,但由于连接数众多,不太稳定,我们需要自己搭建一台MQTT服务器。 官网下载EMQX 启动:      1. 下载 emqx-5.1.1-windows-amd64.zip ,解压      2. 命令行下进入…