HTTP1.0、HTTP 1.1、HTTP 2.0之间的主要区别:
可以参考这篇文章:HTTP1.0、HTTP 1.1、HTTP 2.0之间的主要区别
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的数据进行压缩,这样数据体积小了,传输就会更快
- 服务器推送:服务器可以对客户端的一个请求发送多个响应。