#### 三次握手--创建连接
```[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安装