6.3 计算机网络面试题

article/2025/6/7 12:19:33

网络OSI模型和TCP/IP模型分别介绍一下

OSI

  • 应用层:http htps DNS 为应用程序提供统一的接口
  • 表示层:将数据转换为兼容另一个系统能识别的格式
  • 会话层: 建立管理终止表示层实体之间的通信会话
  • 传输层: tcp udp 负责端到端的数据传输
  • 网络层: ip 负责路由转发分片
  • 数据链路层: APR 负责数据封帧、差错检测 MAC寻址
  • 物理层: 传输数据帧

TCP/IP

  • 应用层:HTTP SMTP DNS
  • 传输层 TCP UDP
  • 网络层 IP
  • 网络接口层

HTTP报文

在这里插入图片描述

http请求类型

在这里插入图片描述

  • GET:安全、幂等、缓存浏览器
  • POST:不安全、不幂等、不缓存、无法保存为书签

HTTP1.1怎么对请求做拆包

通过"Content-Length"头字段来进行。
在这里插入图片描述

http断点重传

在这里插入图片描述

http为什么不安全

  • 窃听:信息加密
  • 篡改:校验机制
  • 冒充:身份证书
    在这里插入图片描述

TLS四次握手

  • clientHello 客户端发送支持的TLS协议版本、产生的随机数、支持的密码套件
  • ServerHello 服务端确认TLS协议版本、产生的随机数、确认的密码套件、服务器的数字证书
  • 客户端通过浏览器或操作系统中的公钥确认数字证书,如果没有问题从数字证书中取出服务器的公钥,加密报文:随机数、加密通信算法改为会话密钥、通知握手结束
  • 服务端通过三个随机数计算会话密钥、通知加密、结束

HTTPS如何防范中间人的攻击

在这里插入图片描述

HTTP1.1 2.0区别

  • 头部压缩
  • 二进制传输
  • 并发传输 stream
  • 主动推送资源

HTTP进行TCP连接之后,在什么情况下会中断

  • 执行close系统调用 FIN 四次挥手
  • 发送方一直没收到ACK 重传到了最大次数
  • HTTP长时间没有进行请求和响应

HTTP、SOCKET和TCP的区别

在这里插入图片描述
Socket 是一种网络通信的抽象,提供了一种用于在网络上进行数据交换的接口。它是应用程序与网络协议之间的中介。
Socket 使用 TCP: 当使用流式 Socket 时,实际上是通过 TCP 协议进行数据传输。Socket 提供了一个简单的接口,使得开发者可以方便地使用 TCP 协议进行网络通信。

DNS

DNS的全称是Domain Name System(域名系统)
在这里插入图片描述
在这里插入图片描述
默认端口号:53
基于UDP实现
在这里插入图片描述

golang interface(引用类型)

抽象与多态,如

  • 定义可扩展的插件系统
  • 依赖解耦与接口隔离:实现数据库操作的抽象层
type Database interface {Query(query string) ([]Row, error)Exec(query string) error
}type MySQL struct{}
func (m *MySQL) Query(query string) ([]Row, error) { /* ... */ }
func (m *MySQL) Exec(query string) error { /* ... */ }type Service struct {db Database // 依赖接口而非具体实现
}

在 Go 语言中,利用接口和直接为结构体编写函数之间有几个重要区别。以下是对这两种方法的比较:

1. 依赖注入与灵活性

  • 利用接口:

    • 依赖注入: Service 结构体依赖于 Database 接口,而不是具体的 MySQL 实现。这使得 Service 可以与任何实现了 Database 接口的类型一起工作。
    • 灵活性: 可以轻松地替换 Database 的具体实现,比如使用 MySQLPostgreSQL 或其他数据库,只需提供相应的实现而无需修改 Service 的代码。
  • 直接为结构体编写函数:

    • 紧耦合: 如果 Service 直接依赖于 MySQL,那么 Service 的实现与 MySQL 紧密耦合。这意味着如果想要更换数据库,可能需要修改 Service 的代码。
    • 难以测试: 测试 Service 时,难以使用模拟(mock)或其他数据库实现,因为它依赖于具体的 MySQL 类型。
      PS:接口nil判断需要类型和值均为nil

http://www.hkcw.cn/article/WQfsNpAybW.shtml

相关文章

LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下

上部分链接:LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】 上 题目:1164. 指定日期的产品价格 题解: select product_id,10 price from Products group by product_id having min(change_date) > 201…

ssm学习笔记day04

RequestMapping 首先添加依赖 Maven的配置 测试 在controller创建HelloController,如果只加RequestMapping,默认跳转到新页面 如果要是加上ResponseBody就把数据封装在包(JSON),标签RestController是前后分离的注解(因为默认用…

Spine工具入门教程4之网格与权重

1、概念 网格的定义: 启用网格,可以在图片内设置多边形,操纵多边形的顶点可以让图片变形。 权重的定义: 图解网格和权重的操作方法: 2、调整网格/权重 (1)设置网格 目前调整小臂骨骼对图片不…

吉他入门个人学习笔记

目录 一.一二期 1. 十二平均律 2.调音 3.弦数-音名-唱名 三.第三期 1.43231323训练 2.c大调二十四品常用音阶图 四.第四期 1.小星星 2.爬格子训练 五.第五期 六.第六期——大三和弦 和弦总览 1.C和弦 2.D和弦 3.E和弦 4.G和弦 5.A和弦 第七期.小三和弦 五百…

队列的讲解:C++队列的使用

一.队列的介绍: 队列是C/C中最基础的数据结构之一,队列本质上是一种线性表。它遵循着先进先出(fifo)的特点,在队列中一般在队尾插入,队头出队。这就相当于排队一样,刚入队的人需要排在队尾(rear),每次出队…

使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题

目录 1、问题现象 2、使用Process Explorer和System Informer(该工具原先叫Process Hacker)查看占用CPU高的线程 3、使用System Informer工具时发现了一个关键细节 4、将Windbg附加到软件进程上,根据System Informer中显示的线程id到Wind…

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…

传统业务对接AI-AI编程框架-Rasa的业务应用实战(1)--项目背景即学习初衷

我的初衷:我想学习AI。具体的方向是这样的:原本传统的平台业务去对接智能体。比如发票业务,发票的开具、审核、计税、回款等。根据用户在业务系统前台界面输入若干提示词 或者 语音输入简短语音信息,可以通过智能体给出需要处理的…

【八股消消乐】索引失效与优化方法总结

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…

Java面试八股--06-Linux篇

目录 一、Git 1、工作中git开发使用流程(命令版本描述) 2.Reset与Rebase,Pull与Fetch的区别 3、git merge和git rebase的区别 4、git如何解决代码冲突 5、项目开发时git分支情况 二、Linux 1、Linux常用的命令 2、如何查看测试项目的…

动态规划-647.回文子串-力扣(LeetCode)

一、题目解析 这里的子字符串是连续的,与之前的子序列不同,这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题,如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1),马拉车算法(具有局限性) 时间复杂…

条形进度条

组件 <template><view class"pk-detail-con"><i class"lightning" :style"{ left: line % }"></i><i class"acimgs" :style"{ left: line % }"></i><view class"progress&quo…

大模型赋能:金融智能革命中的特征工程新纪元

一、AI进化论&#xff1a;从“判别”到“生成”的金融新战场 1.1 判别式AI的“痛点”与大模型的“破局” 想象这样一幅画面&#xff1a;银行风控模型像老式收音机&#xff0c;需要人工反复调试参数才能捕捉风险信号&#xff1b;而大模型则是智能调音台&#xff0c;能自动“听…

HA: Wordy靶场

HA: Wordy 来自 <HA: Wordy ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.128&#xff0c;靶场IP192.168.23.130 3&#xff0c;对靶机进行端口服务探…

技巧小结:外部总线访问FPGA寄存器

概述 需求&#xff1a;stm32的fsmc总线挂载fpga&#xff0c;stm32需要访问fpga内部寄存器 1、分散加载文件将变量存放到指定地址即FPGA寄存器地址 sct文件指定变量存储地址&#xff0c;从而可以直接访问外设&#xff0c;&#xff08;28335也可以&#xff0c;不过用的是cmd文件…

深入理解 x86 汇编中的重复前缀:REP、REPZ/REPE、REPNZ/REPNE(进阶详解版)

一、重复前缀&#xff1a;串操作的 “循环加速器” 如果你写过汇编代码&#xff0c;一定遇到过需要重复处理大量数据的场景&#xff1a; 复制 1000 字节的内存块比较两个长达 200 字符的字符串在缓冲区中搜索特定的特征值 手动用loop指令编写循环&#xff1f;代码冗长不说&a…

【PCB设计】STM32开发板——原理图设计(电源部分)

一、PCB设计流程 二、准备工作 1.点击文件新建工程并命名 2.新建图页 在绘制较为复杂的原理图时&#xff0c;可以建立多个图页&#xff0c;使得原理图更加清晰。 右击原理图→新建图页 右击→重命名 3.设计规则相关配置 取消勾选第22个 4.调整页面大小 5.放置“电源树”图片…

C++仿RabbitMQ实现消息队列

前言 本项目将使用 C 在 Linux&#xff08;CentOS 7.6&#xff09; 环境下开发一个仿 RabbitMQ 的简易消息队列。 开发和调试环境如下&#xff1a; 操作系统&#xff1a;Linux (CentOS 7.6) 编辑器&#xff1a;Visual Studio Code / Vim 编译器&#xff1a;g&#xff08;GNU…

离散数学_数理逻辑(二):命题逻辑的推理

前言 每一件事都存在现象和本质.现象是表面,本质是内在.数学可以说是自然科学之母,是一切自然现象的本质.对于编程,表面上是在写代码,实际上是在用离散数学理解问题和解决问题. 引入 命题逻辑的推理部分. "推理"在思考中占了很大比重.笔者曾经把学习方法分了两种:一…

KITTI数据集(计算机视觉和自动驾驶领域)

KITTI&#xff08;Karlsruhe Institute of Technology and Toyota Technological Institute at Chicago&#xff09;数据集是计算机视觉和自动驾驶领域中最广泛使用的基准数据集之一。它由德国卡尔斯鲁厄理工学院和美国芝加哥丰田技术研究所联合发布&#xff0c;旨在推动自动驾…