计算机网络-应用层

计算机网络理论,应用层。

套接字编程接口

网络子系统作为操作系统的一部分,以应用编程接口(API-Application Programming Interface)的形式向应用程序提供调用接口。套接字(socket)是最常用的应用层编程接口。

应用程序通过套接字接入到网络。

域名系统DNS

域名系统(Domain Name System,DNS)是Internet使用的命名系统,用于将域名转换为IP地址。

多个域名服务器上运行专门的域名服务器程序,完成域名->IP地址的解析 (resolve)。

DNS基于UDP协议实现:

  • 应用进程需要进行域名解析时,就调用域名解析程序(resolver),它成为DNS的一个客户
  • 向本地域名服务器发送域名解析请求(UDP报文),其中包含待解析的域名
  • 本地域名服务器在查找域名后,返回应答报文,其中包含对应的IP地址

Internet采用层次树状结构的域名系统,根域名服务器(root name server)是树的根节点。··· .三级域名.二级域名.顶级域名

顶级域名(Top-Level Domain,TLD):

  • 国家顶级域名(Country Code Top-Level Domain,ccTLD):如.cn、.us、.uk
  • 通用顶级域名(Generic Top-Level Domain,gTLD):如.com、.org、.net

域名服务器的层次结构:

  1. 根域名服务器:知道所有的顶级域名服务器的域名和IP地址
  2. 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名
  3. 权威域名服务器:负责一个区(zone)的域名服务器
  4. 本地域名服务器:负责域名解析的本地域名服务器

根域名服务器共有13台,分布在全球。

主机向本地域名服务器的查询一般采用递归查询

  • 如果本地域名服务器不知道被查询域名的IP地址,那么它就以DNS客户的身份,向根域名服务器继续发出查询请求报文

本地域名服务器向根域名服务器的查询通常是采用迭代查询

  • 当根域名服务器收到本地域名服务器的迭代查询请求报文时
    • 要么给出所要查询的IP 地址
    • 要么告诉本地域名服务器下一步应向哪一个域名服务器查询
  • 本地域名服务器进行后续的查询

DNS查询过程

文件传输协议FTP

FTP使用客户/服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务。

FTP使用2个TCP连接:控制连接和数据连接

  • 控制连接
    • 在整个会话期间一直保持打开
    • FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件
  • 数据连接
    • 收到FTP客户发送来的文件传输请求后,服务器端的控制进程创建“数据传送进程”和“数据连接”
    • 数据传送进程实际完成文件的传送,传送完毕后关闭“数据传送连接”并结束运行

万维网WWW

要解决的几个问题:

  1. 怎样标识分布在Internet上的万维网文档?——URL
  2. 用什么协议实现万维网上各种超链的链接?——HTTP
  3. 如何存储和表示万维网文档?——HTML

统一资源定位符URL(Uniform Resource Locator)

URL的一般形式为:

<协议>://<主机名>:<端口号>/<路径>
  • 协议:指明访问资源所使用的协议,如http、ftp、news等
  • 主机名:指明资源所在主机的域名或IP地址
  • 端口号:指明服务器正在监听的端口号,http默认端口号为80
  • 路径:指明服务器上资源的具体位置,若省略路径,则默认指主页

超文本传输协议HTTP(HyperText Transfer Protocol)

HTTP是一个无状态的协议,即服务器不保留关于客户的任何信息。

基于TCP协议,使用80端口。

客户端需要请求某个页面时,与服务器建立TCP链接,之后请求传送文 件,并进行文件的传送,传送完毕后释放TCP连接。

请求一个页面的过程:

  • 首先建立TCP连接,需3次握手
  • 在2次握手后,第3次握手报文的数据部分可传送HTTP请求报文
  • 服务器收到请求报文后,返回HTTP应答报文
  • 请求文档所需时间 = 2 * RTT + 文件传输时间

HTTP/1.0每传送一个文件都需要建立一次TCP连接;HTTP/1.1进行了改进。 HTTP/1.1协议使用持续连接(persistent connection)

  • 服务器发送响应后,在一段时间内保持连接,使客户与服务器可以继续传送后续的HTTP请求报文和响应报文
  • 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行

HTTP是面向正文的(text-oriented),报文中的字段都是ASCII 码串,因而每个字段的长度都是不确定的。

  • 方法:一些命令,如GET、POST、HEAD
  • URL:请求资源的URL
  • 版本:HTTP的版本号

在请求报文中,开始行就是请求行

HTTP请求报文

HTTP应答报文的开始行是状态行。状态码都是三位数字:

  • 1XX:通知信息
  • 2XX:成功
  • 3XX:重定向
  • 4XX:客户端错误
  • 5XX:服务器错误

HTTP应答报文

超文本标记语言HTML(HyperText Markup Language)

HTML是一种标记语言,用于描述超文本文档的结构。定义了很多排版的命令,即标签(tag)。

安全的HTTP协议:HTTPS

HTTPS是HTTP的安全版本,使用SSL/TLS协议进行加密传输。HTTPS使用443端口。

SSL/TLS协议是在TCP之上的协议,SSL/TLS协议的主要功能是保护Internet通信的安全性。

电子邮件

发送电子邮件的协议:SMTP(Simple Mail Transfer Protocol)

接收电子邮件的协议:POP3(Post Office Protocol Version 3)、IMAP(Internet Mail Access Protocol)

电子邮件发送过程

电子邮件系统的两种实体:

  • 用户代理(User Agent,UA):用户使用的邮件客户程序
  • 邮件服务器(Mail Server):接收、存储和转发邮件的服务器,邮件服务器既可以作为客户,也可以作为服务器

SMTP协议

SMTP通信的三个阶段

  1. 连接建立:连接在发送主机的SMTP客户和接收主机的SMTP服务器之间建立,不使用中间邮件服务器
  2. 邮件传送
  3. 连接释放:邮件发送完毕后,SMTP释放TCP 连接

电子邮件的格式

一个电子邮件分为信封和内容两大部分:

  • RFC 822只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则由用户自由撰写
  • 首部中的主要字段
    • To:后面填入一个或多个收件人的e-mail地址
    • Subject:邮件的主题,反映了邮件的主要内容
    • Cc:抄送(Carbon copy),表示给某人发送一个邮件副本
    • From:发信人的电子邮件地址
    • Date:发信日期
    • Reply-to:对方回信地址

MIME协议

MIME(Multipurpose Internet Mail Extensions)协议是为了解决SMTP协议只能传送ASCII码文本的问题。

邮件首部中增加字段,定义数据类型和编码规则。