HTTP协议简析

引言

HTTP是一个属于应用层的面向兑现的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它与1990年提出。目前使用的版本是HTTP/1.1版本。

HTTP协议

协议是指两台计算机之间进行通信必须共同遵守的规定或者规则。超文本传输协议是一种通信协议,它允许将超文本标记语言文档从web服务器传送到客户端的浏览器。

特点

  1. 支持客户端/服务器模式(C/S)。
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3. 灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
  4. 无连接:无连接的含义是每次连接只能处理一个请求。服务器处理完客户的请求后,并受到客户的应答,即断开连接。
  5. 无状态:HTTP协议是无状态的。无状态是指协议对于事务处理没有记忆能力。本次的请求和上一次请求并没有关系,对于服务器来说,并不知道两次请求来自同一个客户端。

WEB浏览器、服务器、代理服务器

当我们输入网址之后,就能看到网页,原理是怎样的呢,简单的解析一下:

  1. 客户端与服务端通过http协议建立连接。
  2. 连接建立之后,发送request请求,请求格式为:URL,协议的版本号,客户机信息等内容。
  3. 服务器受到请求之后,作为响应,返回客户端的请求内容。
  4. 客户端浏览器收到服务的信息后,解析内容,显示在浏览器界面上。

请求过程如下面图片所示:

HTTP协议简析_第1张图片
请求.png

我们的请求又可能不是通过客户端直接和服务端连接的,中间可能会加一个代理的服务器,客户端先和代理服务器连接,之后在和目标服务器连接,这样可以隐藏客户端的ip,这种方式在爬虫中比较常用,它可以提高访问的速度,突破封锁的限制,隐藏客户端的信息。请求过程如下图所示:

HTTP协议简析_第2张图片
1.png

HTTP代理服务器
简单说,http代理服务器就是网络信息的中转站,代理服务器具有缓存的功能,有很大的存储空间。对于客户端来说,代理服务器相当于服务端,对于都服务端来说,代理服务器就是要一个客户端。

HTTP URL组成解析

URL描述的是网络上的资源,任何信息都可以通过URL找到它。http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

格式如下:

http://www.test.com/search/yuluo?id=1234&name=zhangsan

  1. scheme 指定底层使用的协议(http ,https ,ftp)
  2. host 服务器的ip地址,域名 ,上例中的 www.test.con
  3. port 端口号 一般默认是80 可以不写 ,若是其他端口,如8080 必须要书写.
  4. path 访问的资源路径 /search/yuluo
  5. query-string 发送给http的数据 id=1234&name=zhangsan

HTTP消息结构

  • request-line 请求行:请求的种类,请求的路径,http协议版本
  • http header :http 头部信息
  • body : 发送给服务器的query信息

当时用Get方法的时候,body是空的

  1. Get:
  2. Host:
  3. Accept : 浏览器可以接受的媒体类型 / 任意类型
  4. Accept-Encoding: 申明自己接收的编码方法
  5. Accept-Language: 申明自己接收的语言
  6. Cache-Control:Response-Request遵循的缓存机制
  7. Cookie: 将cookie的值发送给服务器
  8. Referer:
  9. User-Agent:客户端使用的系统和浏览器的版本

Post 请求

  1. Post:
  2. Host:
  3. Accept:
  4. Accept-Encoding:
  5. Accept-Language:
  6. Cache-Control:
  7. Cookie:
  8. Referer:
  9. User-Agent:
  10. body :

Get和Post请求的区别

Get 一般用于获取/查询资源信息,请求参数携带在url中
Post 一般用于更新资源信息 ,url中无参数信息

请求方法

  • GET 请求获取Request-URI所标识的资源
  • POST 在Request-URI所标识的资源后附加新的数据
  • HEAD 请求获取由Request-URI所标识的资源的响应消息报头
  • PUT 请求服务器存储一个资源,并用Request-URI作为其标识
  • DELETE 请求服务器删除Request-URI所标识的资源
  • TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT 保留将来使用
  • OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

常用状态码

  • 200 OK : 表明响应成功,所请求的资源发给浏览器
  • 302 found : 重定向,新的请求放在了Location中,浏览器从Location中提取连接欸,重新请求。
  • 400 Bad Request : 客户端的请求,不能被服务器所理解
  • 401 Unauthorized : 请求未经授权
  • 403 Forbidden : 服务器收到请求,拒绝提供服务
  • 404 Not Found : 找不到请求资源
  • 500 Internal Server Error : 服务器错误
  • 503 Server Unavailable 服务器当前不能处理请求

响应消息

客户端向服务器发送一个请求,服务器以一个状态行作为响应,响应的内容包括:消息协议的版本、成功或者错误的编码、实体元信息以及必要的实体内容。包括:

  • 状态行
  • 消息报头
  • 响应正文

响应报头

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

常用的响应报头

  • Location
    Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
  • Server
    Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。

HTTP无状态问题

  1. 通过Cookie 保存状态信息 。每次请求的时候携带cookie的信息,服务端就可以知道你来自同一个浏览器。
  2. 通过session 保存状态信息。session是一种服务器端的机制。

cookie和session的区别

  1. cookie状态保存在客户端,session状态保存在服务器端
  2. cookie是服务器端在客户端机上存储的一小段文本,并随每次请求一起发送到服务端
  3. session是针对每一个用户,变量值保存在服务器中
  4. 从安全角度讲,session的安全性更好一些


少年听雨歌楼上,红烛昏罗帐。  
壮年听雨客舟中,江阔云低,断雁叫西风。
感谢支持!
                                        ---起个名忒难

你可能感兴趣的:(HTTP协议简析)