[网络]从零开始的计算机网络基础知识讲解

一、本次教程的目的

        本次教程我只会带大叫了解网络的基础知识,了解网络请求的基本原理,为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层,并不涉及协议的具体实现和数据转发的规则。也就是说,这篇教程是面向纯网络小白的。即使你没有任何网络基础也可以看本篇教程。当然,本篇教程中涉及了一些很普遍的观点和我自己对网络的理解,本人不是专业的网络工程师,文章中有错误还请指正。

二、网络相关知识的学习感悟

        我从最开始接触网络相关的知识到现在已经四年了,说实话在这四年中我学习到的东西是非常有限的我了解到的也仅仅是非常表面的东西。我第一次接触网络相关的配置还是配置家里的路由器,当时确实很害怕配坏了,后面开始慢慢了解网络的通信协议,跟着一些UP主慢慢的搭建自己的网站,理解正向代理和反向代理,理解DNS这一类的网络术语。当然,直到现在,我仍然是一位网络小白,要学习的东西还很多,之前也提到了这篇文章我会结合目前普遍的观点并且结合了我自己的一些看法,当然,中间可能会有不准确的地方,毕竟我也只是一位网络小白。这篇文章会为我以后的文章做铺垫,在以后的文章中,我可能会经常引用这篇文章。

三、网络中的硬件设备

        我们首先为大家介绍网络中最常见的硬件设备,这些设备的存在构成了我们整个互联网。所以学习计算机网络的的基础是网络硬件设备。下面我会为大家介绍路由器,交换机,网关等网络基础设备。

1.路由器

路由器主要作为网络中非常重要的一个设备,它负责在不同网络之间转发数据包,并确保数据能够到达正确的目的地。

首先,路由器的核心功能是根据数据包的目标地址将数据从一个网络转发到另一个网络。它使用路由表来决定数据包的最佳路径。我们的数据包发出的第一步就是到路由器,经过路由器向外转发并找到通信的最优解。

其次,路由器也负责网络的连接,路由器通过数据的转发实现两台网络设备的连接。

然后,路由器也负责了网络地址转换,路由器能够将外部的公网地址转换为内部的私有地址。这项技术也被广泛用在我们公网IP不够时分配网络。在我们日常使用的网络中,都是经过上层设备经过网络地址转换以后得到的。

路由器在网络中也具有一定的防火墙功能,因为路由器在隔离了公网和内网,所以路由器在某些时候也能拦截网络中的危险数据和部分攻击。

路由器在日常生活中也负责了产生无线网络,我们日常中连接的wifi就是路由器产生的。

上面就是路由器的基础功能,后面的讲解中我们也会使用到路由器的某些概念。

2.交换机

        交换机在我们网络通信中也是非常重要的,在常见的网络配置中,我们的交换机有非常多的种类,下面我们只讲最普通的两种,分别是“两层交换机”和“三层交换机”。

下面我们来讲解一下两层交换机,这里又涉及到互联网通信中层的概念,这个我们后面会讲到,两层的交换机这里的层就对应了互联网通过信中的层。具体的来说两层交换机能处理的就是数据链路层的数据,也就是两台设备使用MAC通信的数据。当然,我们这里先不说网络的抽象概念,我们这里也只了解互联网的硬件。交换机一般拥有非常多的网口,这些网口我们可以接各种设备,交换机让这些设备在物理层面上连接在一起。当我们的其它网络设备的接口不够用时我们也会使用交换机来扩展网络接口。对于两层交换机而言,它只能处理两层的数据,所以我们一般使用在局域网中。如果要发送网络请求或者路由数据包我们还是需要借助路由器。

接下来是三层交换机,这里的三层对应的同样是互联网通信中的层。三层交换机能够处理IP层的数据,这也就意味着,我们日常中的大部分通信数据都能被三层交换机处理,三层交换机主要用于企业中设备之间的数据通信。交换机主要用于简单的路由数据包转发,和路由器不同,它不像路由器那样能够处理广域网的数据,当然这其中会涉及到这些设备的底层构造,我也没了解过,所以这里不过多讲解。

3.网关

        网关在我们的网络中负责了不同网络或协议之间进行通信和转换。网关的作用是使不同类型的网络或系统能够互相理解和交互。在日常生活中,我们常常就把路由器当作我们的网关,我们于别的设备的通信和数据交互我们也都交给路由器来执行。对于网关大家在这里具有概念就行,可以理解为一个转发数据的节点。

四、网络模型

        目前,我们说得最多的网络模型指的是OSI七层和TCP/IP四层模型。OSI对我们的网络进行了更详细的分层,分别定义了会话层和表示层,这里的层越往下越接近硬件,越往上也越接近用户。

下面我会为大家重点介绍网络七层协议。

下面我们来看上面这样图,这张图非常形象的描述了网络的七层协议,我们现在来一一分析。

首先是最底层的物理层,它负责了数据传输的物理连接,我们的两个设备要通信它们必须要有物理上的连接。物理层就是将所有的用于通信的设备连接在一起,它定义了电气信号、光信号、机械连接和传输介质的标准。

下面是数据链路层,它负责将网络层传来的数据包封装成帧,处理错误检测和纠正,并控制数据流量。它确保在局域网内的可靠传输。同时它也能对数据进行检测和纠正,提高数据传输的稳定性。它同时也接管了数据流量,防止网络拥堵。

然后是网络层,它负责数据包的路由和转发,确保数据能够从源设备传输到目标设备。它处理逻辑地址(如IP地址),并管理网络中的路径选择。网络层也定义了如今我们最常用的IPV4与IPV6协议,这个我们在后面会讲到。

再然后就是我们的传输层,它负责端到端的数据传输,提供数据完整性和顺序控制。它处理数据流量控制和错误恢复,确保数据在两台设备之间的可靠传输。这也是目前我们使用最多的两种协议,一些上层协议也是基于这两种协议进行封装。

下面是会话层,它管理应用程序之间的会话,负责会话的建立、维护和终止。它提供了会话的同步和恢复功能。

然后是表示层表示层负责数据的格式化、加密和解密,使得数据可以被不同系统理解。它处理数据的语法和语义。我们的SSL和TLS就被定义在了这一层。

最后就是我们的应用层,它提供网络应用程序的接口和服务,直接与用户交互。它处理应用程序的数据和协议,支持各种应用服务。我们的HTTP和HTTPS也被定义在了这一层,这也是距离用户最近的一层。

简单的了解互联网基本模型以后,我们就可以进行进一步的学习了,下面我会带大家看看网络请求的基本原理。

五、网络请求的基本原理

        下面我们来看看网络请求的基本原理,当然这里也不会涉及到自己编写网络请求等操作,全程不会有任何程序操作,我们只会讲原理,并不会讲过程。下面我将从IP地址请求,以及DNS几个方面来为大家讲解。

1.IP地址

        目前我们使用得最多IP地址为IPV4和IPV6地址,使用的协议也是与之对应的IPV4协议与IPV6协议。在日常生活中IPV4地址已经在全球范围内普及,所以我们下面会重点讲IPV4地址。

IPV4地址是一个32位的地址,即四个字节,我们将这32位每八位一分组,分成四份,用十进制表示,这就是我们日常看到的最多的IPV4地址的表示方式。如图:

上图就是我的计算机被分配到的IP地址,这是一个内网地址,我们后面也会为大家讲解内网地址与公网地址的区别。在上图中我们可以看到,这段IP地址被分为了四段并且使用“.”号分割。由于我们位数的限制所以,每一段内就只能是“0~255”这个范围,也就是说,我们最大的IPV4地址为“255.255.255.255”最小的IPV4地址为“0.0.0.0”.下面我们要讲到IPV4地址的几个保留地址段。

127.0.0.0\8:作为本地环回地址,通常我们使用127.0.0.1,设备通过它和自己通信,我们日常在自己设备上搭建了网络服务我们就可以直接通过127.0.0.1来访问。

10.0.0.0/8:局域网A类私有地址,范围10.0.0.0~10.255.255.255,这是一个内网保留段,主要用在我们的局域网中,我们路由器给我们下发的内网地址就可能使10开头的,因为10.0.0.0/8段的网段非常宽,可以包含非常多的地址,所以一般也用在企业中。

172.16.0.0/12:局域网B类私有地址,范围172.16.0.0~172.31.255.255,与上面的A类地址类似,但它的网段下能够包含的设备就少了许多。

192.168.0.0/16:局域网C类私有地址,范围192.168.0.0~192.168.255.255,与上面的A类地址类似,但是它网段下能包含的设备就更少了,我们的路由器常常会分配给我们192.168网段的地址。例如192.168.1.1就是一个C类地址,我们地址的前段一样也就表示设备在一个网段中,只有在一个网段中的设备才能互相通信。

255.255.255.255:这是一个本地广播的地址,用于将数据包发送到同一子网中的所有主机,但这些数据包只会在内网中发送,并不会经过路由器。

除了上面提到的一些地址以外,还有很多保底地址段,这些地址段在某些地方发挥着重要作用。当然除了保留地址除外的都是公网地址了。

2.公网地址与内网地址

        我们刚刚提到的,诸如192.168.1.1就是一个内网地址,这个如果内网的设备没有部署任何服务,或者内网没有分配这个IP地址的话我们是不能访问这个设备的。在公网地址中,我们通过路由器帮我们转发数据,下面,我们来看一个简单的模型:

这里有一个非常简单的模型,我们的两台计算机都连接到路由器上,它们都被分配了IP地址,我们可以看到两台计算机都处于一个网段中,它们都在192.168.55的网段下,也就意味着它们可以互相通信,我们可以直接使用一台机器去Ping另一台机器:

我们发现我们可以ping通这台机器,并且TTL是128,这里的TTL是指网络中的越点数,每经过一个越点TTL就会减1,因为我们这里是在内网中进行通信,并没有越点,所以这里的TTL不会减少。

下面我们ping一下别的IP地址,比如,我们去ping一下百度服务器:

这里得到的ip并不是百度真实的IP。而是百度加速服务器的IP。

我们在这里可以看到这里的TTL已经变了变成了48,也就是说我们的数据包经过了80次跳转,跳转到了百度的服务器,当然,也有ping不通的情况,在ping不通时可能是对方服务器关闭了ping,你可以考虑换一个网站来ping。

在上面的模型中,我们挂载在路由器下的设备被我们称为内网设备,有公网IP的设备,比如百度的服务器被我们称为公网设备。当我们向一个IP地址发起请求时,我们的路由器会处理我们的请求,它会查看自己的路由表中有没有要访问的这个地址,如果没有路由器就会把数据发出去由上级的路由来处理,上级的路由拿到数据以后,如果发现自己的路由表中没有这个设备同样的将数据包发送到更上层的路由,直到在某一时刻,数据包跳转到到某个路由服务器中,这个服务器的路由表下有你想访问的地址,至此,这台服务器就会将你的数据包交给对应的服务器。相关的服务器在接收到你的数据包以后,会返回响应的数据,响应的数据会按原路返回到你的计算机中,至此,一次基本的网络请求就完成了。当然,这只是一种简单的描述方法,在实际的网络环境中,网络数据包的请求要复杂得多。

3.DNS服务器

        在日常我们访问网站的时候,大部分时候我们使用的都是一个网站的域名,很少会使用ip地址直接去访问某个网站。比如我们的“baidu.com”这就是一个域名,这也是为了方便人们记忆而诞生的。那么,我们的IP地址是怎么对应到域名的呢?下面我们来详细讲讲。

当我们在浏览器中请求一个域名时,我们的计算机为了找到它的IP地址,首先会在本地的缓存中寻找,有没有域名对应IP地址的记录,当本地缓存没找到这个域名对应的IP地址时,计算机就会去找自己的hosts文件,这个文件也可以用于描述域名对应的IP地址,我们也可以直接修改这个文件从而让域名指向不同的IP地址,当然,这个只在本地生效。如果计算机在DNS缓存和hosts文件中都没有找到对应的IP地址那么计算机就会请求DNS服务器,在DNS服务器中保存了所有的域名解析记录。当我们请求DNS服务器时,它就会返回一个域名对应的地址。

下面我为大家演示一下,如何让通过修改hosts来让域名对应IP地址。

我们现在去到hosts文件的路径:“C:\Windows\System32\drivers\etc”

我们打开hosts,并且在hosts下面添加一条域名对应IP地址规则:

我们现在去ping这个域名:

在我们Ping这个域名的时候我们就能发现,我们的域名直接对应到了我们刚才对应的IP地址。

以上就是DNS的基本原理了。

六、什么是正向代理和反向代理

这是在我们网路通信中经常会听到的词,那么什么是正向代理,什么是反向代理呢?下面我们来详细说说:

1.正向代理:

        在我们日常生活中正向代理使用的是非常多的。正向代理服务器一般存在于用户和目标服务器之间。当我们将一个服务器配置为我们的正向代理服务器以后,计算机的网络请求就会被打包发送到正向代理服务器,这个被打包的数据包中包含了我们想访问的网站等信息,正向代理服务器接收到数据包以后会将我们,将我们数据包进行解包,并且自己访问我们想访问的地址,在接收到服务器响应以后,正向代理服务器将服务打包发回我们,至此就已经完成了一次正向代理请求。正向代理服务能够解除我们的一些访问限制,也能帮我们隐藏自身真实的IP地址。

2.反向代理:

        反向代理比起正向代理可能会使用得少一些,正向代理代理的是我们的客户端,处理了我们客户端的请求,反向代理服务器代理的是服务端,它决定了请求发往哪一台服务器。例如我们有一台服务器具有公网IP,它的下面挂载了许多设备都不具有公网IP,这台反向代理服务器就可以决定将自己的访问流量转发到哪一台没有公网IP的服务器上。最为典型的就是我们的FRP服务。

七、结语

        上面的网络知识是非常浅显的,我并不是计算机专业或者专门的网络工程师,我对网络的见解也仅仅是停留在以上。这篇CSDN也只是对我以往学习的网络知识的总结,如果有错误的地方还请大佬指出。当然,如果你想更深入的了解网络相关的知识,可以去观看更多的视频或者文章,这些知识需要自己慢慢理解。在我以后的文章中可能会经常引用这篇文章。谢谢大家!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四届长城杯部分wp

还是太菜了,要经常练了 1.BrickGame 读源码可以看到时间的值是由js设定的,所以控制台将timeleft的时间改成999999 通过游戏就可以得到flag 2.SQLUP 一道文件上传的题目,在登陆页面我用admin和1登陆成功了,但是按照正常的应该是…

Android 语言国际化三步

1.罗列: 可以多罗列几个 不需要全部实现 res下创建这个文件:locale-config <locale-config xmlns:android"http://schemas.android.com/apk/res/android"><locale android:name"zh" /><locale android:name"en" /><lo…

Proteus仿真综合实例(1)

分享一些基于Proteus的仿真实例&#xff0c;供大家学习参考。 1、51单片机230个Proteus仿真实例 包含基于51单片机的230个仿真实例&#xff0c;涉及定时器、中断、LCD显示、DS18B20温度测量、DS1621温度测量、PWM生成等充足电路模型案例。 2、51交通灯 模拟实现基于51单片机…

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688&#xff0c;功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算&#xff0c;可支持 16 路高清视频实时分析&#xff0c;灵活应对图像、语音、自…

灭火器目标检测数据集 3700张 灭火器 带标注 voc yolo

数据集名称&#xff1a; 灭火器目标检测数据集 数据集规模&#xff1a; 图像数量&#xff1a;3700张标注类型&#xff1a;灭火器检测格式兼容性&#xff1a;支持VOC和YOLO标注格式 数据集内容&#xff1a; 该数据集旨在用于训练和评估计算机视觉模型&#xff0c;特别是针对灭…

7个最佳实践的潜在客户捕获登录页面案例

什么是线索捕获页面&#xff1f; 线索捕获页面是一个着陆页&#xff0c;它向潜在客户提供某种回报以换取他们的电子邮箱地址或其他信息。任何带表单的页面&#xff0c;包括电子书下载页面、演示请求页面或新闻通讯注册页面&#xff0c;都可以视为线索捕获页面。 与您网站上的…

九盾叉车U型区域警示灯,高效照明和安全警示

叉车运作的环境比较复杂&#xff0c;在方便人们物流运输的同时也存在着很大的安全隐患&#xff0c;特别是叉车碰撞人的事故发生率很高&#xff0c;那我们该怎么在减少成本的同时又能避免碰撞事故的发生呢&#xff1f; 九盾叉车U型区域警示灯&#xff0c;仅需一盏灯安装在叉车尾…

ElasticSearch的DSL查询④(DSL查询、RestClient的DSL查询)

目录 一、DSL查询 1.1 快熟入门 1.2 叶子查询 1.2.1 全文检索查询 1&#xff09;match查询 2&#xff09;multi_match查询 1.2.2 精确查询 1&#xff09;term查询 2&#xff09;range查询 3&#xff09;ids查询 1.3 复合查询 1.3.1 bool查询 1.3.2 算分函数查询 …

AI对未来教育领域的改变!如何使用ChatGPT,一个高效提问的指令构建模型,通过ChatGPT有效提高学习效率

AI 到底有多厉害&#xff0c;要取决于你自己有多厉害。ChatGPT 是一种生成性 AI&#xff0c;生成性的意思就是它会创造内容&#xff0c;但发挥到什么程度&#xff0c;完全取决于你将如何使用。 ChatGPT 虽然以 Chat 开头&#xff0c;但是如果我们只把它当成一个像 QQ 一样的聊…

记录类(record(java14开始))

1.不变类 a.使用final修饰class类&#xff0c;无法派生子类。 b.每个字段使用final修饰&#xff0c;保证创建实例后无法修改任何字段。 2.record关键字 a.java14后用此关键字定义不变类。 b.编译器自动编译为使用final修饰的类和每个字段&…

一键快速制作和印刷样本册,推荐一个优质网站:FLBOOK

​在当前的数字化时代&#xff0c;样本册的制作和印刷已经不再是一件复杂的事情。为了满足广大用户的需求&#xff0c;越来越多的在线制作平台应运而生。今天&#xff0c;我要向大家推荐一个优质网站——FLBOOK&#xff0c;它可以帮助您快速制作和印刷样本册。 FLBOOK是一个在线…

走进低代码报表开发(二):高效报表设计新利器

在前面的文章中&#xff0c;我们已经详细介绍了勤研低代码开发平台的报表数据源可视化设计&#xff0c;接下来&#xff0c;让我们一起来继续了解勤研低代码平台的报表设计&#xff0c;在当今数字化快速发展的时代&#xff0c;高效便捷的开发工具对于企业和开发者来说至关重要。…

开关电源综合测试平台自动生成报告,智能分析电源测试参数

在电源模块的检测过程中&#xff0c;数据的准确性和分析效率至关重要&#xff0c;开关电源综合测试平台的数据报告和数据分析功能为企业的电源测试带来了便利。 NSAT-8000开关电源综合测试平台是集自动化测试与数据收集分析于一体的综合测试软件&#xff0c;打破了传统测试系统…

Java数组的定义及遍历

数组的声明 长度不能超过定义的长度。超过则会报错通过下标来访问 数组的遍历 最常用最简单的方法是增强for循环。

Django 如何全局捕获异常和DEBUG

DEBUG 默认&#xff1a;False 一个开启、关闭调试模式的布尔值。 永远不要在 DEBUG 开启的情况下将网站部署到生产中。 调试模式的主要功能之一是显示详细的错误页面。如果你的应用程序在 DEBUG 为 True 时引发了异常&#xff0c;Django 会显示一个详细的回溯&#xff0c;包…

mfc140u.dll文件错误的相关修复方法,4种方法修复mfc140u.dll

当面对基于Microsoft Visual C开发的应用程序出现启动或运行失败时&#xff0c;mfc140u.dll文件错误往往是罪魁祸首之一。这个动态链接库&#xff08;DLL&#xff09;文件对于许多Windows软件来说是必不可少的&#xff0c;因为它包含了重要的编程代码和数据。如果发现此文件损坏…

Mac M1安装Hive

一、下载解压Hive 1.官网地址 https://dlcdn.apache.org/hive/ 2.选择对应版本进行下载&#xff0c;这里我以3.1.3为例&#xff1b; 3.下载好后&#xff0c;进行解压&#xff0c;并重命名为hive-3.1.3&#xff0c;放到资源库目录下&#xff1b; 二、配置系统环境 1.打开~/…

c语言和c++的区别

在计算机编程领域&#xff0c;C语言和C无疑是两座重要的里程碑。尽管它们在很多方面有着相似之处&#xff0c;但在设计理念、功能特性以及应用场景上&#xff0c;两者又存在着显著的差异。小编将从多个角度深入探讨C语言和C的区别&#xff0c;帮助读者更好地理解这两种编程语言…

构建安全畅通的道路网络:EasyCVR视频汇聚平台在道路监控中的创新应用

随着城市化进程的加速和交通流量的不断增加&#xff0c;道路监控已成为确保交通安全、维护社会秩序的重要手段。道路上的监控摄像头多种多样&#xff0c;大致可以分为这几类&#xff1a;交通道路监控、治安监控、路口违章监控&#xff0c;以及车辆测速监控等。基于智慧交通的需…

C语言--12字符串处理函数

函数strstr 函数strchr与strrchr 注意&#xff1a; 这两个函数的功能&#xff0c;都是在指定的字符串 s 中&#xff0c;试图找到字符 c。strchr() 从左往右找第一个&#xff0c;strrchr() 从左往右找最后一个。字符串结束标记 ‘\0’ 被认为是字符串的一部分。 函数strlen 示例…