计算机网络八股文

devtools/2024/9/22 16:45:54/

网络>计算机网络体系架构?

  • 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解析器:

  1. 本地解析器查询根DNS服务器

  2. 根DNS服务器返回 .com TLD服务器地址。

  3. 本地解析器查询 .com TLD服务器

  4. .com TLD服务器返回 example.com 的权威DNS服务器地址。

  5. 本地解析器查询 example.com 的权威DNS服务器

  6. 权威DNS服务器返回 www.example.com 的IP地址。

  7. 本地解析器将IP地址返回给客户端。

迭代查询举例:

客户端想要解析 www.example.com 的IP地址,依次查询各个DNS服务器

  1. 客户端查询本地DNS解析器。

  2. 本地解析器查询根DNS服务器

  3. 根DNS服务器返回 .com TLD服务器地址。

  4. 本地解析器将 .com TLD服务器地址返回给客户端。

  5. 客户端查询 .com TLD服务器

  6. .com TLD服务器返回 example.com 的权威DNS服务器地址。

  7. 客户端查询 example.com 的权威DNS服务器

  8. 权威DNS服务器返回 www.example.com 的IP地址。

  9. 客户端获取到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三次握手
    • 如何保证可靠性
      • 内置的前向纠错和重传
        • 编码:堆原始数据通过特定的编码算法进行编码生成纠错码
        • 传输:连同纠错码一起发送
        • 解码:接收到数据后解码并纠正,恢复原始数据
        • 前向纠错会增加带宽需求,高效的重传才是主要的SACK,快速重传
      • 流量控制和拥塞控制

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的情况重发的情况下

TCP和UDP的区别?

  • 可靠性:校验和、序列号、ack,RTO,快速等等
  • 传输形式(前者字节流,后者数据段报文)
  • 传输效率:UDP不确认,不重传,没有超时,没有序列号,没有流量控制和拥塞控制,但是QUIC实现了
  • 所需资源
  • 首部字节20-60,UDP8个
  • 面向连接

IP协议的定义和作用?

  • 定义数据包的格式和处理规则
  • 作用:
    • 寻址
    • 路由
    • 分片和重组

ICMP协议的功能?

  • 面向无连接的协议,用于传输出错报告控制信息
  • 包括报告错误、状态信息等
  • 当遇到IP无法访问,会自动发送ICMP

ping的原理?

  • 一个网络工具,主要用来测试网络连接的可达性和延迟。
  • Ping 的过程主要基于 ICMP(Internet Control Message Protocol,互联网控制消息协议)实现,其基本过程包括:

    ①、当执行 Ping 命令,如ping javabetter.cn,Ping 首先解析域名获取 IP 地址,然后向目标 IP 发送一个 ICMP Echo Request 消息。

    ②、当目标 IP 收到 ICMP Echo Request 消息后,它会生成一个 ICMP Echo Reply 消息并返回,即 Ping 响应消息。

    ③、发起 Ping 命令的设备接收到 ICMP Echo Reply 消息后,计算并显示从发送 Echo Request 到接收到 Echo Reply 的时间(通常称为往返时间 RTT,Round-Trip Time),以及可能的丢包情况。


http://www.ppmy.cn/devtools/57194.html

相关文章

Elasticsearch 第四期:搜索和过滤

序 2024年4月&#xff0c;小组计算建设标签平台&#xff0c;使用ES等工具建了一个demo&#xff0c;由于领导变动关系&#xff0c;项目基本夭折。其实这两年也陆陆续续接触和使用过ES&#xff0c;两年前也看过ES的官网&#xff0c;当时刚毕业半年多&#xff0c;由于历史局限性导…

香橙派AIpro如何赋能AI+边缘流媒体设备

文章目录 &#xff08;一&#xff09;前言&#xff08;二&#xff09;AI边缘流媒体设备展示&#xff08;三&#xff09;赋能AI边缘流媒体设备1、准备开发环境2、在板子中下载编译安装SRS3、基本推拉流测试4、多路推流性能测试 &#xff08;四&#xff09;一些注意事项1、开发板…

vue 组件el-tree添加结构指示线条

效果展示: 注意&#xff1a;组件中需要添加:indent"0" 进行子级缩进处理&#xff0c;否则会出现子级缩进逐级递增 :expand-on-click-node"false" 设置点击箭头图标才会展开或者收起 代码&#xff1a; <el-tree class"tree filter-tree" :da…

Java web应用性能分析之【prometheus监控K8s指标说明】

常规k8s的监控指标 单独 1、集群维度 集群状态集群节点数节点状态&#xff08;正常、不可达、未知&#xff09;节点的资源使用率&#xff08;CPU、内存、IO等&#xff09; 2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控…

行人检测技术:思通数科大模型在自动驾驶安全中的应用

在自动驾驶技术飞速发展的今天&#xff0c;行人检测已成为确保道路交通安全的关键技术之一。本文将探讨如何结合思通数科大模型和计算机视觉技术&#xff0c;实现在城市交通环境中对行人的高效检测&#xff0c;为自动驾驶车辆提供必要的行人安全保障。 引言 行人检测技术是利…

python-字典

为什么需要字典 字典的定义 字典数据的获取 字典的嵌套 嵌套字典的内容获取 字典的注意事项&#xff1a; 字典的常用操作 新增元素 更新元素 删除元素 清空字典 汇总 字典的特点

Android常用加解密算法总结

Android开发中对于数据的传输和保存一定会使用加密技术&#xff0c;加密算法是最普遍的安保手段&#xff0c;多数情况数据加密后在需要使用源数据时需要再进行解密&#xff0c;但凡是都有例外。下面从可逆加密、不可逆、不纯粹加密三种方式记录一下常见的加解密算法。 加密技术…

分析Profiler Timeline中的算子序列,通过寻找频繁项集的办法,得到TOPK可融合的算子序列

分析Profiler Timeline中的算子序列,通过寻找频繁项集的办法,得到TOPK可融合的算子序列 1.相关链接2.代码【仅分析带通信算子的Pattern】3.在实际工程中发现 [all_gather, matrix_mm_out]频率最高4.[Ascend MC2](https://gitee.com/ascend/MindSpeed/blob/master/docs/features…