HTTP

蹲街弑〆低调 提交于 2019-11-30 02:19:37

HTTP协议

1. 如何理解HTTP协议

HTTP:超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的协议。无状态路由协议。底层TCP 80 443端口建立可靠传输。使浏览器更加高效,使用网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的那一部分,以及哪部分内容首先显示等。

是基于“请求与响应”模式,无状态的应用层协议
HTTP协议一般采用URL作为定位网络资源的标识。

2. HTTP都有那些版本

版本分别

  1. HTTP 1.0
  2. HTTP 1.1
  3. HTTP 2.0
  4. HTTP 3.0

    2.1 HTTP 1.0 与 HTTP 1.1 区别

    2.1.1 RFC分别定义:

  5. HTTP 1.0 RFC 1945
  6. HTTP 1.1 RFC 2616

    2.1.2 建立方式

    HTTP 1.0 : 每次HTTP请求时都 需要建立一次TCP连接。
    HTTP 1.1 : HTTP请求复用上一次请求所建立的TCP连接。即长连接, Keepalive保持。每次请求得到回应后才会进行下一次请求。

2.1.3 新增HOST域

HTTP 1.1: HTTP request的请求中多了个host域
HTTP 1.0: 已指定IP地址,及为HOST。

GET /www/index.html HTTP/1.1  \r\n
host: www.w3.org

2.1.4 日期时间戳

三种Date/time stamp:
1. Sun, 06 Nov 1994 08:49:37 GMT: RFC 822, Update by RFC 1123
2. Sunday, 06-Nov-94 08:49:37 GMT: RFC 850, UPdate by RFC 1036
3. Sun Nov 6 08:49:37 1994: ANSIC's asctime() format

接收方向

HTTP 1.0与HTTP 1.1 都能解析这三种Date/time stamp;

发送方向

HTTP 1.0 要求不能生成第三种 asctieme格式时间戳
HTTP 1.1 要求只能生成RFC 1123(第一种格式时间戳)

2.1.5 状态响应码

100 允许Client在发送request消息Body之前先发送 request header试探一下Server,看Servier要不要接收request body.再决定是否继续发送request body.

HTTP 1.0 不支持
HTTP 1.1 支持100, 还支持101 203 205状态响应码

2.1.6 请求的方法

HTTP 1.0 : GET, HEAD, POST
HTTP 1.1 : GET, HEAD, POST, OPTIONS,PUT,DELETE,TRACE,CONECT

2.2 HTTP 1.X 与 HTTP 2.0区别

2.2.1 解析格式不同

新的二进制格式:Binary Format:
HTTP 1.x 解析是基于文本。文本协议格式表现多样性,健壮性需要考虑多种场景。
HTTP 2.0 解析是基于二进制格式,场景只有两种0和1. 方便且健壮。

  1. 多路复用:MultiPlexing

    连接共享,每个request都是用来作连接机制的。每个request对应一个ID,一个连接上可以同时发送多个request请求,接收方可以根据request中ID将request归属到各自不同的服务端。

  2. Header压缩
HTTP 2.0可以维护一个字典,差量更新HTTP头部,大大降低因头部传输产生的流量。

HTTP 1.X header携带大量信息。每次重复发送。
HTTP 2.0 使用encoder来减少需要传输header大小,通讯双方各自cache一份header fields表,避免重复header传输,减少了需要传输的大小。

  1. 服务端推送: Server push
服务器推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省云了客户端重复请求的步骤,正因为没有发超请求。建立连接等操作,所以静态资源通过服务端推送的方式可以极大地提升速度。

HTTP 2.0 支持

  1. 多路复用:连接共享,每一个request对应一个ID,可以同时发送多个request请求,

    3. HTTP支持那些方法

    Method Comments
    GET 请求获取URL位置的资源
    HEAD 请求获取URL位置资源的响应消息报告,即获取该资源的头部信息
    POST 请求向URL物理疗法的资源后附加新的数据
    OPTIONS 请求server上所支持的method方法
    PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
    PATCH 请求局部更新URL位置资源,即改变该资源的部分内容
    DELETE 请求删除URL位置存储的资源
    TRACE 请求到最后服务器Max-forward为0并返回回路。用于测试判断
    CONECT HTTP 1.1保留PROXY使用

3.1 GET与POST方法的区别

  1. 在客户端时:

    GET方式在通过URL提交数据,数据在URL中可以看到;
    POST方式,数据放置在HTML header内接交

  2. GET方式提交数据最多只能支持1024字节,POST没有限制。
  3. 安全性问题。GET的参数在地址栏中显示。POST不会。用户敏感数据使用POST为好。
  4. 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等意味着对同一URL的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。GET所得到的结果想同。post则需要请求结果不同。因为添加了新数据内容。

4. HTTP访问过程

当用户打开一个浏览器访问一个链接的时候;www.baidu.com

  1. 用户用向DNS发送一个请求www.baidu.com对应的IP。DNS会返回一个对应IP地址。
  2. 用户与Server建立了TCP链接(三次握手:发送SYN,回应ACK + SYN,回应ACK)
  3. 用户向Server发送一个HTTP request的请求方法(GET/HEAD/POST/PUT/DELETE)
  4. Server回应一个HTTP response响应
  5. 用户与Server断开TCP连接(四次断开:发送FTN请求断开,回应ACK回应。发送新FTN,回应ACK)

5. URI 格式

method path HTTP version

6. HTTP报文格式

6.1 请求头

6.2 响应头

6.3 实体头

6.4 扩展头

7. HTTP状态码

状态码作用:告知从服务器端返回请求的结果

1. 状态码分类
|状态码|类型|原因短语|
|:-:|:-|:-|
|1XX|Informational 信息性状态码|接收的请求正在处理|
|2XX|Success 成功状态码|请求正常处理完毕|
|3XX|Redirection 重定向状态码|需要进行附加操作以完成请求|
|4XX|Client Error 客户端错误状态码|服务器无法处理请求|
|5XX|Server Error 服务端错误状态码|服务器处理请求出错|

2. 具体状态码介绍
1XX状态码详细内容说明
|状态码|原因短语|
|:-|:-|
|100|客户必须继续发出请求|
|101|客户要求服务器根据请求转换HTTP协议版本|
2XX状态码详细内容说明
|状态码|原因短语|
|:-|:-|
|200 OK|请求在服务器端被正常处理|
|201|提示知道新文件的URL|
|202|接受和处理,但处理未完成|
|203|返回信息不确定或不完整|
|204 No Content|请求被正常处理,但在返回响应报文中不含实体的body部分,也不允许返回任务实体的主体。请求处理后,返回204响应,但浏览器显示页面不发生更新|
|205|服务器完成请求,用户代理必须复位当前已经浏览过的文件|
|206 Partial Content|表示客户端只进行了范围请求(Content-Range),响应报文中包含指定范围的实体内容|

  • 3XX 重定向
响应结果表明浏览器需要执行某些特殊的处理,更换请求方式重新发起请求
状态码 原因短语
301 Moved Permanently 永久性重定向,表示请求资源已经被分配了新的URI,以后使用资源现在所指的URI
302 Found 临时性重定向,表示请求资源已经被分配了新的URI,希望用户本次能使用新的URI访问。
303 See Other 表示请求对应的资源存在另一个URI,应使用GET方法定向获取请求的资源,与302的区别是指定了GET方法获取资源
304 Not Modified 客户端发送附带条件请求时,服务器允许访问资源,但因请求未满足条件,因些直接返回。不包含任何响应的主体部分
307 Temporary Redirect 307遵照浏览器标准,不会从POST变成GET。对于处理响应应时的行为,每种浏览器有可能出现不同情况。

备注

  1. 当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。301,302标准禁止将POST方法改变成GET方法,但实际使用大家都会这么做。
  2. 附带条件的请求请GET方法的报文中包含If-Match, If-Modified-Since, If-None-Match, If-Range, If-Unmodified-Since中任一首部
  • 4XX Client Error
表明客户端发生错误的原因所在
状态码 原因短语
400 Bad Request 表示请求报文中存在语法错误
401 Unauthorized 认证失败,响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质问(Challenge)用户信息。初交接收会弹出认证窗口
403 Forbidden 请求访问被服务器拒绝
404 Not Found 服务器上没有请求的资源
307 Temporary Redirect 307遵照浏览器标准,不会从POST变成GET。对于处理响应应时的行为,每种浏览器有可能出现不同情况
  • 5XX Server Error
表示服务器本身发生错误
状态码 原因短语
501 Internal Server Error 服务器在执行请求时发生错误。也有可能是WEB的BUG或临时故障
503 Service Unavailable 服务器处于超负载或正在进行停机维护。如果知道解除以上状况需要的时间,最好写入Retry-After首部字段再返回客户端
403 Forbidden 请求访问被服务器拒绝
404 Not Found 服务器上没有请求的资源
307 Temporary Redirect 307遵照浏览器标准,不会从POST变成GET。对于处理响应应时的行为,每种浏览器有可能出现不同情况

8. Web访问过程

9. web服务器如何与HTTP协作

WEB服务器可搭建多个独立域名的WEB网站,也可作为通信路径上的中转服务器提升传输效率
实现方式

单台虚拟主机实现多个域名

HTTP/1.1规范允许一台HTTP服务器搭建多个WEB站点。利用虚拟主机,可以以每位客户持有的域名运行各自不同的网站

数据转发程序
|方法|特点|说明|
|-|-|-|
|代理|中间人角色,Client与Server之间|缓存代理,透明代理:对想同请求的处理方式|
|网关|转发其他服务器通信数据的服务器,代替源服务器对请求进行处理使用缓存本地回应VS不做加工直接透传|网关能在通信线路的服务器提供非HTTP协议服务|
|隧道|相隔太远的的客户端与服务器两者之间进行中转,提供访问连接|安全,透明|

备注

缓存有效期限:缓存服务器会定时向源服务器确认资源的有效性。
客户端缓存:网络临时文件。与缓存服务原理相同。

10. HTTP首部信息

10.1 报文首部

Alt text
1. HTTP 请求报文
Alt text
Alt text
2. HTTP 响应报文
Alt text
Alt text

11. WEB攻击技术

HTTPS协议

1. 如何理解HTTPS协议

2. 加密与解密过程

2.1 加密方法

MD5、SHA256、SHA512

1. 原理:
2. 区别:

3. 什么是用户身份认证

4. 常见WEB的攻击技术

TCP协议

1. TCP建立过程

2. TCP断开过程

3. TCP中间过程的理解

4. TCP报文格式

wireshark 使用手册

Curl 使用方法

Wget 使用方法

性能测试

1. AB

2. Siege

3. WRK

4. Load_Runner

5. Apache JMeter

攻击工具

1. Burpsuite

https://blog.csdn.net/weixin_38079422/article/details/80729158

2. wrs

1. XSS攻击

2. CSRF

3. Sql 注入攻击

https://www.jianshu.com/p/5c67414bfcb6

LINUX

1. Linux命令行学习

  1. 查看进程号
  2. 查看协议端口号
  3. 查看内存使用率
  4. 查看CPU使用率

2. 学习LINUX框架

3. AWK

https://www.cnblogs.com/ftl1012/p/9250541.html

1. HTTP 概念

1.1 HTTP是什么

  1. 名称:Hyper Text Transfer Protocol 超文本传输协议
  2. 作用:用于从WEB服务器传输超文本(文本,图片,音频,视频等)到本地浏览器的传送协议。
  3. 优点:使用浏览器更加高效,使用网络传输减少。

HTTP承载协议

  1. HTTP通常承载于TCP协议之上: 对应的端口号是:80
  2. HTTPS则承载于TLS/SSL协议层之上:对应的端口是:443
    Alt text

2. HTTP 版本发展

https://www.ietf.org/rfc/rfc1945.txt

3. HTTP 报文格式

4. HTTP 工作流程

HTTPS协议

TCP协议

参考文档

https://www.cnblogs.com/chenliyang/p/6558756.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!