[toc]
http简要记录
1.http(超文本传输协议)
由html文件 ->包含各种各样的元素(URL链接)->web页面
2.URL结构
http:// www.qq.com:80 /news/index.html
协议 域名: 端口 具体的文件名下面的某个页面
3.http的工作原理
1.客户端发起dns请求
2.获取到域名对应的IP地址
3.浏览器发起TCP的连接
4.基于TCP的连接,传输http的请求(一次TCP的连接,可以建立多次的http请求)
5.浏览器请求/index.html
6.服务器响应/index.html至浏览器
7.浏览器翻译index.html中的内容为人类可读
8.断开TCP连接-->四次挥手
http的短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开
http的长连接:建立一次tcp的连接,发起多次http的请求,结束,tcp断开
4.http的请求方法
| 方法 | 描述 | 请求 | 响应 |
|---|---|---|---|
| GET | 用来请求访问已被URI识别的资源 指定的资源经服务器端解析后返回响应内容 | GET /index.html HTTP/1.1 Host: www.baidu.com | 返回index.html的页面资源 |
| POST | 用来传输实体的主体 虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法 虽说POST的功能与GET相似,但POST的主要目的并不是获取响应的主体内容 | POST /submit.cgi HTTP/1.1 Host: www.baidu.com Content-Length: 1500(1500字节的数据) | 返回submit.cgi接收数据的处理结果 |
| PUT | 用来传输文件 就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件的内容,然后保存到请求URI指定的位置 | PUT /example.html HTTP/1.1 Host: www.baidu.com Content-Type: text/html Content-Length: 1560(1560字节的数据) | 响应返回状态吗 204 No Content(比如:该html已存在于服务器上) |
| HEAD | 用于确认URI的有效性及资源更新的日期时间等,和GET方法一样,只是不返回报文主体部分 | HEAD /index.html HTTP/1.1 Host: www.baidu.com | 返回index.html有关的响应头部 |
| DELETE | 用来删除文件,是与PUT 相反的方法 按请求URI删除指定的资源 | DELETE /example.html HTTP/1.1 Host: www.baidu.com | 响应返回状态吗 204 No Content(比如:该html已存在于服务器上) |
| OPTIONS | 用来查询针对请求URI指定的资源支持的方法 | OPTIONS * HTTP/1.1 Host: www.baidu.com | HTTP/1.1 200 OK Allow: GET,POST,HEAD,OPTIONS(返回服务器支持的方法) |
| TRACE | 让web服务器端将之前的请求通信环回给客户端的方法 发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务端就将该数字减1,当数值刚好剑到0时就停止持续传输,最后接收到请求的服务端则返回状态码 200 OK 的响应 | TRACE /HTTP/1.1 Host: www.baidu.com Max-Forwards: 2 | HTTP/1.1 200 Ok Content-Type: message/http Content-Length: 1024 TRACE / HTTP/1.1 Host: www.baidu.com Max-Forwards: 2(返回响应包含请求内容) |
| CONNECT | 要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信,主要使用SSL和TLS协议把通信内容加密后经网络隧道传输 | CONNECT proxy.sample.com:8000 HTTP/1.1 Host: proxy.sample.com | HTTP/1.1 200 OK(之后进入网络隧道) |
5.常见http的响应状态码(以3位数字组成)
| 状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 301 | 永久重定向 |
| 302 | 临时重定向 |
| 304 | 浏览器缓存 |
| 401 | 权限认证失败 |
| 403 | 请求不到首页,权限被拒绝 |
| 404 | 资源找不到 |
| 500 | 服务器内部错误 |
| 502 | 错误的网关,找不到后端资源 |
| 504 | 请求超时 |