7.1 DNS——域名系统

DNS 简要地说, DNS 的使用方法如下所述。为了将一个域名映射成IP地址,应用程序调用一个名为解析器(resolver)的库程序,并将名字作为参数传递给此程序。

① 解析器向本地DNS服务器发送一个包含该名字的请求报文; ② 本地DNS服务器查询该名字,并且返回一个包含该名字对应IP地址的响应报文给解析器,然后解析器再将IP地址返回给调用方。

查询报文和响应报文都作为UDP 数据包发送。有了IP地址以后,应用程序就可以与目标主机建立一个TCP连接,或者给它发送UDP数据包。

7.1.1 DNS名字空间

DNS namespace是一个分层的结构 image.png

7.1.2 域名资源记录

无论是只有一台主机的域还是顶级域,每个域都有一组与它相关联的资源记录(resource record)。这些记录组成了 DNS 数据库。

7.1.3 域名服务器

DNS名字空间被划分为一些不重叠的区域(zones) 区域边界应该放置在区域中的什么位置由该区域的管理员来决定。这个决定在很大程度上取决于需要在哪里使用多少个名字服务器。 查询一个名字和找出其对应地址的过程称为域名解析(name resolution),是通过DNS协议完成的。 域名解析:

  • 计算机请求本地域名服务器
  • 本地域名服务器请求根域名服务器
  • 根域名服务器返回较低层次的域名服务器
  • 继续下面的区域直到域名服务器可以应答 根域名服务器:最高层次,知道所有顶级域名服务器的IP地址,管辖顶级域,当本地域名服务器无法自己解析时,就会求助根域名服务器,根域名服务器不直接告诉它IP地址,而是告诉本地域名服务器下一步应该去找哪个顶级域名服务器

没有根域名服务器,就无法进行域外的名字解析。建立根域名服务器是战略高点。

顶级域名服务器:负责管理在该顶级域名服务器下注册的所有二级域名,包含一个行业或一个国家所有子域的有关信息,给出子域的域名服务器的权威记录。包含通用和国家、地区两类。

本地域名服务器:每个ISP都拥有一个本地域名服务器,当一台主机发出DNS请求时,这个查询请求报文就发送给本地DNS。

域名服务器包含域内所有子域的有关信息

DNS协议:

UDP端口53上运行,重新传输丢失的消息

缓存名称服务器答案以获得更好的性能

7.3 HTTP 超文本传输协议

TTP (应用层常见的协议) HTTP 是一个简单的请求.响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出,就像SMTP简单邮件传输协议一样:而消息内容则具有一个类似MIME的格式,也像SMTP一样。

HTTP协议支持流水线请求,支持缓存。

HTTP使用持续连接(persistent connection)来提升性能。 GET: 请求服务器发送页面 HEAD:只请求页面的头部 PUT:存储一个页面 POST:也携带一个URL,上载数据到服务器; Trace:用于调试,指示服务器发回收到的请求; Connect:通过一个中间设备(比如Web缓存)与Web服务器建立一个连接。 Options: 客户向服务器查询一个页面并且获得可用于该页面的方法和头

每个请求都会得到一个响应,每个响应由一个状态行及可能的附加消息(例如全部或者部分Web页面)组成;状态行包括一个3位数字的状态码,指明请求是否被满足,如果没被满足,原因是什么。 用户发送请求,检查缓存中内容是否过期,如果过期了则向服务器发送Conditional GET,如果内容改变了,服务器会给出相应;如果未改变,则可以继续从缓存cache中获取响应内容。