TCP三次握手

文章目录

目的

保证双方互相建立了连接。

场景

发生在客户端连接服务器的时候,当调用connect();时,底层会通过TCP协议进行三次握手。

  1. 客户端发送 和 服务器接收
  2. 客户端确定服务器可以收发,自己可以发送
  3. 服务器确定客户端可以收发,自己可以收发

    至少三次握手,四次握手也是可以的。四次握手可以将三次握手的第二次拆分。

第一次握手:

  1. 客户端将SYN标志位置1

  2. 生成一个随机32位的序号seq = j,这个序号后边是可以携带数据(数据的大小)
    第二次握手:

  3. 服务器端接收客户端的连接:ACK = 1

  4. 服务器会回发一个确认序号:ack = 客户端的序号+数据长度+SYN/FIN(按一个字节算)

  5. 服务器端会向客户端发起连接请求:SYN = 1

  6. 服务器会生成一个随机序号:seq = k
    第三次握手:

  7. 客户端应答服务器请求:ACK = 1

  8. 客户端回复收到了服务器端的数据:ack = 服务器序号+数据长度+SYN/FIN(按一个字节算)

SYN、ACK:标志位

seq:序号(生成规则查一下)

ack:确认号

seq = m(3)

ack = m+1(仅仅在SYN = 1\FIN = 1 的时候)

确保数据完整,并确保数据顺序

TCP头部结构

SYN:建立连接

ACK:确认

相关推荐
渡我白衣14 小时前
计算机组成原理(9):零拓展与符号拓展
c语言·汇编·人工智能·嵌入式硬件·网络协议·硬件工程·c
松涛和鸣14 小时前
DAY37 Getting Started with UDP Network Programming
linux·c语言·网络·单片机·网络协议·udp
JIes__14 小时前
网络协议——传输层协议
网络协议
深信达沙箱14 小时前
常见数据泄露途径测试用例
服务器·安全·测试用例·源代码
北京耐用通信14 小时前
告别布线烦恼:耐达讯自动化Profibus六路中继器如何让您的网络“无限续航”
人工智能·物联网·网络协议·自动化·信息与通信
麒qiqi14 小时前
OSI 模型到 UDP 套接字
网络·网络协议·udp
想唱rap14 小时前
哈希(C++)
服务器·开发语言·c++·算法·哈希算法
skywalk816314 小时前
为什么Linux系统里用户id和组id不一样?怎么改成一样呢?
linux·服务器
百锦再14 小时前
UniApp与UniApp X:跨平台开发的范式革命与全面技术解析
服务器·ai·uni-app·k8s·core·net
high201114 小时前
【架构】-- HTTP 响应状态码详解
网络协议·http·架构