三次握手

三次握手:指建立一个TCP连接时,客户端和服务器之间需要发送3个包

  • 主要作用就是为了确认双方通信能力是否正常,指定自己的初始化序列号
  • 实质就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小的信息
    在这里插入图片描述

1.第一次握手

客户端发送一个SYN包给服务器(SYN=1建立连接),并进入SYN_SENT状态,等待服务器确认;指明客户端的初始序列seq=x

首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。

2.第二次握手

服务器接收到SYN包,响应自己的SYN包,指明服务器端的初始化序列seq=y,同时ACK=x+1(客户端的初始序号+1)表明自己已经接收了客户端的SYN包,此时服务器处于SYN_RCVD状态

在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y

3.第三次握手

客户端收到SYN包后,发送一个ACK包(ACK=y+1),即将服务器的初始序列+1作为ACK值,表示已经收到服务器的SYN包,此时客户端处于ESTABLISHED状态;服务器端接收到ACK报文后,同样处于ESTABLISHED状态;此时双方建立连接。

确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号

- 字段含义

URG 紧急指针是否有效。为1,表示某一位需要被优先处理
ACK 确认号是否有效,一般置为1。
PSH 提示接收端应用程序立即从TCP缓冲区把数据读走。
RST 对方要求重新建立连接,复位。
SYN 请求建立连接,并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1
FIN 希望断开连接。

  • 序列号seq:4个字节,标记数据端的顺序
  • 确认号ack:4个字节,期待收到对方下一个报文段的第一个数据字节的序号
  • 确认ACK:仅当ACK=1时,确认号ack有效
  • 同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段;
  • 终止FIN:释放一个连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值