• C/S架构学习之TCP的三次握手和四次挥手


    • TCP的三次握手:
    • 一定由客户端主动发起的,发生在建立连接的过程中。
    • 此过程发生在客户端的connect()函数服务器的accept()函数之间。
    • 第一次握手:
    • 客户端向服务器发送一个带有SYN标志的数据包,表示客户端请求建立连接。
    • 并且客户端会选择一个随机的序列号a放在SYN标志的数据包中,然后向服务器发送这个数据包。
    • 第二次握手:
    • 服务器收到客户端的请求后,会回复一个带有SYN/ACK标志的数据包,表示服务器已经收到客户端的请求,并同意建立连接。
    • 服务器会选择一个随机的序列号b放在SYN标志的字段中,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。
    • 第三次握手:
    • 客户端收到服务器的回复后,会发送一个带有ACK标志的数据包,表示客户端确认已经收到了服务器的响应,并同意建立连接。
    • 客户端将服务器的序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。
    • TCP的四次挥手:
    • 主动关闭方(客户端或者服务器都可以扮演这个角色)发起的,发生在断开连接的过程中。
    • 客户端主动发起断开连接为例:
    • 第一次挥手:
    • 客户端向服务器发送一个带有FIN/ACK标志的数据包,表示客户端请求与服务器断开连接。
    • 并且客户端会选择一个随机的序列号a放在FIN/ACK标志的数据包中,然后向服务器发送这个数据包。
    • 第二次挥手:
    • 服务器收到客户端的请求断开连接后,会回复一个带有ACK标志的数据包,表示服务器已经收到客户端的请求,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。
    • 第三次挥手:
    • 服务器向客户端发送一个带有FIN/ACK标志的数据包,通知客户端,服务器要关闭了。
    • 并且服务器会选择一个随机的序列号b放在FIN/ACK标志的数据包中,然后向客户端发送这个数据包。
    • 第四次挥手:
    • 客户端收到服务器的断开连接信号后,会回复一个带有ACK标志的数据包,表示客户端已经收到服务器的请求,并且序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。
    • TCP的三次握手和四次挥手,抓包如下图所示:
      在这里插入图片描述
  • 相关阅读:
    Maven-DskipTests和-Dmaven.test.skip=true的区别
    HDFS 短路读的实现(全网最全面深入讲解)
    目标检测算法——医学图像开源数据集汇总(附下载链接)
    internship:项目频繁出现的lambda表达式及MyBatis-Plus的理解
    一键式AI智能剪辑,轻松处理视频,释放无限创意!“
    让物体移动到点击的位置
    SpringCloud(5):Ribbon详解
    二、防火墙-安全策略
    C++二级题目5
    赣菜出赣,2023中国江西国际餐饮产业博览会,餐饮新零售展
  • 原文地址:https://blog.csdn.net/qq_41878292/article/details/133518423