图解http学习笔记
HTTP/HTTPS协议
URL/URI
URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联 网上所处的位置)。可见 URL 是 URI 的子集。
//URI绝对格式
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
<-! 方案名://登录信息@服务器地址:端口号/文件路径?查询字符#片段标识符 >
https://blog.csdn.net/weixin_39780047/article/details/88850857
<协议>://<host>:<port>/<路径>
- http默认端口是80,可省略
- 省略路径时,默认指向主页
操作过程
- 浏览器从 URL 中解析出服务器的主机名;
- 浏览器将服务器的主机名转换成服务器的 IP 地址;
- 浏览器将端口号(如果有的话)从 URL 中解析出来;
- 浏览器建立一条与 Web 服务器的 TCP 连接;
- 浏览器向服务器发送一条 HTTP 请求报文;
- 服务器向浏览器回送一条 HTTP 响应报文;
- 关闭连接,浏览器显示文档
- http1.0是无状态的,每次访问数据时都要进行tcp的连接和释放。http1.1之后采用持续连接方式,tcp连接在完成请求后依然保留一段时间,可重复使用
代理服务器
代理服务器将最近的一些请求和响应暂存在本地中。当新请求到到达时,若代理服务器中包含相同资源,则返回暂存的请求响应。否则通过因特网获取请求响应并复制一份在本地(缓存服务器)
使用代理服务器的理由
利用缓存技术(稍后讲解)减少网络带宽 的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要 目的,等等。
报文结构
http分为请求报文和响应报文
状态码
1** | 通知信息 |
---|---|
2** | 表示成功 |
3** | 重定向,还需要采取进一步行动 |
4** | 客户端错误,语法错误活无法完成请求 |
5** | 服务器错误,服务器在处理过程中发送生错误 |
常见状态:
- 202 Accepted 接受
- 400 Bad Request 错误请求
- 404 Not Found 找不到
方法
首部字段名
- 通用首部字段
首部字段名 | 说明 |
---|---|
Cache-Control | 控制缓存的行为 |
Connection | 逐跳首部、连接的管理 |
Date | 创建报文的日期时间 |
Pragma | 报文指令 |
Trailer | 报文末端的首部一览 |
Transfer-Encoding | 指定报文主体的传输编码方式 |
Upgrade | 升级为其他协议 |
Via | 代理服务器的相关信息 |
Warning | 错误通知 |
-
请求首部字段
首部字段名 说明 Accept 用户代理可处理的媒体类型 Accept-Charset 优先的字符集 Accept-Encoding 优先的内容编码 Accept-Language 优先的语言(自然语言) Authorization Web认证信息 Expect 期待服务器的特定行为 From 用户的电子邮箱地址 Host 请求资源所在服务器 If-Match 比较实体标记(ETag) If-Modified-Since 比较资源的更新时间 If-None-Match 比较实体标记(与 If-Match 相反) If-Range 资源未更新时发送实体 Byte 的范围请求 If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反) Max-Forwards 最大传输逐跳数 Proxy-Authorization 代理服务器要求客户端的认证信息 Range 实体的字节范围请求 Referer 对请求中 URI 的原始获取方 TE 传输编码的优先级 User-Agent HTTP 客户端程序的信息 -
响应首部字段
首部字段名 说明 Accept-Ranges 是否接受字节范围请求 Age 推算资源创建经过时间 ETag 资源的匹配信息 Location 令客户端重定向至指定URI Proxy-Authenticate 代理服务器对客户端的认证信息 Retry-After 对再次发起请求的时机要求 Server HTTP服务器的安装信息 Vary 代理服务器缓存的管理信息 WWW-Authenticate 服务器对客户端的认证信息 -
实体首部字段
-
cookie
-
HTTPS
常用端口:443
-
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
-
https采用共享密钥和公钥加密(处理慢,安全性高)两者并用的混合加密机制
- 使用公钥加密交换共享密钥
- 使用共享密钥进行通信
HTTP追加协议
解决HTTP性能瓶颈
-
Ajax——局部更新
-
Comet——保留响应
-
SPYD
SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之 间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规 定通信中使用 SSL。
-
WebSocket
一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接, 之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送 JSON、XML、HTML 或图片等任意格式的数据。 由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端, 而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方 都可直接向对方发送报文。
为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字 段,告知服务器通信协议发生改变,以达到握手的目的
特点
- 推送功能 ……服务器->客户端
- 减少通信量 ……保持连接状态,首部信息较少
-
Web攻击
-
Web 应用端(服务器端)的验证
-
跨站脚本攻击
-
对用户 Cookie 的窃取攻击
-
SQL 注入攻击
-
OS 命令注入攻击
-
目录遍历攻击
-
远程文件包含漏洞
总结
思维导图
-
用单台虚拟主机实现多个域名
提 供 Web 托管服务(Web Hosting Service)的供应商,可以用一台服务 器为多位客户服务,也可以以每位客户持有的域名运行各自不同的网 站。这是因为利用了虚拟主机(Virtual Host,又称虚拟服务器)的功 能。
位于同一台服务器上的web服务器经过域名转换后,IP地址相同。因此在发送HTTP请求的时候,必须在host首部内完整指出主机名或域名的URI。
-
- 在host首部字段说明完整的域名,通过域名来区分同一服务器上的虚拟主机
URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)
URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。
URI 属于 URL 更高层次的抽象,一种字符串文本标准。
URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
GET | POST | |
---|---|---|
回退时 | 无害 | 再次请求 |
cache | 会 | 需要手动设置 |
编码 | URL | 多种编码 |
浏览器历史记录 | 保留 | 不保留 |
长度限制 | 受浏览器限制 | 无 |
参数数据类型 | ASCII | 任意 |
传递方式 | URL | request body |
传输数据包 | 1个 | 2个 |
-
两者本质上都是采用TCP协议进行传输,因此在传输过程中没有差异
HTTP幂等方法,是指无论调用这个url多少次,都不会有不同的结果的HTTP方法。
HTTP GET方法用于获取资源,不应有副作用,所以是幂等的。 GET请求可能会每次得到不同的结果,但它本身并没有产生任何副作用,因而是满足幂等性的。
调用多次的结果和调用一次的结果一致,如DELETE调用一次删除指定资源,再次调用无论该资源是否存在,依然删除该资源。因此其是幂等