Skip to content

应用层

约 2122 个字 4 张图片 预计阅读时间 7 分钟

DNS

简介

Domain Name System(域名系统)的作用是将复杂的IP地址映射为人类可记忆的域名。在最初的ARPANET中使用了一个简单的本地文本文件来存储IP地址到名称的映射,但随着网络的扩大,如果还这么做的话,首先文本文件会很大,其次难以避免冲突,因而需要引入一个专门的系统来管理域名。

在需要解析域名时,电脑上的stub resolver会向local DNS resolver发出请求(其中包含了要解析的域名),local DNS resolver会通过递归或迭代地查询找出映射的结果。

采用递归查询会对根域名服务器造成巨大的开销,因为所有查询都是由根域名服务器在进行,而采用迭代查询将大部分的工作移到了本地,可以减少根域名服务器的负载。

域名

域是名字空间中的一个可被管理的划分,域可以划分为子域,而子域还可以继续划分。每个域名都由标号序列组成,而各标号之间用.隔开。域名是从后往前解析的,比如www.baidu.comcom是顶级域名,baidu是二级域名,www是三级域名,根域名通常被省略,其实域名结尾应该还有一个.表示根域名。

查询流程

DNS 是一个分层的系统,从上到下依次有:

  1. 根域名服务器(root server)
  2. 顶级域名服务器(top-level-dns server)
  3. 权威服务器(authoritative server)
  4. ...

查询时从上到下依次查询

  • 域名和IP都很短小(不超过255个字符),并且域名解析非常常见,故选择使用了UDP
  • 一个16bit长的Transcation Indentifier会被包含到每个请求和被复制到响应中
  • 超时将重发请求,在一定数量的重试后使用其它的域名服务器
  • 使用QNAME Minimization而不是完整的域名(fully qualified domain name)来保护隐私
  • 缓存查询的结果复用,缓存的每一项要包含TTL用于刷新记录

格式

域名解析记录是一个Tuple,由5项组成(domain_name, time_to_live, class, type, value)

常用的类型有:

  1. SOA(Start of Authority):提供参数
  2. A(Address):持有一个IPv4地址
  3. AAAA(Quad A):持有一个IPv6地址
  4. MX(Mail Exchange):声明用来为特定域名接收邮件的域名
  5. NS(Name of a server for this domain):声明用于域名和子域名的服务器
  6. CNAME(Canonical Name):为域名创建别名

EMail

工作流程

  • User Agent(UA):是一个程序,提供与电子邮件系统交互的接口(图形化或命令行)
  • Mail submission:发送新邮件到文件系统的行为
  • Message Transfer Agent(MTA):运行在邮件服务器上的系统程序,能够使用SMTP协议自动将邮件从发送者转移至接收者
  • Mailing lists:为表上的每个邮件地址都复制一份消息发送

连接UA和MTA的是:

  • 邮箱:存储收到的邮件
  • 邮件信息的标准格式:RFC822和RFC5322,可能会有multimedia content和international text(MIME)

邮件格式

类似于真实的信件,有:

  • Envelope:封装消息,包含用于转发/路由的信息
  • Content
  • Header:为UA准备的控制信息
  • Body:完全给人类接收者的信息

邮箱地址是收件人邮箱名@邮箱所在主机域名的格式,其中收件人邮箱名在单一邮件服务器上必须唯一,从而确保邮箱地址全局唯一。

MIME

因为SMTP只能传送7位ASCELL码文本邮件,许多其它非英语国家的文字就无法传送,且无法传递可执行文件和其他二进制对象,所以提出了MUME(Multipurpose Internet Mail Extentions)。其本质是一套编码规则,能够将ASCELL内容和非ASCELL内容相互转换。

SMTP 和 POP3

  • SMTP(Simple Mail Transfer Protocol)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。
  • POP(Post Office Protocol)是一个非常简单但功能有限的邮件读取协议,现在使用的版本是POP3,有两种工作方式:“下载并保留”和“下载并删除”
  • IMAP(Internet Message Access Protocol):比POP复杂很多,提供创建文件、在不同文件夹间移动邮件及在远程文件夹中查询邮件等联机命令,因此需要维护会话状态,另一特性是允许只获取报文的某些部分。
  • HTTP:有些电子邮件是基于Web的,浏览器和邮件服务器之间收发信息使用HTTP,比如gmail

WWW

简介

World Wide Web(WWW)是一个分布式、联机式的信息存储空间,在这个空间中,一切有用的事物都称作资源,并由全局统一资源定位符(URL)标识。这些资源通过HTTP传送给使用者,而使用者通过单击链接来获取资源。

万维网的内核部分是由三个标准组成:URL、HTTP和HTML。URL的一半形式是protocol://host:port/path,不区分大小写。

服务器程序向客户程序发送回客户需要的万维网文档,并返回信息给Web浏览器:

  1. Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求
  2. Web服务器把URL转化为文件路径,并返回信息给Web浏览器
  3. 通信完成,关闭连接

超文本传输协议

简介

超文本传输协议(HTTP)定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎么把文档传送给浏览器。从协议执行流程来说,浏览器要访问WWW服务时,首先要完成对WWW服务器域名的解析。一旦获取了服务器IP地址,浏览器就通过TCP向服务器发送连接请求。

流程

每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立TCP连接。然后,浏览器就向服务器发送请求获取某个Web页面的HTTP请求。服务器收到请求后,将构建所请求Web页面的必须信息,并通过HTTP响应返回给浏览器。浏览器再将信息进行解释,然后将Web页显示给用户。最后,TCP连接释放。

特点

HTTP 使用TCP作为传输层协议,保证数据的可靠传输,但HTTP本身是无连接的。HTTP是无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的状态相同,因为服务器并不记得曾经服务过这个用户。在实际应用中,通常使用cookie加数据库的方式来跟踪用户活动。

HTTP 既可以使用非持续连接(HTTP/1.0),又可以使用持续连接(HTTP1.1支持)。对于非持续连接,每个网页元素对象的传输都需要单独建立一个TCP连接,请求一次的时间为2RTT。对于持续连接,又可以分为非流水线式和流水线方式:

  • 非流水线方式:客户在收到前一个响应后才能发出下一个请求,服务器在发完一个对象后,其TCP连接就处于闲置状态,浪费了服务器资源,连接建立后一次请求的时间是1RTT
  • 流水线方式:客户可以连续发出对各个对象的请求,服务器可以连续响应这些请求

报文结构

HTTP是面向文本的,因此报文中的每个字段都是一些ASCELL码,并且每个字段的长度都是不确定的。有两类HTTP报文:请求报文和响应报文,两种报文都由三个部分组成:

  1. 开始行:在请求报文的开始行称为请求行,而在响应报文中称作状态行。
  2. 首部行:用来说明浏览器、服务器或报文主体的一些信息
  3. 实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段