“计算机网络概论”图解趣味版,挺不错的极简科普书。
译者是周自恒。
附录 网络包的旅程
通过DNS查询IP地址的操作称为域名解析,因此负责执行解析(resolution)这一操作的就叫解析器(resolver)了。
一般来说,应用程序编写的操作内容是从上往下按顺序执行的,当到达需要调用解析器的部分时,对应的那一行程序就会被执行,应用程序本身的工作就会暂停(图1.12①)。然后,Socket 库中的解析器开始运行(图1.12②),完成应用程序委托的操作。像这样,由于调用了其他程序,原本运行的程序进人暂停状态,而被调用的程序开始运行,这就是“控制流程转移”®。
MTU:一个网络包的最大长度,以太网中一般为1500字节。
MSS:除去头部之后,一个网络包所能容纳的TCP数据的最大长度
MTU: Maximum Transmission Unit,最大传输单元。—编者注
MSS: Maximum Segment Size,最大分段大小。TCP 和IP 的头部加起来一般是40字节,因此MTU减去这个长度就是MSS。例如,在以太网中,MTU 为1500,因此MSS 就是1460。TCP/IP 可以使用一些可选参数(protocol option),如加密等,这时头部的长度会增加,那么MSS 就会随着头部长度增加而相应缩短。
判断要素就是这两个,但它们其实是互相矛盾的。如果长度优先,那么网络的效率会提高,但可能会因为等待填满缓冲区而产生延迟:相反地,如果时间优先。那么延迟时间会变少,但又会降低网络的效率。因此,在进行发送操作时需要综合考虑这两个要素以达到平衡。
尽管以太网经历了数次变迁,但其基本的3个性质至今仍未改变,即将包发送到 MAC 头部的接收方MAC地址代表的目的地,用发送方 MAC地址识别发送方,用以太类型识别包的内容。因此,大家可以认为具备这3个性质的网络就是以太网。
发送和接收同时并行的方式叫作“全双工”,相对地,某一时刻只能进行发送或接收其中一种操作的叫作“半双工”。
实际上,缓存服务器使用的代理机制最早就是放在客户端一侧的,这才是代理的原型,称为正向代理(forward proxy)。
我们前面介绍的服务器端的缓存服务器采用的正是这种方式,这种方式称反向代理(reverse proxy)。
缓存服务器判断转发目标的方法还有一种,那就是查看请求消息的包头部。因为包的IP头部中包含接收方IP地址,只要知道了这个地址,就知道用户要访问哪台服务器了。这种方法称为透明代理(transparent proxy)。