图解HTTP读书笔记

图解HTTP读书笔记

Web及网络基础

HTTP/0.9 不是http的正式标准,临时版本

HTTP/1.0 RFC1945

HTTP/1.1 目前应用较广 RFC2616

HTTP/2.0 大幅提高了web性能

TCP/IP

互联网运行与TCP IP协议族之上,HTTP包含于其中

ip,dns,udp,ftp,http,tcp。。。

TCP/IP的分层管理

应用层:决定了向用户提供服务时通信的活动,ftp,dns,http

传输层:对应用层提供连接的两台计算机的数据传输,TCP Transmission Control Protocol传输控制协议和UDP User Data Protocol用户数据报协议

网络层:处理网络上的数据包,数据包是网络传输的最小数据单位,规定如何传输路线,传输数据包

数据链路层:处理连接网络的硬件,网络适配器NIC网卡

物理层

层次化好处:1.设计好接口,每个层次内部的设计可以自由改动 2.使设计变得更简单,应用层上的应用不需要考虑接收方的地理位置等

IP、TCP、DNS

IP

IP协议位于网络层

mac地址为网卡的固定地址,使用ARP协议(address resolution Protocol地址解析协议)凭借mac地址进行通信,解析ip到mac地址

选择传输路线叫做路由选择

TCP协议的可靠性

位于传输层

将大数据块分割为报文段segment确保传输准确可靠

将请求报文按照序号分为多个报文段,将每个报文段可靠的传输,收到后再根据序列号重组报文

确保数据可到达:

三次握手three way handshaking

TCP标志 SYN synchronize和ACK acknowledgement

具体过程:

  • 发送端发送一个带有SYN标志的数据包
  • 接收端收到后回传带有SYN/ACK标志的数据包
  • 发送端传回带有ACK标志的数据包,握手结束

如果握手中的某个阶段中断,TCP协议会再次发送相同的数据包

DNS

域名解析

URI和URL

URL是URI的子集

HTTP协议

http是无状态协议

使用cookie管理状态

使用URI定位资源

持久连接:任意一端未提出断开,则保持tcp连接状态,减少tcp连接重复建立和断开的开销

HTTP 1.1中,所有连接默认为持久连接

pipeline技术:连续发送请求,不必等待上一个请求返回

服务器响应报文中Set-Cookie header字段,告知客户端保存

客户端再次请求时自动在header中加入cookie

HTTP报文

换行符CR+LF,CR回车符0x0d,LF换行符0x0a

header + CR+LF + Body

报文message是通信基本单位,8位组字节流

实体entity 请求或响应的在和,包含实体header和实体body

传输过程中可以对实体进行压缩

实体可以分割传输

获取部分内容的请求

传输中断的恢复机制

在header中加Range

Range: bytes= 1-5000

断点续传

HTTP状态码

1XX,正在处理 信息性状态 2XX,处理完毕 成功 3XX,重定向状态码 4XX,客户端错误状态码 5XX,服务器错误状态码

200 OK

HEAD方法不会返回body

204 No Content 处理成功,但是response中不包含实体

206 Partial Content 客户端进行了范围请求

301 Moved Permanently 永久重定向,资源分配了新的URI

302 Found 临时重定向

303 See Other 客户端用GET,临时重定向(比如POST访问时返回303,需要改GET方法重定向到另一个URI)

304 Not modified 我有你要的资源但是不让你访问

307 Temporary Redirect 临时重定向

400 Bad request

401 Unauthorized

403 Forbidden 不允许访问

404 Not Found 找不到资源

500 Internal Server Error 内部错误

503 Service Unavailable 服务器超负荷

Web服务器

虚拟主机

一台服务器可以绑定多个域名

通过dns解析

代理 网关 隧道

代理

转发中间人

每次转发会追加写入via首部

代理服务功能:缓存技术,访问控制,获取日志

缓存代理:将资源缓存在代理服务器上,不从原服务器获取(有点像redis

透明代理:转发请求和响应,不添加其他内容

网关

转发客户端请求到实际程序

网关与服务器使用非http通信

隧道

在客户端和服务器直接中转,保持双方的通信连接

本身不解析http请求,只传输

缓存

客户端缓存和服务器缓存

客户端缓存存储在浏览器

各种header的作用

Cookie相关header

Set-Cookie: 后跟name=value的序列

Cookie: 发送cookie

HTTPS

http缺点:

  • 明文被窃听
  • 不验证双方身份,可伪装
  • 无法验证完整性,可以篡改

使用SSL secure socket layer或TLS transport layer security安全层传输协议

SSL使用证书确定身份

防止篡改:使用md5或sha-1等校验方法校验报文完整性

HTTP+通信加密+证书+完整性保护

通信接口部分用ssl和tls协议代替

http先和ssl通信,ssl再和tcp通信

非对称加密 公钥进行加密,私钥进行解密

通信步骤

  1. 客户端发送client hello开始ssl通信
  2. 服务器响应server hello
  3. 服务器发送certificate报文,包含公钥证书
  4. 服务器发送server hello done
  5. 客户端发送client key exchange报文响应,ssl握手部分结束
  6. 客户端发送change cipher spec
  7. 客户端发送finished
  8. 服务器发送change cipher spec
  9. ssl连接建立成功,开始进行http请求
0%