![](https://img-blog.csdnimg.cn/20190829090312813.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
网络是怎样连接的
PG_MT
学无止境
展开
-
探索浏览器内部——生成HTTP请求消息
1、从输入网址开始:网址准确的来说应该叫URL(Uniform Resource Locator 统一资源定位符)。网址除了我们经常见到的“http:”(超文本传传送协议)开头的以外还包括例如“ftp:”“file:”“mailto:”等。不同的开头对应访问的服务器也各不同,例如访问Web服务器时用“http:”,而访问FTP(File Transfer Protocol 文件传送协议)服务器...原创 2019-05-11 21:49:47 · 411 阅读 · 0 评论 -
探索浏览器内部——向DNS服务器查询Web服务器的IP地址
1、IP地址的基本知识:上一篇文章从宏观上讲解了在浏览器输入URL或者通过点击超级链接等方式之后,浏览器所做的工作(解析URL和生成HTTP消息),那么在生成HTTP消息之后,我们就需要委托操作系统将消息发送给Web服务器。没错,浏览本身并不具备将消息发送到网络的功能。但是在委托操作系统发送消息之前,还需要查询网址中服务器域名对应的IP地址。接下来,先简单了解一下IP地址。在网络中,所...原创 2019-05-13 21:27:18 · 1539 阅读 · 0 评论 -
探索浏览器内部——全世界DNS服务器的大接力
1、DNS服务器的基本工作:DNS服务器的基本工作就是接收来自客户端的查询消息,然后根据消息的内容返回响应。查询消息主要分为以下三种:(a)域名服务器、邮件服务器(邮件地址中@后面的部分)的名称(b)Class在最早设计DNS方案时,DNS在互联网以外的其他网络中的应用也被考虑到了,Class就是用来识别网络的信息。例如互联网表示IN。(c)记录类型表示域名对应何种...原创 2019-05-15 08:36:07 · 281 阅读 · 0 评论 -
探索浏览器内部——委托协议栈发送消息
1、数据收发操作概览:在前面的几篇文章中讲述了发送消息的其实并不是浏览器(也可以是各种其他应用)本身,也不是DNS解析器本身,而是委托操作系统内部的协议栈向目标IP地址(一般是各类服务器)发送消息。那么接下来就来探索协议栈是怎么收发这些消息的。简单来说,收发数据的两台计算机之间连接了一条数据通道,数据沿着这条通道流动,数据的流动是双向的。当然,通道并不是一开始就存在的,而是在收发数据之前双...原创 2019-05-15 22:27:04 · 257 阅读 · 0 评论 -
探索协议栈和网卡——创建套接字
1、协议栈的内部结构:协议栈作为操作系统中的网络控制软件我们在表面上是看不见的,所以接下来先对协议栈做个解剖。我们使用TCP/IP分层进行解析:从上图中可以看出,协议栈内部分为好几个部分,分别承担着不同的功能。例如协议栈上半部分的两块,分别负责用TCP协议收发数据的部分和负责用UDP协议收发数据的部分。像浏览器、邮件等一般的应用程序都是使用TCP收发数据,而像DNS查询等收发较短的控制...原创 2019-05-18 14:59:39 · 284 阅读 · 0 评论 -
探索协议栈和网卡——连接服务器
1、连接是什么意思:从应用程序的角度看,连接操作实际上就是调用Socket库中的connect组件,随后本地的套接字就会与服务器端的套接字连接。那么这个过程是怎么样的呢?在套接字刚创建完的时候,是不知道通信对象是谁的。这个时候,应用程序就需要将服务器的IP地址和端口号等信息告知协议栈,这是连接操作的目的之一。在服务器端,创建完套接字之后是不清楚客户端的具体身份的,于是,需要让客户端向服...原创 2019-05-19 16:49:21 · 180 阅读 · 0 评论 -
探索协议栈和网卡——收发数据
1、将HTTP请求消息交给协议栈:上一篇文章讲到了Socket库中connect组件委托协议栈实现连接服务器的操作,那么接下来就进入到了数据收发阶段,也就是Socket库中对应的write组件和read组件所实现的功能,以及委托到协议栈涉及的操作。从Socket库的角度看,应用程序调用write时会指定发送数据的长度,所以在协议栈看来,要发送的数据就是一定长度的二进制字节序列。其次,协议栈...原创 2019-05-22 21:01:37 · 333 阅读 · 1 评论 -
探索协议栈和网卡——从服务器断开并删除套接字
1、数据发送完毕后断开连接:数据发送完毕的一方会发起断开过程,但不同的应用程序会选择不同的断开时机。以Web为例,服务器一方会发起断开过程(这里指的是HTTP 1.0 的情形,在HTTP 1.1 中,服务器返回响应消息之后,客户端还可以继续发起在一个请求消息,如果接下来没有请求发送了,客户端一方会发起断开过程)。协议栈在设计上允许任何一方发起断开过程。以服务器一方发起断开过程为例。首先,服...原创 2019-05-23 20:33:28 · 197 阅读 · 0 评论 -
探索协议栈和网卡——IP包与以太网的包收发操作
1、包的基本知识:包是由头部和数据两部分构成的。头部包含目的地址等控制信息;后面就是委托要发送给对方的数据。首先,发送方的网络设备会负责创建包。接下来,包会被发往最近的网络转发设备。当到达最近的转发设备之后,转发设备会根据头部中的信息判断接下来应该发往哪里。这个过程需要用到一张表,这张表里记录了每个地址对应的发送方向,也就是按照头部里记录的目标地址在表里进行查询,并根据查到的信息判断接下来...原创 2019-07-16 00:09:51 · 928 阅读 · 0 评论 -
探索协议栈和网卡——UDP协议的收发操作
1、不需要重发的数据用UDP发送更高效:之前文章中所提到的都是TCP协议,但是有些应用程序不使用TCP协议,而是使用UDP协议来收发数据。像DNS服务器查询IP地址的时候就是UDP协议。TCP协议是为了将数据高效且可靠地发送给对方。为了实现可靠性就需要确认对方是否收到了我们发送的数据,如果没有还需要重发一次。为了实现高效的传输,TCP还可以避免重发已经发送并接收的包,只重发那些出错的或者未...原创 2019-07-16 23:15:16 · 249 阅读 · 0 评论 -
探索集线器、交换机和路由器——信号在网线和集线器中传输
1、每个包都是独立传输的:网络包的收发其实非常类似邮递员在送信,只看信封不看里面的内容,同样地,转发设备在进行转发时也是不看数据的内容的。换句话说,HTTP请求的方法,TCP的确认响应和序号,客户端和服务器之间的关系,这一切都与包的传输无关。因此,所有的包在传输到目的地的过程中都是独立的,相互之间没有任何关联。记住这个概念之后,先来看看一下网络包在进入互联网之前经历的传输过程,如下图:...原创 2019-07-21 23:29:42 · 486 阅读 · 0 评论 -
探索集线器、交换机和路由器——交换机的包转发操作
1、交换机根据地址表进行转发:在研究交换机是如何将网络包转发到目的地之前,先来看一下交换机的内部结构:大家可以认为交换机的每个网线接口后面都是一块网卡,网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡。但交换机的工作方式和网卡有一点不同。网卡本身具有MAC地址,并通过核对收到的包的接收方MAC地址判断是不是发给自己的,如果不是发给自己的则...原创 2019-07-30 21:06:13 · 1128 阅读 · 0 评论 -
探索集线器、交换机和路由器——路由器的包转发操作
1、路由器的基本知识:路由器的工作原理和交换机类似,都是通过查表判断包转发的目标,但是在具体的操作过程上还是有区别的。因为路由器是基于IP设计的,而交换机是基于以太网设计的。路由器的内部结构如下图所示:通过更换网卡,计算机不仅可以支持以太网,也可以支持无线局域网,路由器也是一样,只要端口模块安装了支持这些技术的硬件即可(从原理上说,计算机只要安装相应的适配器,也可以支持各种通信技术)。...原创 2019-08-07 23:01:08 · 1054 阅读 · 0 评论 -
探索集线器、交换机和路由器——路由器的附加功能
1、通过地址转换有效利用IP地址:地址转换功能的出现背景是在进入20世纪90年代之后,互联网逐渐向公众普及,接入互联网的设备数量也快速增长。如此一来,如果为每台设备都分配IP地址,过不了多久,可分配的IP地址就用光了。解决这个问题的关键在于固定地址的分配方式。这个时候就出现了我们现在常说的内网和外网。因为内网之间是可以完全独立的,所以两个内网中的设备即使具有相同的IP地址也没有关系。只要在...原创 2019-08-11 20:52:19 · 229 阅读 · 0 评论 -
探索接入网和网络运营商——ADSL接入网的结构和工作方式
1、互联网的基本机构和家庭、公司网络是相同的:互联网的基本工作方式和家庭、公司网络一样,互联网也是通过路由器来转发包的,而且路由器的基本结构和工作方式也并没有什么不同。当然也有不同之处,其中之一就是与转发设备间的距离。在家庭、公司网络中,与转发设备之间的距离不过几十米到几百米,在这种情况下,只要延长以太网线就可以到达相邻的转发设备了(双绞线的极限距离是100米,但光纤的连接距离可以长达几公...原创 2019-08-27 21:52:17 · 1612 阅读 · 0 评论 -
探索接入网和网络运营商——光纤接入网(FTTH)
1、光纤的基本知识:FTTH是一种基于光纤的接入网技术,它的关键点在于对光纤的使用。光纤的结构如下图所示:它是由一种双层结构的纤维状透明材质(玻璃和塑料)构成的,通过在里面的纤芯中传导光信号来传输数字信息。亮表示1,暗表示0(如下图所示)。2、单模与多模:不同材质的光纤其透光率和折射率不同,纤芯的直径等因素也会影响光的传导。其中,纤芯的直径对光的传导影响很大。要理解这一点,...原创 2019-09-16 20:49:04 · 2119 阅读 · 0 评论 -
探索接入网和网络运营商——接入网中使用的PPP和隧道
1、用户认证和配置下发:ADSL和FTTH接入网中,都需要先输入用户名和密码(运行商分配给用户的),登录之后才能访问互联网,而BAS就是登录操作的窗口。BAS使用PPPoE(Point-to-Point Protocol over Ethernet,以太网的点对点协议)方式来实现这个功能(也有一些运营商使用PPPoA方式)。PPPoE是由传统的电话拨号上网上使用的PPP协议发展而来的。在使...原创 2019-11-26 22:32:25 · 1062 阅读 · 0 评论 -
探索接入网和网络运营商——网络运营商的内部
1、POP和NOC:通过之前的文章可以知道,网络包通过一系列的运输,已经到达了网络运营商的路由器。这里就是互联网的入口,网络包会从这里进入互联网内部(简单来说,此后网络包的传输轨迹就是通过路由器的不断转发向目的地前进)。互联网的实体并不是由一个组织运营管理的单一网络,而是由多个运营商网络相互连接组成的(如下图所示)。ADSL、FTTH等接入网是与用户签约的运营商设备相连的,这些设备称为PO...原创 2019-12-24 21:51:25 · 1000 阅读 · 0 评论 -
探索接入网和网络运营商——跨越运营商的网络包
1、运营商之间的连接:前面解释了什么是POP和NOC,让我们再回到运营商内部,看一看网络包到达POP路由器之后,是如何前往下一站的。第一种情况,最终目的地Web服务器和客户端是连接在同一个运营商中的,那么POP路由器的路由表中应该有相应的转发目标。运营商的路由器可以和其他路由器交换路由信息,从而自动更新自己的路由表,通过这一功能,路由信息就实现了自动化管理。于是,路由器根据路由表中的信息判...原创 2020-01-07 21:58:25 · 826 阅读 · 0 评论 -
探索服务器端的局域网——Web服务器的部署地点
1、在公司里部署Web服务器:网络包从互联网到达服务器的过程,根据服务器部署地点的不同而不同,主要有下面三种情况(如下图)。第一种方式是最简单的,服务器直接部署在公司网络上,并且可以从互联网直接访问。这种情况下,网络包通过最近的POP中的路由器、接入网以及服务器端路由器之后,就直接到达了服务器。但是这种方式已经不是主流,一是因为IP地址不足,另外则是安全问题。因此,一般采用第二种方...原创 2020-01-15 21:16:37 · 600 阅读 · 0 评论 -
探索服务器端的局域网——防火墙的结构和原理
1、主流的包过滤方式:防火墙可以分为包过滤、应用层网关、电路层网关等几种方式,其中任何一种方式都可以实现防火墙的目的,但出于性能、价格、易用性等因素,现在最为普及的是包过滤方式。2、如何设置包过滤的规则:网络包的头部包含了用于控制通信操作的控制信息,只要检查这些信息,就可以获得很多有用的内容。这些头部信息中,经常用于设置包过滤规则的字段如下表所示:头部类型 规则判断条件 ...原创 2020-01-26 17:35:28 · 581 阅读 · 0 评论 -
探索服务器端的局域网——通过分配请求来平衡负载
1、性能不足时需要负载均衡:当服务器的访问量上升时,增加服务器线路的带宽是有效的,但并不是网络变快了就可以解决所有问题。高速线路会传输大量的网络包,这会导致服务器的性能跟不上。尤其是CGI等应用程序动态生成数据的情况下,对服务器CPU的负担更重,服务器性能的问题也会表现得越明显。在这种情况下,使用多台服务器来分担负载的方法更有效。这种架构统称为分布式架构,其中对于负载的分担有几种方法,最简...原创 2020-02-02 18:55:36 · 232 阅读 · 0 评论 -
探索服务器端的局域网——使用缓存服务器分担负载
1、如何使用缓存服务器:缓存服务器是一台通过代理机制对数据进行缓存的服务器。当进行中转时,它可以将Web服务器返回的数据保存在磁盘中,并可以代替Web服务器将磁盘中的数据返回给客户端。这种保存的数据称为缓存,缓存服务器指的也就是这样的功能。Web服务器需要执行检查网址和访问权限,以及在页面上填充数据等内部操作,因此将页面数据返回客户端所需的时间较长。相对地,缓存服务器只要将保存在磁盘上的数...原创 2020-02-10 23:38:56 · 699 阅读 · 0 评论 -
探索服务器端的局域网——内容分发服务
1、利用内容分发服务分担负载:缓存服务器部署在服务器端还是客户端,其效果是有差别的(如下图所示)。当缓存服务器放在服务器端时,可以减轻Web服务器的负载,但无法减少互联网中的流量(如上图a)。这一点上,将缓存服务器放在客户端更有效(如上图b)。互联网中会存在一些拥塞点,通过这些地方会比较花时间。如果在客户端部署缓存服务器,就可以不受或者少受这些拥塞点的影响,让网络流量更稳定,特别是当访...原创 2020-02-12 18:07:39 · 382 阅读 · 0 评论 -
探索服务器内部——服务器概览
1、服务器程序的结构:服务器和客户端在网络相关的部分,如网卡、协议栈、Socket库等功能都是差不多的。无论硬件和OS如何变化,TCP和IP的功能都是一样的,或者说这些功能规格都是统一的。服务器需要同时和多个客户端通信,所以服务器必须把握每一个客户端的操作状态。因此一般每有一个客户端连接进来,就启动一个新的服务器程序,确保服务器程序和客户端是一对一的状态(如下图所示)。当然上面这种...原创 2020-02-22 23:42:27 · 208 阅读 · 0 评论 -
探索服务器内部——服务器的接收操作
1、网卡将接收到的信号转换为数字信号:到达服务器的网络包其本质是电信号或者光信号,接收信号的过程和客户端其实是一样的。具体过程在之前的文章中已经介绍过,这里简单回顾一下。接收操作的第一步是网卡接收到信号,然后将其还原成数字信息。局域网中传输的网络包信号是由1和0组成的数字信息与用来同步的时钟信号叠加而成的,因此只要从中分离出时钟信号,然后根据时钟信号进行同步,就可以读取并还原出1和0的数字...原创 2020-02-23 14:25:46 · 384 阅读 · 0 评论 -
探索服务器内部——服务器程序解释请求消息并做出响应
1、将请求的URI转换为实际的文件名:服务器程序会根据收到的请求消息中的内容进行相应的处理,并生成响应消息,再通过write返回给客户端。请求消息包括一个称为“方法”的命令,以及表示数据源的URI(文件路径名),服务器程序会根据这些内容向客户端返回数据,但对于不同的方法和URI,服务器内部的工作过程会有所不同。例如:GET /sample1.htm HTTP/1.1Accept: ...原创 2020-02-27 21:22:17 · 636 阅读 · 0 评论