TCP/IP协议--三次握手,四次挥手

TCP/IP协议族在这里插入图片描述

1.什么是TCP协议?

TCP(传输控制协议)是一种面向连接,可靠的,基于字节流的传输层协议通信,

2.三次握手的过程

在这里插入图片描述
第一次握手:客服端向服务端发起连接,这是将同步序列号SYN置为1,表示连接,并且自身随机生成一个序列号,如seq=X,消息发出之后,客户端状态置为同步已发出,
第二次握手:服务端收到连接之后,同意建立连接,发送给客户端应答码ack=X+1和确认号ACK=1,表示连接已确认回执给对方,并将自己的SYN置为1,表示连接,自身也随机生成一个序列号,如seq=y,消息发出后,客户端的状态置为同步收到
第三次握手:客户端收到服务端发的确认消息之后,状态置为已建立连接,需要给服务器做出应答,发送确认号ACK=1,并将自己的随机序列号seq=X+1,应答码随即改变为ack=y+1,此时服务器也建立了连接,开始传数据

3.TCp四次挥手

在这里插入图片描述
客户端和服务端建立TCP连接,传输万数据需要断开数据,双方是等价的,都可以发送断开的请求,下面以客户端A主动发送请求为例。
第一次挥手:客户端向服务器发送断开连接的消息,将FIN置为1,已请求释放连接,就是没有数据发给服务端了并且随机生成一个序列号seq=u
第二次挥手:服务器收到断开连接的消息后,发出确认消息,回执给客户端我已确认(ACK=1),并随机生成一个序列号 seq=v,并对对方的做出应答(ack=u+1),这时服务端关闭了连接,且A无法再给B发送数据

第三次挥手:服务端处理完数据后,通知客户端关闭连接,这时将FIN=1,ACk=1,自己的序列码为seq=w,应答码ack=u+1
第四次挥手:A收到B断开连接消息后需要发动确认消息,将ACK+1,确认号ack=w+1,seq=u+1,服务器收到后,就断开连接

常见问题

1.为什么建立连接协议是三次握手,而关闭确实四次握手?
进行连接时,可以将ACK和SYn放在一个报文里面来发送,因为传输数据是在建立连接之后才发的,但是关闭连接的时候,客户端发给FIN报文时,它仅仅表示对方没有数据发给你了,但是未必你没有数据不发给对方,所以你可能未必立马关掉socket,或许你需要发送一些数据给房,之后的话在发送FIN报文给对方表示你同意关闭连接,所以的话,这里ACK报文和FIN报文多数情况下是分开发的

2.为什么不能用两次握手?
3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认
如果发生两个握手的话,嘉定客户端给服务端发送一个连接请求,服务端收到这个请求,并发送确定了应答,按照两个握手的协定,服务端认为连接已经成功建立,可以发送数据了,因为客户端不知道服务端有没有收到请求,且连接是否建立成功,如果客户端的连接还未建立成功,则服务端发来的数据就会被忽视,只能等待客户端的链接应答,这时就会发生超时,超时之后服务端又会重新发送相同的数据,就形成了死锁。

3.如果已经建立连接,但是客户端突然出现故障怎么办?
其实TCP还设有一个保活计时器,如果客户端出现故障,服务器不能一直等下去,白白的浪费资源,服务端没收到一个客户端的请求都会重新复位这个计时器,通常设置为2小时,如果两个小时还没收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75S发送一个,若一连发送10个探测报文仍没反应,服务器就认为客户端出现故障,接着就关闭连接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/IP协议中的三次握手四次挥手是在建立和终止TCP连接时使用的过程。 三次握手是指在建立TCP连接时,客户端和服务器之间进行的三个步骤: 1. 第一步:客户端向服务器发送一个SYN(同步)包,其中包含自己的初始序列号(ISN)。 2. 第二步:服务器收到SYN包后,回复一个SYN-ACK(同步-确认)包,其中包含确认号(ACK)和自己的初始序列号。 3. 第三步:客户端收到服务器的SYN-ACK包后,再回复一个ACK包,确认连接已建立。此时,双方可以开始进行数据传输。 这个三次握手的过程是为了确保客户端和服务器都能够正常接收和发送数据,以建立可靠的连接。 四次挥手是指在终止TCP连接时,客户端和服务器之间进行的四个步骤: 1. 第一步:当客户端想要关闭连接时,发送一个FIN(结束)包给服务器。 2. 第二步:服务器收到FIN包后,回复一个ACK包确认收到,并进入半关闭状态。此时服务器仍可以发送数据给客户端。 3. 第三步:当服务器也想要关闭连接时,发送一个FIN包给客户端。 4. 第四步:客户端收到FIN包后,回复一个ACK包确认收到。此时连接关闭。 这个四次挥手的过程是为了确保客户端和服务器都能够完成数据的传输,并安全地关闭连接。 总结起来,三次握手用于建立连接,而四次挥手用于终止连接。通过这些步骤,TCP连接可以在客户端和服务器之间建立起来,并在不需要时安全地关闭。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值