HTTP1.0、HTTP 1.1、HTTP 2.0之间的主要区别:
TCP报头格式:
TCP报文格式如下图所示:
TCP报文格式
其中报头包含的内容有:16位源端口+16位目的端口+32位序列码+32位确认码+4位数据偏移量+6位保留位+6位控制位+16位窗口+16位校验和+16位紧急指针+选项(长度不定)
UDP报头格式
首部字段只占用8个字节,分别是源端口,目的端口,长度和校验和
GET与POST的区别:
GET请求的长度有限制,取决于浏览器和服务器的配置。POST请求的长度没有限制
GET通过URL请求,明文传输;POST通过请求头传输,可以在开发者工具或者抓包可以看到,也是明文传输的
根据HTTP的设计,大家在看到GET的时候,都期望这个请求对服务器没有修改;看到POST的时候,都认为对服务器产生了修改
GET幂等,POST不幂等。那什么是幂等呢?幂等是指一个请求方法执行一次和执行多次效果完全相同
什么是Http协议无状态协议?怎么解决Http协议无状态协议?
无状态协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态
无状态协议解决办法: 通过Cookie 或者Session来进行会话保存
说一下Http协议中302状态
返回状态码302表示重定向,服务器返回的头部信息中会包含一个 Location 字段,内容是重定向到的url
Http协议由什么组成?
请求报文包括三部分:
请求行:包含请求方法,URL,HTTP版本
请求头
请求内容实体
响应报文包含三部分:
状态行:包含HTTP版本,状态码
响应头
响应内容实体
HTTP状态码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见的状态码:
200:请求被正常处理
302:重定向
400:客户端请求有语法错误,不能被服务器所理解
401:请求未经授权
403:服务器收到请求,但是拒绝提供服务
404:资源不存在
500:服务器发生不可预期的错误
503:服务器发生错误,一段时间后可能恢复正常
HTTP1.0和2.0的区别
多路复用:做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.0大了好几个数量级
二进制分帧:改进传输性能
首部压缩:header的数据进行压缩,这样数据体积小了,传输就会更快
服务器推送:服务器可以对客户端的一个请求发送多个响应。