[TOC]
## 什么是http?
HTTP 是⼀个在计算机世界⾥专⻔在「两点」之间「传输」⽂字、图⽚、⾳频、视频等「超⽂本」数据的「约定和
规范
## GET和POST的区别
* GET在浏览器回退时是无害的,而POST会再次提交请求。
* GET请求会被浏览器主动cache,而POST不会,除非手动设置。
* GET请求只能进行url编码,而POST支持多种编码方式。
* GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
* GET请求在URL中传送的参数是有长度限制的,而POST没有。
(GET:url的长度有限制,最长2048字符,POST:post_max_size)
* 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
* GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
* GET参数通过URL传递,POST放在Request body中。
## GET 和 POST ⽅法都是安全和幂等的吗?
下安全和幂等的概念:
* 在 HTTP 协议⾥,所谓的「安全」是指请求⽅法不会「破坏」服务器上的资源。
* 所谓的「幂等」,意思是多次执⾏相同的操作,结果都是「相同」的。
GET ⽅法就是安全且幂等的,因为它是「只读」操作,⽆论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。
POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多
个资源,所以不是幂等的。
## http和https的区别
* https协议需要到CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。
* http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
* http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
* http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)![](https://img.kancloud.cn/e9/eb/e9eb19bbc0465087e806389d2d65d786_766x849.png)
## HTTP 请求头部信息有哪些?
请求头部由关键字/值对组成,每行一对
1. User-Agent :客户端信息
2. Accept : 客户端希望接受的数据类型,比如 Accept:application/json
3. Connection : 表示是否需要持久连接,比如Keep-Alive
4. Host : 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
5. Cookie:浏览器端cookie
## HTTP 报文的组成是怎么样的?
![](https://img.kancloud.cn/31/d8/31d814a9b227096d3173e01273126057_790x476.png)
## HTTP 2.0的特点有啥?
多路复用、客户端拉拽/服务器推送、流量控制、WebSocket
## 简述IP协议?
IP协议是TCP/IP协议簇中的核心协议,也是TCP/IP的载体。所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输。 IP提供**不可靠**的,**无连接**的数据传送服务。 不可靠指它不能保证IP数据报能成功到达目的地。
## 什么是心跳机制?
心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。
## PING 的作用?
PING 主要的作用就是**测试在两台主机之间能否建立连接**,如果 PING 不通就无法建立连接。
它其实就是向目的主机发送多个 ICMP 回送请求报文
* 如果没有响应则无法建立连接
* 如果有响应就可以根据目的主机返回的回送报文的时间和成功响应的次数估算出数据包**往返时间及丢包率**
![](https://img.kancloud.cn/bf/82/bf82ee39cde68b8872b6592f77757476_754x936.png)
## 一个网页从输入地址回车,到完整展示网页内容这段时间里,做了哪些工作?
0、浏览器本地缓存匹配;
1、本地hosts映射对比;
(检查自己本地的 hosts 文件是否有这个网址映射关系,如果有就先调用这个IP地址映射,完成域名解析)
2、本地dns缓存解析;
(如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有直接返回,完成域名解析。)
3、远程dns解析获得服务器ip地址;
(如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/IP 参数中设置的首选 DNS 服务器,在此我们叫它本地 DNS 服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。)
4、浏览器发送tcp连接请求包(syn);
5、请求包经过传输层、网络层、数据链路层封装通过网卡到达路由器;
6、路由器转发数据包到所属运营商服务器;
7、运营商服务器通过寻址最短路径通过中继节点到达指定ip地址;
8、服务器端可能存在反向代理或者负载均衡,都是直接转发请求至上游服务器,当然也可以制定安全防御规则直接丢弃请求包;
9、上游服务器收到连接请求,在自身可用的情况下,返回(syn+ack);
10、浏览器校验ack,再次发送(syn+ack);
11、服务器校验ack切换连接状态至established,然后根据请求传输数据包;
12、当transform-encoding为chunked时,浏览器开始渲染页面;
13、四次挥手,连接关闭;
14、渲染数据完成。
## WebSocket是什么?
WebSocket 是一种通信协议,定义了一个全双工通信信道,仅通过 Web 上的一个 Socket 即可进行通信,主要特点
* 推送功能:支持由服务器向客户端推送数据的推送功能
* 减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态
## 你知道对称加密和非对称加密的区别和原理吗?
对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;
而非对称加密是指使用一对非对称密钥,即`公钥`和`私钥`,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以`保证安全性`;但是和对称加密比起来,它比较`慢`,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
- 消息队列
- 为什么要用消息队列
- 各种消息队列产品的对比
- 消息队列的优缺点
- 如何保证消息队列的高可用
- 如何保证消息不丢失
- 如何保证消息不会重复消费?如何保证消息的幂等性?
- 如何保证消息消费的顺序性?
- 基于MQ的分布式事务实现
- Beanstalk
- PHP
- 函数
- 基础
- 基础函数题
- OOP思想及原则
- MVC生命周期
- PHP7.X新特性
- PHP8新特性
- PHP垃圾回收机制
- php-fpm相关
- 高级
- 设计模式
- 排序算法
- 正则
- OOP代码基础
- PHP运行原理
- zavl
- 网络协议new
- 一面
- TCP和UDP
- 常见状态码和代表的意义以及解决方式
- 网络分层和各层有啥协议
- TCP
- http
- 二面
- TCP2
- DNS
- Mysql
- 锁
- 索引
- 事务
- 高可用?高并发?集群?
- 其他
- 主从复制
- 主从复制数据延迟
- SQL的语⾔分类
- mysqlQuestions
- Redis
- redis-question
- redis为什么那么快
- redis的优缺点
- redis的数据类型和使用场景
- redis的数据持久化
- 过期策略和淘汰机制
- 缓存穿透、缓存击穿、缓存雪崩
- redis的事务
- redis的主从复制
- redis集群架构的理解
- redis的事件模型
- redis的数据类型、编码、数据结构
- Redis连接时的connect与pconnect的区别是什么?
- redis的分布式锁
- 缓存一致性问题
- redis变慢的原因
- 集群情况下,节点较少时数据分布不均匀怎么办?
- redis 和 memcached 的区别?
- 基本算法
- MysqlNew
- 索引new
- 事务new
- 锁new
- 日志new
- 主从复制new
- 树结构
- mysql其他问题
- 删除
- 主从配置
- 五种IO模型
- Kafka
- Nginx
- trait
- genergtor 生成器
- 如何实现手机扫码登录功能
- laravel框架的生命周期