计算机网络八股文
计算机网络体系架构?
- OSI结构:理论上的
- 7应用层:定义了应用进程间通信和交互的规则,常见协议有HTTP、SFTP、DNS、WebSocket
- 6表示层:数据的表示、安全、压缩。确保一个系统的应用层所发消息能被另一个系统的应用层读取。GIF、JEPG
- 5会话层:建立、管理、终止会话,是用户应用程序和网络之间的接口。RPC、SQL
- 4传输层:提供源端和目的端之间提供可靠的透明数据传输,传输层协议为不同主机上运行的进程提供了逻辑通信。TCP、UDP、SSH
- 3网络层:将网络地址翻译成对应的物理地址,实现不同网络之间的路径选择。ICMP、IGMP、IP等
- 2数据链路层:在物理层提供比特流服务的基础上、建立像零件点之间的数据链路。
- 1物理层:建立、维护、断开物理连接。
- TCP/IP结构:实际上的 应用 传输 网络 链路层
- 五层结构:为了介绍原理而折中的,在这个基础上层层包装层层拆包
DNS的迭代查询和递归查询?
递归查询举例:
客户端想要解析 www.example.com
的IP地址,发送请求到本地DNS解析器:
-
本地解析器查询根DNS服务器。
-
根DNS服务器返回 .com TLD服务器地址。
-
本地解析器查询 .com TLD服务器。
-
.com TLD服务器返回
example.com
的权威DNS服务器地址。 -
本地解析器查询
example.com
的权威DNS服务器。 -
权威DNS服务器返回
www.example.com
的IP地址。 -
本地解析器将IP地址返回给客户端。
迭代查询举例:
客户端想要解析 www.example.com
的IP地址,依次查询各个DNS服务器:
-
客户端查询本地DNS解析器。
-
本地解析器查询根DNS服务器。
-
根DNS服务器返回 .com TLD服务器地址。
-
本地解析器将 .com TLD服务器地址返回给客户端。
-
客户端查询 .com TLD服务器。
-
.com TLD服务器返回
example.com
的权威DNS服务器地址。 -
客户端查询
example.com
的权威DNS服务器。 -
权威DNS服务器返回
www.example.com
的IP地址。 -
客户端获取到IP地址。
结论
递归查询和迭代查询是DNS查询的两种方式,各有优缺点。递归查询对客户端友好,但增加了DNS解析器的负担;迭代查询对解析器负担小,但增加了客户端的复杂性。实际应用中,客户端通常会使用递归查询,通过本地DNS解析器处理大部分的查询过程。
DNS解析过程?
常见端口:
- 21:FTP
- 22:SSH
- 53:DNS解析
- 80:HTTP
- 443:HTTPS
- 1080:sockets
- 3306:mysql
常见状态码:
- 1XX:临时的响应,客户端应继续请求。
- 2XX:请求已成功被服务器接收。
- 3XX:用来重定向。
- 4XX:请求可能出错。
- 5XX:服务器在尝试处理请求时发生了错误。
-
404:表示客户端(如浏览器)请求的资源在服务器上不存在
GET和POST的区别?
- 传参方式不同,一个在URL一个在请求体
- 幂等性
- GET大部分都被CDN缓存起来了
HTTP报文结构?
- 请求报文:
- 报文首部
- 请求行
- 请求首部字段
- 通用首部字段
- 实体首部字段
-
GET /index.html HTTP/1.1 Host: www.javabetter.cn Accept: text/html User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
- 报文主体
- 报文首部
- 响应报文
- 报文首部
- 状态行
- 响应首部字段
- 通用首部字段
- 实体首部字段
-
HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 <html><body>沉默王二很天真</body> </html>
- 报文主体
- 报文首部
URI 和 URL 有什么区别?
- URI,统一资源标识符(Uniform Resource Identifier, URI)
- URL,统一资源定位符(Uniform Resource Location),它是 URI 的一种子集,主要作用是提供资源的路径。
HTTP 1-3的区别?
- 1.0
- 无状态协议
- 非持久连接,可设置Connection:keep-alive强制开启长连接
- 1.1:
- 持久连接
- 支持在前一个响应到达之前发送下一个
- 队头阻塞问题:如果第一个响应阻塞了,那么即使后面的响应准备好了也发不出去
- 2.0:
- 采用二进制协议,所以grpc基于2.0的话传递的时候是通过byteArray实现的,以前的是文本
- 多路复用,一个TCP连接上进行多个HTTP请求或者相应,多个请求分解成独立的帧,交错发送,减轻了HTTP 1.x的队头阻塞问题,还是依赖顺序的
- 头部压缩,减少带宽消耗,表示层实现gzip压缩
- 3.0:
- 3.0 基于 QUIC 协议,Quick UDP Connections
- 真正实现了不同的流之间独立传输,2.0仍然需要保证顺序
- 在传输过程就完成了TLS三次握手
HTTP长连接相关参数:
- keep-alive
- keep-alive timeout
- TCP中也有三个参数,闲置多久之后就会间隔一个时间发送侦测包,发生这么多次没有响应就断开连接
HTTP和HTTPS
- 在HTTP的基础上加入了SSL(安全套接字)/TLS(传输层安全)协议,确保传输过程是加密的。
- 解决了什么问题:
- 安全问题
- TLS握手:
- 客户端相服务器发送ClientHello消息,包括支持的TLS版本、随机数等等
- 服务器回应ServerHello,选择一个客户端提议的版本,并发送数字证书
- 客户端验证证书的合法性,生成一个对话密钥通过公钥加密后发送给服务器
- 服务器私钥解密得到对话密钥
- 加密通信
- 涉及到了对称加密和非对称加密
- 握手阶段密钥交换就是非对称
- 传输就是对称
TCP的流量控制:
- 三次握手协商窗口大小,单位是字节,最大是(2^16-1)<<14有个窗口扩展选项,大概1G
- 会约定每次最多能发多少
- 接收方窗口
- 发送方窗口
拥塞控制:
- 避免出现拥堵时,发送方的数据填满整个网络
- 发送方维护一个cwnd,发送窗口的值是cwnd和滑动窗口可以接收窗口的min,这里单位是MSS
- 慢启动:
- 探测网络拥堵情况,每收到一个ACK,cwnd+1,单位是MSS,呈指数递增
- 拥塞避免:
- 当cwnd到达慢启动阈值sshresh,进入拥塞避免
- 每收到一个ACK,cwnd=cwnd+1/cwnd,每个RTT就是+1
- 拥塞发生:
-
如果是RTO超时重传
- sshresh=cwnd/2
- cwnd=1
- 进去慢启动
- 如果是快速重传
- cwnd=cwnd/2
- sshresh=cwnd
- 进入快速恢复
-
- 快速恢复
- 快速恢复算法认为,还有 3 个重复 ACK 收到,说明网络也没那么糟糕,所以没有必要像 RTO 超时那么强烈。
- cwnd和sshresh已经被更新了
- cwnd=sshresh+3,重传重复的那几个ACK,即丢失的那几个数据包
- 再收到重复的cwnd=cwnd+1
- 新的的话,cwnd=sshresh,再次进入拥塞避免
TCP的超时重传机制?
- RTO,一定时间内没收到ACK,就触发,这个时间有算法
- 快速重传,发送的数据有序列号,保证有序
在上图,发送⽅发出了 1,2,3,4,5 份数据:
- 第⼀份 Seq1 先送到了,于是就 Ack 回 2;
- 结果 Seq2 因为某些原因没收到,Seq3 到达了,于是还是 Ack 回 2;
- 后⾯的 Seq4 和 Seq5 都到了,但还是 Ack 回 2,因为 Seq2 还是没有收到;
- 发送端收到了三个 Ack = 2 的确认,知道了 Seq2 还没有收到,就会在定时器过期之前,重传丢失的 Seq2。
- 最后,收到了 Seq2,此时因为 Seq3,Seq4,Seq5 都收到了,于是 Ack 回 6 。
- SACK,带确认的,ACK是说从左往右第一个开始没数据的空白
- D-SACK:告诉发送方哪些报文重复接收了,比如ACK没有到达,发送方重传了
- ACK(Acknowledgment)号在TCP中代表的是接收方期望从发送方接收到的下一个字节的序列号。
- SACK一个代表在快速重传的时候接收到了哪些
- 一个代表了重复接收了哪些,在发送方没有收到ACK的情况重发的情况下
相关文章:

计算机网络八股文
计算机网络体系架构? OSI结构:理论上的 7应用层:定义了应用进程间通信和交互的规则,常见协议有HTTP、SFTP、DNS、WebSocket6表示层:数据的表示、安全、压缩。确保一个系统的应用层所发消息能被另一个系统的应用层读取…...

科普文:一文搞懂jvm原理(四)运行时数据区
概叙 科普文:一文搞懂jvm(一)jvm概叙-CSDN博客 科普文:一文搞懂jvm原理(二)类加载器-CSDN博客 科普文:一文搞懂jvm原理(三)执行引擎-CSDN博客 前面我们介绍了jvm,jvm主要包括两个子系统和两个组件: Class loader(类…...

《昇思25天学习打卡营第5天|数据变换 Transforms》
文章目录 前言:今日所学:1. Common Transforms2. Vision Transforms3. Text Transforms 前言: 我们知道在进行神经网络训练的时候,通常要将原始数据进行一系列的数据预处理操作才会进行训练,所以MindSpore提供了不同类…...

详细分析Oracle修改默认的时间格式(四种方式)
目录 前言1. 会话级别2. 系统级别3. 环境配置4. 函数格式化5. 总结 前言 默认的日期和时间格式由参数NLS_DATE_FORMAT控制 如果需要修改默认的时间格式,可以通过修改会话级别或系统级别的参数来实现 1. 会话级别 在当前会话中设置日期格式,这只会影响…...

以 Vue 3 项目为例,你是否经常遇到 import 语句顺序混乱的问题?要想解决它其实很容易!
大家好,我是CodeQi! 在项目开发过程中,我们经常会遇到项目中的 import 语句顺序混乱的问题。 这不仅会影响代码的可读性,还可能使我们代码在提交的时候产生不必要的冲突。 面对这种情况,要想解决它其实很容易。 通过合理的规范和自动化工具,我们可以确保 import 语句…...
mysql数据库ibdata文件被误删后恢复数据的方法
使用mysql数据库的时候不小心误删除了ibdata和ib_logfile文件,但是幸好.ibd文件还在。这种情况下其实数据还在并未丢失,丢失的是表结构。查询表数据时会报错:ERROR 1146 (42S02): Table ‘testdb.test’ doesn’t exist,其实是说表…...

eBPF技术揭秘:DeepFlow如何引领故障排查,提升运维效率
DeepFlow 实战:eBPF 技术如何提升故障排查效率 目录 DeepFlow 实战:eBPF 技术如何提升故障排查效率 微服务架构系统中各个服务、组件及其相互关系的全景 零侵扰分布式追踪(Distributed Tracing)的架构和工作流程 关于零侵扰持…...

C++视觉开发 三.缺陷检测
一.距离变换 1.概念和功能 距离变换是一种图像处理技术,用于计算图像中每个像素到最近的零像素(背景像素)的距离。它常用于图像分割、形态学操作和形状分析等领域。它计算图像中每个像素到最近的零像素(背景像素)的距…...

使用 Amazon Bedrock Converse API 简化大语言模型交互
本文将介绍如何使用 Amazon Bedrock 最新推出的 Converse API,来简化与各种大型语言模型的交互。该 API 提供了一致的接口,可以无缝调用各种大型模型,从而消除了需要自己编写复杂辅助功能函数的重复性工作。文中示例将展示它相比于以前针对每…...
第二十一章 函数(Python)
文章目录 前言一、定义函数二、函数参数三、参数类型四、函数返回值五、函数类型1、无参数,无返回值2、无参数,有返回值3、有参数,无返回值4、有参数,有返回值 六、函数的嵌套七、全局变量和局部变量1、局部变量2、全局变量 前言 …...

使用pyqt5编写一个七彩时钟
使用pyqt5编写一个七彩时钟 效果代码解析定义 RainbowClockWindow 类初始化用户界面显示时间方法 完整代码 在这篇博客中,我们将使用 PyQt5 创建一个简单的七彩数字时钟。 效果 代码解析 定义 RainbowClockWindow 类 class RainbowClockWindow(QMainWindow):def _…...

【Linux】:命令行参数
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux命令行参数的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入…...

高考假期预习指南,送给迷茫的你
高考结束,离别了熟悉的地方,踏上远方。 你,,迷茫吗? 大学是什么?到了大学我该怎样学习?真像网上说的毕业即失业吗? 大学是一个让你学会一技之长的地方,到了大学找到自…...
独孤思维:负债了,还可以翻身吗
01 其实独孤早年也负债。 负债并不可怕。 可怕的是因为负债而催生的想要快速赚钱的心态。 越是有这种心态,越是不可能赚到钱。 相反,可能会让你陷入恶性循环中。 盲目付费,盲目寄希望于某个项目或者某个人。 当成唯一的救命稻草。 这…...

SwiftUI八与UIKIT交互
代码下载 SwiftUI可以在苹果全平台上无缝兼容现有的UI框架。例如,可以在SwiftUI视图中嵌入UIKit视图或UIKit视图控制器,反过来在UIKit视图或UIKit视图控制器中也可以嵌入SwiftUI视图。 本文展示如何把landmark应用的主页混合使用UIPageViewController和…...

RedHat9 | 内部YUM本地源服务器搭建
服务器参数 标识公司内部YUM服务器主机名yum-server网络信息192.168.37.1/24网络属性静态地址主要操作用户root 一、基础环境信息配置 修改主机名 [rootyum-server ~]# hostnamectl hostname yum-server添加网络信息 [rootyum-server ~]# nmcli connection modify ens160 …...

无偏归一化自适应心电ECG信号降噪方法(MATLAB)
心电信号作为一种生物信号,含有大量的临床应用价值的信息,在现代生命医学研究中占有重要的地位。但心电信号低频、低幅值的特点,使其在采集和传输的过程中经常受到噪声的干扰,使心电波形严重失真,从而影响后续的病情分…...

AI基本概念(人工智能、机器学习、深度学习)
人工智能 、 机器学习、 深度学习的概念和关系 人工智能 (Artificial Intelligence)AI- 机器展现出人类智慧机器学习 (Machine Learning) ML, 达到人工智能的方法深度学习 (Deep Learning)DL,执行机器学习的技术 从范围…...

LabVIEW幅频特性测试系统
使用LabVIEW软件开发的幅频特性测试系统。该系统整合了Agilent 83732B信号源与Agilent 8563EC频谱仪,通过LabVIEW编程实现自动控制和数据处理,提供了成本效益高、操作简便的解决方案,有效替代了昂贵的专用仪器,提高了测试效率和设…...

校园卡手机卡怎么注销?
校园手机卡的注销流程可以根据不同的运营商和具体情况有所不同,但一般来说,以下是注销校园手机卡的几种常见方式,我将以分点的方式详细解释: 一、线上注销(通过手机APP或官方网站) 下载并打开对应运营商的…...

Python训练营打卡Day40(2025.5.30)
知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout # 先继续之前的代码 import torch import …...
整理了Windows(7—11)官方镜像下载链接和各版本区别介绍
原文《整理了Windows(7—11)官方镜像下载链接和各版本区别介绍》 引言 在安装或重装Windows系统时,使用微软官网提供的正版ISO镜像可以保证系统完整性和安全更新,避免使用第三方盗版镜像带来的恶意软件、广告风险。 本期汇总了微…...
Java构建Tree并实现节点名称模糊查询
乐于学习分享… 大家加油努力 package com.tom.backtrack;import lombok.Data; import lombok.Getter;import java.util.ArrayList; import java.util.List; import java.util.Objects;/*** 树节点** author zx* date 2025-05-27 19:51*/ Data public class TreeNode {private …...

从抄表到节能,电费管理系统如何重构公寓运营场景——仙盟创梦IDE
租房公寓电费管理系统是集智能计量、自动化计费、线上缴费、数据管理于一体的综合性解决方案,旨在解决传统电费管理中人工抄表误差大、收费效率低、纠纷频发等痛点。系统通过部署智能电表实时采集用电数据,结合云计算与大数据分析技术,实现电…...

国产 BIM 软件万翼斗拱的技术突破与现实差距 —— 在创新与迭代中寻找破局之路
万翼斗拱在国产BIM领域迈出重要一步,凭借二三维一体化、参数化建模及AI辅助设计等功能形成差异化竞争力,在住宅设计场景中展现效率优势,但与国际主流软件相比,在功能完整性、性能稳定性和生态成熟度上仍有显著差距,需通…...
vue3+Pinia+element-plus 后台管理系统项目实战记录
vue3Piniaelement-plus 后台管理系统项目实战记录 参考项目:https://www.bilibili.com/video/BV1L24y1n7tB 全局api provide、inject vue2 import api from/api vue.propotype.$api apithis.$api.xxxvue3 import api from/api app.provide($api, api)import {…...

⭐️⭐️⭐️ 模拟题及答案 ⭐️⭐️⭐️ 大模型Clouder认证:RAG应用构建及优化
考试注意事项: 一、单选题(21题) 检索增强生成(RAG)的核心技术结合了什么? A. 图像识别与自然语言处理 B. 信息检索与文本生成 C. 语音识别与知识图谱 D. 数据挖掘与机器学习 RAG技术中,“建立索引”步骤不包括以下哪项操作? A. 将文档解析为纯文本 B. 文本片段分割(…...
Keepalived 配置 VIP 的核心步骤
Keepalived 配置 VIP 的核心步骤主要涉及安装软件、主备节点配置及服务管理。以下是具体操作指南: 一、安装 Keepalived Ubuntu/Debian 系统 sudo apt update sudo apt install keepalived CentOS/RHEL 系统 sudo yum install keepalived 注:需确保已配置 EPE…...

AI智能体|扣子(Coze)搭建【自动生成超高质量PPT】工作流
各位好久不见,你的失踪人口又回来了,已经超过一周的时间没有进行文章的更新了。 没更新的这段时间,主要还是因为工作上的调整以及身体生病所导致的停更,具体以后再说。 我们先讲今天的主要主题,使用 Coze 智能体一键生…...
深入理解设计模式之命令模式
下面是一篇关于设计模式之命令模式(Command Pattern)的详细博客,并附有 Java 实现代码示例。 深入理解设计模式之:命令模式(Command Pattern) 一、什么是命令模式? 命令模式(Comma…...