一、DNS协议
最上面的是根服务器,没有对应的名字。下一级节点就是最高一级的顶级域名。顶级域名可往下划分子域,即二级域名,之后可以依次往下划分:
域名服务器
一个服务器管辖的范围叫做区(zone),每个取设置相应的权限域名服务器,用来保存该曲中所有主机的域名到IP地址的映射。
DNS服务器的管理单位是区而不是域,但是区必定小于等于域,区是域的子集。具体结构如下:
从图中可以看出,域名服务器可划分为4部分:
- 根域名服务器:最该层次的域名服务器,本地域名服务器无法解析域名时将求助于根域名服务器。根域名服务是由分布在世界各地的机器构成的装备(installation)。其可以使用户总能找到离它最近的根域名服务器。
要注意的是,大多数情况下,根域名服务器不直接转换,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器查询 - 顶级域名服务器(Top Level Domain服务器,TLD):负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询时给出回答(这个回答可能是最后结果,也可能是下一步应当找的域名服务器的IP地址)
- 权限域名服务器:如前,当它不能给出最后的查询回答时,就告诉发出查询请求的DNS用户,下一步应当找哪一个权限域名服务器(它们可能在DNS树上是sibling的关系)。
- 本地域名服务器(local name server):它不在DNS树种,但对域名系统非常重要。当一个主机发出DNS查询请求时,它首先报给LNS,一般每个ISP,如一个大学,都可以拥有一个LNS,也被称为默认域名服务器。它能够转换同属于一个ISP的域名,从而避免访问其他DNS服务器。
域名解析过程
- 主机向LNS的查询一半采用递归查询(recursive query):如果LNS不知道域名,那么LNS就自己(而不是让主机)以DNS客户的身份向其他根渔民服务器发出查询请求报文
- LNS向根域名服务器的查询通常是采用迭代查询(iterative query)。根域名服务器收到查询后,要么给出IP要么给出到哪个域名服务器去查,然后让DNS客户自己去查,而不是代替它查。
迭代查询和递归查询是可以指定的:
DNS服务器普遍会设置高速缓存,从而减少根服务器的压力
二、http协议
状态码含义
2xx:成功
- 200 OK,正常处理
- 204 No Content,表示请求已成功处理,但返回的响应报文不含实体的主体部分,一般在只需C向S发信息,而S不需要向C发信息时使用。
- 206 Partial Content,表示客户端你进行了范围请求,响应报文中包含 Content-Range 指定范围的实体内容。
3xx 重定向
表明浏览器需要执行某些特殊处理以正确处理请求
- 301 Moved Permanently,表明请求的资源已被重新分配了URI,以后应使用更新后的,也就是说,如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存。
。。。
4xx:客户端错误
- 400 bad request,表示请求报文中存在语法错误,浏览器会像 200 OK 一样对待该状态码。
- 401 Unauthorized, 表示发送的请求需要有通过http认证的认证信息(但它没有),另外若之前已进行过 1 次请求,则表示用户认证失败。
- 403 Forbidden, 表明对请求资源的访问被服务器拒绝了,服务器可以选择在实体部分给出解释
- 404 Not Found,表示服务器上无法找到请求的资源,也可以在服务器拒绝请求且不想说明理由时使用。
5xx:服务器错误
- 500 Internal Server Error,该状态码表明服务器端在执行请求时发生了错误。
- 503 Server Unavailable,表明服务器暂时处于朝服在或正在进行停机维护,无法处理请求。
Http首部字段
http是面向文本的传输协议,首部字段用ASCII码表示。
整体格式:一个字段由字段名和字段值构成,中间用冒号+空格": "
分离,每个字段占一行,每行用CRLF,\r\n
(unix是LF,\n
)分离。