#### 三次握手--創建連接
```[sequence]
Title: TCP三次握手
客戶端->服務器: 發送序號=200 標志位(SYN=1) [第一次]
服務器->客戶端: 發送序號=500 確認序號=201 標注位(SYN=1,ACK=1) [第二次]
客戶端->服務器: 發送序號=201 確認序號501 標志位(ACK=1) [第三次]
```
#### 四次揮手--斷開連接
```[sequence]
Title: TCP四次揮手
客戶端->服務器: 發送FIN=200 確認序號ACK=500 標志位(ACK=1,FIN=1) 關閉服務器讀通道
服務器->客戶端: 確認序號=201 標注位(CK=1) 服務器確認,關閉客戶端寫通道
服務器->客戶端: 發送FIN=500 確認序號ACK=201 標志位(ACK=1,FIN=1) 關閉服務器寫通道
客戶端->服務器: 確認序號ACK=501 標志位(ACK=1)
```
為什么要3次、4次,不能2次就搞定嗎?
> 連接: 如果2次,當服務端發送給客戶端之后,服務端并不知道是否客戶端真正的連接好了
> 關閉:因為TCP是雙工連接,一個TCP連接存在雙向的讀寫通道,所以要**先關讀再關寫**。
- 虛擬機
- JVM內存結構
- JVM調優手段
- java對象生命周期
- 垃圾回收判斷對象死亡
- 垃圾回收算法
- 垃圾收集器
- JAVA基礎知識
- java事件機制
- java反射機制
- jvm創建對象
- java異常
- finally語句一定會執行嗎?
- 集合類介紹
- ArrayList
- LinkedList
- HashMap
- ConcurrentHashMap
- 多線程
- 為什么要使用線程池
- 線程死鎖
- 死鎖檢測和解除
- jstack
- jconsole
- 死鎖預防
- 常見線程池
- 線程池參數
- 工作隊列介紹
- 拒絕策略
- ThreadLocal
- CAS
- ReentrantLock
- AQS
- CountDownLatch
- Spring
- spring中bean的作用域
- REDIS
- redis數據結構
- redis hash實現
- redis rehash與hashmap擴容的區別
- Redis使用場景
- Redis為何這么快
- redis連接數不足導致錯誤
- 分布式
- 分布式事務
- ACID
- CAP
- BASE
- 事務隔離性
- 一致性哈希算法
- 負載均衡算法
- Hystrix 信號量和線程池隔離的差異
- Spring Cloud
- eureka
- MYSQL
- mysql優化經驗
- undo redo binlog
- web
- http協議
- http和https區別
- Cookie和session
- TCP三次握手、4次揮手
- TCP的time_wait和close_wait
- 算法問題
- 編輯距離算法
- MQ
- RabbitMq
- Kafka
- 安裝教程
- Win ELK安裝