这是我参与「第四届青训营 」笔记创作活动的第二天
什么是HTTP
HTTP全称HyperText Transfer Protocol,是一个基于TCP协议的应用层协议,简单的请求-响应协议,消息的头部以ASCII码形式显示,而消息内容则是一个类似MIME的格式。
HTTP一共有9种方法,最常见的是2种PUT和POST
值得注意的是GET,HEAD,OPTIONS都是属于安全的不会修改服务器数据的方法。
HTTP的状态码
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
- 200 OK -客户端请求成功
- 301-资源/网页将永久转移到其它URL
- 302-临时重定向
- 401-Unauthorized请求未经授权
- 404-请求资源不存在,可能是输入错误的URL
- 500-服务器内部发生了不可预期的错误
- 504-Gateway Timeout网关或者代理服务无法及时响应
HTTP与HTTPS
HTTP:默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTPS:是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。默认工作在 TCP 协议443端口
区别
HTTP明文传输,数据都是未加密的,安全性差,页面响应速度快,连接端口不一样,花费成本比HTTPS低。
HTTPS使用CA证书,需要额外增加ssl握手需要的9个包,更耗费服务器资源。很多银行网站或者电子邮箱等安全级别较高的服务都会采用HTTPS协议
TCP三次握手
-
第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认
-
第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态
-
第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手