计算机网络进阶 ---- TCP 的报头结构 ---- 三次握手 ---- 详解(看完必会)

TCP 的三次握手:

在搞懂三次握手前,必须要搞明白TCP报头的结构内容
TCP报头结构:
在这里插入图片描述

  • 源端口号 : 源计算机上的应用程序的端口号;
  • 目的端口号 : 目标计算机的应用程序端口号;
  • 序列号:客户端给服务端发送数据时,给分好的数据段在发送时标上一个序号,方便后面对数据段的排序;
  • 确认序列号:接收方给发送方返回一个确认序号,就代表确认序号之前的数据接收方已经接收到了,同时接收方告诉发送方接下来可以发送之后的数据;
  • 标志位
    • URG:紧急标记位,表示本报文段中发送的数据是否包含紧急数据,URG=1 时激活后面的紧急指针字段;
    • ACK:确认标记位,当 ACK=1 时,激活前面的确认号字段,TCP 规定,连接建立后,ACK 必须为 1;
    • PSH:告诉对方收到该报文段后是否立即把数据推送给上层,PSH=1,表示应当立即把数据提交给上层,而不是缓存起来;
    • RST:该位为1时代表TCP连接出现了异常,强制断开连接;
    • SYN:请求标记位,SYN=1 时表示想建立连接;
    • FIN:结束标记位,表示请求断开连接.;
  • 窗口大小:示当前接收端的接收窗口还有多少剩余空间;
  • 校验和:它用于确认传输的数据是否有损坏,发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值,两个值必须相同,才能证明数据是有效的,如果两个值不同,则丢掉这个数据包
  • 紧急指针:当 URG=1 时,激活紧急指针字段,它指出本数据段中为紧急数据的字节数,当所有紧急数据处理完后,TCP 就会告诉应用程序恢复到正常操作;
  • 选项:长度不定,但长度必须是 32bits 的整数倍;

三次握手:

目的

  1. 客户端和服务端要确认彼此都有收发数据的能力;‘
  2. 指定自己的初始化序列号,为后面的可靠传送做准备。
  • 第一次握手:客户端发出连接请求,服务端收到连接请求,至此,服务端知道客户端有发送能力
  • 第二次握手:服务端收到第一次客户端发出的连接请求后,向其发出收到连接请求的响应和连接请求,至此,客户端知道服务端有发送能力和接收能力
  • 第三次握手:客户端收到服务端对它第一次所请求的回应后,发送收到连接请求的响应,服务端收到后,至此,服务端知道客户端有接收能力

三次握手中标志位的详情:

  • 第一次握手:客户端Client发送位码为SYN=1,随机产生seq=x的数据包到服务器,服务器Server由SYN=1知道,客户端Client要求建立联机;
  • 第二次握手:服务器Server收到请求后要确认联机信息,向客户端Client发送ack=(客户端Client请求连接时的seq)+1,SYN=1,ACK=1,产生seq=y的包,代表接收到连接请求并且向客户端再次确认;
  • 第三次握手:客户端Client收到后检查ack是否正确,即第一次发送的seq+1,以及位码ACK是否为1,代表收到了服务器端发过来的确认信息。之后客户端Client会再向服务器发送ack=(服务器Server的seq+1),ACK=1,服务器Server收到后确认ack 值与ACK=1,连接建立成功。

在这里插入图片描述

补充:三次握手四次断开的详解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Murphy_Biao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值