1. 网络协议包
为什么要有包的概念?
在网络中传递信息都是以二进制形式存在的,接收方(服务器或浏览器)接收到请求或响应数据时,第一时间就是解析二进制数据。
有时传输信息的数据量比较巨大,导致接收方很难获取相应数据。
网络协议包是一组有规律的二进制数据,在这组数据存在固定空间,每一个空间专门存放特定信息,这样接收方在接收网络协议包之后就可以到固定空间得到对应信息。例如
【0000(ip地址)0000(端口号)0000(资源文件名)0000】
网络协议包出现极大降低了接收方对接收二进制数据编译难度
1.1 HTTP请求协议包
-
请求行
请求地址、请求方式 -
请求头
get请求参数信息、cookie信息 -
空白行
没有内容,起到隔离作用 -
请求体
post请求参数信息
1.2 HTTP响应协议包
-
状态行
HTTP状态码(200、404…) -
响应头
content-type:指定解析二进制数据的编译器
location:重定向的地址
cookie:共享信息 -
空白行
没有内容,起到隔离作用 -
响应体
返回结果的二进制码
2. get和post
get | post | |
---|---|---|
请求参数大小 | 不能超过4k | 无限制 |
URL可见性 | 参数在URL中可见 | 参数在URL中不可见 |
请求参数保存 | 拼接URL | 放在请求体 |
缓存性 | 可以缓存返回内容 | 不能缓存返回内容 |
安全性 | 较差,因为参数都在URL中 | 较好,但是不能防抓包 |
后退/刷新 | 无感知 | 重新提交请求 |
数据包* | 产生1个TCP数据包 | 产生两个TCP数据包 |
*数据包:对于get请求,浏览器会把HTTP的header和请求参数一起发送出去,服务器直接响应200,返回数据。对于post请求,浏览器先发送header,服务器响应100,浏览器再发送请求参数,服务器响应200,返回数据。在网络环境良好的情况下,发一次数据包和两次数据包的时间差别几乎可以忽略不计。并不是所有浏览器都会在post发送两次包,比如Firefox(火狐)的post请求只发送一次。
3. HTTP状态码
三位数字组成的一个符号,展示请求处理的情况
以下列举一些常见的状态码
1xx:接收的请求还在处理
HTTP状态码 | 说明 |
---|---|
100 | 继续索要文件 |
2xx:请求正常处理完毕
HTTP状态码 | 说明 |
---|---|
200 | 正常处理 |
204 | 成功处理,但是没有资源返回 |
206 | 范围请求 |
3xx:需要进行附加操作完成请求
HTTP状态码 | 说明 |
---|---|
301 | 永久性重定向 |
302 | 临时性重定向 |
303 | 使用get请求发送新url |
4xx:客户端请求出错
HTTP状态码 | 说明 |
---|---|
400 | 请求报文有语法错误 |
401 | 未经许可,需要http认证 |
403 | 无访问权限 |
404 | 服务器找不到请求资源 |
405 | 请求方式(get post)无法受理 |
5xx:服务器处理出错
HTTP状态码 | 说明 |
---|---|
500 | 服务器后端代码有bug |
503 | 服务器超负荷或停机维护 |
504 | 网关超时 |
4. HTTP和HTTPS
4.1 什么是HTTPS?
HTTP(HyperText Transfer Protocol,超文本传输协议),是以明文方式发送信息的,如果黑客截取了web浏览器和服务器之间的传输报文,就可以直接获取其中的信息。所以,HTTP是不安全的。
HTTPS是以安全为目标的HTTP通道,其安全基础是SSL(Secure Sockets Layer)
4.2 SSL协议
SSL协议位于TCP/IP与各种应用层协议之间,为数据通讯提供安全支持。
SSL协议分为两层:
- SSL记录协议
它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 - SSL握手协议
它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
4.3 HTTPS设计目标
- 数据保密性
保证数据内容在传输过程中不会被第三方查看。 - 数据完整性
及时发现被第三方篡改的内容。 - 身份校验安全性
保证数据到达用户期望的目的地。
4.4 HTTP和HTTPS的区别
- HTTPS协议需要用到CA申请证书(Certificate Authority,证书颁发机构),需要一定的费用。
- HTTP是超文本传输协议,明文传输;HTTPS是具有安全性的SSL加密传输。
- HTTP和HTTPS的连接方式不同,用的端口也不同,前者是80,后者是443。
- HTTP的连接是无状态的,HTTPS的连接是有状态的。
无状态:数据包的发送、传输和接收都是相互独立的
4.5 HTTPS缺点
- HTTPS协议握手阶段比较费时,可能会导致页面加载缓慢。
- HTTPS连接缓存没有HTTP高效。
- SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名。
- SSL协议加密算法和SSL交互次数将占用一定的计算资源和服务器成本。