TCP三次握手过程

什么是TCP

tcp是一个面向连接的、可靠的、基于字节流的传输层通信协议

  • 面向连接:TCP连接是一对一的,不能实现一对多或多对一,TCP在通信前要首先建立连接,连接成功后才能开始进行通信
  • 可靠的:TCP连接要保证通信过程的可靠性,所谓可靠性是指TCP能够检查比特错误并纠正比特错误 ,同时能够对丢包、失序情况作出一定的应对。
  • 基于字节流:在 TCP 建立连接之后,数据被视为一个连续的字节流

为什么需要TCP

由于下层网络层(IP层)不保证网络包的交付、按序交付和数据的完整性,因此需要TCP协议在运输层保证数据传输的可靠性。

TCP报文头格式

各字段作用:

  • 序列号
    • 连接建立时该值是随机初始化 的。其后在数据传输过程中,TCP 连接中传送的数据流中的每一个字节都编上一个序号 ,而序号字段的值 则指的是本报文段所发送的数据的第一个字节的序号,以保证数据传输过程中不乱序。
    • 用来解决网络包的失序问题
  • 确认应答号
    • 期望收到对方的下一个报文段的数据的第一个字节的序号,发送端在收到确认应答后可认为在该序号之前的数据都已经被接收端正常接收。
    • 用以解决网络丢包的问题
  • 控制位:
    • ACK,该位为1时,确认应答号有效
    • SYN,该位为1,连接建立号,建立TCP连接所使用特殊字段,该位为1表示希望建立连接
    • FIN,同SYN字段的作用,是TCP断开连接时需要的特殊字段,该位为1表示希望断开连接
    • RST,该位为1,表示出现异常情况,需要强制断开连接
  • 源端口与目的端口
    • 用于告诉TCP协议应该把网络数据包交给哪个进程
  • 首部长度
    • 指出TCP报文的首部长度,单位为4字节,取值范围为0~15,故而TCP报文段的首部长度最大为60字节,固定字段为20字节,因此选项部分最大为40字节

如何确定一个TCP连接

一个TCP四元组可以确定一个TCP连接,其四元组组成为:

其中,源地址与目的地址在IP头部 中,作用是将数据包通过IP协议发送给主机

源端口与目的端口存在于TCP头部 中,作用是告诉TCP协议应该把报文发送给哪个进程

TCP建立连接的过程

TCP在通信前需要首先通过三次握手建立连接,之后才能进行通信,其过程如下:

  • 第一次握手:客户端发送SYN报文段,在tcp头部中,置SYN=1,并随机初始一个seq序号 ,但不携带任何数据。表示客户端要建立连接
  • 第二次握手:服务端收到客户端发来的链接请求后,在tcp头部中,置SYN=1,也随机初始化一个服务端的序号seq 放入tcp头部,同时置ACK=1,对客户端也响应一个确认号ack放入头部,该阶段同样不携带数据。表示服务端同意建立连接
  • 第三次握手:客户端收到服务端的同意链接请求报文,此时服务端已经做好了要连接并发送数据的准备,要对服务端发送一个确认报文。在tcp头部中,置ACK=1,但SYN=0 ,且此后的数据传输过程中SYN都等于0,同时对服务端的序号响应一个确认号,在该阶段,客户端可以携带数据发送给服务端

参考:
4.1 TCP 三次握手与四次挥手面试题 | 小林coding (xiaolincoding.com)

相关推荐
白驹过隙^^7 分钟前
OB-USP-AGENT安装使用方法
数据库·经验分享·网络协议·tcp/ip·github·ssl
西格电力科技16 分钟前
面向工业用户的绿电直连架构适配技术:高可靠与高弹性的双重设计
大数据·服务器·人工智能·架构·能源
白帽子黑客罗哥23 分钟前
渗透测试技术:从入门到实战的完整指南
网络·安全·web安全·渗透测试·漏洞挖掘·网络安全培训
北邮刘老师31 分钟前
【智能体互联协议解析】ACPs/AIP为什么还在用“落后”的“中心化”架构?
网络·人工智能·架构·大模型·智能体·智能体互联网
winfield82135 分钟前
MCP 协议详解
开发语言·网络·qt
sdszoe492239 分钟前
IP地址规划与VLSM技术
网络·网络协议·tcp/ip·vlsm·ip地址规划
m0_569531011 小时前
《K8s 网络入门到进阶:Service 与 Ingress 原理、部署方案及核心区别对比》
网络·容器·kubernetes
广东大榕树信息科技有限公司1 小时前
当运维管理面临挑战时,如何借助动环监控系统提升响应能力?
运维·网络·物联网·国产动环监控系统·动环监控系统
wanhengidc1 小时前
巨 椰 云手机 满足多元需求
运维·服务器·安全·智能手机·云计算
liebe1*11 小时前
第十一章 密码学
服务器·密码学·php