货代志:一个货代的点点滴滴

互联网的工作原理

想起以前刚开始建站的时候,让我比较难受的是,网上虽然有很多教程,但是教程里频频冒出来的一些名词,对我这个小白来说,有点吃力,所以我现在想重新整理一下,做个记录,虽然只是很基础的东西。先做个声明,所有东西都是我自己的读书学习笔记,肯定有不对和不全面的地方,并且,科技技术发展日新月异,很多东西都会更新,所以,

我们需要知道的一些基础,包括但不限于以下几个东西:

 

1,以太网,

IP地址,域名,DNS,

2,路由器的工作原理

3,光纤的工作原理

4,虚拟主机、服务器,VPS

5,HTTP的工作原理

6,TCP的工作原理

7,什么是网络协议栈(TCP/IP协议)

8,

9,

10,

11,

 

2个基础:物理传输和信息传输。

物理传输:我们的电脑用以太网电缆跟路由器相连接,路由器跟光纤电缆连接,光纤电缆和服务器相连接。如果你要访问的网站存储的服务器在欧洲、或者美洲,那么光纤电缆就会穿越高山和海底,横跨全球,非常壮观。

信息传输:你在浏览器的地址栏输入要访问的网址,DNS就会帮你找到与这个域名地址匹配的IP地址,然后TCP就会把你要访问的IP网址以及序列号等数据,按照HTTPS网络协议,转换成二进制数据包,发送给服务器,服务器根据

互联网的工作大致是这样的:我们用电脑在浏览器上输入域名,字符串,或者点击某个链接,这是我们发出的指令,这些指令会被转换成0和1,以电子的方式通过以太网电缆链接到路由器,路由器将电信号转换成光信号,然后由光纤电缆以折射光的方式传输到美国然后我们的设备和通过以太网光纤和路由器相连,路由器和光纤电缆相连接,路由器将电磁波信号转换为光信号,光信号通过光缆到达服务器,服务器收到了指令,找到存储在服务器里的数据,原路返回到我们的手机、电脑上。

 

光纤的工作原理:

光是沿直线传播的,但是光纤是弯弯曲曲的,那光在光纤里是怎么跑起来的呢?这个我们都知道了,只要角度够刁钻,光会像乒乓球撞墙一样反弹回来,根本出不去,也就是全内反射。另外一个物理现象就是,用激光直射水瓶子,在瓶子的另一边打个洞让水流出去,光完全跟着水流的角度出去了。科学家利用光的这个全内反射特性,研制出了透明度非常高的光纤,其实就是玻璃丝,是超高纯度二氧化硅玻璃,比普通玻璃纯净百万倍,当光以合适的角度进入,就会在光纤内部不断发生全内反射,从而沿着弯曲的玻璃丝前进,解决了光往前跑的问题,但这不足以让光直接传输上万公里,甚至更远,因为光会衰减,所以要在一定距离后加入放大器来放大信号。那么光信号是如何变成文字的?光纤传输文字信息其实就是二进制的玩法,你输入“女神在吗?”手机信号先传给基站,通过编码将这几个字转化为一长串的1和0,然后激光器通过快速开关产生光脉冲,亮一下代表1,灭一下代表0,就像用手电筒开关一样,光信号就在光纤里跑起来了,抵达接收方基站后把数据还原成电信号,通过天线发给手机,手机再反向操作,把电信号变回二进制代码,然后变成文字,显示在接收方的手机屏幕上。图片和视频也是这样原理,只不过更为复杂,要拆解成更多的1和0,就像把整栋楼拆成积木块运输,接收端再按编号把积木重新拼接起来,还原出完整的高清画面,所以你在刷短视频时,其实是在实时拼积木。

IP地址

IP地址全称:Internet Protocol Address,是指互联网协议地址,又译为网际协议地址,用来唯一标识互联网中的一个网络或一台主机,每个房子都有门牌号,而IP地址就是网络的门牌号,在浩瀚的互联网世界,每一台联网的设备,不管是你的电脑、手机,还是只能电视、摄像头,只要联网,都需要一个IP地址,才能相互找到对方。我们现在最常用的IP地址叫IPV4,也就是互联网协议第四版,它的标准形态是32位的二进制数,也就是32个由0和1组成的数字,但是人类看32个0 和1会很痛苦,所以我们为了方便记忆,把它分为四段,每段8个0和1,中间用点号隔开,然后把每段的二进制转换成十进制,这就是我们看到的点分十进制表示法,例如192.168.0.1,每一段8位数字的范围最小是0,最大是255,为什么是255,因为8个二进制的1换算十进制就是255,所以,当你看到某个IP地址出现了256或者400,那这个IP地址是错的。

IP地址不仅仅是一串流水号,它内部是由逻辑结构的,它由两部分组成:网络位和主机位,网络位是用来标识设备所在的网络,相当于整个小区的门牌号,同一网络内的所有设备的网络位是相同的。主机位,用来标识网络内的具体设备,相当于你家的门牌号,同一网络内的设备,主机位必须唯一,不能重复,那怎么区分哪部分是网络位?哪部分是主机位?靠子网掩码,子网掩码也是32位点分十进制格式,和IP地址一一对应,规则很简单,子网掩码中,255对应的IP地址部分是网络位,0对应的位置是主机位置,例如,IP地址192.168.1.100,子网掩码255.255.255.0,子网掩码前3段是255,对应IP地址前3段是网络位192.168.1,最后一段100是主机位,子网掩码255.255.255.0,转换成二进制是24个1和8个0,11111111.11111111.11111111.00000000,为了更好辨识,这个IP地址和子网掩码还会写成:192.168.1.0/24,即CIDR格式,就是用IP地址的网络位长度来标识网络。192.168.1.0/24,/24表示前24位是网络位,后8位是主机位,后8位一共可以有255个地址,但在这个网络中最多能容纳254台设备,因为第255是预留的,是广播地址,不能分配给设备,所以子网掩码的作用,就是用来划分网络大小的,它决定了一个局域网里能有多少台设备同时存在。

接下来我们需要知道公网IP地址和私网IP地址。公网IP地址就像是你在互联网世界里的全球唯一身份证号,它由运营商分配,可以直接在互联网上被路由和访问,私网IP地址则是为了在内部网络,例如家里的设备之间使用的地址段,它们无法在互联网上直接使用,你家里的手机、电脑获取到的就是路由器分配的私网IP,当你的设备要访问外网时,路由器会通过NAT技术,将你的私网IP转换成公网IP再发出去。

在IP地址的家族里,有几个特殊IP地址你需要知道,第一个是127.0.0.1,这个地址叫回环地址,它代表我自己,无论你的电脑有没有联网,你Ping这个地址永远是通的,通常程序员用来测试本地的网络程序正不正常。第二个是0.0.0.0,这个地址比较抽象,它通常代表任意地址,或者本机所有IP,如果你在服务器上配置程序监听0.0.0.0,意思是不管外面的连接从哪个网卡进来,我都接待。第三个是255.255.255.255,这是受限广播地址,如果你朝这个地址发数据,这就相当于在村口拿着大喇叭喊话,同一个局域网里所有设备都能接收到这个数据。

讲到这里,我们一直在聊IPv4,但是IPv4地址只有43亿个,早就枯竭了,虽然我们用NAT技术续命了很久,但是这不是长久之计,于是IPv6应运而生,IPv4是32位,IPv6是128位,这个数字大到什么程度呢?有一个比喻,IPv6可以让地球上的每一粒沙子都拥有一个独立的IP地址,IPv6不仅数量无线多,而且更安全,速度更快,配置也更简单,虽然我们现在还在IPv4和IPv6共存的过度期,但是你会发现,现在的手机4G,5G网络,以及家庭宽带,有已经分配了IPv6地址,未来,每一个冰箱,每一盏路灯,都可以拥有一个全球唯一的公网IP,这将是万物互联的基础。

 

DNS——互联网幕后英雄

我们每天都在使用浏览器浏览访问各种网站,例如我们在地址栏输入www.baidu.com,回车一下,网页立马就出来了,这看起来理所当然,但是浏览器是怎么找到百度服务器的?要知道,在网络的世界里,计算机之间只能通过IP地址来互相识别,比如202.108.22.5,计算机是不认识www.baidu.com这种字母组合的,这就出现了一个矛盾,我们人类能很容易记住www.baidu.com,但是很难记住202.108.22.5,但是机器只认数字IP,为了解决这个矛盾,DNS域名系统应运而生,简单来说,DNS就是互联网的导航员兼翻译官,它的核心职责只有一件事,把人类能容易理解和记忆的域名翻译成机器能读懂的IP地址,它的翻译过程很快,而且还有一套高效的查询流程,当你在浏览器输入一个网址的时候,你的设备会按顺序问四类服务器,第一步,问本地缓存,你的电脑,你的浏览器,你的操作系统都会缓存查询过的域名,如果之前访问过,系统会直接告诉你IP地址,不需要上网查,这是最快的。第二步,问本地DNS服务器,也叫递归DNS,它通常由你的运营商提供,比如电信,联通,移动,你的电脑会把请求丢给它,让它去帮你查,这个DNS服务器就像一个专业客服,专门帮你找到正确的答案。第三步,如果本地DNS找不到,它会继续去问根服务器,根服务器是全世界DNS系统的最高层级,一共有13组,分布在全球不同地方,它不会告诉你最终的答案,但是它会告诉你,你要查的域名属于哪个顶级域,比如.com, .cn, .cn ,让你往下一层查。第四步,本地DNS会根据根服务器的指引,去问顶级域名服务器,再去问权威DNS服务器,再去问权威DNS服务器,权威DNS服务器才会保存着域名真正的IP地址,查到结果后,本地DNS会把这个IP返回给你电脑,并缓存一段时间,下次查就更快了,浏览器拿到查询到的IP地址后,会使用此IP地址来进行网页的访问。整个过程听起来很复杂,但通常只需要几十毫秒。

为什么我们要设计得那么复杂,分这么多层,核心原因就是为了分权和抗压,没有一台服务器能存下全世界所有得域名数据,通过分层管理,全球的DNS系统既保证了数据的归属权清晰,又具备了极高的查询效率。DNS的核心价值有三个,第一,能让人记住域名,而不是IP地址,极大提升了可用性。第二,让全世界的网站能通过统一方式被访问,保证互联网正常运转。第三,通过不同的解析策略,比如负载均衡、多地区加速,可以让很多大型网站提升被访问速度。

 

 

什么是虚拟主机?

虚拟主机简单来说,就是电脑中的电脑,虚拟机的功能是在实体计算机中用一种模拟程序模拟出完整的计算机系统,可以简单得理解为在我们的电脑上去模拟出多个电脑。

那我们先来看一下我们的电脑的常规结构,首先是电脑硬件,也就是我们的主机,然后我们在主机上安装操作系统,比如windows操作系统,或者Linux操作系统。然后,我们在操作系统上安装软件,比如微信等聊天软件,还有浏览器、视频软件、办公软件等等,这是电脑中没有安装虚拟机的时候,如果我们在电脑中安装了虚拟机,肯定还是先有电脑硬件,同样还是在电脑硬件中安装操作系统,然后在操作系统上我们去安装一个软件,这个软件就是虚拟机软件,然后我们就可以在虚拟机软件上模拟虚拟的电脑,也就是在虚拟机软件上安装操作系统,然后在操作系统里面就可以像操作自己的电脑一样,去安装和使用一些软件。

当然虚拟机软件不是只能创建一个虚拟的操作系统,可以去创建更多的操作系统,然后在其他操作系统上再去安装我们需要使用的软件。

 

 

物理服务器太贵了,大家就想把一台机器切成好几台来卖,但又不能拿菜刀真的劈了这台机器,所以只能将性能以云技术为刀,切割成虚拟的硬件,组装成存在于互联网上的虚拟服务器,这便是云服务器了,VPS,ECS等眼花缭乱的叫法,归根结底都是类似如此。云服务器在使用上和物理服务器是一样的,同样可以自己安装Windows或者Linux等操作系统,只是性能是由物理机器分配共享的,由于硬件是虚拟的,所以无需购买真实的硬件,可以直接在线弹性升级,性能配置反而更灵活了。总结一句话就是云服务器就是没有实体机器,是虚拟的,但是使用上和服务器又是一样的。

以前云技术不成熟,无法虚拟化硬件,所以就直接共享物理机硬件,直接拿物理机的空间拿出来出租,你甚至可以理解成它是你的电脑上Windows服务器上的一个文件夹的使用权限,因为虚拟主机是服务器上直接开放一个指定空间的使用权限,所以本身使用的就是宿主服务器本身的环境,例如这台服务器本身是Windows操作系统,那你就直接使用它的系统,已经是固定的环境,不需要自己配置运行操作系统,更适合新手。而云服务器和物理服务器类似,都是自己选择安装什么操作系统,然后还要在操作系统上安装自己需要的软件等,比如Ngnix,apache,PHP,Mysql等。所以虚拟主机更方便,开箱即用,但是不拥有服务器的完整操作权限,一切操作仅通过给定的操作面板操作,无法自主升级,权限比较低,但不需要技术门槛,

 

NAT服务器其实就是共享IP的服务器,一般每台服务器都会配一个独立的公网IP,但是由于IP成本比较贵,所以有些不需要独立IP的人就可以购买NAT服务器共享IP,由于使用共享IP,所以需要把外部端口映射,分配每一台机器使用,相对来说使用起来会更加复杂,没有一定技术基础的新人很难掌握, 

 

 

域名

我们知道IP地址才是每台计算机或者服务器的唯一标识,其实直接使用IP地址访问网站也是可以的,比如我们知道百度的IP地址是180.101.50.242,把这个IP地址放到浏览器的地址栏,照样可以成功访问百度,不过现在会受到CDN内容分发网络,或者同一个公网IP下有多个域名的影响,单凭IP地址访问不到网站了,

 

二进制

二进制早在计算机出现之前就存在了,二进制只不过是一种计数系统,说二进制之前,我们先看看其他两种计数系统,计数标记和十进制进位系统,计数标记就是无论你有多少东西,你都写下相应数量的标记,例如你有100个苹果,那就在墙上写100个横杠,或者找来100根小木棍。而十进制进位系统是使用不同的符号来代表不同的数量,用数字0到9,每个符号表示不同数量的事物,如果我们需要表示比9更大的数,我们就在9的左边添加一位数字,而9变回0并且重新开始计数,

 

什么是网络协议栈?

我们上网微信聊天,刷视频以及使用搜索引擎搜索,每一个动作,背后都离不开网络协议栈,它是互联网数据传输的基础结构,是所有网络通信的工作流程。网络协议栈不是单一协议,而是一组分层协作的协议集合。为什么要分层,就像盖房子,分为地基、墙体、屋顶,各司其职,出问题了可以精准定位到某一层。

从计算机工程的角度,自顶向下,严谨地拆解TCP/IP五层模型:应用层、传输层、网络层、链路层、物理层。

 

第一层:应用层。

这是直接和我们用户打交道的一层,比如你在浏览器里输入www.baidu.com,或者在微信里发了一句“睡了没?”,APP或者浏览器使用特定的应用层协议,如HTTP、FTP、DNS等,按照协议的格式把数据进行封装,封装完成后,应用层就会调用Socket API,将数据写入内核缓冲区,正式移交给传输层。作为用户与网络的交互接口,应用层的核心作用是,将应用程序的业务数据转换为网络可传输的标准格式,并不关心数据的底层传输细节,只需要将封装好的业务数据块交给下一层即可。

 

第二层:传输层。

数据进入内核后,来到了传输层。这一层负责将封装好的数据包准确送达另一台设备的对应应用程序,它通过端口号来区分设备上不同的应用。我们知道一台设备上可以同时运行很多应用,比如浏览器,聊天工具,游戏,办公软件等,它们都要通过网络收发数据,那数据到达之后怎么知道交给谁?靠的就是端口号,传输层通过端口标识不同应用程序,收到数据包时,通过端口号把数据交到对应的应用程序手上。

这一层有2个核心协议:TCP和UDP,TCP负责建立稳定可靠的连接,有确认机制、丢失重传机制,流量控制、拥塞控制等能力,适合不能丢数据的场景,比如银行转账。UDP不保证可靠性,不建立连接,开销小、速度快,适合实时性要求高的业务,如视频通话、在线游戏。

在这一层封装完成以后,数据会带着:原端口+目标端口的头部信息传给网络层。

 

第三层:网络层。

传输层封装好的数据继续往下走来到网络层。传输层确定发到哪个应用,而网络层确定发到那台设备,这一层的核心是IP协议。每个网络设备都有一个IP地址,作为其在网络中的位置标识。网络层在传输层的基础上再次进行封装,加上IP头部,里面封装的是本机设备的IP地址和目标设备的IP地址。

网络层的主要工作就是根据IP地址进行寻址和路由选择,让数据包能够穿越多个不同的网络,抵达正确的目标网络。你常用的PING命令,用的就是这一层的ICMP协议,用来探测网络是否通畅。

 

第四层:链路层。

接着来到了数据链路层,数据在这里被封装成数据帧Frame,帧头部分包含了源MAC地址和目的MAC地址,尾部通常会有一个校验码,用于检测数据传输中有没有出错。这里最关键的就是MAC地址,它是网卡的唯一标识。

链路层像是小区内的快递员,当网络层IP决定了要去哪个小区之后,链路层负责在小区内部找到具体的那一户人家。网络层的IP地址只能定位到目标设备所在的局域网,但是进了局域网,就得靠数据链路层找具体的设备了。

 

第五层:物理层。

数据链路层封装好的帧还是数字信号,没法直接在物理介质上传输,物理层的核心作用就是把0和1组成的二进制数据转换成物理信号,通过网线、WiFi、光纤等硬件介质完成传输。网线、光纤、无线电波全都是物理层的范畴。

到这里,整个协议栈的五层结构就完整了。

应用层决定你要做什么。传输层决定如何可靠地把数据送到目标应用。网络层决定怎么找到对方的设备。链路层负责局域网内部的数据传输。物理层把真实信号发出去。它们像流水线一样,从上往下封装,从下往上解封。你打开一个网页,数据要经过五层封装,服务器回应你,也要经过五层解封。正是这套严密的协议栈,支撑起了真个互联网大的通信基石。

 

 

 

互联网是如何运作的?这是在一个复杂的光纤电缆网络,它链接数据中心和您的设备,你的手机可以通过蜂窝数据或者任何WIFI路由器链接到互联网,但是最终你的手机会链接到这个光纤电缆网络。一开始,您正在观看的视频存储在数据中心内,更具体地说,它存储在数据中内的固态设备中,该SSD充当服务器的内部存储器,服务器只是一台功能强大的计算机,其工作是为您提供你想要的数据,这些服务器内的数据,通过光纤电缆是如何来到你身边的。首先,我们要知道一个概念就是IP地址,所有连接到互联网的设备,无论是服务器,计算机,还是手机,都可以通过IP地址的一串数字,例如192.168.1.2,你可以将IP地址理解为一个家庭地址,这是唯一能标识你的家的地址,任何寄给你的东西,都是通过家庭地址到达你的手中,同样,在互联网中,IP地址充当送货地址,所有信息都通过它到达目的地,你的互联网服务提供商将决定你的设备的IP地址,并且你可以看到你的ISP为你的手机或者笔记本电脑提供的IP地址,数据中心里的服务器也有一个IP地址,服务器存储网站,因此你只需知道服务器的IP地址,但是IP地址很难以记忆,所以使用域名来跟这个IP地址绑定在一定,例如208.65.153.238跟youtube.com绑定,服务器能存储多个网站,如果多个网站存储在一个服务器上,那所有网站都不能使用服务器的IP地址访问自己的网站,这个时候用信息主机头标识网站。IP地址和域名之间是用DNS链接。DNS就像一个巨大的电话本,如果你知道某人的名字,不知道它们的电话号码,你只需要在电话本中查找即可。您输入域名,浏览器向DNS服务器发送请求,获取相应的IP地址,获取IP地址后,你的浏览器只是将请求转发到数据中心中的相应的服务器上,一旦服务器收到访问特定网站的请求,数据流就开始了,数据通过光纤电缆以数字格式传输,更具体地说是以光脉冲的形式传输,这些光脉冲有时会通过光纤电缆,穿越数千英里,到达目的地,在旅途中,它们经常要穿越崎岖的地形,例如丘陵或者海底,有全球性的公司维护这些光缆,这些光缆承载光脉冲穿过海底,到达你家的门口,然后连接到你家里的路由器,路由器将这些光信号转换成电信号,然后使用以太网电缆将电信号传输到您的笔记本电脑,但是如果你使用蜂窝数据访问互联网,信号必须通过光缆发送到手机信号塔,然后手机信号塔将信号以电磁波的形式到达您的手机。由于互联网是个全球网络,因此拥有一个负责管理IP地址分配,域名注册等事物的组织,这一切都由位于美国的一个名为icon的机构管理,互联网的惊人之处在于它的效率,与蜂窝和固定电话通信技术相比,传输数据。你现在正在观看的视频,它是以大量的0和1的形式发送给你,互联网传输数据之所以快,是因为这些0和1被切成很多小块,称为数据包,然后进行传输,这些0和1被分成不同的数据包,每个数据包由6个0和1组成,每个数据包还包含序列号,以及服务器和手机的IP地址,根据这些信息,数据包被路由到你的手机,没有必要让所有数据都通过相同的光缆,并且每个数据包都独立采用当时可用的最佳路径,到达你的手机之后,数据包将根据其序列号重新组合,如何由任何数据包无法到达你的手机,你可以发出指令,重新发送丢失的数据包。但是如果客户不遵守基本规则,关于目的地地址,这时候,信件将无法到达正确的目的地,同样在互联网中,我们使用一种称为协议的东西,来管理这种复杂的数据包,协议规定了数据包转换:

protocols:TCP/IP,   HTTP/HTTPS,   RTP.     

TCP/IP: transports data  (就是一个翻译器,能解决翻译问题)

HTTP/HTTPS: web access, 

RTP: live video,  streaming&voip  calls.。将原地址和目标地址附加到每个数据包,以及针对不同应用程序的路由器规则等协议用途不同,

 

 

互联网绝对是个伟大的发明。它是怎样实现全球上网的呢?关键就在这些深埋海底的光缆,它们横跨四大洋将全世界链接在一起,如果你感到网络不太好,说不定是鲨鱼在海底啃咬你的光缆。互联网于90年代进入大众,那时候的网线用的还是同轴线缆,它依靠电信号来工作,还得用语音分离器,将电话信号和互联网信号分离开,由于它们共用一条线路,所以你在接打电话时是上不了网的,并且很容易受到外部的电磁干扰,而我们现在用的基本都是光纤,光纤比头发丝还要细,放大来看,它其实就是高折射率的玻璃,当光进入内部便会发生全反射现象,所以我们的网络信号几乎是以光速在进行传输的,难怪我们上网感觉不到什么延迟。不过,我们的电脑并不能识别光信号,所以得先用光电转换器,也就是我们的光猫将其转换成电信号,当光照到光猫内部的光敏二级管上时,电子和电动便吸引到负极,电子被吸引到正极,这就是光电转换的方式,而转换后的电信号传输到路由器,最后路由器与我们的电脑连接,我们的电脑就能上网了。

 

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注