Contents
  1. 1. 常见的一些应用层协议:
  2. 2. 常见的网络应用模型
  3. 3. 域名系统 DNS (Domain Name System)
    1. 3.1. 域名服务器
    2. 3.2. 域名的解析过程
    3. 3.3. 名字的高速缓存
    4. 3.4. DNS资源记录
  4. 4. 文件传送协议FTP
    1. 4.1. FTP工作步骤
    2. 4.2. 两次链接
    3. 4.3. 两个不同的端口号
  5. 5. 简单文件传送协议 TFTP(Trivial File Transfer Protocol)
  6. 6. 远程终端协议 TELNET
  7. 7. 万维网WWW
    1. 7.1. 超媒体与超文本
    2. 7.2. 万维网必须解决的问题
    3. 7.3. 统一资源定位符 URL
      1. 7.3.1. URL 的一般形式
    4. 7.4. 超文本传送协议 HTTP
    5. 7.5. 万维网工作过程
    6. 7.6. 代理服务器(proxy server)
    7. 7.7. HTTP 请求报文的一些方法
    8. 7.8. http 响应状态码和短语
    9. 7.9. 在服务器上存放用户的信息Cookie
    10. 7.10. 万维网的文档
      1. 7.10.1. 超文本标记语言 HTML
      2. 7.10.2. 动态万维网文档
      3. 7.10.3. 通用网关接口 CGI(Common Gateway Interface) :
      4. 7.10.4. 浏览器的结构
  8. 8. 电子邮件
    1. 8.1. 电子邮件一些标准
    2. 8.2. 用户代理UA(User Agent)

应用程序: 具有通信功能的分布式进程

- 用户访问网络的接口
- 例如:email, file transfer, the Web

应用层协议:

- 应用程序的一部分
- 定义信息格式
- 定义通信规则
- 访问下层提供的服务

常见的一些应用层协议:

文件传输
    ●FTP、TFTP、NFS
电子邮件
    ●SMTP、POP3
WWW应用
    ●HTTP
远程登录
    ●Telnet、rlogin
网络管理
    ●SNMP
名字管理
    ●DNS 

常见的网络应用模型

一、客户/服务器模型
客户方主动地发起通信请求,服务器方被动地等待通信的建立。

二、浏览器/服务器模型
B/S模式下客户通过WWW浏览器实现对服务器的访问;
一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓的三层(3-tier)结构

三、P2P模型
点对点(P2P)模型特点是网络中的任何节点都可以作为服务器或者客户端。
P2P模型优势在于降低了对服务器的依赖以及它的分布式的控制能力。

四、Socket编程
Socket是从UNIX的I/O命令集发展而来的。Socket为上层实体提供一种透明的访问网络的能力,本质上说是传输层的服务原语。

TCP 中的套接字系统调用:

域名系统 DNS (Domain Name System)

产生原因:

  • 32比特的IP地址难于记忆
  • 当网络规模比较小时,每台主机只需查找一个列出了主机与IP地址的对应关系的文件。
  • 当网络规模很大时,产生了域名系统DNS(Domain Name System)。

域名系统是一个多层次的命名系统
域名的结构由若干个分量组成,各分量之间用点隔开:
… .三级域名.二级域名.顶级域名
各分量分别代表不同级别的域名。

域名服务器

域名空间被划分为许多无重叠的区域(zone) ,每个设有域名服务器管理本区域域名。
每个区域有一个主域名服务器和若干个备份域名服务器,比如:edu.cn xjtu.edu.cn cs.xjtu.edu.cn是三个不同的区域,分别有各自的域名服务器。

域名服务器有以下四种类型:

 - 根域名服务器 
 - 顶级域名服务器 
 - 权限域名服务器 
 - 本地域名服务器 
![](https://raw.githubusercontent.com/SamanthaChen/GitPicbed/master/Network/network32.png)

根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
根域名服务器并不直接把域名直接转换成 IP 地址。
在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的IP地址告诉本地域名服务器。

这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)

这就是前面已经讲过的负责一个区的域名服务器。
当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。

本地域名服务器对域名系统非常重要。
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
这种域名服务器有时也称为默认域名服务器。

域名的解析过程

主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

名字的高速缓存

为了提高DNS查询效率,并减轻跟域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛的使用了高速缓存。告诉缓存用来存放最近查询过的域名以及从何处获得域名映射的记录。

一旦 (任何) 域名服务器得知了某个映射, 就将其 缓存
在一定的时间间隔后缓存的条目将会过期(自动消除)

更新/通知 机制由 IETF负责设计

DNS资源记录

DNS: 存储资源记录 (RR)的分布式数据库
RR 格式: (name, value, type,ttl)

Type=A
name = 主机名
value = IP 地址

Type=NS
name = 域 (e.g. foo.com)
value =该域授权域名服务器的 IP 地址

Type=CNAME
Name= 别名
www.ibm.com is really servereast.backup2.ibm.com
value =真名

Type=MX
value = 与 name相关的邮件服务器域名

文件传送协议FTP

文件传送协议 FTP (File Transfer Protocol) 是因特网上使用得最广泛的文件传送协议。
FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

端口21,20

FTP工作步骤

  • 打开熟知端口(端口号为 21),使客户进程能够连接上。
  • 等待客户进程发出连接请求。
  • 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
  • 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。

两次链接

FTP传输文件时,客户机与服务器之间要建立两次TCP连接
1) 控制连接(Control Connection)
客户程序主动与端口为21的FTP服务器连接。服务程序被动地打开一个FTP的应用端口(21),等待客户程序的FTP连接。传输TCP命令和服务器回送信息。
2) 数据连接(Data Connection)
二者之间,每传输一个文件,建立一个连接。

两个不同的端口号

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。
由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

好处:
使协议更加简单和更容易实现。
在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)

简单文件传送协议 TFTP(Trivial File Transfer Protocol)

TFTP 是一个很小且易于实现的文件传送协议。
TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。
TFTP 只支持文件传输而不支持交互。
TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

远程终端协议 TELNET

TELNET 是一个简单的远程终端协议,也是因特网的正式标准。
用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。
TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。

万维网WWW

万维网 WWW (World Wide Web)并非某种特殊的计算机网络。
万维网是一个大规模的、联机式的信息储藏所。
万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
这种访问方式称为“链接”。

超媒体与超文本

万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在因特网上的超文本系统中。超文本是万维网的基础。
超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。

万维网必须解决的问题

(1) 怎样标志分布在整个因特网上的万维网文档?
使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档。
使每一个文档在整个因特网的范围内具有唯一的标识符 URL。

(2) 用何协议实现万维网上各种超链的链接?
在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

(3) 怎样使各种万维网文档都能在因特网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
超文本标记语言 HTML (HyperText Markup Language)使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

(4) 怎样使用户能够很方便地找到所需的信息?
为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。

统一资源定位符 URL

URL 相当于一个文件名在网络范围的扩展。因此 URL 是与因特网相连的机器上的任何可访问对象的一个指针。

URL 的一般形式

由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。

<主机> 是存放资源的主机在因特网中的域名
<端口>/<路径>有时可省略,若再省略文件的<路径>项,则 URL 就指到因特网上的某个主页(home page)。

http://www.xjtu.edu.cn:80/index.htm

超文本传送协议 HTTP

为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。
从层次的角度看,HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。\

万维网工作过程

代理服务器(proxy server)

代理服务器(proxy server)又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求。
万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去因特网访问该资源。

HTTP 请求报文的一些方法

方法(操作) 意义
OPTION 请求一些选项的信息
GET 请求读取由 URL所标志的信息
HEAD 请求读取由 URL所标志的信息的首部
POST 给服务器添加信息(例如,注释)
PUT 在指明的 URL下存储一个文档
DELETE 删除指明的 URL所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器

http 响应状态码和短语

位于(服务器->客户端)响应报文的第一行
状态码都是三位数字 。

1xx 表示通知信息的,如请求收到了或正在进行处理。
2xx 表示成功,如接受或知道了。
3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
4xx 表示客户的差错,如请求中有错误的语法或不能完成。
5xx 表示服务器的差错,如服务器失效无法完成请求。

200 OK

  • 请求成功, 被请求的对象在报文中
    301 Moved Permanently
  • 被请求的对象被移动过, 新的位置在报文中有说明 (Location:)
    400 Bad Request
  • 服务器不懂请求报文
    404 Not Found
  • 服务器上找不到请求的对象
    505 HTTP Version Not Supported

在服务器上存放用户的信息Cookie

万维网站点使用 Cookie 来跟踪用户。
Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。

万维网的文档

超文本标记语言 HTML

HTML 定义了许多用于排版的命令(即标签)。
HTML 把各种标签嵌入到万维网的页面中。这样就构成了所谓的 HTML 文档。HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。

仅当 HTML 文档是以.html 或 .htm 为后缀时,浏览器才对此 文档的各种标签进行解释。
当浏览器从服务器读取 HTML 文档后,就按照 HTML 文档中的各种标签,根据浏览器所使用的显示器的尺寸和分辨率大小,重新进行排版并恢复出所读取的页面。

两种不同的链接:
远程链接:超链的终点是其他网点上的页面。
本地链接:超链指向本计算机中的某个文件。

动态万维网文档

  • 静态文档是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。
  • 动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。
  • 动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。而从浏览器的角度看,这两种文档并没有区别。

通用网关接口 CGI(Common Gateway Interface) :

CGI 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。

CGI 程序的正式名字是 CGI 脚本(script)
“脚本”指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机来解释或执行。
脚本运行起来要比一般的编译程序要慢,因为它的每一条指令先要被另一个程序来处理(这就要一些附加的指令),而不是直接被指令处理器来处理。

浏览器的结构

电子邮件

电子邮件一些标准

  • 发送邮件的协议:SMTP
  • 读取邮件的协议:POP3 和 IMAP
  • MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用 MIME 可在邮件中同时传送多种类型的数据。


 发件人调用 PC 机中的用户代理撰写和编辑要发送的邮件。
 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器,
 SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去
 运行在接收方邮件服务器中的SMTP服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。
请注意,POP3 服务器和 POP3 客户之间的通信是由 POP3 客户发起的。

用户代理UA(User Agent)

用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件。

Contents
  1. 1. 常见的一些应用层协议:
  2. 2. 常见的网络应用模型
  3. 3. 域名系统 DNS (Domain Name System)
    1. 3.1. 域名服务器
    2. 3.2. 域名的解析过程
    3. 3.3. 名字的高速缓存
    4. 3.4. DNS资源记录
  4. 4. 文件传送协议FTP
    1. 4.1. FTP工作步骤
    2. 4.2. 两次链接
    3. 4.3. 两个不同的端口号
  5. 5. 简单文件传送协议 TFTP(Trivial File Transfer Protocol)
  6. 6. 远程终端协议 TELNET
  7. 7. 万维网WWW
    1. 7.1. 超媒体与超文本
    2. 7.2. 万维网必须解决的问题
    3. 7.3. 统一资源定位符 URL
      1. 7.3.1. URL 的一般形式
    4. 7.4. 超文本传送协议 HTTP
    5. 7.5. 万维网工作过程
    6. 7.6. 代理服务器(proxy server)
    7. 7.7. HTTP 请求报文的一些方法
    8. 7.8. http 响应状态码和短语
    9. 7.9. 在服务器上存放用户的信息Cookie
    10. 7.10. 万维网的文档
      1. 7.10.1. 超文本标记语言 HTML
      2. 7.10.2. 动态万维网文档
      3. 7.10.3. 通用网关接口 CGI(Common Gateway Interface) :
      4. 7.10.4. 浏览器的结构
  8. 8. 电子邮件
    1. 8.1. 电子邮件一些标准
    2. 8.2. 用户代理UA(User Agent)