图解HTTP

图解HTTP

前言

在看这本书之前,已经看过《TCP/IP详解》,整本书很详实,但是比较晦涩。还有一本《HTTP权威指南》因为同样的原因我只是浅尝辄止。所以,一直想看这本书很久了。因为图解,可以通俗易懂翻来当漫画看,还可以复习下HTTP。
通过这本书复习下知识,内容与原书不尽相同,但是图可能是相同的。:)



TCP/IP协议族

之前两章稍微介绍了下HTTP标准的历史之后,包括1996年5月的HTTP/1.0协议标准,以及1997年1月的HTTP/1.1协议标准。之后,来到了重要的网络基础协议族TCP/IP。
在网络中各层情况如下:
- 应用层
- FTP/DNS
- 传输层
- TCP,UDP
- 网络层
- 链路层

TCP协议是传送的数据报,通过将大数据分割成报文段的方式管理数据的传输。这样处理也能在一定程度上确保每段数据的可靠性。

Three-Way Handshaking三次握手协议
三次握手


简单的HTTP协议

HTTP是不保存状态的协议。这里指的是HTTP/1.1,为了解决传输数据持久化的问题,引入了Cookie技术。

HTTP方法

  • GET:请求访问已被URI识别的资源。
  • POST:传输实体的主体。
  • PUT:传输文件。1.1中不带验证机制,出于安全性,所以弃用。采用REST(REpresentational State Transfer,表征状态转移)。
  • HEAD:获得报文的首部。
  • DELETE:删除文件。
  • OPTIONS:询问支持的方法。
  • TRACE:追踪路径。XST(Cross-Site Tracing, 跨站追踪)。
  • CONNECT:要求用隧道协议连接代理。要求在与代理服务器通信时,建立隧道,通过隧道协议进行通信。主要使用SSL和TLS加密通信内容,通过网络隧道传输。

持久连接节省通信量

WEB通信早期多为纯文本传输,由于数据报文相对小,对于每次的资源请求和响应,TCP链接断开连接的开销可能不明显。但是当WEB上资源影音资源丰富起来之后,必须减少通信开销。

1.1中的HTTP keep-alive保证了持久连接,这也是在1.1中默认的。在TCP连接之后,可以进行多次的HTTP请求和响应。

多次请求和响应引出了管线化技术,并行发送多个请求。

使用Cookie的状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。客户端在首次请求数据后(无cookie状态),服务器生成cookie,并加入响应返回给客户端。当该客户端再次向服务器请求响应时,在请求中添加之前从服务器获得的cookie,服务器接受到该cookie即可辨别身份。

HTTP报文

  • 报文首部:服务器或者客户端需处理的请求或响应的内容及属性。
  • 空行(CR+LF):CR(Carriage Return,回车符:16进制0x0d)。LF(Line Feed,换行符:16进制0x0a)
  • 报文主体

编码提升传输速率

**报文**message,HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
**实体**entity,作为响应和请求的有效载荷数据被传输,内容由实体首部和实体主体组成。

内容编码

将实体内容编码压缩,进行传输。1.1中存在传输编码机制,实际上指的就是将实体主体分成多个块,编码传输。

MIME(Multipurpose Internet Mail Extensions)

该机制允许邮件处理文本,图片,视频等不同类型的数据。

获取部分内容的范围请求

响应状态码206 Partial Content。

内容协商返回最合适的内容

客户端就响应的资源和服务器进行协商,内容协商包括相应资源的语言,字符集和编码方式。

内容协商技术

服务器驱动协商
客户端驱动协商
透明协商


HTTP状态码

返回码类别原因短语
1**Informational接收的请求正在处理
2**Success请求正常处理完毕
3**Redirection需要进行附加操作以完成请求
4**Client Error服务器无法处理请求
5**Server Error服务器处理请求出错

代理

  • 缓存技术:缓存代理会预先将资源的副本保存在代理服务器上,当代理接收到对相同资源的请求时,就可以不去访问源服务器取资源,而是将之前的缓存资源作为响应返回。
  • 修改报文:代理服务器转发请求或者响应时,不对报文进行加工的称作透明代理。

网关

通信线路上的服务器提供非HTTP协议服务

隧道

隧道可按照要求建立起一条与其他服务器的通信线路,使用SSL加密手段进行通信。

保存资源的缓存

只要代理服务器缓存资源是有效的,就可以不用访问源服务器,直接向客户端返回请求的资源。


HTTP首部

HTTP首部字段

HTTP首部字段包括了重要的信息,包括报文大小,所使用语言以及认证信息。

4种HTTP首部字段类型

  • 通用首部字段(General Header Fields)请求和响应报文两方都会使用的首部。
  • 请求首部字段(Request Header Fields)
  • 响应首部字段(Renpose Header Fields)
  • 实体首部字段(Entity Header Fields)

HTTPS

HTTP协议本身并没有安全机制,通过结合SSL和TLS可以加密HTTP的通信内容。HTTP Secure或者HTTP over SSL,就是通过SSL建立了安全通信线路,来保证HTTP的通信安全。
验证身份需要第三方授予证书。
报文完整性保证。

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

这一章涉及信息安全,主要是CA认证,非对称加密。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值