20170330_请说出TCP连接的三次握手和TCP关闭的四次握手

20170330_请说出TCP连接的三次握手和TCP关闭的四次握手


SYN 包:建立连接请求的包

FIN 包:切断TCP 连接的包

ACK 包:针对SYN 包和FIN 包的确认应答包


1、TCP 的特点及其目的:

(1)TCP 通过校验和、序列号、确认应答信号、重发机制、连接管理以及窗口管理等许多机制来实现数据的可靠性传输。

(2)在TCP 中,当发送端的数据达到接收端主机的时候,接收端主机会返回一个已收到消息的通知,这个通知被称之为

“确认应答信号”ACK

(3)TCP 通过肯定的确认应答信号ACK 实现可靠的数据传输。当发送端将数据发出之后便会等待接收端主机的确认应答信号。如果有确认应答,这说明数据已经成功到达了接收端,否则的话,数据包丢失的可能性很大。


2、TCP 连接的三次握手:

(1)第一次握手:建立连接时,客户端会发送一个SYN 包(SYN = j )作为建立连接的请求到服务器,并等待服务器的确认应答,此时,客户端进入SYN_SENT 状态

(2)第二次握手:服务器接收到这个SYN 包之后,必须确认客户端的SYN 包,发送一个ACK 包(ACK = j + 1),与此同时,自己也发送一个SYN 包(SYN = k)也作为建立连接的请求给客户端。

因此,这个阶段,服务器给客户端发送到消息是“ACK 包 + SYN 包”。此时,服务器进入SYN_RECV 状态

(3)第三次握手:客户端收到服务器的“ACK 包 + SYN 包”,向服务器发送确认应答信号ACK 包(ACK = k + 1)当这个包发送完毕后,客户端和服务器就连接成功了,共同进入ESTABLELISHED 状态(TCP了 连接成功),完成三次握手


3、TCP 断开连接的四次握手:

对于一个已经建立好的TCP 连接,TCP 需要使用改进的三次握手来释放这个连接,也即增加了一个带有FIN 包的报文段。

(1)第一次握手:当主机A 的应用程序通知TCP 数据已经发送完毕时,TCP 向主机B 发送一个FIN 包主动请求断开连接

(2)第二次握手:当主机B 收到这个FIN 包之后,并不会立即用FIN 包回复主机A,而是先向主机A 发送一个确认的 ACK 包,同时通知自己端相应的应用程序:对方要求关闭TCP 连接。(先发送ACK 的目的  是为了防止在这段时间内,对方重传FIN 包)。

(3)第三次握手:与第二步同时进行的是,主机B 的应用程序告诉TCP:我要彻底的关闭连接,于是TCP 再向主机A 发送一个关闭连接请求的FIN 包。

(4)第四次握手:当主机A 收到这个FIN 包之后,向主机B 发送一个确认的ACK 包表示连接被彻底释放完成了四次握手

PS:

FIN 包:

当收到对方发送给自己的FIN 包时,仅仅表示对方不再发送数据了,但是对方还能接收数据,自己也未必把全部数据都发送完了,所以自己视情况而定,既可以立即close 这个TCP 连接、也可以在发送一些数据给对方后再发送FIN 包给对方表示自己现在同意close 这个连接了因此,TCP 断开连接时,服务器端的ACK 包和FIN 包一般都会分开发送!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值