网络是怎样连接的
豆瓣:https://book.douban.com/subject/26941639/
本书的立意好,组织架构清晰,感觉翻译有点怪。亮点是画图很形象、精致,日本作者喜欢用图来解释概念,而且多数通俗易懂。这方面比中国图书强很多。
探索协议栈和网卡
用电信号传输TCP/IP数据——探索协议栈和网卡
协议栈:操作系统内部的网络控制软件,也叫“协议驱动”“TCP/IP 驱动”等。
IP地址的表示方法,图画解释得很好,简洁明了。
子网掩码:表示网络号与主机号之间的边界。
应用层查询DNS服务器的过程示意图:
分配给根域 DNS 服务器 的 IP 地址在全世界仅有 13 个。根域 DNS 服务器在运营上使用多台服务器来对应一个 IP 地址,因此尽管 IP 地址只有 13 个,但其实服务器的数量是很多的。
DNS服务器之间的查询示意:
向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调 用 Socket 库中的程序组件。
用 TCP 协议来收发数据的过程:
这个图同样很形象,完美阐释什么是端到端的逻辑管道。
使用 Socket 库来收发数据的操作过程如图 1.17 所示。简单来说,收发数据的两台计算机之间连接了一条数据通道,数据沿着这条通道流动,最终到达目的地。我们可以把数据通道想象成一条管道,将数据从一端送入管道,数据就会到达管道的另一端然后被取出。
数据可以从任何一端被送入管道,数据的流动是双向的。
建立管道的关键在于管道两端的数据出入口,这些出入口称为套接字。我们需要先创建套接字,然后再将 套接字连接起来形成管道。
实际的过程是下面这样的。首先,服务器一方先创建套接字,然后等待客户端向该套接字连接管道。当服务器进入等待状态时,客户端就可以连接管道了。
具体来说,客户端也会先创建一个套接字,然后从该套接字延伸出管道,最后管道连接到服务器端的套接字上。 当双方的套接字连接起来之后,通信准备就完成了。接下来,就像我们刚刚讲过的一样,只要将数据送入套接字就可以收发数据了。
服务器程序一般会在启动后就创建好套接字并等待客户端连接管道。
管道在连接时是由客户端发起的,但在断开时可以由客户端或服务器任意一方发起。其中一方断开后,另一方也会随之断开,当管道断开后,套接字也会被删除。到此为止,通信操作就结束了。
综上所述,收发数据的操作分为若干个阶段,可以大致总结为以下 4 个:
- 创建套接字(创建套接字阶段)
- 将管道连接到服务器端的套接字上(连接阶段)
- 收发数据(通信阶段)
- 断开管道并删除套接字(断开阶段)
探索集线器、交换机和路由器
从网线到网络设备——探索集线器、交换机和路由器
每个网络包都是独立传输的;所有的包在传输到目的地的过程中都是独立的,相互之间没有任何关联。
网络包从客户端计算机发出之后,要经过集线器、交换机和路由器最终进入互联网。实际上,我们家里用的路由器已经集成了集线器和交换机的功能,像图上这样使用独立设备的情况很少见。不过, 把每个功能独立出来更容易理解,而且理解了这种模式之后,也就能理解集成了多种功能的设备了。
当信号到达集线器后,会被广播到整个网络中。以太网的基本架构就是将包发到所有的设备,然后由设备根据接收方 MAC 地址来判断应该接收哪些包,而集线器就是这一架构的忠实体现,它就是负责按照以太网的基本架构将信号广播出去。
交换机的一个端口就相当于计算机上的一块网卡 。但交换机的工作方式和网卡有一点不同。网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址。
全双工模式是交换机特有的工作模式,它可以同时进行发送和接收操作,集线器不具备这样的特性。
网络包经过集线器和交换机之后,现在到达了路由器,并在此被转发到下一个路由器。这一步转发的工作原理和交换机类似,也是通过查表判断包转发的目标。不过在具体的操作过程上,路由器和交换机是有区别的。因为路由器是基于 IP 设计的,而交换机是基于以太网设计的。
路由器的结构图:
转发模块会根据接收到的包的 IP 头部中记录的接收方 IP 地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去,也就是转发模块委托端口模块将包发送出去的意思。
路由表转发网络包示意图:
路由MAC地址:
交换机与路由器的关系:
给包加上 MAC 头部并发送,从本质上说是将 IP 包装进以太网包的数据部分中,委托以太网去传输这些数据。IP 协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。路由器是基于 IP 设计的,而交换机是基于以太网设计的,因此 IP 与以太网的关系也就是路由器与交换机的关系。换句话说,路由器将包的传输工作委托给交换机来进行。当然,这里讲的内容只适用于原本实现 IP 和以太网机制的纯粹的路由器和交换机,实际的路由器有内置交换机功能的,比如用于连接互联网的家用路由器就属于这一种,对于这种路由器,上面内容可能就不适用了。
网络并非只有以太网(以太网是一种计算机局域网(LAN)技术,由IEEE 802.3标准定义,主要用于在小范围内连接计算机和网络设备。它通过物理线缆和交换机组成,覆盖范围相对较小,如一个建筑物或一个地理区域)一种,还有无线局域网,以及接入互联网的通信线路(以太网是互联网的一个子集,是现在主流的局域网标准。互联网则是将大量的局域网连接起来,进行资源共享的更大网络),它们和 IP 之间的关系又是什么样的呢?其实只要将以太网替换成无线局域网、互联网线路等通信规格就可以了。也就是说,如果和下一个路由器之间是通过无线局域网连接的,那么就委托无线局域网将包传输过去;如果是通过互联网线路连接的,那么就委托它将包传输过去。除了这里列举的例子之外,世界上还有很多其他类型的通信技术,它们之间的关系也是一样的,都是委托所使用的通信技术将包传输过去。
公有地址与私有地址之间的NAT地址转换:
具备地址转换功能的设备不仅有路由器,有些防火墙也有地址转换功能, 它的工作方式和路由器是相同的。
探索接入网和网络运营商
通过接入网进入互联网内部——探索接入网和网络运营商
电信号和光信号传播的速度大体上相同,之所以电缆不如光纤通信速率高,是因为电信号在提升通信速率的同时,其衰减率也会提高(信号在传播过程中减弱),导致信号无法传到目的地。相对地,光信号本来的衰减率就很低,提高通信速率也并不会提高衰减率。此外,光纤还不受电磁噪声的影响,因此光纤能够进行高速通信。
互联网的整体架构:
所谓接入网,就是指连接互联网与家庭、公司网络的通信线路。一般家用的接入网方式包括 ADSLB、FTTHC、CATV、电话线、ISDN 等,公司则还可能使用专线。
网络包在接入网中的形态变化:
光纤通信的原理:
先将数字信息转换成电信号,然后再将电信号转换成光信号。这里的电信号非常简单,1 用高电压表示,0 用低电压表示。将这样的电信号输入 LED、激光二极管等光源后,这些光源就会根据信号电压的变化发光,高电压发光亮,低电压发光暗。
这样的光信号在光纤中传导之后,就可以通过光纤到达接收端。接收端有可以感应光线的光敏元件,光敏元件可以根据光的亮度产生不同的电压。当光信号照射到上面时,光亮的时候就产生高电压,光暗的时候就产生低电压,这样就将光信号转换成了电信号。
最后再将电信号转换成数字信息,我们就接收到数据了。 这就是光纤的通信原理。
将以太网的电信号转换成光信号的设备,也叫“终端盒”。
服务器端的局域网中有什么玄机
防火墙的基本思路刚才已经介绍过了,即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。
缓存服务器:
正向代理、反向代理、CDN:
到达Web服务器,响应返回
短短几秒的“漫长旅程”迎来终点