学习记录1-三次握手与四次挥手

给自己的学习做一个完整的回顾

本次主要记录的是三次握手和四次挥手的学习过程

知识点铺垫

  • OSI模型
    OSI模型的排列顺序为 物理层-数据链路层-网络层-传输层-会话层-表示层-应用层。其中我们本次学习的知识点发生在传输层,它的主要作用就是建立端与端的链接。
  • 连接的条件
    端与端,其实指的就是客户端和服务端,从字面上意思理解就是一个是需要服务一个是提供服务。如何识别我们提供的服务就是对方需要的服务?这里就需要一个类似现实身份证中的东西,在约定俗成中我们将其称为IP。但是存在一个问题,假设每次只靠IP来识别,当多个应用进程向同一个服务端请求时,就会存在消息无法正确发送给对应进程的消息存在。所以我们引进一个新的知识点-端口号(每台计算机的端口号数量为65535个)。不同的进程绑定不同的端口号,这样即使发生上述情况服务器的响应信息也能准确发送给对应的应用。可以通过命令行 netstat -ano来查看

三次握手

三次握手的核心就是为了信息对等和防止超时
在讲解之前先对各个标识对应的意思做讲解
TCP报文存在SYN、ACK、FIN等标识,1为开启,0为关闭

SYN-->Synchronization 同步
Seq-->Sequence Number 序列号
ACK-->Acknowledgment 确认
FIN-->Finish 结束

连接过程

第一次握手:客户端-->服务器。客户端会生成一个数值随机的seq(序列号)并将SYN设置为1表示请求同步信息发送给服务器,并进入SYN_SENT状态,等待服务器确认!

第二次握手:服务器-->客户端。服务器也会生成一个数值随机的seq(序列号)和一个确认号,确认号为客户端的序列号+1!服务器会给客户端发送SYN和ACK来表示确认同步(设置为1),并进入SYN_RECV状态

第三次握手:客户端-->服务器。客户端向服务器发送ACK,并表示确认请求。此时序列号为服务端的确认号,确认号为服务端的序列号+1!至此连接建立完毕,双方都进入ESTABLISHED状态

总结:

  • 三代表三步,握手代表建立连接,过程的理解其实就是请求-->确定-->确定你的确定这样的过程!
  • 每次过程都会带上序列号,每次第一次不同方向的握手都会随机生成自己的序列号
  • 接受方的确认号都是请求方序列号+1.

四次挥手

四次挥手客户端和服务端都能主动的结束连接。

重点解析

建立连接为什么是三次
三次握手的目的是信息对等超时重传。信息对等其实确认对方在第一次随机生成的序列号!数值随机的序列号应该是作为通道的标识符,当存在不符合的序列号双方都可以将其抛弃。三次握手作为全双工,必须客户端和服务器都收到确认,而三是最小值,客户端和服务器的序列号在发送的时候都能得到应答,次数多无限套娃,次数少无法达到要求。

为什么释放连接比建立连接多了一次
其实我们看到四次挥手主要是多了在请求后有一个确认,其实这个不难理解。必须得服务端保证所有的报文发送完成,才能结束连接,所以只能先发一个ACK来告诉客户端我们已经收到你的请求。

三次握手哪个阶段容易收到攻击
第二阶段的SYN泛洪攻击!三次握手其实可以简单理解为客户端请求,服务端确认请求,客户端确认请求使服务端知道确认请求已经被确认的过程。当客户端不停的发送请求,但是在收到服务端的请求的时候不给服务端发送请求导致连接被挂起,由于连接没完成会一直给客户端发送请求,但是新的连接也是一直存在相同的问题导致内存资源被消耗导致DDOS攻击。
简单举个例子,食堂排队打饭,有些人点完菜但是要刷卡的时候一直不付钱,付款的机器有限,当所有的机器被这样的行为霸占,后面正常的请求就无法处理导致攻击产生。

posted @ 2021-11-20 16:12  一肚子回锅肉  阅读(41)  评论(0编辑  收藏  举报