网络是怎样连接的

户根勤

作者/译者简介

  • 译有《图解CIO工作指南(第4版)》《大数据的冲击》《代码的未来》《30天自制操作系统》《图解密码技术》《家用游戏机简史》《有趣的二进制》等。

推荐序

  • 从浏览器输入网址开始,引入了HTTP消息;由于消息要交给服务器,所以用DNS来解析其域名;消息到达服务器之前需要传输,就要懂得TCP和路由交换……

译者序

  • 不理解网络的全貌,也就无法理解每一种网络技术背后的本质意义。
  • 《Wireshark网络分析就这么简单》和《Wireshark网络分析的艺术》

前言

  • 首先,本书讲解了网络的全貌

本书的结构

  • (1)浏览器:“请给我×××网页的数据。” (2) Web服务器:“好的,这就是你要的数据。”

探索之旅路线图

  • (1)浏览器向Web服务器发送请求。(2) Web服务器根据请求向浏览器发送响应。
  • 包相当于信件或者包裹,而交换机和路由器则相当于邮局或快递公司的分拣处理区。包的头部存有目的地等控制信息,通过许多交换机和路由器的接力,就可以根据控制信息对这些包进行分拣,然后将它们一步一步地搬运到目的地。
  • 浏览器并不会亲自负责数据的传送。传送消息是搬运数字信息的机制负责的工作,因此浏览器会委托它将数据发送出去。具体来说,就是委托操作系统中的网络控制软件将消息发送给服务器。
  • 协议栈(网络控制软件叫作协议栈)
  • 在骨干网中存在很多运营商和大量的路由器,这些路由器相互连接,组成一张巨大的网,而我们的网络包就在其中经过若干路由器的接力,最终被发送到目标Web服务器上。
  • 家庭和公司局域网中一般采用以太网线进行连接,而互联网中除了以太网线连接之外,还会使用比较古老的电话技术和最新的光通信技术来传送网络包。这一部分所使用的技术是当今网络中最热门的部分,可以说是最尖端技术的结晶。
  • 网页数据中有一部分是可以重复利用的,这些可以重复利用的数据就被保存在缓存服务器中。如果要访问的网页数据正好在缓存服务器中能够找到,那么就可以不用劳烦Web服务器,直接从缓存服务器读出数据。
  • 当网络包到达Web服务器后,数据会被解包并还原为原始的请求消息,然后交给Web服务器程序。

第1章 浏览器生成消息——探索浏览器内部

  • www只是Web服务器上的一种命名。而且,World Wide Web也不是一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字。
  • 应用程序并不是自己去控制网络,而是委托操作系统来控制网络。

1.1 生成HTTP请求消息

  • 浏览器是一个具备多种客户端功能的综合性客户端软件,因此它需要一些东西来判断应该使用其中哪种功能来访问相应的数据,而各种不同的URL就是用来干这个的,比如访问Web服务器时用“http:”,而访问FTP服务器时用“ftp:”。
  • 浏览器会使用HTTP协议来访问Web服务器
  • 写完消息头之后,还需要添加一个完全没有内容的空行,然后写上需要发送的数据。这一部分称为消息体,也就是消息的主体。
  • 当使用POST方法时,需要将表单中填写的信息写在消息体中。到此为止,请求消息的生成操作就全部完成了。
  • 在响应消息中,第一行的内容为状态码和响应短语,用来表示请求的执行结果是成功还是出错。
  • 由于每条请求消息中只能写1个URI,所以每次只能获取1个文件,如果需要获取多个文件,必须对每个文件单独发送1条请求。比如1个网页中包含3张图片,那么获取网页加上获取图片,一共需要向Web服务器发送4条请求。
  • 1条请求消息中只能写1个URI。如果需要获取多个文件,必须对每个文件单独发送1条请求。

1.2 向DNS服务器查询Web服务器的IP地址

  • 尽管浏览器能够解析网址并生成HTTP消息,但它本身并不具备将消息发送到网络中的功能,因此这一功能需要委托操作系统来实现。
  • 对于DNS服务器,我们的计算机上一定有相应的DNS客户端,而相当于DNS客户端的部分称为DNS解析器,或者简称解析器。通过DNS查询IP地址的操作称为域名解析,因此负责执行解析(resolution)这一操作的就叫解析器(resolver)了。

1.4 委托协议栈发送消息

  • 查询IP地址只需要调用一个程序组件就可以了,而这里需要按照指定的顺序调用多个程序组件,这个过程有点复杂。
  • 向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用Socket库中的程序组件。
  • 客户端创建套接字的操作非常简单,只要调用Socket库中的socket程序组件[插图]就可以了(图1.18①)。和调用解析器一样,调用socket之后,控制流程会转移到socket内部并执行创建套接字的操作,完成之后控制流程又会被移交回应用程序。
  • 同一台计算机上可能同时存在多个套接字,在这样的情况下,我们就需要一种方法来识别出某个特定的套接字,这种方法就是描述符
  • 应用程序是通过“描述符”这一类似号码牌的东西来识别套接字的。
  • 如果说描述符是用来在一台计算机内部识别套接字的机制,那么端口号就是用来让通信的另一方能够识别出套接字的机制。
  • 描述符:应用程序用来识别套接字的机制IP地址和端口号:客户端和服务器之间用来识别对方套接字的机制
  • 调用read时需要指定用于存放接收到的响应消息的内存地址,这一内存地址称为接收缓冲区
  • 对于同一台服务器来说,重复连接和断开显然是效率很低的,因此后来人们又设计出了能够在一次连接中收发多个请求和响应的方法。在HTTP版本1.1中就可以使用这种方法,在这种情况下,当所有数据都请求完成后,浏览器会主动触发断开连接的操作。

CoIumn网络术语其实很简单

  • 词汇是人类创造的,如果能理解词汇创造者的思路,也就能理解这个词的真正含义。
  • ARP是根据已知IP地址求出MAC地址这个答案

第2章 用电信号传输TCP/IP——探索协议栈和网卡

  • 在网络包出现之前,通信都是像电话一样把线路连接起来进行的。但是,连接线路的通信方式只能和固定的对象进行通信,无法发挥计算机可以处理多种工作的特点。为了解决这个问题,人们设计出了使用网络包来进行通信的方式。

2.1 创建套接字

  • 操作系统中的网络控制软件(协议栈)和网络硬件(网卡)
  • 将网络包发送给通信对象的操作就是由IP来负责的。此外,IP中还包括ICMP[插图]协议和ARP[插图]协议。ICMP用于告知网络包传送过程中产生的错误以及各种控制消息,ARP用于根据IP地址查询相应的以太网MAC地址[插图]。

2.2 连接服务器

  • 连接实际上是通信双方交换控制信息,在套接字中记录这些必要信息并准备数据收发的一连串操作
  • 通信操作中使用的控制信息分为两类。 (1)头部中记录的信息 (2)套接字(协议栈中的内存空间)中记录的信息

2.3 收发数据

  • MTU:一个网络包的最大长度,以太网中一般为1500字节。 MSS:除去头部之后,一个网络包所能容纳的TCP数据的最大长度。
  • 客户端和服务器双方都需要各自计算序号,因此双方需要在连接过程中互相告知自己计算的序号初始值。
  • 通过“序号”和“ACK号”可以确认接收方是否收到了网络包。
  • 根据网络包平均往返时间调整ACK号等待时间
  • 首先,接收方需要告诉发送方自己最多能接收多少数据,然后发送方根据这个值对数据发送操作进行控制,这就是滑动窗口方式的基本思路。
  • 实际上,接收方在收到数据之后马上就会开始进行处理,如果接收方的性能高,处理速度比包的到达速率还快,缓冲区马上就会被清空,并通过窗口字段告知发送方。
  • 前面提到的能够接收的最大数据量称为窗口大小,它是TCP调优参数中非常有名的一个。
  • 因此当接收方将数据传递给应用程序,导致接收缓冲区剩余容量增加时,就需要告知发送方,这就是更新窗口大小的时机。
  • 首先,协议栈会检查收到的数据块和TCP头部的内容,判断是否有数据丢失,如果没有问题则返回ACK号。然后,协议栈将数据块暂存到接收缓冲区中,并将数据块按顺序连接起来还原出原始的数据,最后将数据交给应用程序。具体来说,协议栈会将接收到的数据复制到应用程序指定的内存地址中,然后将控制流程交回应用程序。将数据交给应用程序之后,协议栈还需要找到合适的时机向发送方发送窗口更新[插图]。
  • 首先,协议栈会检查收到的数据块和TCP头部的内容,判断是否有数据丢失,如果没有问题则返回ACK号。然后,协议栈将数据块暂存到接收缓冲区中,并将数据块按顺序连接起来还原出原始的数据,最后将数据交给应用程序。具体来说,协议栈会将接收到的数据复制到应用程序指定的内存地址中,然后将控制流程交回应用程序。将数据交给应用程序之后,协议栈还需要找到合适的时机向发送方发送窗口更新。

2.5 IP与以太网的包收发操作

  • TCP模块在执行连接、收发、断开等各阶段操作时,都需要委托IP模块将数据封装成包发送给通信对象。
  • 网络中有路由器和集线器两种不同的转发设备,它们在传输网络包时有着各自的分工。(1)路由器根据目标地址判断下一个路由器的位置(2)集线器在子网中将网络包传输到下一个路由实际上,集线器是按照以太网规则传输包的设备,而路由器是按照IP规则传输包的设备,
  • 传递给网卡的网络包是由一连串0和1组成的数字信息,网卡会将这些数字信息转换为电信号或光信号,并通过网线(或光纤)发送出去,然后这些信号就会到达集线器、路由器等转发设备,再由转发设备一步一步地送达接收方。
  • 表2.2 IP头部格式
  • IP地址实际上并不是分配给计算机的,而是分配给网卡的,因此当计算机上存在多块网卡时,每一块网卡都会有自己的IP地址。
  • MAC地址是在网卡生产时写入ROM里的,只要将这个值读取出来写入MAC头部就可以了。
  • MAC地址是在网卡生产时写入ROM里的,只要将这个值读取出来写入MAC头部就可以了[插图]。
  • IP模块根据路由表Gateway栏的内容判断应该把包发送给谁。
  • 查询MAC地址需要使用ARP。
  • 以太网是一种为多台计算机能够彼此自由和廉价地相互通信而设计的通信技术
  • 尽管以太网经历了数次变迁,但其基本的3个性质至今仍未改变,即将包发送到MAC头部的接收方MAC地址代表的目的地,用发送方MAC地址识别发送方,用以太类型识别包的内容。因此,大家可以认为具备这3个性质的网络就是以太网[插图]。
  • 网卡的ROM中保存着全世界唯一的MAC地址,这是在生产网卡时写入的。网卡中保存的MAC地址会由网卡驱动程序读取并分配给MAC模块。
  • MAC模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列
  • 因此,我们不能一开始就发送包的数据,而是要在前面加上一段用来测量时钟信号的特殊信号,这就是报头的作用[插图]。
  • 因此,我们不能一开始就发送包的数据,而是要在前面加上一段用来测量时钟信号的特殊信号,这就是报头的作用。
  • 末尾的FCS(帧校验序列)用来检查包传输过程中因噪声导致的波形紊乱、数据错误,它是一串32比特的序列,是通过一个公式对包中从头到尾的所有内容进行计算而得出来的。
  • 发送信号的操作分为两种,一种是使用集线器的半双工模式,另一种是使用交换机的全双工模式。
  • 网卡的MAC模块生成通用信号,然后由PHY(MAU)模块转换成可在网线中传输的格式,并通过网线发送出去。

2.6 UDP协议的收发操作

  • 不需要重发的数据用UDP发送更高效
  • 向DNS服务器查询IP地址的时候我们用的也是UDP协议
  • 我们需要将数据高效且可靠地发送给对方。为了实现可靠性,我们就需要确认对方是否收到了我们发送的数据,如果没有还需要再发一遍。
  • 像DNS查询等交换控制信息的操作基本上都可以在一个包的大小范围内解决,这种场景中就可以用UDP来代替TCP[插图]。
  • 在这些无需重发数据,或者是重发了也没什么意义的情况下,使用UDP发送数据的效率会更高。

CoIumn网络术语其实很简单

  • 我们现在用的计算机的原型也是施乐设计的。

第3章 从网络到网络设备——探索集线器、交换机和路由器

  • 路由器和交换机一样也负责对包进行转发,但它们的工作方式有一些差异。交换机是基于以太网规格工作的设备,而路由器是基于IP工作的

3.1 信号在网线和集线器中传输

  • 当信号到达集线器后,会被广播到整个网络中。以太网的基本架构就是将包发到所有的设备,然后由设备根据接收方MAC地址来判断应该接收哪些包,而集线器就是这一架构的忠实体现,它就是负责按照以太网的基本架构将信号广播出去。
  • 集线器将信号发送给所有连接在它上面的线路。

3.2 交换机的包转发操作

  • 交换机根据MAC地址表查找MAC地址,然后将信号发送到相应的端口。
  • 集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。

3.3 路由器的包转发操作

  • 因为路由器是基于IP设计的,而交换机是基于以太网设计的[插图]。
  • 如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMP消息告知发送方。这里的处理方式和交换机不同,原因在于网络规模的大小。
  • 路由表中子网掩码为0.0.0.0的记录表示“默认路由”。
  • TCP拆分数据的操作是在将数据装到包里之前进行的,换句话说,拆分好的一个数据块正好装进一个包里。从IP分片的角度来看,这样一个包其实是一个未拆分的整体,也就是说,分片是对一个完整的包再进行拆分的过程。
  • 如果查询标志字段发现不能分片,那么就只能丢弃这个包,并通过ICMP消息通知发送方。
  • 路由器判断下一个转发目标的方法如下。●如果路由表的网关列内容为IP地址,则该地址就是下一个转发目标。●如果路由表的网关列内容为空,则IP头部中的接收方IP地址就是下一个转发目标。
  • 路由器判断下一个转发目标的方法如下。●如果路由表的网关列内容为IP地址,则该地址就是下一个转发目标。●如果路由表的网关列内容为空,则IP头部中的接收方IP地址就是下一个转发目标。路由器也会使用ARP来查询下一个转发目标的MAC地址。
  • IP (路由器)负责将包发送给通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。
  • IP(路由器)负责将包送达通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。

3.4 路由器的附加功能

  • 规定某些地址是用于内网的,这些地址叫作私有地址,而原来的固定地址则叫作公有地址[插图]。
  • 相对地,内网部分则分配私有地址,内网中的设备不能和互联网直接收发网络包,而是通过一种特别的机制进行连接,这个机制就叫地址转换。
  • 地址转换的基本原理是在转发网络包时对IP头部中的IP地址和端口号进行改写。
  • 改写端口号正是为了解决这个问题。客户端一方的端口号本来就是从空闲端口中随机选择的,因此改写了也不会有问题。端口号是一个16比特的数值,总共可以分配出几万个端口[插图],因此如果用公有地址加上端口的组合对应一个私有地址,一个公有地址就可以对应几万个私有地址,这种方法提高了公有地址的利用率。
  • 只要事先将地址和端口的关联信息添加到地址转换设备的对应表中,就可以从互联网访问内网中的设备了。
  • 包过滤就是在对包进行转发时,根据MAC头部、IP头部、TCP头部的内容[插图],按照事先设置好的规则决定是转发这个包,还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的[插图]。

CoIumn网络术语其实很简单

  • 集线器(repeater hub)和交换机(switching hub)

第4章 通过接入网进入互联网内部——探索接入网和网络运营商

  • 电信号和光信号传播的速度大体上相同,之所以电缆不如光纤通信速率高,是因为电信号在提升通信速率的同时,其衰减率也会提高(信号在传播过程中减弱),导致信号无法传到目的地。相对地,光信号本来的衰减率就很低,提高通信速率也并不会提高衰减率。此外,光纤还不受电磁噪声的影响,因此光纤能够进行高速通信。
  • 互联网是由多个运营商网络相互连接形成的巨大网络,而多个运营商之间相互连接的部分可以说就是互联网的核心部分

4.1 ADSL接入网的结构和工作方式

  • 距离的不同和路由的维护方式,就是互联网与家庭、公司网络之间最主要的两个不同点。
  • 所谓接入网,就是指连接互联网与家庭、公司网络的通信线路
  • 用户端路由器[插图]发出的网络包通过ADSL Modem[插图]和电话线到达电话局,然后到达ADSL的网络运营商(即ISP,互联网服务提供商)。
  • ADSL Modem将包拆分成信元,并转换成电信号发送给分离器。
  • ADSL Modem采用了一种用圆滑波形(正弦波)对信号进行合成来表示0和1的技术,这种技术称为调制。调制有很多方式,ADSL采用的调制方式是振幅调制(ASK)和相位调制(PSK)相结合的正交振幅调制(QAM)[插图]方式。
  • 噪声和衰减等影响线路质量的因素在每条线路上都不同,而且会随着时间发生变化。因此,ADSL会持续检查线路质量,动态判断使用的频段数量,以及每个频段分配到的比特数。具体来说,当Modem通电后,会发送测试信号,并根据信号的接收情况判断使用的频段数量和每个频段的比特数,这个过程称为训练(握手),需要几秒到几十秒的时间。
  • 分离器的作用其实在相反的方向,也就是信号从电话线传入的时候。这时,分离器需要负责将电话和ADSL的信号进行分离
  • DSLAM具有ATM接口,和后方路由器收发数据时使用的是原始网络包拆分后的ATM信元形式。
  • BAS负责将ATM信元还原成网络包并转发到互联网内部。

4.2 光纤接入网(FTTH)

  • ADSL信号是由多个频段的信号组成的,比较复杂,但光信号却非常简单,亮表示1,暗表示0。

4.3 接入网中使用的PPP和隧道

  • [插图]图4.17 PPP拨号连接操作
  • PPPoE是将PPP消息装入以太网包进行传输的方式。
  • 互联网接入路由器通过PPPoE的发现机制查询BAS的MAC地址。
  • 只不过在通过路由表判断转发目标之后,包不是按照以太网规则转发,而是按照PPPoE规则转发
  • BAS在收到用户路由器发送的网络包之后,会去掉MAC头部和PPPoE头部,然后用隧道机制将包发送给网络运营商的路由器。
  • 一对一连接的端口可以不分配IP地址,这种方式称为无编号。
  • PPPoA方式不添加MAC头部和PPPoE头部,而是直接将包装入信元中。
  • 还有一种DHCP方式,它不使用PPP,而是将以太网包直接转换成ADSL信号发送给DSLAM。

4.4 网络运营商的内部

  • ADSL、FTTH等接入网是与用户签约的运营商设备相连的,这些设备称为POP,互联网的入口就位于这里。

4.5 跨越运营商的网络包

  • 这个路由信息交换的过程是由路由器自动完成的,这里使用的机制称为BGP[插图]。
  • 互联网内部使用BGP机制在运营商之间交换路由信息。
  • 照最短路由来转发包,因此,周围的所有路由器都是平等对待
  • 设置一个中心设备,通过连接到中心设备的方式来减少线路数量,这个中心设备就称为IX。
  • IX的核心是具有大量高速以太网[插图]端口的二层交换机(图4.28)[插图]。二层交换机的基本原理和一般交换机相同,大家可以认为IX的核心就是大型的、高速的交换机。

CoIumn网络术语其实很简单

  • 现在的计算机也可以当路由器用哦。Linux等UNIX系操作系统都内置了路由功能,Windows Server版本也具有路由功能。
  • 专用硬件可以通过芯片实现非常快速的处理,因此性能更好。

第5章 服务器端的局域网中有什么玄机

  • 浏览器有时候是和Web服务器通信,有时候是和缓存服务器以及负载均衡器等进行通信。
  • 防火墙不会检查通信数据的具体内容,因此无法抵御隐藏在通信数据内容中的攻击。

5.1 Web服务器的部署地点

  • 部署防火墙。防火墙的作用类似于海关,它只允许发往指定服务器的指定应用程序的网络包通过,从而屏蔽其他不允许通过的包。
  • 数据中心通过高速线路直接连接到互联网的核心部分,因此将服务器部署在这里可以获得很高的访问速度[插图],当服务器访问量很大时这是非常有效的。
  • 数据中心通过高速线路直接连接到互联网的核心部分,因此将服务器部署在这里可以获得很高的访问速度,当服务器访问量很大时这是非常有效的。

5.2 防火墙的结构和原理

  • 防火墙的基本思路刚才已经介绍过了,即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。
  • 表5.1 地址转换和包过滤中用于设置规则的字段
  • 如果判断结果为阻止,那么这个包会被丢弃并被记录下来。这是因为这些被丢弃的包中通常含有非法入侵的痕迹,通过分析这些包能够搞清楚入侵者使用的手法,从而帮助我们更好地防范非法入侵。
  • 包过滤方式的防火墙可根据接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。

5.3 通过将请求平均分配给多台服务器来平衡负载

  • 这种方式称为轮询(round-robin),通过这种方式可以将访问平均分配给所有的服务器。

5.4 使用缓存服务器分担负载

  • 除了使用多台功能相同的Web服务器分担负载之外,还有另外一种方法,就是将整个系统按功能分成不同的服务器[插图],如Web服务器、数据库服务器。缓存服务器就是一种按功能来分担负载的方法。
  • Web服务器需要执行检查网址和访问权限,以及在页面上填充数据等内部操作过程,因此将页面数据返回客户端所需的时间较长。
  • 缓存服务器使用的代理机制最早就是放在客户端一侧的,这才是代理的原型,称为正向代理[插图](forward proxy)。
  • 我们可以通过将请求消息中的URI中的目录名与Web服务器进行关联,使得代理能够转发一般的不包含完整网址的请求消息。我们前面介绍的服务器端的缓存服务器采用的正是这种方式,这种方式称为反向代理(reverse proxy)。
  • 缓存服务器判断转发目标的方法还有一种,那就是查看请求消息的包头部。因为包的IP头部中包含接收方IP地址,只要知道了这个地址,就知道用户要访问哪台服务器了[插图]。这种方法称为透明代理(transparent proxy)。
  • 使用透明代理时,用户不会察觉到代理的存在,也不会注意到HTTP消息是如何被转发的,因此大家更倾向于将透明代理说成是缓存。

5.5 内容分发服务

  • 当缓存服务器放在服务器端时,可以减轻Web服务器的负载,但无法减少互联网中的流量。这一点上,将缓存服务器放在客户端更有效
  • 当缓存服务器放在服务器端时,可以减轻Web服务器的负载,但无法减少互联网中的流量。这一点上,将缓存服务器放在客户端更有效(
  • Web服务器运营者和网络运营商签约,将可以自己控制的缓存服务器放在客户端的运营商处。
  • 为了解决这个问题,一些专门从事相关服务的厂商出现了,他们来部署缓存服务器,并租借给Web服务器运营者。这种服务称为内容分发服务[插图]。
  • 对DNS服务器进行扩展的方法是估算客户端DNS服务器到缓存服务器之间的距离,因此精度较差;相对而言,重定向的方法是根据客户端发送来的HTTP消息的发送方IP地址来估算距离的,因此精度较高。

6.1 服务器概览

  • 网络相关的部分,如网卡、协议栈、Socket库等功能和客户端却并无二致
  • 因此一般的做法是,每有一个客户端连接进来,就启动一个新的服务器程序,确保服务器程序和客户端是一对一的状态。
  • 服务器操作系统具有多任务[插图]、多线程[插图]功能,可以同时运行多个程序[插图],服务器程序的设计正是利用了这一功能。
  • 使用描述符来指代套接字的原因如下。(1)等待连接的套接字中没有客户端IP地址和端口号(2)使用描述符这一种信息比较简单

6.2 服务器的接收操作

  • 网卡的MAC模块将网络包从信号还原为数字信息,校验FCS并存入缓冲区。
  • 协议栈的IP模块会检查IP头部,(1)判断是不是发给自己的;(2)判断网络包是否经过分片;(3)将包转交给TCP模块或UDP模块。

6.3 Web服务器程序解释请求消息并作出响应

  • Web服务器的访问控制规则主要有以下3种。 (1)客户端IP地址 (2)客户端域名 (3)用户名和密码

6.4 浏览器接收响应消息并显示内容

  • 要显示内容,首先需要判断响应消息中的数据属于哪种类型。Web可以处理的数据包括文字、图像、声音、视频等多种类型,每种数据的显示方法都不同,因此必须先要知道返回了什么类型的数据,否则无法正确显示。
  • 原则上可以根据响应消息开头的Content-Type头部字段的值来进行判断

CoIumn网络术语其实很简单

  • CGI指的不是CGI程序本身,而是连接程序与Web服务器程序的接口规格。所以说,客户端发送的消息是通过CGI这样一个接口,从Web服务器程序进入CGI程序的。
  • 一开始并没有路由器这个词,那时候是管路由器叫网关的。从某种角度来说,路由器就是通向另一个网络的入口,所以默认网关的叫法也是那时候遗留下来的。