声明:
本博客是本人在学习《计算机网络》后整理的笔记,旨在方便复习和回顾,并非用作商业用途。
本博客已标明出处,如有侵权请告知,马上删除。
6.1 域名系统 DNS
6.1.1 域名系统概述
- 许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。
- 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。
- 名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
6.1.2 互联网的域名结构
-
互联网采用了层次树状结构的命名方法。
-
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
-
域名的结构由标号序列组成,各标号之间用点隔开:
… . 三级域名 . 二级域名 . 顶级域名
-
各标号分别代表不同级别的域名。
域名只是个逻辑概念
- 域名只是个逻辑概念,并不代表计算机所在的物理地点。
- 变长的域名和使用有助记忆的字符串,是为了便于人来使用。而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。
- 域名中的 “点” 和点分十进制 IP 地址中的 “点” 并无一一对应的关系。点分十进制 IP 地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。
顶级域名 TLD (Top Level Domain)
-
国家顶级域名 nTLD,例如:
- .cn 表示中国,
- .us 表示美国,
- .uk 表示英国,等等。
-
通用顶级域名 gTLD,例如:
- .com(公司和企业)
- .net(网络服务机构)
- .org(非赢利性组织)
- .edu(美国专用的教育机构)
- .gov(美国专用的政府部门)
- .mil(美国专用的军事部门)
- .int(国际组织)
互联网的域名空间
6.1.3 域名服务器
- 一个服务器所负责管辖的(或有权限的)范围叫做区 (zone)。
- 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。
- 每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
- DNS 服务器的管辖范围不是以 “域” 为单位,而是以 “区” 为单位。
区的不同划分方法举例
树状结构的 DNS 域名服务器
域名服务器有以下四种类型
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器
根域名服务器
-
根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
-
不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
-
根域名服务器并不直接把域名直接转换成 IP 地址。在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
-
在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。
顶级域名服务器
- 顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。
- 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
权限域名服务器
- 负责一个区的域名服务器。
- 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
本地域名服务器
- 本地域名服务器对域名系统非常重要。
- 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
- 每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
- 这种域名服务器有时也称为默认域名服务器。
提高域名服务器的可靠性
- DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
- 当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。
- 主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
域名的解析过程
- 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
名字的高速缓存
- 每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
- 可大大减轻根域名服务器的负荷,使互联网上的 DNS 查询请求和回答报文的数量大为减少。
- 为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。
- 当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。
6.2 文件传送协议
6.2.1 FTP 概述
- 文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。
- FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
- FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
- RFC 959 很早就成为了互联网的正式标准。
文件传送并非很简单的问题
- 网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。
- 初看起来,在两个主机之间传送文件是很简单的事情。
- 其实这往往非常困难。原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。
6.2.2 FTP 的基本工作原理
网络环境下复制文件的复杂性:
- 计算机存储数据的格式不同。
- 文件的目录结构和文件命名的规定不同。
- 对于相同的文件存取功能,操作系统使用的命令不同。
- 访问控制方法不同。
FTP 特点
- 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
- FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
- FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤
- 打开熟知端口(端口号为 21),使客户进程能够连接上。
- 等待客户进程发出连接请求。
- 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
两个连接
- 控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
- 实际用于传输文件的是 “数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建 “数据传送进程” 和 “数据连接”,用来连接客户端和服务器端的数据传送进程。
- 数据传送进程实际完成文件的传送,在传送完毕后关闭 “数据传送连接” 并结束运行。
两个不同的端口号
- 当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 (21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
- 接着,服务器进程用自己传送数据的熟知端口 (20) 与客户进程所提供的端口号码建立数据传送连接。
- 由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
使用两个不同端口号的好处
- 使协议更加简单和更容易实现。
- 在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。
FTP 并非对所有的数据传输都是最佳的
- 例如,计算机 A 上运行的应用程序要在远地计算机 B 的一个很大的文件末尾添加一行信息。若使用 FTP,则应先将此文件从计算机 B 传送到计算机 A,添加上这一行信息后,再用 FTP 将此文件传送到计算机 B,来回传送这样大的文件很花时间。
- 实际上这种传送是不必要的,因为计算机 A 并没有使用该文件的内容。
NFS 采用另一种思路
- NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。
- NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。
- 例如,计算机 A 的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 的 NFS 服务器。NFS 服务器更新文件后返回应答信息。
- NFS 在网络上传送的只是少量的修改数据。
6.2.3 简单文件传送协议 TFTP
- TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。
- TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。
- TFTP 只支持文件传输而不支持交互。
- TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
TFTP 的主要特点
- 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。
- 数据 PDU 也称为文件块 (block),每个块按序编号,从 1 开始。
- 支持 ASCII 码或二进制传送。
- 可对文件进行读或写。
- 使用很简单的首部。
TFTP 的工作很像停止等待协议
- 发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。
- 发完数据后在规定时间内收不到确认就要重发数据 PDU。
- 发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。
TFTP 工作步骤
- 开始工作时,TFTP 客户进程发送一个读请求 PDU 或写请求 PDU 给 TFTP 服务器进程,其熟知端口号码为 69。
- TFTP 服务器进程要选择一个新的端口和 TFTP 客户进程进行通信。
- 若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据 PDU。
- 若文件长度不是 512 字节的整数倍,则最后传送数据 PDU 的数据字段一定不满 512 字节,这正好可作为文件结束的标志。
6.3 远程终端协议 TELNET
- TELNET 是一个简单的远程终端协议,也是互联网的正式标准。
- 用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。
- TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
客户 - 服务器方式
- 现在由于 PC 的功能越来越强,用户已较少使用 TELNET 了。
- TELNET 也使用客户服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。
- 和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。
TELNET 使用网络虚拟终端 NVT 格式
网络虚拟终端 NVT 格式
- 客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。
- 服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。
- 向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。
6.4 万维网 WWW
6.4.1 万维网概述
- 万维网 WWW (World Wide Web) 并非某种特殊的计算机网络。
- 万维网是一个大规模的、联机式的信息储藏所。
- 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
- 这种访问方式称为 “链接”。
万维网提供分布式服务
超媒体与超文本
- 万维网是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。
- 一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。
- 超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。
万维网的工作方式
- 万维网以客户 - 服务器方式工作。
- 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
- 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
万维网必须解决的问题
(1) 怎样标志分布在整个互联网上的万维网文档?
- 使用统一资源定位符 URL (Uniform Resource Locator) 来标志万维网上的各种文档。
- 使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
(2) 用何协议实现万维网上各种超链的链接?
- 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
- HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
(3) 怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
- 超文本标记语言 HTML (HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
(4) 怎样使用户能够很方便地找到所需的信息?
- 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。
6.4.2 统一资源定位符 URL
- 资源定位符 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示。
- URL 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。
- 只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性。
- URL 相当于一个文件名在网络范围的扩展。因此 URL 是与互联网相连的机器上的任何可访问对象的一个指针。
URL 的一般形式
-
由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。
-
URL 的一般形式是:
-
现在有些浏览器为了方便用户,在输入 URL 时,可以把最前面的 “http://” 甚至把主机名最前面的 “www” 省略,然后浏览器替用户把省略的字符添上。
-
例如,用户只要键入 ctrip.com,浏览器就自动把未键入的字符补齐,变成
http://www.ctrip.com
。
6.4.3 超文本传送协议 HTTP
6.4.3.1 HTTP 的操作过程
- 为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。
- 从层次的角度看,HTTP 是面向事务的 (transaction-oriented) 应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
万维网的工作过程
- 每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,以便发现是否有浏览器向它发出连接建立请求。
- 一旦监听到连接建立请求并建立了 TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。
- 最后,TCP 连接就被释放了。
- 在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议 HTTP。
- HTTP 规定在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个 ASCII 码串构成的请求和一个类似的通用互联网扩充,即 “类 MIME (MIME-like)” 的响应组成。
- HTTP 报文通常都使用 TCP 连接传送。
用户浏览页面的两种方法
- 在浏览器的地址窗口中键入所要找的页面的 URL。
- 在某一个页面中用鼠标点击一个可选部分,这时浏览器会自动在互联网上找到所要链接的页面。
HTTP 的主要特点
- HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输。
- HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
- HTTP 是面向事务的客户服务器协议。
- HTTP 1.0 协议是无状态的 (stateless)。
请求一个万维网文档所需的时间
持续连接
- HTTP/1.1 协议使用持续连接 (persistent connection)。
- 万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
- 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
- 目前一些流行的浏览器(例如,IE 6.0)的默认设置就是使用 HTTP/1.1。
持续连接的两种工作方式
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
- 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT 时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。
6.4.3.2 代理服务器
- 代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。
- 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
- 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。
使用高速缓存可减少访问互联网服务器的时延
- 浏览器访问互联网的服务器时,要先与校园网的高速缓存建立 TCP 连接,并向高速缓存发出 HTTP 请求报文。
- 若高速缓存已经存放了所请求的对象,则将此对象放入 HTTP 响应报文中返回给浏览器。
- 否则,高速缓存就代表发出请求的用户浏览器,与互联网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
- 源点服务器将所请求的对象放在 HTTP 响应报文中返回给校园网的高速缓存。
- 高速缓存收到此对象后,先复制在其本地存储器中(为今后使用),然后再将该对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。
6.4.3.3 HTTP 的报文结构
HTTP 有两类报文:
- 请求报文——从客户向服务器发送请求报文。
- 响应报文——从服务器到客户的回答。
- 由于 HTTP 是面向正文的 (text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
HTTP 的报文结构(请求报文)
HTTP 请求报文的一些方法
HTTP 的报文结构(响应报文)
状态码都是三位数字
- 1xx 表示通知信息的,如请求收到了或正在进行处理。
- 2xx 表示成功,如接受或知道了。
- 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
- 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
- 5xx 表示服务器的差错,如服务器失效无法完成请求。
6.4.3.4 在服务器上存放用户的信息
- 万维网站点可以使用 Cookie 来跟踪用户。
- Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
- 使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。
6.4.4 万维网的文档
略
6.4.5 万维网的信息检索系统
略
6.4.6 博客和微博
略
6.4.7 社交网络
略