TCP协议(3握4挥)
TCP是什么?
TCP:面向连接的 可靠的 基于字节流的 传输层 通信协议
需要注意的有下面几位
ACK:该位置1,确认应答 的字段变得有效
RST:该位置1,TCP连接过程中出现异常必须强制断开连接
SYC:该位置1,表示希望建立连接 并在其***(seq)字段进行初始值的设定
FIN:该位置1,表示今后不会再有数据发送,希望断开连接
第三次握手是可以携带数据的 前两次不能 一旦完成三次握手 双方都处于establish状态 至此连接建立完成 可以互相发送数据了
1.客户端发送把SYN置1 相当于告诉客户端 我准备好了 要发送请求了
2.服务端收到 返回一个ACK+SYN 意思是 我也准备好了(但是现在服务端不知道自己的消息客户端能不能收到)
3.客户端收到了消息 ACK置1
为什么是3次?
1.防止历史连接建立
2.确保双方初始***能被可靠的同步
3.避免建立多个无效连接 造成不必要的浪费
【2次握手】:
无法防止旧的重复连接初始化 由于网络等原因
1.客户端发送的旧的报文比新的报文先到达服务端
2.此时服务端就会回一个SYN+ACK报文给客户端
3.客户端收到后可以根据自身上下文 判断这是一个历史连接(系列号过期或者超时)
如果是两次握手 客户端就没有足够的上下文来判断当前连接是不是历史连接(如果是历史连接第三次握手发送RST报文)
【4次挥手】:
3次理论上就够了 4次没必要 重复的可以合并成3次
1.客户端不发送数据了 但是还能接收
2.回一个ACK应答报文 但是还可能再发数据
3.服务端也不发了
4.客户端也不收了