HTTP学习笔记(二)

www的历史

1990s tim berners-lee发明了用网址访问网页的方法
同时发明了网页、浏览器、服务器
- 1.URI 统一资源标识符(url可以让你访问一个页面)
- 2.http(HyperText Transfer Protocol)超文本传输协议 电脑之间的传输的协议(http让你能下载一个网页)
- 3.html(HyperText Markup Language)超级文本 (让你看懂一个网页)

一、URI

1.URI (Uniform Resource Identifier,统一资源标识符)
2.URL (Uniform Resource Locator,统一资源定位符) 通过定位符可以确定一个唯一资源的位置,可不以确定是什么。
HTTP学习笔记(二)
3.URN (Uniform Resource Name,统一资源名称) 通过URN你可以确定唯一的一个资源,可以确确定资源什么。
三者关系如图:
HTTP学习笔记(二)
了解更多三者区别可以访问:https://waylau.com/difference-of-uri-url-urn/

二、DNS 域名系统(Domain Name System)


  • 输入域名
  • 输出IP
    我们上网时先是向DNS请求域名的ip,然后根据IP而访问服务器
    nslookup 查询ip
    例如:

nslookup baidu.com
如何修改host文件(指定任意域名的IP)http://jingyan.baidu.com/article/425e69e6e479a2be15fc16e1.html?allowHTTP=1

三.http请求

serve + Client + Http
HTTP学习笔记(二)
服务器端口

21 FTP服务
443 https
1080 代理端口
3306
80 http协议 服务器

*请求的格式:

1 动词 路径 协议/版本
2 key1:value
2 key2: value
2 key3: value
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(新增或者上传) PUT(整体更新) PATCH(局部更新) DELETE(删除) HEAD OPTIONS
4.这里的路径包括查询参数,但不包括锚点
5.如果你没有写路径、则默认为/
6.第2部分中的Content-Type标注了第四部分的格式(Content-Type: application(应用程序)/x-www(万维网)-form(表单)-urlencoded(将中文压缩成一种形式)
)

例:
1.curl -s -v -H “wangliuyong” – “https://www.baidu.com” (get请求获取内容)每当在浏览器输入网址时
请求内容:

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: /
wangliuyong
2.curl -X POST -s -v -H “Frank: xxx” – “https://www.baidu.com” (POST请求上传内容)用户登录时
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.60.0
Accept: /
Frank: xxx
Content-Length: 8
Content-Type: application/x-www-form-urlencoded

3.curl -X POST -d “12345678” -s -v -H “Frank: xxx” – “https://www.baidu.com” (POST + 数据 请求)

*get如果也上传数据,服务器会拒绝接受
*https 传输过程中数据加密,http传输过程中数据不加密
请求之后都会得到一个响应,除非断网或者服务器宕机

四.响应

响应的格式:

1 协议/版本号 状态码 状态解释
2 key1:value
2 key2:value
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容

状态码:服务器对浏览器说的话(参考状态码:http://www.runoob.com/http/http-status-codes.html

1xx 不常用(信息,服务器收到请求,需要请求者继续执行操作)
2xx 表示成功(成功,操作被成功接收并处理)
3xx 表示滚吧(重定向,需要进一步的操作以完成请求)
4xx 表示出错(客户端错误,请求包含语法错误或无法完成请求)
5xx 表示服务器内部出错(服务器错误,服务器在处理请求的过程中发生了错误)