我爱编程

图解HTTP

2017-04-27  本文已影响308人  我是三人禾

章节一:了解Web及网络基础

** 1.1 使用HTTP协议访问web**

TCP/IP协议

TCP/IP 分层管理

- 网络层
 - ```网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对 方计算机,并把数据包传送给对方。 与对方计算机之间通过多台计算机或网络设备进行传输时,网络层 所起的作用就是在众多的选项内选择一条传输路线。```
- 链路层(网络接口层)
 - ```用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴 均在链路层的作用范围之内**```
![Snip20170427_8.png](https://img.haomeiwen.com/i2319649/b459f8a15f50413b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**与HTTP相关的IP,TCP,DNS协议**
- IP: 
   - 属于网络层,不要和IP地址混淆,它是一种协议
   - 它的作用是把数据包传送给对方。确保能传递准确和成功的两个重要条件是:IP地址和MAC地址。
   - IP地址指的是节点分配地址,可变换,MAC地址基本不会更改

https://bbs.hupu.com/bxj
bbs.hupu.com/bxj就是指节点分配地址,还是bxj是节点地址,希望有看到的朋友请指教

-  ARP 协议凭借 MAC 地址进行通信
 ```IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网 (LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才 能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址 来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就
可以反查出对应的 MAC 地址。
回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送 端再回传一个带 ACK 标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序 发送相同的数据包。```
![Snip20170427_10.png](https://img.haomeiwen.com/i2319649/b1dc99a585701d1d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- DNS协议:提供通过域 名查找 IP 地址,或逆向从 IP 地址反查域名的服务。
![Snip20170427_11.png](https://img.haomeiwen.com/i2319649/3cb1df1be3307294.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**HTTP与各种协议的关系**
![Snip20170427_12.png](https://img.haomeiwen.com/i2319649/a97d224c2f734b04.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
```client发送URL请求,首先DNS会将解析对应的IP地址,HTTP协议生成针对目标服务器的HTTP请求报文,TCP协议将报文割成文段,按序号分为多个数据包,可靠的发给对方(三次握手),通过ARP协议解析IP地址的MAC地址,发给对方(IP协议),此处会有通过路由中转的过程。服务器接收数据包,再以TCP协议按序号顺序重组报文,HTTP解析报文,服务器处理内容在以相同的方式向用户进行回传

URI/URL

章节二:HTTP 协议用于客户端和服务器端之间的通信

通过请求和响应交换达成协议

但是,HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机 制,所以一般的 Web 网站也不使用 DELETE 方法```
- OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。
- TRACE 方法 是让 Web 服务器端将之前的请求通信环回给客户端的 方法。
- CONNECT:要求用隧道协议连接代理
![Snip20170427_18.png](https://img.haomeiwen.com/i2319649/54dac7e7aed8b5be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**HTTP长连接**
- 每次的请求都会造成无谓的 TCP 连接建立和断开, 增加通信量的开销
- HTT持久倡长连接只要任意一端没 有明确提出断开连接,则保持 TCP 连接状态
- 管线化:持久连接使得多数请求以管线化(pipelining)方式发送成为可能。 从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术 出现后,不用等待响应亦可直接发送下一个请求。
![管线化.png](https://img.haomeiwen.com/i2319649/fffb37cccc128494.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**使用 Cookie 的状态管理**
- Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态
```Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪 一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息
Cookie
HTTP报文内的HTTP信息

编码提升传输效率

压缩传输内容编码

分割发送的分块传输编码

发送多种数据的多部分对象集合

获取部分内容的范围请求
内容协商返回最合适的内容

HTTP返回结果状态码

状态码的职 是当客户端向服务器端发送请求时, 返回的请求 结果。借助状态码,用户可以知道服务器端是正常 理了请求,还是出 现了 。

响应的状态码.png

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

虚拟主机

通讯数据转发程序:代理 网关 隧道

当代理再 接 到对相同资源的请求时,就可以不从源服务器那里 资源,而是将之前缓存的资源作为响应返回。```

- 透明代理

发请求或响应时,不对报文做 何加工的代理 被 为透明代 理(Transparent Pro y)。 之,对报文内容进行加工的代理被 为 透明代理

    - 网关的工作机制和代理十分相似。网关能使通信路上的服务器提供非HTTP协议的服务。
    - 利用网关能提高通信的安全 ,因为可以在客户端与网关之间的通 信 路上加密以确保 接的安全。 如,网关可以 接数据 ,使用 S L   查 数据。另外,在 Web   网站上进行信用 结 时,网
    关可以和信用 结   联动。
- 隧道
   ```隧道是在相隔甚远的客户端和服务器之间进行中转的,并保持双方通讯链接的应用程序。
 - 隧道可 要求建立起一 与其他服务器的通信 路, 时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的 通信。
 - 隧道不会解析HTTP请求,原样转给服务器,隧道会在客户端和服务器断开连接时结束。

保存资源的缓存

HTTP 首部

HTTP报文首部

请求报文结构 响应报文结构

4种HTTP首部字段类型

非HTTP/1.1首部字段

End-to-end首部 和 Hop by hop首部
HTTP/1.1通用首部字段

请求首部字段
请求首部字段是从客户端 服务器端发送请求报文中所使用的字 段,用于 请求的 加信 、客户端信 、对响应内容相关的 先级 等内容。

为cookie服务的首部字段

HTTP的缺点

加密策略

不验证通信方的身份就会可能遭遇伪装

查看对手的证书

SSL.png

HTTP +加密+认证+ 完整性保护 = HTTPS

上一篇下一篇

猜你喜欢

热点阅读