蜂采

web之http协议解析

2019-02-12  本文已影响11人  温暖的纯真

http协议即HyperText Transfer Protocol超文本传输协议,特点:

  1. 灵活:允许传输任意类型的数据对象。
  2. 无连接:每次连接只处理一个请求。客户端请求request->服务器响应response->连接断开。
  3. 无状态:同一个客户端的这次请求和上次请求是没有对应关系。
  4. 处于应用层,基于IP(互联网层)/TCP(传输层)的连接(TCP三次握手建立客户端和服务端的连接)。

TCP的三次握手

  1. 第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

http明文传输不安全,使用安全版本https(使用SSL/TLS加密)

  1. CA(Certificate Authority)证书颁发机构,负责签发证书、认证证书、管理已颁发证书的机关。比较知名的国际品牌:Symantec,GeoTrust,GlobalSign,可以在阿里云等平台购买服务。
  2. 证书是(CA)采用PKI(Public Key Infrastructure)公开密钥基础架构技术,
    签发的对用户的公钥的认证,包括电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。

客服端发送请求
1. 请求行
请求方法URI协议/版本
1). GET 请求获取Request-URI所标识的资源
2). POST 在Request-URI所标识的资源后附加新的数据
3). HEAD 请求获取由Request-URI所标识的资源的响应消息报头
4). PUT 请求服务器存储一个资源,并用Request-URI作为其标识
5). DELETE 请求服务器删除Request-URI所标识的资源
6). TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
7). CONNECT 保留将来使用
8). OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

POST /index.php HTTP/1.1

2. 请求头信息
Transport 头域

Client 头域

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36

Cookie/Login 头域

Entity头域

Miscellaneous 头域

Cache 头域

响应

1. 状态行
状态行由协议版本、数字形式的状态代码,及相应的状态描述组成,各元素之间以空格分隔,结尾时回车换行符,格式:
HTTP-Version(服务器 HTTP 协议的版本) Status-Code(服务器发回的响应代码) Reason-Phrase(状态代码的文本描述) CRLF(回车换行)
如:HTTP/1.1 200 OK (CRLF)


2. 响应头信息
Cache头域

Cookie/Login 头域

Entity实体头域

Miscellaneous 头域

Transport头域

Location头域


3. 响应正文
服务器返回的资源的内容,响应头和正文之间也必须用空行分隔

<html>...</html>

例子,在chrome浏览器访问url,点击F12->Network->网址,可查看Headers信息

1. 登录获取服务器授权(POST),获得cookie
Response Headers
Set-Cookie: key1=value1; Path=/; Max-Age=0; Expires=Mon, 11-Feb-2019 13:11:44 GMT
2. 带着cookie请求服务器数据(GET)
General
Request URL: https://***.***.com/***.shtml
Request Method: GET
Status Code: 200 
Remote Address: *.*.*.*:443
Referrer Policy: no-referrer-when-downgrade
Response Headers
Connection: keep-alive
Content-Disposition: inline;filename=f.txt
Content-Type: application/json;charset=UTF-8
Date: Tue, 12 Feb 2019 13:37:24 GMT
Transfer-Encoding: chunked
Request Headers
authority: ***.com
method: GET
path: /***/***.shtml
scheme: https
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en;q=0.8
content-type: application/x-www-form-urlencoded
cookie: key1=value1;key2=value2;
host: ***.com
referer: https://***.com/index.html
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
上一篇下一篇

猜你喜欢

热点阅读