TCP三次握手

TCP三次握手是建立可靠连接的重要过程,包括客户端发送SYN包、服务器回应SYN+ACK包以及客户端再发送ACK包。这一过程旨在同步序列号、确认号,并交换窗口大小信息,确保数据的有序、无丢失传输。序号和确认序号用于标记及确认数据包,而SYN、ACK等标志位则控制连接的建立和确认。
摘要由CSDN通过智能技术生成

三次握手流程

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手

 

第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1(ISN---初始序列号)

 

名词注解

序号(sequence number):

Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

对序号的补充:
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的 报文段 (通常受该计算机连接的网络的 数据链路层 的 最大传输单元 ( MTU )的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层**。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。**然后接收端实体对已成功收到的包发回一个相应的确认( ACK );如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个 校验和 函数来检验数据是否有错误;在发送和接收时都要计算校验和。

确认序号(acknowledgement number):

Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

标志位(Flags):

共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效,确认接收到消息;
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值