HTTP/HTTPs

一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。

HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议。通过使用网页浏览器网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程式(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理伺服器网关或者隧道(tunnel)。

尽管TCP/IP协议是互联网上最流行的应用,但是在HTTP协议中并没有规定它必须使用或它支持的层。事实上HTTP可以在任何互联网协议或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,所以其在TCP/IP协议族使用TCP作为其传输层。

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

  1. 非持久连接

  2. 持久连接

4. 非流水线

5. 流水线
  1. 请求报文:GET/POST

  2. 响应报文

  3. 客户端连接到 Web 服务器:一个 HTTP 客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个 TCP 套接字连接。

  4. 发送 HTTP 请求:通过 TCP socket,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据 4 部分组成。

  5. 服务器接受请求并返回 HTTP 响应:Web 服务器解析请求,定位请求资源。服务器将资源复本写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据 4 部分组成。

  6. 释放连接 TCP 连接:若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接; 若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  7. 客户端浏览器解析 HTML 内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集。客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示。

例如:在浏览器地址栏键入 URL,按下回车之后会经历以下流程:

1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;

3、浏览器发出读取文件 (URL 中域名后面部分对应的文件) 的 HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

5、释放 TCP 连接;

6、浏览器将该 html 文本并显示内容;

DNS

port = 53 基于UDP的C/S模型服务,域名到IP的解析是由运行在域名服务器上的程序执行的。有根域名服务器、顶级域名服务器、授权域名服务器、本地域名服务器。标号不超过63个字符,多标号组成的完整域名最长不超过255个字符

FTP

control port = 21 data port = 20 基于TCP的C/S模型的文件传输协议。

文件传输协议FTP提供交互式访问,允许客户指名文件的类型格式,允许文件具有存取权限,屏蔽了各个计算机系统细节,适合于异构网络中任何计算机之间传送文件

  1. 提供不同主机系统(软硬件都可以不同)之间文件传输能力

  2. 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力

  3. 以匿名FTP的方式提供公用文件共享能力

  4. 一个FTP服务器进程可以同时向多个客户进程提供服务,一个住进程,负责接受新的请求,若干从属进程,负责处理单个请求。

FTP在工作时使用两个并行连接,一个是控制连接端口号21,一个是数据连接,端口号20.控制连接在整个会话期间一直保持打开状态。数据连接在控制请求后打开,传送完成后关闭。

SMTPPOP3IMAP

email系统:C/S模型的异步系统。UA用户代理:邮件客户端;邮件服务器的功能是接收和发送邮件,同时要向发信人报告邮件传送情况,采用C/S方式,但是必须能够同时充当客户和服务器。

  1. SMTP 基于TCP的发送协议。port = 25,只使用ASCII码。

3. 连接建立:不使用中间邮件服务器。`SMTP server` 回复 `220`表示`service ready`。 `SMTP client send HELO to SMTP server appendix with sender name`

4. 邮件发送:`MAIL FROM <@addr>, Server reply with 250 OK. RCPT TO : <@addr>,Server reply with 250 OK.`

5. 连接释放:`client send QUIT`
  1. MIME:一个互联网标准,它扩展了电子邮件标准,使其能够支持: 非ASCII字符文本; 非文本格式附件; 由多部分组成的消息体; 包含非ASCII字符的标头信息。在SMTP的基础上增加了邮件主体结构(5个新的邮件首部字段),定义了传送非ASCII码的编码规则,可以对任何内容格式进行转换。

  2. POP3:port = 110基于TCP的邮件接收协议。提供下载并保留在服务器上和下载并删除服务器数据的服务。

  3. IMAP:提供创建文件夹、移动邮件、远程文件夹查询邮件等联机命令。提供只获取报文的某些部分。适合低带宽。

Hotmail和Gmail在对各自服务器的收发协议是Http。