这是我参与新手入门的第1篇文章
一、tcp协议定义
- 面向连接的可靠的传输
- tcp报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
- 双方经过完整的三次握手才能形成真正的连接。
二、三次握手
sequenceDiagram
客户端->>服务端: syn
服务端-->>客户端: syn ack
客户端-)服务端: ack
- ack 为确认号,一般设置为1,表示确认号有效
- syn 请求建立连接,发送syn包
三次握手过程
- 第一次:客户端发送初始序号(随机序列)和syn=1请求标志
- 第二次:服务端发送请求标志syn,确认标识ack、自己序号、及客户端序号+1
- 第三次 客户端发送ack确认标识,自己的序号=自己序号+1及对方的确认序号+1
三、为什么握手是三次
- 双方确认机制,保障双方都可以发出、接收数据
四、四次挥手
sequenceDiagram
客户端->>服务端: fin
服务端-->>客户端: fin ack
服务端-->>客户端: fin
客户端-)服务端: ack
- fin 希望断开连接
四次挥手过程
- 第一次:客户端像服务端发送断开请求fin=1
- 第二次:服务端接收到命令,并像客户端告知已收到信息,发送确认标识ack
- 第三次:服务端像客户端发送断开请求,告知我也想分开了!!!
- 第四次:客户端收到断开请求,告知服务端收到了,发送确认标识ack
五、为什么要四次挥手
- 目的: 让对方资源不要随意释放