1. HTTP
HyperText Transfer Protocol
超文本传输协议,它教客户端如何请求、服务器如何响应。
2. 状态码
- HTTP状态码分类
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
- 常见的HTTP状态码列表:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
200 | OK | 请求成功。一般用于GET与POST请求 |
204 | No Content | 无内容。表示服务器接收到的请求已经处理完毕,但是服务器不需要返回响应。比如,客户端是浏览器的话,那么浏览器显示的页面不会发生更新。 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | See Other | 查看其它地址。与301类似。该状态码表示由于请求对应的资源存在另一个URI,并指定必须使用GET方法定向获取请求的资源。和302不同的是,302是不会改变上次的请求方法 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
307 | Temporary Redirect | 临时重定向。和302、303类似,不同的是,不会指定客户端要用什么样的方法请求 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 即用户没有必要的凭据。该状态码表示当前请求需要用户验证。 |
403 | Forbidden | 服务器理解客户端的请求,但是拒绝执行 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置”您所请求的资源无法找到”的个性页面 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
3. 请求格式
- GET请求
GET / HTTP/1.1
Host: baidu.com
Accept: text/html
(断行)
- POST请求
POST /login HTTP/1.1
Host: baidu.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Content-Length: …
username=pyz&password=123
Accept里面是请求文件的格式
4.响应格式
- GET的响应
HTTP/1.1 200 OK
Content-Length: …
Content-Type: text/html或application/x-JavaScript; charset=utf-8
(断行)
<!DOCTYPE html>
…
- POST的响应
(密码错了的情况)
HTTP/1.1 401 Unauthorized(若成功了就是200 OK)
Content-Type: application/json
Content-Length: …
{‘’error”}
5.如何查看响应和请求
- 打开Network
- 刷新网址
- 选中第一个响应
- 查看Headers里的Response Headers点view source可以看到响应的前两部分,Request Headers点view source可以看到请求
- 查看Response你可以看到响应的第四部分
命令行查看方式为:使用curl -s -v -- "http://localhost:8888/xxx"
,查看完整的请求和响应。
6.DNS(Domain Name System)
DNS即是通过域名找IP地址
有两个命令:
nslookup www.baidu.com
ping www.baidu.com
输入这两个命令都会返回baidu的IP地址(baidu有很多台服务器,会返回离你最近几台服务器的IP)绕过DNS:
修改电脑上的hosts文件,直接指定一个域名的IP。
mac终端的修改方法:vi ~/etc/hosts
7.TCP与IP
HTTP协议底层由TCP协议和IP协议构建
TCP 传输控制协议(Transmission Control Protocol)
- TCP 和 UDP 的区别是什么?
TCP 可靠、面向连接、相对 UDP 较慢;UDP 不可靠,不面向连接、相对 TCP 较快。 - TCP 的三次握手指的是什么?
每次建立连接前,客户端和服务端之前都要先进行三次对话才开始正式传输内容,三次对话大概是这样的: - 客户端:我要连接你了,可以吗
- 服务端:嗯,我准备好了,连接我吧
- 客户端:那我连接你咯。
- 开始后面步骤
IP 网络协议(Internet Protocol)
- 内网IP
你在家用的手机、电脑用的就是内网IP,路由器也会给自己一个内网IP(192.168.xxx.xxx),一般是:192.168.1.1 - 外网IP
你的路由器(必由之路)自己会有一个外网IP,像访问的腾讯、阿里的网站就是租用了很多外网IP - 内网和外网之间不能互相访问,但是外网和外网之间可以访问,所以你在家上网就是通过路由器的外网和其他外网连接,你访问的网站在外网发送信息到你的路由器上,然后路由器将信息转到内网发送到你电脑上。
- 设备自己的 IP:127.0.0.1,输入即表示访问自己。localhost也表示设备自己。
- 特别特殊的 IP:0.0.0.0,它不表示任何设备。不同地方有不同的含义。
8.端口 (Port)
服务器提供各种服务,一个端口对应一种服务
HTTP服务用80端口
HTTPS服务用443端口
FTP服务用21端口
使用HTTP协议访问一个IP,要同时提供IP和端口号,平常没填是因为浏览器默认帮你加了
注意:
- HTTP 路径不是文件路径