HTTP 入门

2018-08-07  本文已影响0人  封燐

WWW 的历史

互联网的雏形 ARPANET 诞生于于20世纪60年代的美国,1969年 ARPANET正式投入运行。
1990年以前,没有网页,也没有浏览器,人们对互联网的使用主要在于 Email 和 NewsGroup。
Tim Berners-Lee 在1989-1992年间发明了 WWW(World Wide Web)。
主要包含三个概念:

  1. URI,统一资源标识符,俗称网址
  2. HTTP,超文本传输协议,两个电脑之间传输内容的协议
  3. HTML,超文本标记语言,主要用来做页面跳转

URL 的作用是能让你访问一个页面,HTTP 的作用是让你下载这个页面,HTML 的作用是让你能看懂这个页面。
这是一个简单而完美的系统。
他还付诸实践:

  1. 发明了第一个服务器
  2. 发明了第一个浏览器
  3. 写了第一个网页 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服务
  1. 浏览器负责发起请求
  2. 服务器在80端口接收请求
  3. 服务器负责返回内容(响应)
  4. 浏览器负责下载响应内容

请求

请求示例

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 要上传的数据
  1. 请求最多包含四个部分,最少包含三个部分。
  2. 第三个部分永远是一个回车(\n
  3. 动词有
    GET:获取
    POST:新增或者上传(file协议不支持POST)
    PUT:【整体】更新
    PATCH:【局部】更新
    DELETE:删除
    HEAD
    OPTIONS
  4. 这里的路径包括查询参数,但不包括锚点
  5. 如果没有写路径,那么默认路径为 /
  6. 第二部分中的 Content-Type 标注了第四部分的格式

用 Chrome 发请求

  1. 打开 Network
  2. 地址栏输入网址
  3. 在 Network 点击,查看 Request Headers,点击 view source,可以看到请求的前三部分了
  4. 如果有请求的第四部分,在 Form Data 或 Payload 里面可以看到(记得登陆前要勾选 Preserve log)

响应

响应的格式

1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
  1. 状态码要背,是服务器对浏览器说的话
  1. 状态解释没什么用
  2. 第二部分的 Content-Type 标注了第四部分的格式
  3. 第二部分的 Content-Type 遵循 MIME 规范

用 Chrome 查看响应

  1. 打开 Network
  2. 输入网址
  3. 选中第一个响应
  4. 查看 Response Hesader,点击 view source,你会看到响应的前两部分
  5. 查看 Response 或者 Preview,你会看到响应的第四部分
上一篇 下一篇

猜你喜欢

热点阅读