1.HTTP
Web
的应用层协议是超文本传输协议,它是Web
的核心。
Http
由客户程序和服务器程序实现。
Web
页面由对象组成,一个对象是一个文件。且它们可通过一个URL
地址寻址。
多数Web
页面含一个HTML
基本文件及几个引用对象。
HTML
基本文件通过对象的URL
地址引用页面的其他对象。
每个URL
地址由两部分组成:存放对象的服务器主机名,对象的路径名。
非持续连接和持续连接
(1). 非持续连接
客户端连接发出请求并收取回复后自动关闭.
(2). 持续连接
客户端连接上可持续进行请求并处理回复,直到用户显式关闭.
HTTP请求报文
(1). 一个GET
请求实例
GET /somedir/page.html HTTP/1.1 # 请求行
Host: www.someschool.edu # 指明对象所在主机。Web代理高速缓存要求
Connection: close # 要求服务器发送完请求的对象后,关闭连接
User-agent: Mozilla/5.0 # 用户代理
Accept-language: fr # 语言版本
上述请求报文的第一行叫作请求行,后续行叫作首部行.
请求行构成:方法,URL
,HTTP
版本
上图为一个HTTP
请求报文的通用格式.
请求方法中GET
和POST
类似,但GET
方法无需提供Entity body
,POST
方法允许提供Entity body
.
HTTP响应报文
(1). 响应报文实例
HTTP/1.1 200 OK
Connection: close
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data data ...)
上述是一个通用的回复包结构.
用户与服务器的交互:cookie
cookie
,允许站点对用户进行跟踪.
cookie
技术有4
个组件:
(1). 在HTTP
响应报文中的一个cookie
首部行.
(2). 在HTTP
请求报文中的一个cookie
首部行.
(3). 在用户端系统中保留一个cookie
文件,由用户的浏览器管理.
(4). 位于web
站点的一个后端数据库.
Web缓存
Web
缓存器也叫代理服务器。
能代表初始Web
服务器来满足HTTP
请求的网络实体。
Web
缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本.
Web
缓存器既是服务器又是客户,接收浏览器请求并发回响应时,是一个服务器,向初始服务器发出请求并接收响应时,是一个客户.
Web
缓存器有两个原因:
(1). Web
缓存器可大大减少对客户请求的响应时间。
(2). Web
缓存能够大大减少一个机构的接入链路到因特网的通信量。
条件GET方法
(1). 请求实例
GET /fruit/kiwi.gif HTTP/1.1
Host: www.exotiquecuisine.com
If-modified-since: Wed, 9 Sep 2015 09:23:24
服务器收到条件GET
请求时,会分析URI
资源最新修改时间,若URI
在请求中指定的时间后未被更改,响应包可以不包含Entity body
部分.
2.电子邮件
电子邮件系统3
个主要组成部分:
用户代理,邮件服务器,简单邮件传输协议
一个典型的邮件发送过程:
(1). 发送方的用户代理,将邮件传输到发送方的邮件服务器.
(2). 发送方的邮件服务器将邮件传输到接收方的邮件服务器.
(3). 接收方邮件服务器将邮件存储到接收者邮箱.
一个典型的邮件接收过程:
(1). 接收方的用户代理,向自己的邮件服务器申请获取邮件.
(2). 邮件服务端向其发回邮件作为响应.
邮件服务器之间采用SMTP
协议.
SMTP
SMTP
限制邮件报文的体部分需要用7
比特的ASCII
表示。
一个在SMTP
客户和SMTP
服务器之间交换报文文本的实例。
客户的主机名为crepes.fr
,服务器主机名为hamburger.edu
。
以C:
开头的ASCII
码文本行是客户交给其TCP
套接字的那些行。
以S:
开头的ASCII
码则是服务器发送给其TCP
套接字的那些行。
一旦创建了TCP
连接,就开始了下列过程:
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr>
S: 250 alice@crepes.fr ... Sender ok
C: RCPT TO: <bob@hamburger.edu>
S: 250 bob@hamburger.edu ... Recipient ok
C: DATA
S: 354 Enter mail, end with ”.” on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection
与HTTP的对比
(1). 主动与被动
HTTP
主要是一个拉协议。客户端使用HTTP
从该服务器主动请求获取这些信息。
SMTP
基本上是一个推协议,即发送邮件服务器主动把文件推向接收邮件服务器。
(2). 报文格式
SMTP
要求每个报文采用7
比特ASCII
码格式。HTTP
无此限制。
邮件报文格式
一个典型的报文首部:
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.
在报文首部后,紧接着一个空白行,然后是以ASCII
格式表示的报文体。
邮件访问协议
POP3
当用户代理打开了一个到邮件服务器端口110
的TCP
连接后,POP3
就开始工作了。
POP3
按照三个阶段进行工作:
(1). 身份认证
用户代理发送用户名和口令以鉴别用户。
(2). 事务处理
用户代理取回报文,对报文做删除标记,取消报文删除标记,获取邮件的统计信息.
(3). 更新
出现在客户发出quit
命令后,邮件服务器删除被标记删除的报文。
IMAP
POP3
协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。
IMAP
提供了创建文件夹及将邮件从一个文件夹移动到另一个文件夹的命令。还提供了远程文件夹查询邮件。
IMAP
服务器维护了IMAP
会话的用户状态信息。
IMAP
允许用户代理获取报文某些部分。
基于Web的电子邮件
当发件人要发送一封电子邮件报文时,该电子邮件报文从发件人的用户代理到其邮件服务器,使用HTTP
。
邮件服务器间仍然为SMTP
。
当收件人要接收邮件报文时,从接收者用户代理到其邮件服务器也采用HTTP
.
3.DNS:因特网的目录服务
DNS提供的服务
主机名到IP
地址转换,为域名系统的主要任务
DNS
是:
(1). 一个由分层的DNS
服务器实现的分布式数据库.
(2). 一个使得主机能够查询分布式数据库的应用层协议.
DNS
运行在UDP
上,使用53
号端口。
一个实例:
(1). 用户主机浏览器请求URL
www.someschool.edu/index.html
为了使用户的主机能将一个HTTP
请求报文发送到Web
服务器www.someschool.ed
u,该用户主机必须获得www.someschool.edu
的IP
地址。
(2). 同一台主机上运行着DNS
应用的客户端
a. 浏览器从上述URL
中抽取出主机名www.someschool.edu
,将这台主机名传给DNS
应用的客户端.
b. DNS
客户向DNS
服务器发送一个包含主机名的请求.
c. DNS
客户最终收到一份回答报文,其中含有对应于主机名的IP
地址.
d. 浏览器接收到来自DNS
的该IP
地址,它向位于该IP
地址80
端口的HTTP
服务器进程发起一个TCP
连接。
除了主机名到IP
地址的转换,DNS
还提供:
(1). 主机别名。一个主机有一个规范名和多个别名。
(2). 邮件服务器名。对提供的主机别名进行解析,获得主机的规范名和IP
地址。
(3). 负载分配。用于冗余服务器之间进行负载分配。
繁忙的节点被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,有不同的IP
地址。
由于冗余的Web
服务器,一个IP
地址集合与一个规范主机名相联系,DNS
数据库中存储着这些Ip
地址集合。当客户对映射到某地址集合的名字发出一个DNS
请求时,该服务器用IP
地址的整个集合进行响应。但在回答中循环这些地址次序。因为客户通常总是向IP
地址排在最前面的服务器发送HTTP
请求报文。
DNS工作机理概述
讨论集中在主机名到IP
地址转换。
DNS
客户端,向DNS
服务端发送DNS
查询报文.
所有的DNS
请求和回答报文使用UdP
数据报经过53
端口发送。
分布式,层次数据库
大致有3
种类型的DNS
服务器。
(1). 根DNS
服务器,顶级域DNS
服务器,权威DNS
服务器。
假定一个DNS
客户要决定主机名www.amazon.com
的IP
地址。
a. DNS
客户端先与根服务器联系,取得若干负责com
的顶级域服务器的Ip
地址。
b. 该客户然后与这些顶级域服务器之一联系,以便取得若干负责amazon.com
的权威服务器的Ip
地址
c. 该客户再与这些权威服务器之一联系,以便取得www.amazon.com
的Ip
地址。
(1). 根DNS
服务器
用于提供顶级域服务器的Ip
地址.
(2). 顶级域服务器
每个顶级域和所有国家的顶级域,都有顶级域服务器。
顶级域服务器提供权威服务器的Ip
地址。
(3). 权威服务器
由用户向权威服务器注册主机名,ip
地址的映射。进而使其可用于查询主机名对应的ip
地址.
(4). 本地DNS
服务器。
每个ISP
都有一台本地DNS
服务器。
用户主机与某个ISP
连接时,该ISP
提供一台主机的Ip
地址,该主机具有一台或多台其本地DNS
服务器的IP
地址。
主机发出DNS
请求时,请求被发往本地DNS
服务器,在本地DNS
服务器无法命中下,其会将请求转发到DNS
服务器层次结构中。
上图中,从请求主机到本地DNS
服务器的查询是递归的,本地DNS
服务器发出的查询是迭代的.
上图中,所有查询都是递归的.
DNS缓存
在一个请求链中,当某DNS
服务器接收一个DNS
回答,它能将映射缓存在本地存储器中。
后续,对缓存的主机名查找到该服务器时,该服务器直接返回结果。缓存信息超过一定期限自动失效
DNS记录和报文
资源记录提供了主机名到IP
地址的映射。
资源记录是包含下列字段的4
元组:(Name, Value, Type, TTL)
TTL
是该记录的生存时间,决定了资源记录应当从缓存中删除的时间。
资源记录实例:
(1). 如Type=A
,则Name
为主机名,Value
是对应的Ip
地址。
(2). 如Type=NS
,则Name
是域名,如foo.com
,Value
是个知道如何获得该域中主机Ip
地址的权威Dns
服务器的主机名。
(3). 如Type=CNAME
,Name
是别名,Value
是规范主机名。
(4). 如Type=MX
, Name
是邮件服务器别名,则Value
是规范主机名。
一个实例:
对一台edu
顶级域服务器,需要包含一条形如(umass.edu, dns.umass.edu, NS)
的记录.还需包含一条形如(dns.umass.edu, 128.119.40.111, A)
的记录.
这样,此顶级域服务器收到形如www.umass.edu
这样的域名解析请求时,可返回"128.119.40.111"
作为应答.请求者,再继续向128.119.40.111
发送请求,便可最终获得结果.
DNS报文
Dns
只有查询和回答报文
(1). 前12
个字节是首部区域,其中有几个字段。
第一个字段,标识符,是一个16
比特的数,用于标识该查询。
这标识符会被复制到对查询的回答报文中,以便让客户用它来匹配发送的请求和收到的回答。
标志字段含若干标志,查询/回答标志指示报文类型。
当某Dns
服务器是所请求名字的权威Dns
服务器时,权威位被设置。
如客户在Dns
服务器没记录时希望,递归查询,递归标志位被设置。
如Dns
服务器支持递归查询,其回答报文中,递归可用位被设置。
(2). 问题区域包括正进行的查询信息。
包含名字字段,含正在被查询的主机名字
类型字段,该名字被询问的问题类型
(3). 在来自Dns
服务器的回答中,回答区域包含了对最初请求的名字的资源记录。
每个资源记录有Type,Value,TTL
字段,回答报文的回答区域可含多条资源记录。故一个主机名可有多个Ip
地址。
(4). 权威区域包含了其他权威服务器的记录
(5). 附加区域包含了其他有帮助的记录。
在DNS数据库中插入记录
在注册登录机构注册域名,注册登记机构是一个商业实体,验证域名唯一性,将域名输入Dns
数据库,对提供的服务收取少量费用。
当向某些注册登记机构注册域名,例A.com
时,需向该机构提供你的基本和辅助权威Dns
服务器的名字和Ip
地址。
假设为dns1.A.com
和dns2.A.com
及212.212.212.1
和212.212.212.2
。
对这两个权威Dns
服务器的每一个,该注册登记机构确保将一个类型Ns
和一个类型A
的记录输入顶级域 com
服务器.
特别是对用于A.com
的基本权威服务器,该注册登记机构将下列两条资源记录插入com
顶级域的系统:
(1). (A.com, dns1.A.com, NS)
(2). (dns1.A.com, 212.212.212.1, A)
你还须确保用于Web
服务器www.A.com
的类型A
资源记录和用于邮件服务器mail.A.com
的类型MX
资源记录被输入你的权威Dns
服务器中。
最近在Dns
协议中添加了一个更新选项,允许通过Dns
报文对数据库中的内容进行动态添加或者删除。
完成上述步骤后,人们便可访问你的Web
站点,并向你发送电子邮件。
例如:
在澳大利亚的Alice
要观看,www.A.com
的Web
页面。
她的主机首先向其本地Dns
服务器发送请求,该本地服务器接着联系一个顶级域 com
服务器,如com
顶级域服务器地址未缓存,该本地Dns
服务器需与根Dns
服务器联系,来取得顶级域com
的ip
。
该顶级域服务器包含前面列出的类型Ns
和类型A
资源记录。
注册登录机构会将这些资源记录插入顶级域 com
服务器的所有实例。
该顶级域 com
服务器向Alice
的本地Dns
服务器发送一个回答,该回答包含两条资源记录。
本地Dns
服务器解析应答,进而向212.212.212.1
发送一个Dns
查询,请求对应于www.A.com
的类型A
记录。
212.212.212.1
的回复中会提供了相应的Ip
地址,如212.212.71.
4,本地Dns
服务器解析应答并将用该地址给Alice
的主机进行回复。
Alice
的浏览器此时能够向主机212.212.71.4
发起一个TCP
连接,并在该连接上发送一个HTTP
请求。