【前端小记】-- 浏览器--1.简单理解TCP连接的三次握手和四次挥手

本文详细介绍了TCP协议中的三次握手和四次挥手过程。三次握手用于建立连接,确保双方的发送和接收能力正常,防止恶意攻击。四次挥手则用于断开连接,释放资源。挥手需要四次是因为TCP的全双工特性,服务端的ACK和FIN报文通常是分开发送的。
摘要由CSDN通过智能技术生成

前言

简单来说,三次握手和四次挥手就是客户端和服务端之间互相确立的过程。
SYN:连接请求/接收 报文段(SYN = 1 表示这是一个连接请求或连接接受报文)
seq:客户端的初始化序列号
ACK:确认报文段(ACK = 1 时确认号字段才有效,当 ACK = 0 时确认号无效)
ack:确认号。希望收到的下一个数据的第一个字节的序号

三次握手

三次握手用于连接数据,是为了建立可靠的通信信道,以确认双方的接受能力和发送能力是否正常。
过程:
第一次:客户端 ----我想连接,我的序列号是100----> 服务端
第二次:客户端 <----我可以和你连接,我的序列号是200,返回数据给你了---- 服务端
第三次:客户端 ----收到了,我将带着返回的数据去请求----> 服务端
三次握手

三次握手过程中可以携带数据吗?

第三次握手可以,因为已经在第一次第二次中确认过了;第一次和第二次握手不可以,因为第一次还没有确定好,如果这个时候有人恶意攻击网站,那么在第一次我收的时候他投入大量的数据在这里的话,服务器就要花很长的时间以及很大的内存去接收,所以不行。
如果第三次握手丢失了,客户端服务端会如何处理

如果第三次握手丢失了怎么办?

服务器就会进行首次重传,若等待一段时间仍未收到客户确认包,就进行第二次重传。如果重传次数超过系统规定的最大重传次数,则系统将该连接信息从半连接队列中删除。

四次挥手

四次挥手用于断开连接,是拆除两条通道并释放资源。

过程:
第一次:客户端 ----我没有数据要给你发送了,我要断开连接,我的序列号是300----> 服务端
第二次:客户端 <----知道你要断断开连接了,收到你的序列号是300的数据了,正在跟你断开连接,请稍等---- 服务端
第三次:客户端 <----断开连接了,我这条数据的序列号是400---- 服务端
第四次:客户端 -----收到你的序列号是400的数据了,知道你要断开连接了----> 服务端
四次挥手

为什么挥手是四次?

TCP是全双工的,这是因为服务端的 LISTEN 状态下的 SOCKET 当收到 SYN 报文的建连请求后,它可以把 ACK 和 SYN(ACK 起应答作用,而 SYN 起同步作用)放在一个报文里来发送。但关闭连接时,ACK是服务器一收到FIN报文底层就回发的,而服务器B的FIN是应用层调用close()激发的,所以它这里的 ACK 报文和 FIN 报文在发送的时间上都是分开的,不可能同时发送。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值