网络是怎样连接的-概述

网络是怎样连接的-概述
曾经有同学来找我帮忙,说家里电脑上不了网了。
我跑到他家里一看,网页确实怎么都打不开,但奇怪的是 QQ 居然能上,
而且还能正常跟人聊天。当时的搜索引擎还没有这么强大,这个问题让我很是困扰。忽然我发现他电脑上 TCP/IP 设置中没有使用自动分配的 DNS服务器,而且他自行设定的 DNS 服务器地址是错误的,改回自动配置DNS 之后,故障就解决了。可是为什么 DNS 不对,QQ 却可以正常上呢?后来我才知道,因为 QQ 是直接使用 IP 地址来连接服务器的,所以即便DNS 失效,它依然可以“屹立不倒”,以至于现在有很多人把 QQ 当成一个排查 DNS 问题的“参照物”。
上面这个例子现在看起来其实非常小儿科,不过这也恰恰说明了网络很复杂,你看我只是上个网而已,怎么又冒出来一个 DNS 呢?即便到了现在,要跟周围不大懂网络的朋友解释什么叫 DNS,也得花上点功夫才行。
其实,不说 DNS,就说家里上网用的那个路由器,也不是什么省油的灯。很多人又要说了,我把电脑插到路由器上就能上网了,这又有什么复杂的嘛?那么我再讲个故事吧。有一次公司网络要改造,换了一台用RouterOS 系统的网关。RouterOS 这个系统,识货的人都知道,它的性能非常棒,灵活性也非常高,但是你要对网络特别了解才能玩得转。网关装上去之后,我想咱们先做个最简单的配置吧,就跟家里路由器一样,电脑插上去能上外网就行了。
然而,真配起来才发现,想要手动实现家里路由器的那些功能还真没那么容易。首先,接在路由器上的电脑需要彼此能够通信,这需要配置一个基本的交换机功能。其次,接在路由器上的电脑要自动获取 IP 地址等配置,这需要配置一个 DHCP 服务器。然后,连接外网的端口需要单独配置它的 IP 地址等参数,或者配置 PPP 连接,还得配置相应的路由表。到这里还不算完,因为内网的电脑要访问外网,还得配置好网络地址转换(NAT)!想要上个网还真挺复杂的是不是?你觉得简单是因为你家的路由器帮你把这些功能都集成好了而已。
如果上面这一段让你看得有点晕,那么这就是为你准备的。上面提到的这些东西,我都有深入浅出的介绍。我读过很多计算机网络方面的书,但也正是因为网络太复杂了,这些书一般都只讲其中的一个协议(比如 HTTP),或者是一个局部的技术(比如网络设备的部署),很少有像这本书一样,从一个常见的场景切入,把整个网络的全貌如此清晰地展现出来。用本书作者的话说就是:不理解网络的全貌,也就无法理解每一种网络技术背后的本质意义。
探索之旅指南
从在浏览器中输入网址,到屏幕上显示出网页的内容,在这个只有几秒钟的过程中,很多硬件和软件都在各自的岗位上相互配合完成了一系列的工作。本书将以探索之旅的形式,带领大家探索这一系列工作中的每一个环节。每个单独的环节都并不复杂,只要仔细阅读就一定能够理解。不过,探索之旅中出现的硬件和软件数量庞大,如果仅从微观的视角关注每一个单独的点,可能就会因为看不到整体而迷失了方向。因此,在真正出发开始探索之前,我们先来对这次探索之旅作个简单的介绍。下面的介绍中还包含一张探索之旅的路线图,万一在旅途中迷失了方向,请大家务必回来看一看这张地图。
网络的全貌
让我们先来看一下浏览器访问 Web 服务器这一过程的全貌。访问 Web服务器并显示网页这一过程包含了浏览器和 Web 服务器之间的一系列交互,主要是下面这样的交互。
(1) 浏览器:“请给我 ××× 网页的数据。”
(2) Web 服务器:“好的,这就是你要的数据。”
在这一系列交互完成后,浏览器就会将从 Web 服务器接收到的数据显示在屏幕上。虽然显示网页这个过程非常复杂,但浏览器和服务器之间通过网络进行的交互却出乎意料地简单。我们在网上商城购物时输入商品名称和收货地址并发送给 Web 服务器的操作其实也差不多,如下。
(1) 浏览器:“请处理这些订单数据。”
(2) Web 服务器:“好的,订单数据已收到。”
要实现应用程序之间的交互,我们需要一个能够在浏览器和 Web 服务器之间传递请求和响应的机制。网络是由很多计算机等设备相互连接组成的,因此在通信的过程中需要确定正确的通信对象,并将请求和响应发送给它们。请求和响应在传递的过程中可能会丢失或损坏 A,因此这些情况也必须要考虑到。所以说,我们需要一种机制,无论遇到任何情况都能够将请求和响应准确无误地发送给对方。由于请求和响应都是由 0 和 1 组成的数字信息,所以可以说,我们需要的是一种能够将数字信息搬运到指定目的地的机制。
这种机制是由操作系统中的网络控制软件,以及交换机、路由器等设备分工合作来实现的,它的基本思路是将数字信息分割成一个一个的小块,然后装入一些被称为“包”(Packet)的容器中来运送。“包”这个词大家可能在用手机的时候经常会碰到 B,但在这里类似于邮政和快递中的概念。大家可以这样理解:包相当于信件或者包裹,而交换机和路由器则相当于邮局或快递公司的分拣处理区。包的头部存有目的地等控制信息,通过许多交换机和路由器的接力,就可以根据控制信息对这些包进行分拣,然后将它们一步一步地搬运到目的地。无论是家庭和公司里的局域网,还是外面的互联网,它们只是在规模上有所不同,基本的机制都是相同的。
前面介绍的这个负责搬运数字信息的机制,再加上浏览器和 Web 服务器这些网络应用程序,这两部分就组成了网络。也就是说,这两部分组合起来,就是网络的全貌。我将通过 6 章的内容,带领大家逐一探索其中的各个环节。

在这里插入图片描述
我们将首先探索浏览器的工作方式。大家可以认为我们的探索之旅是从在浏览器中输入网址(URL)开始的。例如,当我们输入下面这样的网址时,浏览器就会按照一定的规则去分析这个网址的含义,然后根据其含义生成请求消息。
http://www.lab.glasscom.com/sample1.html
在上面这个例子中,浏览器生成的请求消息表示“请给我 sample1. html 这一文件中储存的网页数据”,接着浏览器会将请求消息发送给 Web服务器。
当然,浏览器并不会亲自负责数据的传送。传送消息是搬运数字信息的机制负责的工作,因此浏览器会委托它将数据发送出去。具体来说,就是委托操作系统中的网络控制软件将消息发送给服务器。第 1 章中,我们会探索到浏览器将数据委托出去为止。
在这里插入图片描述
第 2 章我们将探索搬运数据的机制。其中最先出场的是协议栈(网络控制软件叫作协议栈)。这个软件会将从浏览器接收到的消息打包,然后加上目的地址等控制信息。如果拿邮局来比喻,就是把信装进信封,然后在信封上写上收信人的地址。这个软件还有其他一些功能,例如当发生通信错误时重新发送包,或者调节数据发送的速率等,或许我们可以把它当作一位帮我们寄信的小秘书。
接下来,协议栈会将包交给网卡(负责以太网或无线网络通信的硬件)。然后,网卡会将包转换为电信号并通过网线发送出去。这样一来,包就进入到网络之中了。
在这里插入图片描述
接下来出场的物品会根据接入互联网的形式不同而不同。客户端计算机可以通过家庭或公司的局域网接入互联网,也可以单独直接接入互联网。很遗憾,我们的探索之旅无法涵盖所有这些可能性,因此只能以现在最典型的场景为例,假设客户端计算机是连接到家庭或公司的局域网中,然后再通过 ADSL 和光纤到户(FTTH)等宽带线路接入互联网。
在这样的场景中,网卡发送的包会经过交换机等设备,到达用来接入互联网的路由器。路由器的后面就是互联网,网络运营商会负责将包送到目的地,就好像我们把信投到邮筒中之后,邮递员会负责把信送给收件人一样。
在这里插入图片描述
接下来,数据从用来接入互联网的路由器出发,进入了互联网的内部。互联网的入口线路称为接入网。一般来说,我们可以用电话线、ISDN、 ADSL、有线电视、光线、专线等多种通信线路来接入互联网,这些通信线路统称为接入网。接入网连接到签约的网络运营商,并接入被称为接入点(Point of Presence,PoP)的设备。
接入点的实体是一台专为运营商设计的路由器,我们可以把它理解为离你家最近的邮局。从各个邮筒中收集来的信件会在邮局进行分拣,然后被送往全国甚至全世界,互联网也是一样,网络包首先通过接入网被发送到接入点,然后再从这里被发送到全国甚至全世界。接入点的后面就是互联网的骨干部分了。
在骨干网中存在很多运营商和大量的路由器,这些路由器相互连接,组成一张巨大的网,而我们的网络包就在其中经过若干路由器的接力,最终被发送到目标 Web 服务器上。其中的具体细节我们会在正文中进行讲解,但其实它的基本原理和家庭、公司中的路由器是相同的。也就是说,无论是在互联网中,还是在家庭、公司的局域网中,包都是以相同的方式传输的,这也是互联网的一大特征。
不过,运营商使用的路由器可跟我们家用的小型路由器不一样,它是一种可以连接几十根网线的高速大型路由器。在互联网的骨干部分,存在着大量的这种路由器,它们之间以复杂的形式连接起来,而网络包就在这些路由器之间穿行。
在这里插入图片描述
通过骨干网之后,网络包最终到达了 Web 服务器所在的局域网中。接着,它会遇到防火墙,防火墙会对进入的包进行检查。大家可以把防火墙想象成门口的保安,他会检查所有进入的包,看看有没有危险的包混在里面。检查完之后,网络包接下来可能还会遇到缓存服务器。网页数据中有一部分是可以重复利用的,这些可以重复利用的数据就被保存在缓存服务器中。如果要访问的网页数据正好在缓存服务器中能够找到,那么就可以不用劳烦 Web 服务器,直接从缓存服务器读出数据。此外,在大型网站中,可能还会配备将消息分布到多台 Web 服务器上的负载均衡器,还有可能会使用通过分布在整个互联网中的缓存服务器来分发内容的服务。经过这些机制之后,网络包才会到达 Web 服务器。
在这里插入图片描述
当网络包到达 Web 服务器后,数据会被解包并还原为原始的请求消息,然后交给 Web 服务器程序。和客户端一样,这个操作也是由操作系统中的协议栈(网络控制软件)来完成的。接下来,Web 服务器程序分析请求消息的含义,并按照其中的指示将数据装入响应消息中,然后发回给客户端。响应消息回到客户端的过程和之前我们介绍的过程正好相反。
当响应到达客户端之后,浏览器会从中读取出网页的数据并在屏幕上显示出来。到这里,访问 Web 服务器的一系列操作就全部完成了,我们的探索之旅也到达了终点。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值