分层网络模型(三)


应用层
1. 应用协议原理

在给定的一对进程之间的通信会话中,发起通信(即在该会话开始时与其他进程联系)的进程被标示为客户机,在会话开始时等待联系的进程是服务器。

进程通过一个称为套接字的软件接口在网络上发送和接收报文。
可以把套接字比作房子的门。
2. Web应用和HTTP协议(端口80)
2.1 HTTP

Web的应用层协议是超文本传输协议(HyperText Transfer Protocol, HTTP),它是Web的核心。

HTTP服务器不保存关于客户机的任何信息,所以我们说HTTP是一个无状态协议。
2.1.1 非持久连接和持久连接

非持久连接
每个TCP连接在服务器返回对象后关闭,即该连接并不为其他的对象而持续下来。
持久连接
在持久连接的情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户机与服务器之间的后续请求和响应报文可通过相同的连接进行传送。
2.2.2 HTTP报文格式

HTTP请求报文:
GRT /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/4.0
Accept-language: fr

请求行
首部行
浏览器请求对象somedir/page.html;
首部行,Host: www.someschool.edu定义了目标所在的主机;
首部行,Connection: close浏览器告诉服务器不希望使用持久连接,它要求服务器在发送完被请求的对象后就关闭连接;
首部行,User-agent定义用户代理,即项服务器发送请求的浏览器的类型;
首部行Accept-language表示用户想得到该对象的法语版本。

HTTP响应报文
HTTP /1.1 200 OK
Connection: close
Data: Thu, 03 Jul 2003 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Sun, 6 May 2007 09:23:24 GMT
Connect-Length: 6821
Content-Type: text/html
(data data …)

初始状态行:协议版本、状态码、相应状态信息
6个首部行
实体主体
2.2.3 cookie

cookie用于标识用户。用首次访问站点时,可能需要提供一个用户标识(可能是名字),在后继访问中,浏览器向服务器传递一个cookie首部,供服务器识别该用户。因此,cookie可以在无状态的HTTP上建立一个用户会话层。

image
2. 文件传输协议:FTP(端口20、21)

HTTP和FTP都是文件传输协议。它们都运行在TCP上。
区别:FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和“get”文件的命令。数据连接用于实际传输一个文件。
因为FTP协议使用一个分离的控制连接,所以也称FTP的控制信息是带外传送的。HTTP是带内发送控制信息的。
FTP服务器必须在整个会话期间保留用户的状态信息。
3. 电子邮件

因特网电子邮件系统有3个主要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)。
3.1 SMTP(端口25)

SMTP和HTTP都用于从一台主机向另一台主机传送文件,HTTP从Web服务器向Web客户机(通常是浏览器)传送文件(也称为对象);SMTP从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)。
区别:
第一:HTTP主要是一个拉协议(pull protocol)即人们可以在方便的时候装载Web服务器上的信息,用户使用HTTP从该服务器拉取信息。TCP连接由想获取文件的机器发起。
第二:SMTP是一个推协议(push protocol),发送邮件服务器把文件推向接收邮件服务器。TCP连接由要发送文件的机器发起。
3.2 邮件报文格式和MIME

一个典型地报文首部如下:
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life

在首部之后,紧接着是一个空白行,然后是ACSII格式表示的报文主体。
3.2.1 非ASCII码数据的MIME扩展

为发送非ASCII文本的内容,发送方的用户代理必须在报文中使用附加的首部行。这些额外的首部行(RFC 2045和RFC 2046),多用途因特网邮件扩展(Multipurpose Internet Mail Extension, MIME)是对RFC 822的扩展。

支持多媒体的两个关键MIME首部是Content-Type:和Content-Transfer-Encoding:。
Content-Type: 首部允许接收用户代理对报文采取适当的动作。例如,通过指出报文主体包含一个JPEG图形,接收用户代理可以为报文主体启用一个JPEG图形的解压缩程序。
Content-Transfer-Encoding:首部行提示接收用户代理该报文主体已经使用了ASCII编码。

例如:
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
和Content-Transfer-Encoding: base64
Content-Type:image/jpeg

(base64 encoded data…)
3.2.2 接收的报文

接收服务器一旦接收到具有RFC 822和MIME首部行的报文,就在该报文的顶部添加一个Received: 首部行。
该首部行定义了发送报文的SMTP服务器的名称(from),接收该报文的SMTP服务器的名称(by),以及接收服务器接收到的时间。
例如:
Received: from crepes.fr by hamburger.edu; 12 Oct 98 15:27:39 GMT
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
和Content-Transfer-Encoding: base64
Content-Type:image/jpeg

(base64 encoded data…)
3.3 邮件访问协议

接收方的用户代理不能使用SMTP取回邮件,因为取邮件是一个拉操作,而SMTP协议是一个推协议。通过引入一个特殊的邮件访问协议来解决这个难题,该协议将接收方邮件服务器上的邮件传送给他的本地PC。目前有多个流行的邮件访问协议,第三版的邮局协议(Post Office Protocol-Version 3, POP3)、因特网邮件访问协议(Internet Mail Access Protocol, IMAP)以及HTTP。
3.3.1 POP

POP3按照三个阶段进行工作:特许;事务处理;更新。
特许:用户代理发送(以明文形式)用户名和口令以鉴别用户。
事务处理:用户代理取回报文。在这个阶段,用户代理还能进行如下操作:对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息。
更新:它出现在客户机发出了quit命令之后,目的是结束该POP3会话,这时,邮件服务器删除那些被标记为删除的报文。
3.3.2 IMAP

使用POP3是将文件夹和报文存放在本地机上,这会给移动用户带来问题。POP3不能让用户从任何一台机器上对所有报文进行访问。其没有给用户提供任何创建远程文件夹以及为报文指派文件夹的方法。
IMAP服务器把每个报文与一个文件夹联系起来,当报文第一次到达服务器时,它是放在收件人的收件箱文件夹里。
3.3.3 基于Web的电子邮件

用户代理就是普通的浏览器,用户和其远程邮箱之间的通信则通过HTTP进行。电子邮件报文从邮件服务器到浏览器,使用HTTP。邮件服务器和其他邮件服务器之间发送和接收邮件时,仍然使用SMTP。
4. DNS:因特网的目录服务

域名系统(Domain Name System)
DNS:一个由分层 DNS 服务器实现的分布式数据库;一个允许主机查询分布式数据库的应用层协议。
DNS运行在 UDP 之上,使用 53 号端口。
用于将用户提供的主机名解析为 IP 地址。

结构:
1. 分布式、层次数据库
根DNS服务器;顶级域(TLD)服务器;权威DNS服务器。
2. DNS缓存
5. P2P应用

使用P2P体系结构,对总是打开的基础设施服务器有最小的依赖。

BitTorrent是一种用于文件分发的流行P2P协议。用BitTorrent的术语来讲,参与一个特定文件分发的所有对等方集合称为一个洪流(torrent)。
在一个洪流中,对等方彼此下载等长度的文件块,块长度通常为256KB。

原文地址:https://www.cnblogs.com/Pan-xi-yi/p/9053536.html