网络基础

网络模型

OSI网络模型
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层;
5层网络模型
物理层,数据链路层,网络层,传输层,应用层
在这里插入图片描述

TCP协议

Tcp报文格式
在这里插入图片描述
URG:紧急标志。紧急标志为"1"表明该位有效。
ACK:确认标志。表明确认编号栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
PSH:推标志。
RST:复位标志。用于复位相应的TCP连接。
SYN:同步标志。
FIN:结束标志。

TCP 建立连接的三次握手

1.由Client 发起建立连接请求,发送报文中SYN标记位为1,seq=K(随机值)

2.Server端接收到Client的请求,发送SYN标记位为1,ACK标记位为1,seq=J(随机值),ack number=K+1

3.Client接收到Server发来的请求,验证ACK标记位是否为1,验证ack number是否为K+1,验证通过后发送ACK标记位为1,ack number=J+1

在这里插入图片描述

在这里插入图片描述

SYN攻击

当Server收到Client的连接请求进入Send-RCVD 状态时,称为半连接,需要Server发送ACK,SYN到Client确认才会建立完整的连接;
那么,如果大量Client模拟了不存在的IP地址向Server请求建立连接,当Server发送ACK,SYN时无法找到对应的IP,就会进行重试;
由于大量的虚假Client占用了资源可能导致正常的Client无法建立连接造成网络堵塞甚至系统瘫痪!

TCP断开连接四次挥手

发送FIN,表示没有数据要发送了,但是还能继续接收

  1. Client 发送FIN标记位为1, seq=j(随机值)
  2. Server 发送ACK标记位为1,seq=k(随机值),ack=j+1
  3. Server 端发送数据完毕后,发送FIN标记位为1,ACK标记位为1 seq=k,ack=j+1
  4. Client 收到Server的FIN后,验证ack==j+1? 验证通过后,发送ACK标记位为1,ack=k+1
  5. Server收到ACK验证通过后关闭连接, Client等待2ML时间后关闭连接;
    在这里插入图片描述

为什么建立连接需要3次握手,断开连接需要4次挥手?

建立连接时,Server端收到SYN(连接请求)后 可以将SYN与ACK报文一起发送给Client;

断开连接时,可能还存在需要发送的数据,不能直接关闭连接; 所以先发送ACK,等待数据发送完毕后 再发送FIN报文; 就是4次挥手

为什么要等待2ML的时间?

避免网络不稳定带来的问题, 假如在最后发送ACK请求后直接关闭, 此时由于网络原因Server端没收到, Server就会重试FIN请求 但是此时连接已经关闭了,Server端将无法正常发送报文 或者 发送到错误的地方;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值