网络原理--HTTP
一、HTTP
1、大概介绍
HTTP,全称是超文本传输协议,是一种使用广泛的应用层协议。HTTP往往是基于传输层的TCP协议实现的,目前我们主要使用的是HTTP1.1和HTTP2.0。
我们平时打开一个网站就是通过HTTP协议来传输数据的,当我们在浏览器中输入一个百度搜索的网址时(URL),浏览器就给百度的服务器发送了一个HTTP请求,百度的服务器返回了一个HTTP响应,请求与响应一一对应。这个响应结果被浏览器解析之后,就展示成我们看到的画面,这个过程中浏览器可能会给服务器发送多个HTTP请求,服务器会对应返回多个响应,这些响应里就包括了页面HTML,CSS,JavaScript,图片等信息。
数据能通过TCP/IP协议进行传输,但是对于服务器和客户端是需要知道具体信息的,应用层协议就是对数据进行加工处理或者使用。
2、HTTP请求
①认识URL
URL基本格式:平时我们俗称的网络其实就是URL,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它URL的详细规则由因特网标准RFC1738进行了约定。
https://user:pass@www.example.jp:80/dir/index.htm?=1#ch1
一个具体的URL:
https://v.bitedu.vip/personInf/student?userId=10000&classId=100
https:协议方案名,常见的有http和https,也有其他的类型。
user:pass:登录信息。现在的网站进行身份认证一般不在通过URL进行了。一般会省略。
v.bitedu.vip:服务器地址,此处是一个域名,域名会通过DNS系统解析成一个具体的IP地址。
端口号:上面的URL端口号被省略了。当端口号被省略时,浏览器会根据协议类型自动决定使用哪个端口,例如https协议默认使用443端口。
/personInf/student:带层次的文件路径
userId=10000&classId=100:查询字符串。本质是一个键值对结构,键值对之间使用&分割,键和值之间使用=分割。
片段标识:此URL中省略了片段标识,片段标识主要用于页面内跳转。
②认识“方法”
| 方法 | 说明 | 支持的HTTP协议版本 |
| GET | 获取资源 | 1.0、1.1 |
| POST | 传输实体主体 | 1.0、1.1 |
| PUT | 传输文件 | 1.0、1.1 |
| HEAD | 获得报文首部 | 1.0、1.1 |
| DELETE | 删除文件 | 1.0、1.1 |
| OPTIONS | 询问支持的方法 | 1.1 |
| TRACE | 追踪路径 | 1.1 |
| CONNECT | 要求用隧道协议连接代理 | 1.1 |
| LINK | 建立和资源之间的联系 | 1.0 |
| UNLINE | 断开连接关系 | 1.0 |
1.在浏览器中输入一个URL,浏览器就会发送一个GET请求。
2.POST方法多用于提交用户输入的数据给服务器。GET和POST可以混用,也有区别,GET一般用于获取数据,POST一般用于提交数据;GET的body一般为空,需要传递的数据通过query string传递,POST的query string一般为空,需要传递的数据通过body传递。
③认识请求报头(header)
header的整体格式也是“键值对”结构。每个键值对占一行,建和值之间使用分号分隔。
几种常见报头:
Host:
表示服务器主机的地址和端口。
Content-Length:
表示body中的数据长度。
Content-Type:
表示请求的body中的数据格式。
User-Agent:
表示浏览器/操作系统的属性,可以区分用户所用版本和设备是PC还是平板还是手机。
Refer:
表示这个页面是从哪个页面跳转过来的。
Cookie:
Cookie中存储了一个字符串,这个数据可能是客户端(网页)自行通过JS写入的,也可能是来自于服务器(服务器在HTTP响应的header中通过Set-Cookie字段给浏览器返回数据)。
可以通过这个字段实现“身份标识”的功能,每个不同的域名下都可以由不同的Cookie,不同网站之间的Cookie并不冲突。
3、HTTP响应解释
①认识状态码:
响应首行的信息是HTTP版本号+状态码+状态码解释
一些常见的状态码和状态码解释:
| 状态码 | 状态码解释 | 详情 |
| 200 | OK | 表示访问成功 |
| 404 | Not Found | 用户输入的url资源不存在或者输入错误 |
| 403 | Forbidden | 标识访问被拒绝,有些页面访问需要用户权限 |
| 405 | Method Not Allowed | 表示对方服务器不一定支持所有方法 |
| 500 | Internal Server Error | 表示服务器内部出现问题 |
| 504 | Gateway Timeout | 服务器负载过大,处理单条请求消耗时间就会很长,可能超时 |
| 302 | Move temporarily | 临时重定向,实现登录成功后自动跳转到主页,响应报文的header部分会包含一个Location字段,表示要跳转到哪个页面。 |
| 301 | Moved Permanently | 永久重定向,当浏览器收到这种请求,后续的请求都会自动改成新的地址。 |
