mysql三次握手_TCP的三次握手和四次挥手详解

本文详细介绍了TCP的三次握手和四次挥手过程,旨在理解TCP连接建立与释放的机制。从TCP报文段格式、连接建立到连接释放的步骤,分析了为何建立连接需要三次握手,而关闭连接需要四次挥手,以及TCP的保活机制和熟知端口号。
摘要由CSDN通过智能技术生成

TCP的概述

TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字。

例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。

TCP协议段格式

bde647c2c7830b39c4a194892f1265df.png

TCP报文首部

源端口和目的端口:各占2个字节,分别写入源端口和目的端口;

序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;

确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701;

数据偏移:占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远;

保留:占6位,保留今后使用,但目前应都位0;

紧急URG:当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;

确认ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;

推送PSH:当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1;

复位RST:当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;

同步SYN:在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;

终止FIN:用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;

窗口:占2字节,指的是通知接收方

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值