目录

http 协议介绍

http 协议的版本

html 文本架构

     html 文档的生成方式    

http 协议的报文

HTTP协议原理和流程

HTTP的连接类型:

HTTP 请求方法(常用)

HTTP 的状态码(常见)

HTTP 首部介绍

HTTP统计术语

区分URI和 URL


http 协议介绍

httpHyper Text Transfer Protocol 超文本传输协议,是互联网应用最为广泛的一种网络协议,
主要用于 Web 服务。通过计算机处理文本信息,格式为 HTMLHyper Text Mark Language
超文本标记语言来实现。(发明者:蒂姆.伯纳斯.李)
 

http协议分析

http 协议的版本

http 0.9:仅于用户传输 html 文档

http 1.0:
   引入了 MIME(Multipurpose Internet Mail Extesions)机制:多用途互联网邮件扩展,引
入这个技术之后,http 可以发送多媒体(比如视频、音频等)信息。此机制让 http
不在单单只支持 html 格式,还可以支持其他格式来进行发送了。
   引入了 keep-alive 机制,支持持久连接的功能(但这个 keep-alive 原理是在首部添加了
某个字段而形成的,并非原生就支持此功能)
   引入支持缓存功能
http 1.1:
   支持更多的请求方法,更加精细的缓存控制,原生直接支持持久连接功能(presistent)。
http 2.0:
    提供了 HTTP 语义优化的传输,spdy : google 引入了的一个技术,能够加速 http 数据交互,
尤其是使用 ssl 加速机制,但是 spdy 现在用的还不多。
目前常用的版本就是 http 1.0 版本和 http 1.1 版本

html 文本架构

<html>

  <head> 

     <title>TITLE<title>

  </head>

   <body>

           <h1>H1</h1>

               <p> </p1>

           <h2>H2</h2>

                 <p>< a href="admin.html>ToGoogle< /a ></p>

  </body>

</html>

     html 文档的生成方式    

静态
事先就编辑并定义完成的
1Web 服务器向内核注册 socket
2、客户端通过浏览器,向 Web 服务器发起 request 请求
3Web 服务器收到客户端的 request 信息
4、如果用户请求的资源在服务器本地的话,http 服务会向系统内核申请调用
5、内核调用本地磁盘里的数据,并将数据发给 http 服务
6http 将用户请求的资源通过 response 报文,最终响应给客户端
http协议分析
动态
 
通过编译语言编写的程序后输出 html 格式的结果
动态语言有:phpjspasp.net
备注:这些脚本都必须有相应的解释器,比如说 php 需要有 php 解释器等等
 
与静态不同的是,如果用户请求的是动态内容,那么此时 http 服务会调用后端的解析器
http协议分析

http 协议的报文

HTTP 报文中存在着很多行的内容,一般是由 ASCII 码串组成,各字段长度是不确定的。

HTTP 的报文可分为两种:请求报文与响应报文

request Message(请求报文)
客户端 -→ 服务器端
由客户端向服务器端发出请求,不同的网站用于请求不同的资源(html 文档)
response Message(响应报文)
服务器端 -→ 客户端
是服务器予以响应客户端的请求

HTTP协议原理和流程


(1)用户输入用户名->浏览器跳转->app缓存->DNS解析(递归查询|迭代查询)
(2)由浏览器向服务器发起tcp连接(三次握手)
(3)客户端发起HTTP请求:
    请求的方法(获取)    
    请求的主机:域名
    请求的资源类型(html)
    请求的端口(80、443)
    请求携带的参数(类型、压缩、认证等)
(4)服务器的响应:
    服务器的web软件
    响应的文件类型
    是否压缩
    是否长连接
(5)客户端向服务器发起tcp断开(四次握手)

HTTP的连接类型:


短连接:建立一次tcp的连接,发起一次HTTP的请求,结束,tcp断开
长连接:建立一次tcp的连接,发起多次HTTP的请求,结束,tcp断开

 

HTTP 请求方法(常用)

get  获得请求文件信息的数据内容(下载)

 post 用户提交数据到服务器(上传)

HTTP 的状态码(常见)

200                请求成功
201                上传文件成功
301                永久重定向(redirect)
302,307       临时重定向(redirect)
304                浏览器缓存
403                请求不到首页,没有权限
404                请求的资源在前端查明不存在
405                请求方法不支持
500                服务器的内部错误,程序错误
502                请求的资源前端有记录指向后端数据库,却找不到后端资源
503                服务暂时不可用
504                请求超时

HTTP 首部介绍

• 通用首部
• 请求首部
• 响应首部
• 实体首部:专门用来表示实体中资源内部的类型、长度、编码格式等
• 扩展首部:非标准首部,可有程序员自行创建
通用首部

• Connection:定义 C/S 之间关于请求、响应的有关选项在 http1.0 的时候,如果他想使用持久连接,那么他所设置的选项即为Connection:keep-alive

• Cache-Control:缓存控制,实现更精细的缓存控制方式。在 http 1.1 上比较常见

请求部首

  • Client-IP :客户端 IP 地址
  • Host :请求的主机,这在实现基于主机名的虚拟主机时很有用
  • Referer :指明了请求当前资源原始资源的 URL,使用 referer 是可以防盗链
  • User-Agent:用户代理,一般而言是浏览器
  • Accept 首部:指客户端可以接受哪些编码的类型
    • Accept:服务端能够发送的媒体的类型
    • Accetp-Charset:接收的字符集
    • Accept-Encoding:编码格式
    • Accept-Lanage:所能接受的语言编码格式
  • 条件式请求首部:(在 http1.1 中才会用到)

当发送请求时,先问问对方是否满足条件,如果满足条件就请求,不满足就不请求

  • 跟安全相关的请求:
    • Authorization
    • Cookie

响应首部

  • Age:资源响应给你之后可以使用的时长
  • Server:向客户端说明自己用到的程序名称和版本
  • 协商类的首部:
    • Vary:首部列表,服务器会根据此列表挑选最适合的版本发给客户端
 
  • 跟安全相关:
    • WWW-Authentication
    • Set-Cookie

 

 实体首部

 

  • Location:指明资源的新位置,实现 302 响应码时通常会用到
  • Allow:允许对此资源使用的请求方法
  • 内容相关的首部
    • Content-Encoding
    • Content-Language
    • Content-Length
    • Content-Location:内容所在的位置
    • Content-Type
  • 缓存相关:
    • ETag:扩展标签/标记
    • Expires:过期时间
    • Last-Modified:最后修改时间

HTTP统计术语


PV:页面浏览量
UV:独立客户浏览量
IP:独立ip浏览量

例子:50人,每人通过手机和电脑访问同一网站各两次,全部都用公司宽带上网,会产生多少pv、uv、ip?
    答案:200 100 1 

区分URIURL

 

  • URI(Uniform Resource Identifier) 同一资源标示符

用于标识某一互联网资源名称的字符串,通过这种标识来允许你用户对资源可通过特定的协议进行交互操作。在 Web 上可用的每种资源,包括 HTML 文档、图像、视频片段、程序等, 由一个通用资源标识符进行定位。所以我们可以使用

URI 来标识每个资源的名称

  • URL(Uniform Resource Locator)(统一资源定位符) 用于描述一个特定服务器上某资源的特定位置。

例如:http://www.baidu.com:80/download/bash-4.3.1-1.rpm

 

 

相关文章: