### IP 協議
IP是Internet Protocol(網際互連協議)的縮寫,是[TCP/IP](https://baike.baidu.com/item/TCP%2FIP/214077)體系中的網絡層協議。設計IP的目的是提高網絡的可擴展性:一是解決[互聯網](https://baike.baidu.com/item/%E4%BA%92%E8%81%94%E7%BD%91/199186)問題,實現大規模、[異構網絡](https://baike.baidu.com/item/%E5%BC%82%E6%9E%84%E7%BD%91%E7%BB%9C/1306810)的互聯互通;二是分割頂層網絡應用和底層網絡技術之間的耦合關系,以利于兩者的獨立發展。根據[端到端](https://baike.baidu.com/item/%E7%AB%AF%E5%88%B0%E7%AB%AF/8851783)的設計原則,IP只為主機提供一種無連接、不可靠的、盡力而為的數據報傳輸服務。
##### **IP的作用**
* IP信息包的傳送 : 可將IP信息包從源設備傳送到目的設備。
* **IP定址**
> IP規定網絡上所有的設備都必須有一個獨一無二的IP地址,每個IP信息包都必須包含目的設備的IP地址。
* **IP路由**
> 網絡之間必須有傳送的機制,可以傳送IP信息包,將IP信息包通過一個個的網絡傳送到目的地。此種傳送機制稱為IP路由。
* IP信息包的分割與重組 : 為了克服數據包在網絡傳輸過程中大小的先知,可以將過長的信息包進行分割,以便能在最大傳輸單位較小的網絡上傳輸。分割后的IP信息包,由目的設備接收后重組,恢復成原來IP信息包。
##### **IP的組成**
* 網絡標識 : 標明具體的網段 相同是同一網段,可ping通 ;
* 主機標識 : 標明具體的某個節點,也就是某個網絡中的特定的計算機號碼 (不允許在同一個網段內重復出現)。

> 下圖為利用目標 IP 地址的網絡標識進行判斷

##### **路由**
含義: 僅僅有`IP`地址還不足以實現將數據包發送到對端目標地址,在數據發送過程中還需要類似于`指明路由器或主機`的信息,以便真正發往目標地址。保存這種信息的就是`路由控制表`。
1. 靜態路由控制
* 管理員手動設置
2. 動態路由控制
* 路由器與其他路由器相互交換信息時自動刷新
##### **IP地址與路由控制**
1. `IP`地址的網絡標識部分用于進行路由控制。
2. 路由控制表中記錄著網絡地址與下一步應該發送至路由器的地址。
3. 在發送`IP`包時,首先要確定`IP`包首部中的目標地址,再從路由控制表中找到與該地址具有相同網絡地址的記錄,根據該記錄將 IP 包轉發給相應的下一個路由器。如果路由控制表中存在多條相同網絡地址的記錄,就選擇一個最為吻合的網絡地址。

**`DNS`**
`DNS` 可以根據下面字符串幫助用戶轉換到具體的 IP 地址。
* 2001:4860:4860::8888 (IPV6)
* 114.114.114.114 (IPV4)
參考鏈接
[51cto - Java技術架構](https://developer.51cto.com/art/201906/597961.htm)
- 版本控制之Git簡介
- Git工作流程
- Git工作區、暫存區、版本庫
- Git 指令匯總
- Git 忽略文件規則 .gitignore
- pull request
- HTTP簡介
- HTTP - Keep-Alive
- HTTP緩存
- XMLHttpRequest
- Fetch
- 跨域
- HTTP 消息頭
- TCP/IP
- TCP首部
- IP首部
- IP 協議
- TCP/IP漫畫
- 前端開發規范
- 前端開發規范整理
- 前端未來規劃
- HTML思維導圖
- CSS思維導圖
- 布局
- position,float,display的關系和優先級
- line-height、height、font-size
- 移動端適配
- JS 對象
- JS 原型模式 - 創建對象
- JS 預編譯
- 探索JS引擎
- ES