[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協議安全。(無狀態的意思是其數據包的發送、傳輸和接收都是相互獨立的。無連接的意思是指通信雙方都不長久的維持對方的任何信息。)
## HTTP 請求頭部信息有哪些?
請求頭部由關鍵字/值對組成,每行一對
1. User-Agent :客戶端信息
2. Accept : 客戶端希望接受的數據類型,比如 Accept:application/json
3. Connection :?表示是否需要持久連接,比如Keep-Alive
4. Host : 請求的主機名,允許多個域名同處一個IP地址,即虛擬主機
5. Cookie:瀏覽器端cookie
## HTTP 報文的組成是怎么樣的?

## HTTP 2.0的特點有啥?
多路復用、客戶端拉拽/服務器推送、流量控制、WebSocket
## 簡述IP協議?
IP協議是TCP/IP協議簇中的核心協議,也是TCP/IP的載體。所有的TCP,UDP,ICMP及IGMP數據都以IP數據報格式傳輸。 IP提供**不可靠**的,**無連接**的數據傳送服務。 不可靠指它不能保證IP數據報能成功到達目的地。
## 什么是心跳機制?
心跳機制是定時發送一個自定義的結構體(心跳包),讓對方知道自己還活著,以確保連接的有效性的機制。
## PING 的作用?
PING 主要的作用就是**測試在兩臺主機之間能否建立連接**,如果 PING 不通就無法建立連接。
它其實就是向目的主機發送多個 ICMP 回送請求報文
* 如果沒有響應則無法建立連接
* 如果有響應就可以根據目的主機返回的回送報文的時間和成功響應的次數估算出數據包**往返時間及丟包率**

## 一個網頁從輸入地址回車,到完整展示網頁內容這段時間里,做了哪些工作?
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框架的生命周期