http 笔记1

1 web内容都是存储在web服务器上,web服务器所使用的是HTTP协议,因此被称为HTTP服务器。客户端向服务器发送HTTP请求。

HTTP客户端和HTTP服务器共同构成了万维网的基本组件。

2 web服务器是web资源的宿主,web资源是web内容的源头。

所有类型的内容来源都是资源,包含公司销售预测电子表格的文件是一种资源。扫描本地公共图书馆书架的web网关是一种资源。因特网搜索引擎也是一种资源。

3 媒体类型 MIME类型

MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。

HTML格式的文本文档由text/html类型来标记

普通的ASCII文本文档由text/plain类型来标记

JPEG版本的图片为image/jpeg类型

GIF格式的图片为image/gif类型

Apple的QuickTime电影为video/quicktime类型

微软的PowerPoint演示文件为application/vnd.ms-powerpoint类型

4 URI

每个web服务器资源都有一个名字。服务器资源名称被称为统一资源标识符 URI 。URI就像因特网上的邮政地址一样,在世界满园内唯一标识交定信息资源。

5 URL

统一资源定位符,是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。

url 的第一部分被称为方案,说明 了访问资源所使用的协议类型。这部分通常就是HTTP协议。

第二部分给出了服务器的因特网地址。

其余部分指定了web服务器上的某个资源

现在,几乎所有的URI都是URL

6 URN URI的第二种形式是统一资源名。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。

7 事务

一个HTTP事务由一条从客户端发往服务器的请求命令和一个从服务器发回客户端的响应结果组成。这种通信是通过名为HTTP报文(HTTP message)的格式化数据块进行的。

8 方法

HTTP支持几种不同的请求命令,这些命令被称为http方法。每条Http请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作:GET、PUT、DELETE、POST、HEAD

9 状态码

每条Http响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。

10 报文

http报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本、不是二进制代码,可以很方便地对其进行读写。

从web客户端发往web服务器的Http报文称为请求报文 request message 。从服务器发往客户端的报文称为响应报文response message

http报文包括以下三个部分:

起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况

首部字段:起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号 : 来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。

主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给web服务器的数据,响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同。主体中可以包含任意的二进制数据、文本

11 连接

报文通过传输控制协议 TCP 连接从一个地方搬移到另一个地方

TCP/IP http是个应用层协议。无需操心网络通信的具体细节,它把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP.

 TCP 提供 了:

无差错的数据传输;按序传输 数据总是会按照发送的顺序到达、未分段的数据流 可以在任意时刻以任意尺寸将数据发送出去

因特网自身就是基于TCP/IP的,TCP/IP 是全世界的计算机和网络设备常用的层次化分组交换网络协议集。TCP/IP 隐藏了各种网络和硬件的特点及弱点,使各种类型的计算机和网络都能够进行可靠地通信。

只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序了。

HTTP协议位于TCP的上层。HTTP使用TCP来传输期报文数据。TCP则位于IP的上层

在HTTP客户端向服务器发送报文之前,需要用网际协议IP地址和端口号在客户端和服务器之前建立一条TCP/IP连接。

在TCP中,你需要知道服务器的IP地址,以及与服务器上运行的特定软件相关的TCP端口号

步骤:

  1 浏览器从URL中解析出服务器的主机名

  2 浏览器将服务器的主机名转换成服务器的IP地址

  3浏览器将端口号从URL中解析出来

  4浏览器建立一条与web服务器的TCP连接

  5 浏览器向服务器发送一条HTTP请求报文

  6 服务器向浏览器回送一条HTTP响应报文

  7关闭连接,浏览器显示文档。

12 Telnet实例

Telnet程序可以将键盘连接到某个目标TCP端口,并将此TCP端口的输出 回送到显示屏上。telnet常用于远程终端会话,它几乎可以连接所有的tcp服务器,包括http服务器

可以通过telnet程序直接与web服务器进行对话。通过telnet可以打开一条到某台机器上某个端口的tcp连接,然后直接向那个端口输入一些字符。web服务器会将telnet程序作为一个web客户端来处理,所有回送给tcp连接的地显示在屏幕上。

  首先,查找www..joes-hardware.com的IP地址,打开一条到那台机器端口80的TCP连接。telnet会完成这些工作

  一旦打开TCP连接,就要输入HTTP请求了

  请求结束(由一个空行表示)之后,服务器会在一条HTTP响应中将内容回送并关闭连接

Telnet可以很好地模拟http客户端,但不能作为服务器使用。

更灵活的工具:nc netcat,可以很方便的操纵基于UDP和TCP的流量包括HTTP,还可以为其编写脚本。

13 web的结构组件

代理:位于客户端和服务器之间的HTTP中间实体 

  这是web安全、应用集成以及性能优化的重要组成模块,接收所有客户端的http请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。出于安全考虑,通常会将代理作为转发所有web流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。比如,在企业中对下载的应用程序进行病毒检测

缓存:Http的仓库,使常用页面的副本可以保存在离客户端更近的地方。

  web缓存 web cache或 代理缓存 proxy cache是一种特殊的http代理服务器,可以将经过代理传送的常用文档复制保存起来。

网关:连接其他应用程序的特殊web服务器

  作为其他服务器的中间实体使用。通常用于将http流量转换成其他 协议。网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正在与一个网关进行通信。

隧道:对http通信报文进行盲转发的特殊代理

  隧道是建立起来之后,就会在两条连接之间对原始数据进行盲转发的http应用程序。http隧道通常用来在一条或多条http连接上转发非http数据,转发时不会窥探数据。

  Http隧道的一种常见用途是通过http连接承载加密的安全套接字层流量,这样SSL流量就可以穿过只允许web流量通过的防火墙了。HTTP/SSL隧道收到一条HTTP请求,要求建立一条到目的地址和端口的输出连接,然后在http信道上通过隧道传输加密的ssl流量,这样就可以将其盲发到目的服务器上去了。

Agent代理:发起自动Http请求的半智能web客户端

  是代表用户发起http请求的客户端程序。到目前为止,我们只提到过一种http agent 代理:web 浏览器。

原文地址:https://www.cnblogs.com/caojuansh/p/12955403.html