《计算机网络》内容整理:
文章目录
域名系统DNS
域名系统的基本概念
- 为什么有了IP地址,还需要域名?
IP地址是给机器看的,域名是给人看的 - Internet域名结构
因特网采用了层次树状结构的命名方法
- DNS提供的服务
- 主机别名:有着复杂主机名的主机可以拥有一个或者多个别名。例如,一台名为relay1.west-coast.enterprise.com的主机,可能还有两个别名 - enterprise.com和www.enterprise.com。这种情况下,relay1.westcoast.enterprise.com也叫规范主机名(canonical hostname)。应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址
- 邮件服务器别名
域名服务器
- 域名服务器的基本工作原理
- 域名系统在设计了层次的域名的同时,提出了与其相对应的域名服务器系统
- 整个域名系统是以一个大型的分布式数据库的方式工作的
- 大多数具有Internet连接的组织都有一个域名服务器,每个服务器包含连向其他域名服务器的信息,这些服务器形成了一个大的协同工作的域名数据库
- 域名服务器的层次
- DNS服务器的层次是与域名的层次相适应的;
- 每一个域名服务器都只对域名体系中的一部分进行管辖;
- 一个根服务器(root server)在这个层次体系的顶部,它是顶层域的管辖者;
- DNS服务器的层次对应着域名的层次,但是这两者并不是对等的。一个公司网络或校园网可以选择将它所有的域名都放在一个域名服务器上,也可以选择运行几个域名服务器。
- 根域名服务器
- 最高层次的服务器,也是最重要的域名服务器。所有的根域名服务器知道所有的顶级域名服务器的域名和IP地址
- 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器
- 共有13个不同IP地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)a.rootservers.net……m.rootservers.net
- 需要注意的是,在许多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址(根域名服务器也没有存放这种信息),而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询
- 顶级域名服务器(即TLD服务器)
- 权威域名服务器
- 本地域名服务器
域名解析
- 将域名转换为对应的IP地址的过程称为域名解析
- 迭代查询
当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询
- 递归查询
(主机向本地域名服务器的查询)
如果主机所询问的本地域名服务器不知道被查询域名的IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文
递归查询使用较少的原因:应避免对层次设计中的顶层要求过高,递归查询对顶层服务器施加了过高的负载 - 传输层中使用的是UDP报文而不是TCP报文,为了快一些
DNS缓存
- 一个DNS服务器接收一个DNS回答时,将回答中的信息缓存在本地
- 主机名与IP地址间的映射不是永久的,所以DNS服务器在一段时间后(通常设置为两天)丢弃缓存的信息
- 本地DNS server也可以缓存TLD server的IP地址,因而允许本地DNS绕过查询链中的根DNS服务器
DNS记录(本段内容ppt上有 书上没有)
- 实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(Resource Record, RR), RR提供了主机名到IP地址的映射。每个DNS回答报文包含了一条或多条资源记录。资源记录是一个包含了下列字段的4元组
(Name, Value, Type, TTL)
TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。- 如果Type=A,则Name是主机名,Value是该主机名的IP地址。例如(abc.foo.com, 128.238.66.100, A)
- 如果Type=NS,则Name是域,而Value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名。例如(foo.com, dns.foo.com, NS)
- 如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。例如(foo.com, relay1.bar.foo.com, CNAME)
- 如果一台DNS服务器是某特定主机名的权威DNS服务器,那么该DNS服务器会有一条包含该主机名的类型A记录(即使该DNS服务器不是其权威域名服务器,它也可能在缓存中含有一条类型A记录)
- 如果DNS服务器不是某个主机名的权威DNS服务器,那么该服务器将包含一条类型NS记录,该记录对应于包含主机名的域;它还将包括一条类型A记录,该记录提供了在NS记录的Value字段中DNS服务器的IP地址。
- DNS数据库中插入记录 (好,我们接下来看一看大家的公司是怎么上线的) 例如创建network.com
- 首先注册域名network.com
- 提供基本权威DNS服务器和辅助权威DNS服务器的名字和IP地址。假如该名字和IP地址是dns1.network.com和dns2.network.com及100.100.100.1和100.100.100.2
- 对这两个权威DNS服务器的每一个,注册登记机构确保将一个类型NS和一个类型A的记录输入TLD com服务器
- (network.com, dns1.network.com, NS)(dns1.network.com, 100.100.100.1, A)
WWW应用和HTTP协议
WWW服务的基本概念
- WWW(world wide web) 又称为万维网,简称为Web, 是Internet技术发展中的一个重要的里程碑。并非一种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所。
- WWW系统的结构采用了客户/服务器模式
- 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
- 在一个客户程序主窗口上显示出的万维网文档称为页面(page)
- 要解决的三个问题:
- 定位:怎样标志分布在整个因特网上的万维网文档?
URL:使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档;使每一个文档在整个因特网的范围内具有唯一的标识符 URL - 传输:用何协议实现万维网上各种超链的链接?
HTTP:在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP(HyperText Transfer Protocol);HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送 - 显示:怎样使各种万维网文档都能在因特网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
HTML:超文本标记语言 HTML (HyperText Markup Language)使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来
- 定位:怎样标志分布在整个因特网上的万维网文档?
统一资源定位符URL
- URL实际上是互联网上资源的地址。这里所说的“资源”是指互联网上任意可以被访问的对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。
- 由以冒号隔开的两大部分组成,并且在 URL中的字符对大写或小写没有要求
- 一般形式:
主机指的就是该主机在互联网上的域名
HTTP默认端口号是80,若再省略文件中的<路径>项,则URL就指到互联网上的某个主页(home page)
超文本传送协议HTTP
- 从层次的角度看,HTTP是面向事务的(transaction-oriented) 应用层协议
所谓事务(transaction)就是指一系列信息交换,而这一系列信息交换是一个不可分割的整体,也就是说,要么所有的信息交换都完成,要么一次交换都不进行 - HTTP1.0 协议是无状态的(stateless)
服务器并不记得访问过的这个客户,也不记得为该用户曾经服务过多少次 - HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务
- 万维网的工作过程
- 用户点击鼠标后所发生的事件
- 请求一个万维网文档所需的时间
- 持续连接(persistent connection)
- HTTP/1.1 协议使用持续连接
- 万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文
- 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行
- 持续连接的两种工作方式
- 非流水线方式::客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源
- 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。
- 串行和并行TCP连接
- 用户可以设置浏览器以控制并行度
- 默认方式下,大部分浏览器打开5~10个并行的TCP连接,每个连接处理一个请求-响应事务
- 总结HTTP节省时间的几个方式:
- 持续连接
- 流水线工作
- 并行TCP连接
HTTP的报文结构
-
请求报文——从客户向服务器发送请求报文
- 开始行就是请求行(Request-Line)
- “方法”(method) 是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的
- “URL”是所请求的资源的 URL
- “版本”是 HTTP 的版本
- 实体主体(entity body)
-
响应报文——从服务器到客户的回答(每个请求报文都能收到一个响应报文)
- 开始行是状态行(Status-Line)
- 状态码都是三位数字:
1xx 表示通知信息的,如请求收到了或正在进行处理;
2xx 表示成功,如接受或知道了;example:202 Accecpted(接受)
3xx 表示重定向,表示要完成请求还必须采取进一步的行动;example:原来的网页转移到一个新的地址
4xx 表示客户的差错,如请求中有错误的语法或不能完成;example:404 Not Found(找不到)
5xx 表示服务器的差错,如服务器失效无法完成请求
-
由于 HTTP 是面向文本的(text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
用户与服务器的交互:cookie
- HTTP是无状态的,但是万维网有时候希望能识别用户,万维网站点使用 Cookie 来跟踪用户
- Cookie 表示在 HTTP 服务器和客户之间传递的状态信息
- 使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。
- 注意这里cookie的目标其实是一台主机
- Cookie技术由4个部分组成
- 在HTTP响应报文中有一个cookie首部行;
- 在HTTP请求报文中有一个cookie首部行;
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理;
- 在Web站点有一个后端数据库
代理服务器(proxy server)
- 代理服务器(proxy server)又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求,它是一种网络实体
- 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中
- 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去因特网访问该资源
- 使用高速缓存可减少访问因特网服务器的时延
- 使用高速缓存的情况:
- 浏览器访问因特网的服务器时,要先与校园网的高速缓存建立 TCP 连接,并向高速缓存发出 HTTP请求报文
- 若高速缓存已经存放了所请求的对象,则将此对象放入 HTTP 响应报文中返回给浏览器。
- 否则,高速缓存就代表发出请求的用户浏览器,与因特网上的源点服务器建立 TCP 连接,并发送HTTP 请求报文。
- 源点服务器将所请求的对象放在 HTTP 响应报文中返回给校园网的高速缓存。
- 高速缓存收到此对象后,先复制在其本地存储器中(为今后使用),然后再将该对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。
第一反应是如果代理服务器宕机了那不就玩完,原来是想增加速率减少网络拥堵的,现在直接多增加了一个瓶颈。后来突然发现,咋,好像计网里都没怎么考虑过服务器宕机的问题,考虑得最多的都是些传输问题。
- 条件GET方法
Web cache保证它缓存的对象是最新的
如果(1)请求报文使用GET方法;(2)请求报文中包含一个If-modified-since:首部行,那么这个HTTP请求报文就是一个条件GET请求报文
动态主机配置协议 DHCP(Dynamic Host Configuration Protocol)
-
动态主机配置协议 DHCP 提供了即插即用连网(plug-and-play networking) 的机制
-
这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与
-
DHCP 使用客户服务器方式
- 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文 (DHCPDISCOVER) ,这时该主机就成为 DHCP 客户
- 本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文
- DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool) 中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCPOFFER)。
-
DHCP 中继代理(relay agent)
- 并不是每个网络上都有 DHCP 服务器,这样会使 DHCP 服务器的数量太多。现在是每一个网络至少有一个 DHCP 中继代理,它配置了DHCP 服务器的 IP 地址信息
- 当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机
-
租用期(lease period)
- DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期
- 租用期的数值应由 DHCP 服务器自己决定
- DHCP 客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求
-
DHCP 协议的工作过程
-
更新IP地址租用期
- DHCP 客户根据服务器提供的租用期 T 设置两个计时器 T1和 T2,它们的超时时间分别是** 0.5T** 和 0.875T。当超时时间到就要请求更新租用期
- 租用期过了一半(T1 时间到),DHCP 发送请求报文DHCPREQUEST 要求更新租用期。
- 若DHCP服务器不响应请求报文DHCPREQUEST,则在租用期过了 87.5% 时,DHCP 客户必须重新发送请求报文 DHCPREQUEST
- DHCP 服务器若同意,则发回确认报文DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器
- DHCP 服务器若不同意,则发回否认报文DHCPNACK。这时DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP地址。
- DHCP 客户可随时提前终止服务器所提供的租用期,这时只需向DHCP 服务器发送释放报文 DHCPRELEASE 即可。
- 以上内容均为复习所用,侵删