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

一、本次教程的目的

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

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

        我从最开始接触网络相关的知识到现在已经四年了,说实话在这四年中我学习到的东西是非常有限的我了解到的也仅仅是非常表面的东西。我第一次接触网络相关的配置还是配置家里的路由器,当时确实很害怕配坏了,后面开始慢慢了解网络的通信协议,跟着一些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.mzph.cn/pingmian/54074.shtml

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

相关文章

Windows11:解决近期更新补丁后无法上网的问题

点击开始菜单,打开设置,点击Windows更新,点击更新历史记录,点击“卸载更新“,找到这个补丁更新卸载即可。

【Linux】网络层协议——IP

一、IP协议 在前面,我们学习了应用层和传输层,接下来,我们来学习网络层,网络层的主要功能是在复杂的网络环境中确定一个合适的路由。 1.1 IP协议的基本概念 主机:配有IP地址,有可以进行路由控制的设备路由…

香港电讯SASE解决方案:终端与云端的安全护航

现代工作模式存在网络安全隐忧 随着远程办公模式的普及,越来越多员工使用各种个人终端设备,如台式电脑、笔记本电脑、智能手机、平板电脑等进行协作办公。然而,由于IT人才短缺和员工隐私等因素,许多企业无法统一管理端点设备的安…

【自动驾驶】决策规划算法(一)决策规划仿真平台搭建 | Matlab + Prescan + Carsim 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

开源免费的工贸一体行业ERP管理系统

引言 在当今数字化浪潮汹涌澎湃的时代,中小企业面临着前所未有的挑战与机遇。如何实现数字化转型发展,成为了众多中小企业主心头的大事。 据相关数据显示,目前我国中小企业数量已经超过了 4000 万户,然而成功实现数字化转型的比例…

『功能项目』按G键持续显示对话内容【61】

本章项目成果展示 我们打开上一篇60靠近Npc显示可对话标识的项目, 本章要做的事情是当靠近Npc按G键显示内容后,再按G键实现两个人的对话显示功能 首先将以下资源图片放进Art文件夹中并设置为精灵模式 在桌面上创建一个文本 讲一下对话内容复制到文本中 …

k8s(kubernetes)的PV / PVC / StorageClass(理论+实践)

NFS总是不支持PVC扩容 先来个一句话总结:PV、PVC是K8S用来做存储管理的资源对象,它们让存储资源的使用变得可控,从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&…

pgrouting实战应用

1)下载地区地区数据(下载数据是XYZM 四位数据) 2)下载裁剪行政区数据 3)使用arcgis pro添加路网数据和行政区数据 4)裁剪数据,仅历下行政区路网 5)arcgis pro要素转线&#xff0…

GPT-4-Turbo 和 Claude-3.5-Sonnet 图片识别出答题的是否正确 进行比较

1、比较的图片: 使用GPT-4-Turbo 输入的 提问: 识别图片中的印刷字和手写字,如果写错的给一个正确答案 图片 回复: 在图片中,印刷字显示的是一系列的英语填空练习题,而手写字则是填入空白处的答案。以…

Eclipse折叠if、else、try catch的{}

下载插件com.cb.eclipse.folding_1.0.6.jar。将插件放到eclipse的dropins文件夹中。修改配置,然后保存,重启Eclipse即可。

openstack之cinder介绍

概念 cinder 为虚拟机提供管理块存储服务。支持的文件系统:lvm、iscsi、nfs、san、RBD 组件构成及功能介绍 cinder api:在控制节点运行,管理服务的接口,被命令行、其他组件调用; cinder scheduler:类似n…

Ruoyi Cloud K8s 部署

本文视频版本:https://www.bilibili.com/video/BV1xF4Se3Esv 参考 https://blog.csdn.net/Equent/article/details/137779505 https://blog.csdn.net/weixin_48711696/article/details/138117392 https://zhuanlan.zhihu.com/p/470647732 https://gitee.com/y_project/Ruo…

初学Linux(学习笔记)

初学Linux(学习笔记) 前言 本文跳过了Linux前期的环境准备,直接从知识点和指令开始。 知识点: 1.目录文件夹(Windows) 2.文件内容属性 3.在Windows当中区分文件类型是通过后缀,而Linux是通过…

AtCoder ABC370 A-D题解

比赛链接:ABC370 AT 上 400 分寄。 Problem A: Code #include <bits/stdc.h> using namespace std; int main(){int L,R;cin>>L>>R;if(LR)cout<<"Invalid"<<endl;else if(L1)cout<<"YES"<<endl;elsecout<…

SAP到底是谁的系统?business or IT?

作为SAP顾问&#xff0c;我们可能常常听到业务部门的用户说“SAP是你们的系统&#xff0c;你们要把这些问题搞定”。那么到底这个SAP系统是SAP顾问所在的IT部门的吗&#xff1f;这其实是一个很好的问题&#xff0c;反映出企业对于与SAP系统相关问题的职责划分。每个企业的情况还…

LeetCode_sql_day26(184,1549,1532,1831)

描述 184.部门工资最高的员工 表&#xff1a; Employee ----------------------- | 列名 | 类型 | ----------------------- | id | int | | name | varchar | | salary | int | | departmentId | int | -----------------…

list从0到1的突破

目录 前言 1.list的介绍 2.list的常见接口 2.1 构造函数&#xff08; (constructor)&#xff09; 接口说明 2.2 list iterator 的使用 2.3 list capacity 2.4 list element access 2.5 list modifiers 3.list的迭代器失效 附整套练习源码 结束语 前言 前面我们学习…

FastAdmin CMS 操作手册

FastAdmin CMS 操作手册 概述&#xff1a; 安装&#xff1a; 配置&#xff1a; 模板&#xff1a; 模板目录&#xff1a; 标签&#xff1a; 全局&#xff1a; 文章&#xff1a; 专题&#xff1a; 栏目&#xff1a; 公共参数&#xff1a; 单页&#xff1a; 特殊标签&#xff1a;…

138_Java基础_常用类搭建教程java部署mysql5.5

安装&#xff1a; yum -y install build-essential QQ1594457675 安装&#xff1a;更多依赖包 yum -y install gcc automake autoconf libtool make 安装&#xff1a;数据库 这里需要注意数据库密码记得修改 数据库账号QQ 数据库密码1594457675 yum -y install gcc …

Linux 文件 IO 管理(第一讲)

Linux 文件 IO 管理&#xff08;第一讲&#xff09; 回顾 C 语言文件操作&#xff0c;提炼理解新创建的文件为什么被放在可执行文件的同级目录下&#xff1f;上述 log.txt 何时被创建&#xff1f;又是谁在打开它&#xff1f;那文件没有被打开的时候在哪里&#xff1f;一个进程可…