HTTP基础与发展历史

tech2022-09-14  113

经典五层模型介绍

第三层

物理层

定义物理设备如何传输数据

数据链路层

在通信的实体间建立数据链路连接

网络层

数据在节点之间传输创建逻辑链路

传输层

向用户提供可靠的端到端(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 实现一个最简单的服务器

Javascriptconst http = require("http");http .createServer(function (req, res) { console.log("request come", req.url); res.end("123"); }) .listen(8888);

[外链图片转存中…(img-rS2k9LPd-1599093913707)]

最新回复(0)