应用层概述
应用层协议原理
应用层协议的实现,只需要写出能够运行在不同的端系统(服务器、手机、电脑等)和通过网络彼此通信的程序。因为网络核心设备(路由器、交换机等,不包括端系统设备)并不在应用层上起作用,只在网络层及下面层次起作用,所以不需要为网络核心设备写对应的应用程序,即开发应用程序的时候只需要考虑适配端系统,不需要考虑网络核心设备。
应用层协议定义
- 应用进程交换的报文类型,请求还是响应?
- 各种报文类型的语法,如报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文,以及对报文进行响应的规则。
应用层的功能及重要协议
- 文件传输、访问和管理 ( FTP )
- 电子邮件 ( SMTP、POP3、IMAP)
- 虚拟终端 ( HTTP )
- 查询服务和远程作业登录 ( DNS )
网络应用模型
客户/服务器模型(Client/ Server)

服务器:提供计算服务的设备。
- 永久提供服务
- 永久性访问地址/域名
客户机:请求计算服务的主机。
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态|P地址
- 不与其他客户机直接通信
工作流程:
- 服务器处于接收请求的状态。
- 客户机发出服务网请求,并等待接收结果。
- 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。
应用:Web, 文件传输FTP, 远程登录, 电子邮件
P2P模型(Peer-to-peer )

思想:整个网络中传输的内容不再保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权力和义务都是大体对等的。
特点:
- 不存在永远在线的服务器
- 每个主机既可以提供服务,也可以请求服务
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变P地址
- 可扩展性好
- 网络健壮性强
应用:PPlive,Bittorrent,电驴
域名系统(DNS)
域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名 (如 www.baidu.com) 转换为便于机器处理的IP地址。
层次域名空间

根
国家顶级域名 cn, us, uk
顶级域名
- 通用顶级域名 com, net, org, gov, int, aero, museum, travel
- 基础结构域名/反向域名 apa
二级域名
- 类别域名 ac, com, edu, gov, mi, net, org
- 行政区域名 用于我国各省、自治区、直辖市 bj,js
- 自定义域名(全球唯一)
三级域名 自定义域名(全球唯一)
四级域名 自定义域名(全球唯一)

域名服务器(DNS服务器)
DNS服务器主要有4种类型的域名服务器,分别是 根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器。
根域名服务器:最高层次的域名服务器。全世界一共有13个根域名服务器,每个根域名服务器并不是单个服务器,而是服务器集群。
顶级域名服务器 :管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,给出相应回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。
权限域名服务器 :负责一个区的域名服务器。
本地域名服务器:不算层次结构,特点是里主机比较近,当主机和另一台比较近的主机通信时,就不用走那些更高级的服务器了。

域名解析过程


- 客户机向其本地域名服务器发出DNS请求报文(递归查询)。
- 本地域名服务器收到请求后,查询本地缓存,若没有该记录, 则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)。
- 根域名服务器收到请求后, 判断该域名属于 .com 域, 将对应的顶级域名服务器 dns.com 的IP地址返回给本地域名服务器。
- 本地域名服务器向顶级域名服务器 dns.com 发出解析请求报文(迭代查询)。
- 顶级域名服务器 dns.com 收到请求后, 判断该域名属于 abc.com 域, 因此将对应的授权域名服务器 dns.abc.com 的IP地址返回给本地域名服务器。
- 本地域名服务器向授权域名服务器 dns.abc.com 发起解析请求报文(迭代查询)。
- 授权域名服务器 dns.abc.com 收到请求后, 将查询结果返回给本地域名服务器。
- 本地域名服务器将查询结果保存到本地缓存, 同时返回给客户。
高速缓存
为了提高DNS的查询效率并减少因特网上的DNS查询报文数量,在域名服务器中广泛的的使用了高速缓存。当一个DNS服务器接收到DNS查询结果时, 它能将该DNS信息缓存在高速缓存中。这样, 当另一个相同的域名查询到达该DNS服务器时, 该服务器就能够直接提供所要求的IP地址, 而不需要再去向其他DNS服务器询问。因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。
文件传输协议(FTP)
简介
文件传输协议FTP(File transfer protocol):提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
简单文件传送协议TFTP(Trivial File Transfer Protocol):使用UDP协议实现,用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大文件传输服务。(了解)
FTP服务器和用户端
FTP是基于客户/服务器(C/S)的协议。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
FTP服务器:依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器。
FTP客户端:连接FTP服务器, 遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
FTP工作原理
FTP在工作时使用两个并行的TCP连接:一个是 控制连接 (端口号21),一个是 数据连接。
控制连接 :用来传输控制信息(如连接请求、传送请求等)。在整个会话期间一直保持打开状态。
数据连接 :用来完成文件的传输。在文件传输结束时关闭连接。
[c-alert type=”success”]数据连接有两种传输模式:
主动模式(PORT):“服务器”的20端口连接“客户端”随机开放的端口。
被动模式(PASV):“客户端”连接“服务器”随机开放的端口,具体端口自行协商而定(一般端口>1024)
[/c-alert]

FTP传输模式
文本模式:ASC模式,以文本序列传输数据;
二进制模式:Binary模式,以二进制序列传输数据。
电子邮件
电子邮件的信息格式

电子邮件系统的组成结构


- 发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。
- 发送端邮件服务器将邮件放入邮件缓存队列中, 等待发送。
- 运行在发送端邮件服务器的SMTP客户进程, 发现邮件缓存中有待发送的邮件, 就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接。
- TCP连接建立后, SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有待发送邮件发完后, SMTP就关闭所建立的TCP连接。
- 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后, 将邮件放入收信人的用户邮箱, 等待收信人在方便时进行读取。
- 收信人打算收信时,调用用户代理,使用POP3(或MAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)。
简单邮件传送协议(SMTP)
SMTP 规定了在两个相互通信的SMTP进程之间应如何交换信息
负责发送邮件的SMTP进程就是SMTP客户, 负责接收邮件的进程就是SMTP服务器
SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)
SMTP 使用 TCP连接, 端口号是25, C/S


1. SMTP不能传送可执行文件或者其他二进制对象。
2. SMTP仅限于传送7位ASCll码, 不能传送其他非英语国家的文字。
3. SMTP服务器会拒绝超过一定长度的邮件。
[/title-plane]多用途网际邮件扩充(MIME)
使电子邮件系统可以支持声音、图像、视频多种国家语言等等。使得传输内容丰富多彩。

邮局协议(POP3)
邮局协议 POP,是一个非常简单且功能有限的邮件读取协议。现在使用的是它的第三个版本POP3。POP3采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。
POP 使用C/S的工作方式,使用TCP连接,端口号为110。
[start-plane type=”1″]POP3的工作方式:1.下载并保留(在服务器上) 2.下载并删除容[/start-plane]
网际报文存取协议(IMAP)
IMAP协议比POP协议复杂。当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件, 还允许只读取邮件中的某一个部分 (先看正文,有WF的时候再下载附件)。
基于万维网的电子邮件
只要与用户代理接触的环节使用 HTTP 协议。

万维网概述
万维网 www(World Wide Web)是一个大规模的、联机式的信息存储空间, 是无数个网络站点和网页的集合。在这个空间中,一个有用的事物称为一个 “资源”,并由一个全域“统一资源定位符”(URL)唯一标识资源(文字、视频、音频等)。
URL一般形式:
<协议>://<主机>:<端口>/<路径> 例:http://www.pku.edu.cn
http 域名
ftp IP地址
URL不区分大小写
[/title-plane]用户通过点击超链接 (http://www.baidu.com) 获取资源, 这些资滤通过超文本传输协议(HTTP)传送给使用者。
万维网以 客户/服务器(C/S)方式工作, 用户使用的浏览器就是万维网客户程序, 万维网文档所驻留的主机运行服务器程序。
万维网使用超文本标记语言HTML, 使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面, 并能够在自己的屏幕上显示出来。
超文本传输协议(HTTP)
HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档, 以及服务器怎样把文档传送给浏览器。

用户单击鼠标后所发生的事件按顺序如下(以访问清华大学的网站为例)
- 浏览器分析链接指向页面的URL(http:/www.tsinghua.edu.cn/chn/index.html)
- 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。
- 域名系统DNS解析出清华大学服务器的IP地址。
- 浏览器与该服务器建立TCP连接(默认端口号为80)。
- 浏览器发出HTTP请求:GET/chn/index.html。
- 服务器通过HTTP响应把文件 index html 发送给浏览器。
- 释放TCP连接。
- 浏览器解释文件 index. html, 并将Web页显示给用户。
HTTP协议的特点
HTTP协议是无状态的。但是在际工作中,一些万维网站点常常希望能够识别用户, 使用 Cookie 实现(Cookie是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别,如“123456”)的访问记录)从而提供个性化服务。
HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)。
HTTP协议的连接方式

非持久连接:每个网页元素对象(如JPEG图形、Fash等)的传输都需要单独建立一个TCP连接。也就是说请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT (一个RTT用于TCP连接, 另一个RTT用于请求和接收文档)。每个对象引用都导致2×RTT的开销, 此外每次建立新的TCP连接都要分配缓存和变量, 使万维网服务器的负担很重。
持久连接:万维网服务器在发送响应后仍然保持这条连接接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。
持久连接又分为非流水线和流水线两种方式。对于非流水线方式, 客户在收到前一个响应后才能发出下一个请求, 服务器发送完一个对象后,其TCP连接就处于空闲状态, 浪费了服务器资源。HTTP/1.1的默认方式是使用流水线的持久连接。这种情况下, 客户每遇到一个对象引用就立即发出一个请求, 因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的, 那么所有引用的对象共计经历1个RTT延迟, 而不是像非流水线方式那样,每个引用都必须有1个RTT延迟。这种方式减少了TCP连接中的空闲时间, 提高了效率。
非流水线 : 客户发出一个对象请求后,等收到响应后才能发出下一个对象请求。
流水线:客户可以同时发出多个对象的请求。
[/start-plane]
HTTP协议的报文结构
HTTP报文 分为 请求报文 和 响应报文 。
HTTP报文是面向文本的, 因此在报文中的每一个字段都是一些ASCll码串。


附录
本章常用中英文对照
- Server farm 服务器集群
- Infrastructure 基础设施,或基础架构
- Self-scalability 自扩展性
- Timing 实时性
- Connection-oriented service 面向连接的服务
- Base HTML file 基本HTML文件
- Stateless protocol 无状态协议
- RTT (round-trip time ) 往返时间
- User agents 用户代理
- Mail servers 邮件服务器
- Top-level domain (TLD) servers 顶级域名服务器
- Authoritative DNS servers P161 权威域名服务器
- Iterative queries 迭代查询
- Resource records (RRs) 资源记录
- Nonpersistent HTTP 非持久HTTP,或非坚持HTTP
- Persistent HTTP 持久性HTTP,或坚持的HTTP
- Peer-to-Peer (P2P) Network 对等网络
- Socket programming 套接字编程