TCP/IP 分層聯網協議,包括數據鏈路層,網絡層,傳輸層,應用層(底層到高層)

### 數據傳遞
高層傳遞信息給底層,底層不會解析高層數據,它會將信息放在底層的包中并加上自己的信息頭,繼續往下層傳遞;相反,底層傳遞給高層會對數據進行一層層解析(逆向解包)
### 數據鏈路層
- 從網絡層傳遞過來的數據報封裝到一個個幀,每個幀除了傳遞的數據之外,幀頭還包含目標地址和幀大小;數據鏈路層傳輸幀,這一層會進行錯誤檢測,重傳以及流量控制;
多個幀會在接收端進行重組;
- 最大傳輸單元MTU,是傳輸的幀大小的上限
### 網絡層
- 網絡層主要協議是IP,IP以數據報的形式傳輸數據,一個數據報包含目標地址,源地址,從而可以路由到目標地址
- IP是無連接和不可靠的協議,可靠性由傳輸層協議TCP或應用程序保證
- 當IP數據報大于MTU時,會進行分段,以便封裝到幀中(因為IP是不可靠協議,這可能導致數據丟失,因此應當避免對IP數據報分段,這樣情況就是要在傳輸層處理了,只要
傳輸層傳給網絡層時數據報不會大于MTU就可以了,所以說可靠性需要由傳輸層來保證)
### 傳輸層
- 包括用戶數據報協議UDP,傳輸控制協議TCP
#### TCP協議
- 建立連接;在開始通信前,兩個端點建立一個通信信道
- 數據分段;每一個端包括檢驗和,從而能夠檢測出端到端傳輸錯誤,每一個段使用單個IP數據報來傳輸
- 確認,重傳以及超時
- 排序(序號計數);數據段第一個字節的序號,接收者對這些分段進行確認并以正確的順序組裝這些分段
- 流量控制;防止一個快速的發送者壓垮一個慢速接收者;大概就是接收端的緩沖區滿了,發送TCP就會停止傳輸數據
- 擁塞控制;防止一個快速的發送者壓垮整個網絡
### tcp三次握手四次揮手

### tcp一些控制位說明
- ACK 確認序號,接收端在上一個成功收到的數據字節的序列號加1
- RST 重置連接,用來處理多種錯誤情況
- SYN 同步序列號
- FIN 發送端提示完成發送任務
### tcp一些狀態說明
- 三次握手
- LISTEN server端正在等待連接
- SYN_SEND client發送一個SYN報文,等待server回應
- SYN_RECV server端收到client發來的SYN后,回應SYN/ACK之后進入SYN_RECV狀態
- ESTABLISHED 兩個tcp節點連接建立完成
- 四次揮手
- FIN_WAIT1 client端發送FIN到server端,等待server回應ACK
- FIN_WAIT2 處于FIN_WAIT1狀態的client收到server端的ACK
- TIME_WAIT client端收到server端FIN,完成主動關閉;client端等待了2MSL后才會關閉,因為要等Server端已正常關閉
- CLOSE_WAIT server端收到client端發來的FIN時,就處于CLOSE_WAIT狀態
- LAST_ACK server端收到ACK時,server端關閉
### 客戶端經歷狀態

### 服務端經歷狀態

### 參考
- Linux系統編程手冊(下冊)
- [TCP協議中的三次握手和四次揮手(圖解)](https://blog.csdn.net/whuslei/article/details/6667471/)
- php
- 編譯安裝
- 基本概念
- 垃圾回收機制
- 生命周期
- zval底層實現
- c擴展開發
- gdb調試工具
- 自定義擴展簡單demo
- 鉤子函數
- 讀取php.ini配置
- 數組
- 函數
- 類
- yaf擴展底層源碼
- swoole擴展底層源碼
- memoryGlobal內存池
- swoole協程使用記錄
- 單點登錄sso原理
- compser使用
- session實現機制
- c & linux
- gcc
- 指針
- 結構體,聯合和位字段
- 宏定義井號說明
- printf家族函數和可變參數
- 共享函數
- 靜態庫和動態庫
- makefile自動化構建
- 信號一
- 信號二
- inotify監控文件事件
- socket編程
- 簡介
- UNIX DOMAIN
- Internet DOMAIN
- TCP/IP
- 文件IO多路復用
- 內存管理
- 進程組,會話和控制終端
- daemon守護進程
- 多進程
- 多線程
- 常用進制轉換
- go
- 入門知識
- 字節和整數裝換
- python
- redis
- 應用場景
- 消息隊列
- 熱點數據
- 掃碼登錄
- 訂閱發布
- 次數限制
- 搶購超賣
- 持久化機制
- mysql
- 工作流程
- MyISAM和InnoDB區別
- 用戶和權限管理
- 執行計劃
- sql優化
- 事務和鎖
- 慢查詢日志
- case...when...then...end用法
- sql
- 參考
- linux
- 內核參數優化
- 防火墻設置
- docker
- docker入門知識
- 算法
- 多維數組合
- DFA算法
- 紅包金額分配