HTTP协议
1. 如何理解HTTP协议
HTTP:超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的协议。无状态路由协议。底层TCP 80 443端口建立可靠传输。使浏览器更加高效,使用网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的那一部分,以及哪部分内容首先显示等。
是基于“请求与响应”模式,无状态的应用层协议
HTTP协议一般采用URL作为定位网络资源的标识。
2. HTTP都有那些版本
版本分别
- HTTP 1.0
- HTTP 1.1
- HTTP 2.0
HTTP 3.0
2.1 HTTP 1.0 与 HTTP 1.1 区别
2.1.1 RFC分别定义:
- HTTP 1.0 RFC 1945
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. 方便且健壮。
多路复用:MultiPlexing
连接共享,每个request都是用来作连接机制的。每个request对应一个ID,一个连接上可以同时发送多个request请求,接收方可以根据request中ID将request归属到各自不同的服务端。
- Header压缩
HTTP 2.0可以维护一个字典,差量更新HTTP头部,大大降低因头部传输产生的流量。
HTTP 1.X header携带大量信息。每次重复发送。
HTTP 2.0 使用encoder来减少需要传输header大小,通讯双方各自cache一份header fields表,避免重复header传输,减少了需要传输的大小。
- 服务端推送: Server push
服务器推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省云了客户端重复请求的步骤,正因为没有发超请求。建立连接等操作,所以静态资源通过服务端推送的方式可以极大地提升速度。
HTTP 2.0 支持
多路复用:连接共享,每一个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方法的区别
在客户端时:
GET方式在通过URL提交数据,数据在URL中可以看到;
POST方式,数据放置在HTML header内接交- GET方式提交数据最多只能支持1024字节,POST没有限制。
- 安全性问题。GET的参数在地址栏中显示。POST不会。用户敏感数据使用POST为好。
安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等意味着对同一URL的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。GET所得到的结果想同。post则需要请求结果不同。因为添加了新数据内容。
4. HTTP访问过程
当用户打开一个浏览器访问一个链接的时候;www.baidu.com
- 用户用向DNS发送一个请求www.baidu.com对应的IP。DNS会返回一个对应IP地址。
- 用户与Server建立了TCP链接(三次握手:发送SYN,回应ACK + SYN,回应ACK)
- 用户向Server发送一个HTTP request的请求方法(GET/HEAD/POST/PUT/DELETE)
- Server回应一个HTTP response响应
- 用户与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。对于处理响应应时的行为,每种浏览器有可能出现不同情况。 |
备注
- 当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。301,302标准禁止将POST方法改变成GET方法,但实际使用大家都会这么做。
- 附带条件的请求请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 报文首部
1. HTTP 请求报文
2. HTTP 响应报文
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命令行学习
- 查看进程号
- 查看协议端口号
- 查看内存使用率
- 查看CPU使用率
2. 学习LINUX框架
3. AWK
https://www.cnblogs.com/ftl1012/p/9250541.html
1. HTTP 概念
1.1 HTTP是什么
- 名称:Hyper Text Transfer Protocol 超文本传输协议
- 作用:用于从WEB服务器传输超文本(文本,图片,音频,视频等)到本地浏览器的传送协议。
- 优点:使用浏览器更加高效,使用网络传输减少。
HTTP承载协议
- HTTP通常承载于TCP协议之上: 对应的端口号是:80
- HTTPS则承载于TLS/SSL协议层之上:对应的端口是:443
2. HTTP 版本发展
https://www.ietf.org/rfc/rfc1945.txt