WWW 的历史
互联网的雏形 ARPANET 诞生于于20世纪60年代的美国,1969年 ARPANET正式投入运行。
1990年以前,没有网页,也没有浏览器,人们对互联网的使用主要在于 Email 和 NewsGroup。
Tim Berners-Lee 在1989-1992年间发明了 WWW(World Wide Web)。
主要包含三个概念:
- URI,统一资源标识符,俗称网址
- HTTP,超文本传输协议,两个电脑之间传输内容的协议
- HTML,超文本标记语言,主要用来做页面跳转
URL 的作用是能让你访问一个页面,HTTP 的作用是让你下载这个页面,HTML 的作用是让你能看懂这个页面。
这是一个简单而完美的系统。
他还付诸实践:
- 发明了第一个服务器
- 发明了第一个浏览器
- 写了第一个网页 info.cern.ch
2017年,Tim Berners-Lee获得了图灵奖。
URI
统一资源标识符(Uniform Resource Identifier)
URI 分为 URL 和 URN,我们一般用 URL 作为网址。
URN
统一资源名称(Uniform Resource Name),可以确定唯一的资源,但是不能给出位置。
URL
统一资源定位符(Uniform Resource Locator),可以确定唯一的地址(网址)。
URL的常见组成
上图中未包含“端口”。
DNS
域名系统(Domain Name System),可以得到域名对应的IP。
域名→DNS→IP
nslookup baidu.com
ping baidu.com
HTTP
超文本传输协议(HyperText Transfer Protocol),作用是指导客户端和服务器如何进行沟通。
Server 服务器(某台电脑里运行的软件)
Client 客户端(某台电脑里的浏览器)
服务器与浏览器的交互
每一台电脑有很多端口,每一个端口只做一件事。
端口 | 用途 |
---|---|
21端口 | FTP服务 |
443端口 | HTTPS服务 |
1080端口 | 代理服务器 |
3306端口 | MySQL服务器 |
80端口 | HTTP服务 |
- 浏览器负责发起请求
- 服务器在80端口接收请求
- 服务器负责返回内容(响应)
- 浏览器负责下载响应内容
请求
请求示例
curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
请求的内容为
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Frank: xxx
curl -X POST -s -v -H "Frank: xxx" -- "https://www.baidu.com"
请求的内容为
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Frank: xxx
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
请求的内容为
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Frank: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890
请求的格式
1 动词 路径 协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上传的数据
- 请求最多包含四个部分,最少包含三个部分。
- 第三个部分永远是一个回车(
\n
) - 动词有
GET:获取
POST:新增或者上传(file协议不支持POST)
PUT:【整体】更新
PATCH:【局部】更新
DELETE:删除
HEAD
OPTIONS
等 - 这里的路径包括查询参数,但不包括锚点
- 如果没有写路径,那么默认路径为 /
- 第二部分中的 Content-Type 标注了第四部分的格式
用 Chrome 发请求
- 打开 Network
- 地址栏输入网址
- 在 Network 点击,查看 Request Headers,点击 view source,可以看到请求的前三部分了
- 如果有请求的第四部分,在 Form Data 或 Payload 里面可以看到(记得登陆前要勾选 Preserve log)
响应
响应的格式
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
- 状态码要背,是服务器对浏览器说的话
- 1xx 不常用
- 2xx 表示成功
- 3xx 表示滚吧
a. 301 表示网页永久转移到其他地方了
b. 302 表示网页临时转移了
c. 304 表示这次的和上次的是一样的 - 4xx 表示你(浏览器)错了
- 5xx 表示我(服务器)错了
- 状态解释没什么用
- 第二部分的 Content-Type 标注了第四部分的格式
- 第二部分的 Content-Type 遵循 MIME 规范
用 Chrome 查看响应
- 打开 Network
- 输入网址
- 选中第一个响应
- 查看 Response Hesader,点击 view source,你会看到响应的前两部分
- 查看 Response 或者 Preview,你会看到响应的第四部分
网友评论