关于HTTP 1 (概念理解与请求响应)
介绍
HTTP,HyperText Transfer Protocol(超文本传输协议),请求-响应协议。是一种运用广泛的网络协议,所有的WWW文件必须遵守这个标准。
HTTP协议建立在TCP协议和IP协议上。
HTTP 的作用就是指导浏览器和服务器如何进行沟通。
关于HTTP请求
请求包含三或四个部分:请求行,请求头,(回车),请求体
1.第一部分:动词路径协议/版本
2.第二部分:
Key1: value1
Key2: value2
Key3: value3
Content-Type: application/x-www-form-urlencoded (application 应用数据 / x- 没有被写入规范的格式,实验属性 / form 表单 / urlencoded 转义)
Host: www.baidu.com
User-Agent: curl/7.54.0
3.第三部分:回车
4.第四部分:要上传的数据
动词:
get 获取
post 新增、上传
put 整体更新
patch 局部更新
delete 删除
Head,Options.......
注意:
- 请求包含三/四部分,第三部分永远是一个回车(/n)
- 这里的路径包括查询参数,但不包括锚点。
- 若没有写路径,默认为 /
- 第二部分content-type标注了第四部分的格式
请求示例
get
curl -s -v -H "Frank: xxx" -- "https://www.baidu.com" GET / HTTP/1.1 Host: www.baidu.com User-Agent: curl/7.55.0 Accept: */*
post
curl -X POST -s -v -- "https://www.baidu.com" POST / HTTP/1.1 Host: www.baidu.com User-Agent: curl/7.54.0 Accept: */*
curl -X POST -d "1234567890" -s -v -- "https://www.baidu.com" POST / HTTP/1.1 Host: www.baidu.com User-Agent: curl/7.54.0 Accept: */* Content-Length: 10 Content-Type: application/x-www-form-urlencoded 1234567890
*开发者工具使用:
关于HTTP响应
响应包含四部分,与请求相似
1.第一部分:协议/版本号 状态码 状态解释
2.第二部分:
Key1: value1
Key2: value2
Key3: value3
Content-Length: 17931
Content-Type: text/html
3.第三部分:回车
4.第四部分:要下载的内容
响应示例
1 协议/版本号状态码状态解释 2 Key1: value1 2 Key2: value2 2 Content-Length: 17931 2 Content-Type: text/html 3 4 要下载的内容
*开发者工具使用:
关于curl的使用
请求
- curl -s -v -- "https://www.baidu.com"
请求上传
- curl -X POST -s -v -- "https://www.baidu.com"
- curl -X POST -d "1234567890" -s -v -- "https://www.baidu.com"
TCP传输控制协议(Transmission Control Protocol)
两个问题:
1.TCP和UDP的区别
TCP可靠,面向连接,相对UDP较慢;UDP不可靠,不面向连接,相对TCP较快。
2.TCP的三次握手
(1)客户端:我要链接了,可以么?
(2)服务端:嗯,链接吧。
(3)客户端:那我连接你啦!
(4)连接开始
注意:每次连接,客户端与服务端之间都要有三次对话,才开始传输内容
IP网络协议(Internet Protocol)
从电信购买宽带;
电信提供DNS服务;
有路由器,设备连接路由器提供的WIFI;
路由器连接电信服务器,路由器有外网IP,如[14,17,23,211] 0-255;重启路由器,路由器有新的外网IP(路由器无固定外网IP);
使用的手机/电脑的IP是内网IP;
路由器创建内网,内网设备使用内网IP,192,168,xxx,xxx
路由器会先给自己配一个好记的IP,如192,168,1,1
内网设备的IP则为192,168,1,2 192,168,1,3 ......
内网设备可以互相访问
内网设备不可直接访问外网,必须经过路由器,路由器访问外网
几个特殊的IP
127.0.0.1 访问设备自己 ,即被本地IP
0.0.0.0 不表示任何设备
端口(Port)
是一种编号,不是硬件
一个端口号提供一种服务
每个机器有65535个端口
0—1023端口是给系统用的,其他端口给普通用户用
若要使用的端口被占用,那此端口不能使用,除非先停掉这个端口的服务
注意:使用HTTP协议访问另一个IP时,需要同时提供IP和端口号,缺一不可。(浏览器默认帮忙添加端口号80)
几个端口号了解一下:
-
浏览器负责发起请求
-
服务器在 80 端口接收请求
-
服务器负责返回内容(响应)
-
浏览器负责下载响应内容
-
端口:21(FTP服务器)
443(HTTPS)
1080(代理服务器)
3306(MySQL端口)
80(HTTP协议)