每日八股文7.1

每日八股-7.1

  • 网络
    • 1.能说说 TCP 报文头部都包含哪些关键字段吗?
    • 2.TCP 是如何确保数据传输的可靠性的?你能详细谈谈吗?
    • 3.你能解释一下 TCP 滑动窗口是如何设计的?它主要解决了什么问题?
    • 4.TCP 协议的拥塞控制是如何实现的?你能详细说说它的过程吗?
    • 5.在 IP 地址 10.100.122.2/24 中,斜杠后面的数字 24 代表什么意思?
    • 6.什么是 SQL 注入攻击?应该如何避免?

网络

1.能说说 TCP 报文头部都包含哪些关键字段吗?

在这里插入图片描述

TCP 头部包含了不少重要的字段。主要有源端口号和目的端口号,它们都是 16 位的,用来标识发送方和接收方的应用程序。然后是 32 位的序列号和 32 位的确认应答号,这两个字段对于保证数据的可靠性和顺序性非常关键。还有一些 控制位,比如 SYN 用于发起连接,ACK 用于确认,FIN 用于关闭连接,RST 用于重置连接等等。此外,头部还包括 4 位的首部长度,16 位的窗口大小用于流量控制,16 位的校验和用于数据完整性校验,以及一些可选字段。

2.TCP 是如何确保数据传输的可靠性的?你能详细谈谈吗?

TCP 为了保证数据传输的可靠性,采取了一系列关键措施。首先,在连接建立阶段,TCP 通过三次握手来确保双方都具备正常的发送和接收能力,并且能够防止旧的连接请求被误用。其次,在数据传输阶段,每个 TCP 报文都会被分配一个序列号,接收方可以根据序列号对乱序到达的数据包进行排序。同时,接收方会发送确认应答(ACK)来告知发送方已经成功接收到了哪些数据。

如果发送方在一定时间内没有收到某个数据包的确认应答,就会触发超时重传机制,重新发送丢失的数据包。另外,如果发送方连续收到三个相同的确认应答(冗余 ACK),发送方会立即进行快速重传,而无需等待超时。为了避免发送方发送过快导致接收方处理不过来,TCP 引入了流量控制机制,通过滑动窗口来限制发送方发送数据的速率。最后,为了避免网络出现拥塞,TCP 还实现了拥塞控制机制,通过慢启动、拥塞避免、拥塞发生和快速恢复等算法来动态调整发送速率,确保网络不会过载,从而保证数据的可靠传输。

3.你能解释一下 TCP 滑动窗口是如何设计的?它主要解决了什么问题?

TCP 的滑动窗口机制在发送方和接收方的内核中都维护着一个缓冲区,并且在这个缓冲区上定义了一个窗口。对于发送方来说,发送窗口的大小决定了在没有收到确认应答之前,可以连续发送的最大数据量。有了发送窗口,发送方就不需要每发送一个数据包就等待确认,可以批量发送,从而大大提高了发送效率。

对于接收方来说,接收窗口的大小表示了接收缓冲区当前可用的空间大小。接收方会将这个接收窗口的大小通过 ACK 报文告知发送方。这样,发送方就知道接收方的接收能力,从而可以根据接收方的窗口大小来调整自己的发送速率,避免发送过多的数据导致接收方处理不过来而丢包,这就是流量控制。总的来说,滑动窗口机制主要解决了串行发送-确认方式效率低下的问题,并实现了流量控制,保证了数据传输的可靠性。

4.TCP 协议的拥塞控制是如何实现的?你能详细说说它的过程吗?

TCP 的拥塞控制是通过一系列算法来实现的,主要包括慢启动、拥塞避免、拥塞发生时的处理(超时重传和快速重传)以及快速恢复。

  1. 慢启动: 连接建立初期,发送方以较低的速率发送数据,逐步探测网络的承载能力,指数级地增加发送窗口。

  2. 拥塞避免: 当发送窗口达到慢启动阈值后,发送窗口以线性方式缓慢增长,避免过快地填满网络。

  3. 当网络发生拥塞,可能会出现丢包。TCP 通过两种方式检测丢包:

    • 一是超时重传,这种重传方式系统默认网络已经出现了严重阻塞,如果发送方在一定时间内没有收到 ACK,就会认为发生了拥塞,此时会将慢启动门限设置为当前拥塞窗口的一半,并将拥塞窗口重置为1,然后重新开始慢启动。
    • 二是快速重传,这种方式系统默认网络出现了轻微阻塞,因为接收方还可以发送包,并且发送方还可以接收到;当发送方连续收到三个重复的 ACK 时,会认为发生了丢包,会立即重传丢失的报文,并进入快速恢复阶段。在快速恢复阶段,拥塞窗口会减半,然后每收到一个重复的 ACK,拥塞窗口会增加一个 MSS,当收到被重传的报文的 ACK 后,拥塞窗口会设置为当前的慢启动门限,然后进入拥塞避免阶段,继续线性增长。

这些机制使得 TCP 能够根据网络状况动态调整发送速率,避免网络过载。

5.在 IP 地址 10.100.122.2/24 中,斜杠后面的数字 24 代表什么意思?

在 IP 地址 10.100.122.2/24 中,斜杠后面的数字 24 表示的是子网掩码的位数。在 CIDR(Classless Inter-Domain Routing)表示法中,这个数字说明了子网掩码中前面有多少个连续的“1”。对于 /24 来说,它对应的子网掩码是 255.255.255.0,换算成二进制就是前 24 位是 1,后 8 位是 0。这个子网掩码的作用是用来划分 IP 地址中的网络部分和主机部分。前 24 位(10.100.122)是网络号,用于标识一个特定的网络,而后 8 位(2)是主机号,用于标识该网络中的一个特定设备。通过将 IP 地址和子网掩码进行与运算,就可以得到该 IP 地址所属的网络号。

6.什么是 SQL 注入攻击?应该如何避免?

SQL 注入攻击是指攻击者通过在 HTTP 请求中插入恶意的 SQL 代码,使得后端服务器在构建和执行 SQL 查询语句时,将这些恶意代码也当作正常的 SQL 命令来执行,从而达到窃取数据、修改数据甚至控制服务器的目的。

举个简单的例子,如果一个查询用户信息的接口通过拼接字符串的方式构建 SQL 语句,攻击者可以在传入的用户 ID 参数中加入恶意的 SQL 代码,比如 0 OR 1=1,这样就会导致查询返回所有用户的信息,造成数据泄露。更严重的,攻击者甚至可以注入 DROP TABLE 这样的语句来删除整个数据库。

为了预防 SQL 注入攻击,我认为可以采取以下几个关键措施:

最重要也是最有效的方法是 使用参数化查询或者预编译语句。这种方式会将 SQL 语句的结构和参数分开处理,用户输入的数据会作为参数传递给 SQL 语句,而不是直接拼接在 SQL 语句中。这样可以防止恶意代码被当作 SQL 命令来执行。
其次,需要对 用户输入的数据进行严格的验证和过滤。在后端接收到前端传递的参数后,要对其进行检查,确保输入的数据符合预期的格式和类型,并且移除任何可能包含恶意代码的部分。可以使用白名单机制来限制允许输入的内容。
最后,应该 遵循最小权限原则。在数据库中,应用程序使用的账户应该只被授予完成其工作所需的最小权限。这样即使发生了 SQL 注入攻击,攻击者能够进行的操作也会受到限制,从而减少损失。
总而言之,使用参数化查询或者预编译语句是防止 SQL 注入攻击最根本和最有效的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87048.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高性能 List 转 Map 解决方案(10,000 元素)

文章目录 前言一、问题背景:为什么List转Map如此重要?二、基础方法对比:Stream vs For循环三、性能优化关键点四、面试回答技巧 前言 遇到一个有意思的面试题,如标题所说,当10,000条数据的List需要转Map,如…

今日行情明日机会——20250701

上证指数缩量收阳线,形成日线上涨中继,个股上涨和下跌总体持平。 深证指数量能持续放大,即将回补缺口位,短线注意周三或周四的调整。 2025年7月1日涨停股主要行业方向分析 1. 芯片(17家涨停,国产替代&…

P1312 [NOIP 2011 提高组] Mayan 游戏

题目描述 Mayan puzzle 是最近流行起来的一个游戏。游戏界面是一个 7 7 7 行 5 \times5 5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上。游戏通关是指在规定的步数内消除所有…

Spring Boot 2 多模块项目中配置文件的加载顺序

Spring Boot 2 多模块项目中配置文件的加载顺序 在 Spring Boot 2 多模块项目中,配置文件的加载遵循特定的顺序规则。了解这些规则对于正确管理多模块应用的配置至关重要。 一、默认配置文件加载顺序 Spring Boot 会按照以下顺序加载 application.properties 或 …

边界的艺术:支持向量机与统计学习时代的王者

当扬勒丘恩的卷积神经网络LeNet在90年代初于手写数字识别领域绽放光芒,却因计算与数据的桎梏未能点燃更广泛的燎原之火时,人工智能,特别是其子领域机器学习,正步入一个理论深化与方法论多元化的关键时期。经历了符号主义通用智能探…

js filter()

listType(queryParams.value).then(response > {filterTable.value response.rows.slice(1); // 只显示前3条数据;filterTable.value filterTable.value.filter(item > {return wnSensorsList.value.some(sensorsgroup > {return sensorsgroup.sensorType item.cod…

Python 库 包 nltk (Natural Language Toolkit)

文章目录 🧰 一、nltk 的主要功能✅ 文本处理功能✅ 内置语料库(Corpora) 📦 二、安装与使用1. 安装 nltk2. 下载语料库(第一次使用时需要下载) 🔍 三、常用功能示例示例 1:分词示例…

设计模式之房产中介——代理模式

手撕设计模式之房产中介——代理模式 1.业务需求 ​ 大家好,我是菠菜啊,好久不见,今天给大家带来的是——代理模式。老规矩,在介绍这期内容前,我们先来看看这样的需求:我们有一套房产需要出售&#xff0c…

Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#

Unity打包 Android、ios、Pad 终端设备局域网IP调试、USB调试 今天咱们继续进阶课程,定期更新,有想学习的不懂的地方也可以告诉我。 提示:内容纯个人编写,欢迎评论点赞,来指正我。 文章目录 Unity打包 Android、ios、P…

c++中的mutex同步机制与多线程同步实现

C 中的 std::mutex 与多线程同步 在多线程编程中,互斥锁(Mutex) 是一种同步机制,用于保护共享资源(如变量、数据结构)免受数据竞争(Data Race)的影响。C 标准库中的 std::mutex 提供…

网络安全2023—新安全新发展

关于绿盟科技 绿盟科技集团股份有限公司(以下简称绿盟科技),成立于 2000 年 4 月,总部位于北京。公司于 2014 年 1 月 29 日在深圳证券交易所创业板上市,证券代码:300369。绿盟科技在国内设有 50余个分支机构,为政府、金融、运营商、能源、交通、科教文卫等行业用户与各…

WebSocket扫盲

WebSocket 是一种网络通信协议,它允许在单个 TCP 连接上进行全双工、双向的实时通信。它是为了解决传统 HTTP 协议在实时交互应用中的局限性而设计的。 核心概念和特点 解决 HTTP 的痛点: 单向性: HTTP 是请求-响应模式。客户端发起请求&…

Springboot整合高德地图

1.登录高德开放平台 高德开放平台 | 高德地图API 2.获取密钥key 1.点击控制台 2.创建新应用 3.添加key 4.创建key 5.获取key 3.java整合 1.高德配置类 package com.thk.controller.map;import org.springframework.beans.factory.annotation.Value; import org.springfram…

【SQL知识】PDO 和 MySQLi 的区别

目录 简介 主要区别 预处理语句示例比较 PDO 示例 MySQLi 示例 选择建议 简介 PDO (PHP Data Objects) 和 MySQLi (MySQL Improved) 都是 PHP 中用于数据库操作的扩展,都支持预处理语句,但有一些重要区别: 主要区别 数据库支持 PDO&am…

python打卡 DAY 45 Tensorboard使用介绍

目录 一、TensorBoard 发展历史与原理 1. 演进历程 2. 核心架构原理 二、TensorBoard 核心功能操作 1. 基础配置方法 2. 常用功能速查表 三、CIFAR10 实战演示 1. MLP 模型监控配置 2. CNN 特征可视化 四、TensorBoard 高级功能 1. 超参数调优 2. 3D点云可视化 五、…

Swift 中 Result 类型全解析:从基础到进阶

在现代 iOS 开发中,Swift 的 Result 类型是处理同步与异步错误的一大利器。相比传统的 throws / do-catch 语法,它更清晰、结构化,也更易于组合式编程。 本文将带你从 Result 的基础定义出发,逐步深入其在实际项目中的多种应用&am…

Github 2025-06-28 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2025-06-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Rust实现的非官方Bitwarden兼容服务器 创建周期:2317 天开发语言:Rust协议类型:GNU Affero General Public License v3.0Star数量…

python 写一个判断文本中是否有手机号的函数,并提取出文本中的手机号

我们需要判断文本中是否有手机号,并提取出手机号。 中国大陆的手机号规则: 1. 通常为11位数字。 2. 目前手机号段分配如下: - 移动号段:134(0-8)、135、136、137、138、139、147、148、150、151、152、157、158、159、172、178、1…

作物生长模型Oryza V3实战12:drate程序详解

drate(v2).exe,可以通过观察移植日、穗部分化、开花和成熟的物候日期(即日和年),DRATE(v2)用于校准四个阶段的发展速率:幼苗期(DVRJ,oCday-1)、光周期敏感期(DVRI,oCday-1)、穗部发育期(DVRP,oCday-1)和生殖期(DVRR,oCday-1)。 一 准备输入文件 1、准备.crp,.…

利用视觉-语言模型搭建机器人灵巧操作的支架

25年6月来自斯坦福和德国卡尔斯鲁厄理工的论文“Scaffolding Dexterous Manipulation with Vision-Language Models”。 灵巧机械手对于执行复杂的操作任务至关重要,但由于演示收集和高维控制的挑战,其训练仍然困难重重。虽然强化学习 (RL) 可以通过在模…