对于Web开发者而言,掌握HTTP协议是技术成长的必经之路。只有夯实HTTP基础,才可能在Web这条路上走的更远。
网络协议分层
经典五层模型
- 应用层
为应用软件提供了很多服务
构建于TCP协议之上
屏蔽网络传输相关细节
- 传输层
向用户提供可靠的端到端(End-to-End)服务
传输层向高层屏蔽了下层数据通信的细节
- 网络层
网络层为数据在结点之间传输创建逻辑链路
- 数据链路层
数据链路层在通信的实体间建立数据链路连接
- 物理层
物理层主要作用是定义物理设备如何传输数据
Http协议发展历史
http/0.9
- 只有一个命令GET
- 没有HEADER等描述数据的信息
- 服务器发送完毕,就关闭TCP连接
http/1.0
- 增加了很多命令
- 增加status code和header
- 多字符集支持、多部分发送、权限、缓存等
http/1.1
- 持久连接
- pipeline
- 增加host和其他一些命令
http2
- 所有数据以二进制传输
- 同一个连接里面发送多个请求不再需要按照顺序来
- 头信息压缩以及推送等提高效率的功能
HTTP的三次握手
URI、URL、URN
URI
- Uniform Resource Identifier/统一资源标志符
URL
- Uniform Resource Locator/统一资源定位器
- http://user:pass@host.com:80/path?query=string#hash(此类格式的都叫做URL,比如ftp协议)
URN
- 永久统一资源定位符
- 在资源移动之后还能被找到
- 目前还没有非常成熟的使用方案
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。