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:确认

相关推荐
openHiTLS密码开源社区几秒前
【密码学实战】openHiTLS s_server命令行:搭建国密标准安全通信服务器
服务器·物联网·密码学·openhitls·tlcp·商用密码算法·dtlcp
真命天子_重庆_中国4 分钟前
记一次生产服务器磁盘I/O性能瓶颈与负载过高分析与处理
运维·服务器
携欢13 分钟前
PortSwigger靶场之CSRF where token is tied to non-session cookie通关秘籍
运维·服务器·前端
川石课堂软件测试18 分钟前
CSS中常用的几种定位。
开发语言·css·python·网络协议·http·html·pytest
BothSavage22 分钟前
Ubuntu-8卡H20服务器升级nvidia驱动+cuda版本
linux·服务器·ubuntu·gpu·nvidia·cuda·nvcc
K_i1341 小时前
OSI七层模型:从原理到实战
运维·服务器·网络
信创工程师-小杨1 小时前
国产银河麒麟SP1桌面版本启动ssh服务报错解决办法
linux·服务器·ssh
TIANE-Kimmy2 小时前
VS code定时任务设置(mac os)
linux·运维·服务器
panshiyangmaye3 小时前
RHCSA作业1
linux·运维·服务器
爱吃生蚝的于勒3 小时前
【Linux】零基础学会linux环境基础开发工具使用(yum,vim,makefile,gdb)
linux·服务器·数据结构·c++·蓝桥杯·编辑器·vim