HTTP协议基础及发展历史
经典五层模型介绍
第三层
物理层
定义物理设备如何传输数据
数据链路层
在通信的实体间建立数据链路连接
网络层
数据在节点之间传输创建逻辑链路
传输层
向用户提供可靠的端到端(End-to-End)服务
传输层向高层屏蔽了下层数据通信的细节
应用层
为应用软件提供了很多服务,构建与TCP协议之上。屏蔽了网络传输相关细节
HTTP协议的发展历史
HTTP/0.9
- 只有一个命令GET
- 没有HEADER等描述数据的信息
- 服务器发送完毕,就关闭TCP连接
HTTP/1.0
- 增加了很多命令
- 增加status code和header
- 多字符集支持、多部分发送、权限、缓存等
HTTP/1.1
- 持久连接
- pipeline
- 增加了host和其他一些命令
HTTP2
- 所有数据以二进制传输
- 同一个连接里面发送多个请求不在需要按照顺序来
- 头信息压缩以及推送提高效率的功能
三次握手
过程:张三招手–李四点头微笑–李四招手–张三点头微笑 。其中李四连续进行了2个动作,先是点头微笑(回复对方),然后再次招手(寻求确认),实际上可以将这两个动作合一,招手的同时点头和微笑(syn+ack)。于是四个动作就简化成了三个动作,张三招手–李四点头微笑并招手–张三点头微笑。这就是三次握手的本质,中间的一次动作是两个动作的合并。
图的解释:
client
端发送syn
字段,请求连接server
端回复ack
、syn
字段字段确定与之连接client
接到确认后进入established
已建立状态,并发送ack
字段确认对方的连接
URI、URL、URN
URI
Uniform Resource Identifier :统一资源标识符
用来唯一标识互联网上的信息资源,包括URL和URN
URL
Uniform Resource Locator:统一资源定位器
http://user:pass@host.com:80/path?query=string#hash
,此类格式的都叫URL,比如ftp协议
URN
永久统一资源定位符,资源移动之后还能被找到。但目前还没有非常成熟的使用方案
HTTP报文格式
HTTP方法
用来定义对于资源的操作,常用的操作有GET、POST等。
HTTP CODE
定义服务器对请求的处理结果,各个区间的CODE有各自的语义。好的HTTP服务可以通过CODE判断结果。
使用nodejs实现一个最简单的服务器
1 | const http = require("http"); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline