面试计算机网络框架八股文十问十答第六期

面试计算机网络框架八股文十问十答第六期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)DNS 协议是什么

DNS(Domain Name System)是一种用于将域名转换为 IP 地址的分布式命名系统。简单来说,它充当了互联网上的“电话簿”,将人类可读的域名(如example.com)转换为计算机可识别的 IP 地址(如192.0.2.1)。这种系统使得用户能够通过简单易记的域名来访问网站,而无需记住复杂的 IP 地址。

2)DNS同时使用TCP和UDP协议?

是的,DNS可以同时使用TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议。通常情况下,DNS查询使用UDP协议,因为UDP是一种无连接的、速度较快的协议,适合用于简单的查询。但是,当DNS响应超过512字节时,会使用TCP协议进行通信,因为UDP协议有一个限制,无法传输超过512字节的数据。

3)DNS完整的查询过程

DNS查询过程可以分为以下几个步骤:

  1. 本地解析器查询缓存:首先,客户端会查询本地DNS解析器的缓存,看是否已经解析过该域名。如果有,就直接返回结果。
  2. 本地解析器向根域名服务器查询:如果本地解析器缓存中没有相应的记录,它会向根域名服务器发送查询请求,询问该域名的顶级域名服务器的地址。
  3. 根域名服务器返回顶级域名服务器地址:根域名服务器收到请求后,会返回顶级域名服务器的地址,比如.com、.net等顶级域名服务器。
  4. 本地解析器向顶级域名服务器查询:本地解析器收到顶级域名服务器的地址后,会向该服务器发送查询请求,询问该域名的权威域名服务器的地址。
  5. 顶级域名服务器返回权威域名服务器地址:顶级域名服务器收到请求后,会返回权威域名服务器的地址,该服务器通常由注册商或域名所有者管理。
  6. 本地解析器向权威域名服务器查询:本地解析器收到权威域名服务器的地址后,会向该服务器发送查询请求,请求解析该域名对应的IP地址。
  7. 权威域名服务器返回IP地址:权威域名服务器收到请求后,会返回该域名对应的IP地址给本地解析器。
  8. 本地解析器将IP地址返回给客户端:最后,本地解析器会将获取到的IP地址返回给客户端,并将该记录存储在缓存中,以备后续查询使用。

这是一个简化的DNS查询过程,实际情况可能会更加复杂,特别是在涉及到DNS缓存、负载均衡和安全策略等方面。

4)迭代查询与递归查询

  • 迭代查询:在迭代查询中,客户端会向DNS服务器发送查询请求,如果该服务器能够解析该域名,就会返回结果;如果不能解析,它会返回一个指向另一个DNS服务器的引用。然后客户端将向该引用的服务器发送查询请求,直到最终找到解析结果或者遇到错误。
  • 递归查询:在递归查询中,客户端向DNS服务器发送查询请求,并要求服务器帮助解析该域名。如果服务器能够解析,它会返回结果;如果不能解析,它会代表客户端继续向其他DNS服务器发送查询请求,直到最终找到解析结果或者遇到错误,并将最终结果返回给客户端。

5)DNS 记录和报文

  • DNS记录:DNS记录是存储在DNS服务器中的数据,用于将域名映射到相应的IP地址或其他信息。常见的DNS记录类型包括:
    • A记录:将域名映射到IPv4地址。
    • AAAA记录:将域名映射到IPv6地址。
    • CNAME记录:将域名指向另一个域名,实现域名的别名。
    • MX记录:指定邮件交换服务器,用于电子邮件路由。
    • NS记录:指定该域名的域名服务器。
    • SOA记录:指定该域名的起始授权机构。
  • DNS报文:DNS报文是在DNS查询和响应过程中传输的数据包。它包含了查询或响应的各种字段和标志位,以及相关的查询参数或响应结果。DNS报文一般分为查询报文和响应报文,它们的格式由DNS协议规定。

6)OSI七层模型

OSI(Open Systems Interconnection)七层模型是一个用于理解和描述计算机网络协议的抽象模型,由国际标准化组织(ISO)制定。这个模型将计算机网络通信的过程分为七个层次,每个层次都负责不同的功能和任务。这些层次从底部到顶部分别是:

  1. 物理层(Physical Layer):负责传输原始比特流,并控制物理设备间的连接。
  2. 数据链路层(Data Link Layer):提供了节点间可靠的数据传输,并处理物理层的错误。
  3. 网络层(Network Layer):负责在不同网络间传输数据包,并处理路由和转发。
  4. 传输层(Transport Layer):提供端到端的可靠数据传输,包括数据分段、流量控制和错误恢复。
  5. 会话层(Session Layer):管理两个节点间的通信会话,包括会话的建立、维护和终止。
  6. 表示层(Presentation Layer):负责数据格式的转换、加密和压缩,以确保不同系统间的数据交换能够顺利进行。
  7. 应用层(Application Layer):提供用户与网络服务之间的接口,包括各种网络应用协议,如HTTP、FTP、SMTP等。

这个模型有助于理解不同网络协议在网络通信中的作用和位置。

7)TCP/IP五层协议

TCP/IP五层协议,也被称为TCP/IP协议栈,是互联网通信中使用的基本网络协议,包括以下五个层次:

  1. 物理层:负责传输比特流,定义了电缆、光纤等物理媒介的规范。
  2. 数据链路层:处理数据帧的传输,确保在相邻节点间的可靠通信,包括对物理层错误的检测和纠正。
  3. 网络层:处理数据包在网络中的寻址和路由,负责将数据从源主机传输到目标主机,涉及IP地址和路由表的使用。
  4. 传输层:提供端到端的通信,包括TCP(Transmission Control Protocol)和UDP(User Datagram Protocol),负责数据的可靠性、流量控制和错误恢复。
  5. 应用层:为用户提供网络服务,包括常见的应用协议如HTTP、FTP、SMTP等。

8)TCP 和 UDP的概念及特点

  • TCP(Transmission Control Protocol):TCP是一种面向连接的、可靠的传输协议。它通过三次握手建立连接,提供数据的顺序传输、重传机制和流量控制,确保数据的可靠性。TCP适用于需要可靠传输、顺序传输的应用,如文件传输、网页访问等。
  • UDP(User Datagram Protocol):UDP是一种无连接的、不可靠的传输协议。它不进行握手和连接建立,只是简单地传输数据包,不提供数据的可靠性和流量控制。UDP适用于对实时性要求较高、容忍少量丢失的应用,如音频、视频流传输等。

9)TCP和UDP的区别

  • 连接性:TCP是面向连接的,需要进行三次握手建立连接;UDP是无连接的,不需要建立连接。
  • 可靠性:TCP提供可靠的数据传输,包含重传机制和错误恢复;UDP不提供可靠性保证,数据包可能会丢失或乱序。
  • 流量控制:TCP具有流量控制机制,通过窗口控制确保发送和接收之间的平衡;UDP不提供流量控制,发送者以固定速率发送数据。
  • 传输速度:由于TCP提供可靠性,其传输速度可能较慢;UDP由于不保证可靠性,传输速度较快。

10)TCP和UDP的使用场景

  • TCP 使用场景
    • 文件传输:FTP等协议使用TCP来确保文件的完整传输。
    • 网页访问:HTTP协议使用TCP进行可靠的数据传输。
    • 邮件传输:SMTP等协议使用TCP来确保邮件的可靠传递。
    • 远程登录:SSH等协议使用TCP来提供安全的远程登录服务。
  • UDP 使用场景
    • 实时音视频传输:VoIP、视频会议等应用通常使用UDP,因为对实时性要求高,可以容忍少量数据丢失。
    • 游戏应用:在线游戏常使用UDP,因为对延迟敏感,而且可以容忍一定程度的丢包。
    • DNS查询:DNS使用UDP进行域名解析查询,因为查询通常是短时且轻量级的,不需要TCP的可靠性。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

已 300 + Star!

⭐点赞⭐收藏⭐不迷路!⭐

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

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

相关文章

31.File文件

File文件 1. 概述2. 构造方法2.1 方法2.2 代码示例 3. 成员方法3.1 判断、获取的方法3.1.1 方法3.1.2 代码示例 3.2 创建、删除的方法3.2.1 方法3.2.2 代码示例 3.3 获取、遍历的方法3.3.1 重点方法3.3.1.1 方法3.3.1.2 代码示例 3.3.2 所有方法3.3.2.1 方法3.3.2.2 代码示例 4…

《Docker快速入门:从0到1构建你的第一个容器!》

《Docker快速入门:从0到1构建你的第一个容器!》 前言 欢迎来到Docker的世界,一个让应用程序打包、部署和运行更加容易的神奇平台。Docker改变了我们对于应用开发和分发的看法,它通过容器技术让软件的携带和运行变得前所未有的轻…

OpenGL-ES 学习(4)---- OpenGL-ES 坐标体系

坐标体系 我们知道 OpenGL -ES 坐标系中每个顶点的 x,y,z 坐标都应该在 -1.0 到 1.0 之间,超出这个坐标范围的顶点都将不可见。 将一个物体(图像)渲染到屏幕上,通常经过将物体坐标转换为标准化设备坐标&am…

蓝牙BLE学习-GAP

1.概述 GAP层(Generic access profile-通用访问配置文件)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式的一种,而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的…

(三十八)大数据实战——Atlas元数据管理平台的部署安装

前言 Apache Atlas 是一个开源的数据治理和元数据管理平台,旨在帮助组织有效管理和利用其数据资产。为组织提供开放式元数据管理和治理功能 ,用以构建其数据资产目录,对这些资产进行分类和管理,形成数据字典 。并为数据分析师和数…

容器高级知识:Kubernetes Pod 适配器模式详解

Kubernetes Pod 适配器(Adapter)模式详解 Kubernetes Pod 适配器模式是侧车(Sidecar)模式的一个特例,其中使用专用的 适配器容器 在主应用程序容器和其他服务或客户端之间 翻译 数据或信号。它充当桥梁,调整通信格式或协议以实现…

深度学习之反向传播算法

反向传播算法 数学公式算法代码结果 算法中一些函数的区别 数学公式 算法代码 这里用反向传播算法,计算 y w * x模型 import numpy as np import matplotlib.pyplot as ply#反向传播算法,需要使用pytorch框架, #这里导入pytorch框架&#xf…

MySQL 基础知识(四)之表操作

目录 1 约束 2 查看已有表 3 创建表 4 查看表结构 5 修改表 6 删除表 1 约束 主键约束 primary key:唯一,标识表中的一行数据,此列的值不可重复,且不能为 NULL,此外,可以多个列组成主键唯一约束 uniq…

Phobos捆绑某数控软件AdobeIPCBroker组件定向勒索

前言 Phobos勒索病毒最早于2019年被首次发现并开始流行起来,该勒索病毒的勒索提示信息特征与CrySiS(Dharma)勒索病毒非常相似,但是两款勒索病毒的代码特征却是完全不一样,近日笔者在逛某开源恶意软件沙箱的时候发现了一款Phobos勒索病毒捆绑…

Windows编程环境配置!

喜欢的话麻烦大家多点点关注,谢谢! 原文地址:Windows编程环境配置! - Pleasure的博客 下面是正文内容: 前言 近期闲来无事,就想着把Windows系统中的环境给完善整理一下。方便后续码字时的不时之需。 正文…

百度云AI

百度云AI概述 Face腾讯优图科大讯飞 百度人脸识别基于深度学习的人脸识别方案,准确识别图片中的人脸信息,提供如下功能: 人脸检测:精准定位图中人脸,获得眼、口、鼻等72个关键点位置,分析性别、年龄、表…

[python] 罗技动态链接驱动库DLL 控制 键鼠

[python] 罗技动态链接驱动库DLL 控制 键鼠 最近在玩搬砖游戏晶核, 每天有很多重复繁琐的"打卡"操作, 得知隔壁御三家游戏就有大佬做了自动收割的辅助工具,我就想模仿写一个.不过大佬们写的开源工具厉害得多,加了神经网络自动识别,实现寻路和点击功能.我目前最多就是…

模拟电子技术——分压式偏置放大电路、多级放大电路、差动放大电路、互补输出级

文章目录 前言基本放大电路链接,上一篇 [基本放大电路](https://blog.csdn.net/weixin_47541751/article/details/136112075?spm1001.2014.3001.5502) 一、分压式偏置放大电路什么是分压式偏置电路分压式电路组成电路分析估算静态工作点 二、多级放大电路什么是多级…

仰暮计划|“他们吃树皮,挖野菜,将玉米棒和玉米皮也做成食物来解饥”

我的姥姥今年七十岁了,她病的很严重,我趁着在病房的这段时间对她进行了采访。 我的姥姥1953年出生在一个小山村里,她有四个兄弟和两个姐妹,据她说,她的父母既是爱她的又是严厉的,因为孩子多并且生活困难&a…

python - OSError:错误没有名为 [‘pytorch_model.bin‘

python - OSError:错误没有名为 [‘pytorch_model.bin’] 自己训练的模型存储好了以后 model MT5ForConditionalGeneration.from_pretrained(“ner/best”) 之前还可以跑 现在报错 错误没有名为 [‘pytorch_model.bin’] 还原了一下conda env 把四版变成三版了 …

C++面向对象程序设计-北京大学-郭炜【课程笔记(一)】

C面向对象程序设计-北京大学-郭炜【课程笔记(一)】 1、引用的概念1.1、引用应用的简单示例1.2、常引用 2、"const"关键字的用法(常量指针/指针常量)3、动态内存分配4、内联函数5、函数重载5.1、什么是函数重载5.2、函数…

C# CAD2016 判断多边形的方向正时针或逆时针旋转

方法一&#xff1a;基于相邻顶点相对位置判断顺时针排列 // 计算当前子序列是否为顺时针排列 for (int i 1; i < outerPoints.Count; i) {int index (startVertexIndex i) % outerPoints.Count;int prevIndex (startVertexIndex i - 1) % outerPoints.Count;Point2d c…

基于JAVA,SpringBoot和Vue二手房屋销售系统设计

摘要&#xff1a; 本研究旨在设计并实现一个基于JAVA, SpringBoot和Vue技术的二手房屋销售系统。该系统采用当前流行的前后端分离架构&#xff0c;后端使用SpringBoot框架快速搭建RESTful API&#xff0c;提供稳定且高效的服务端应用&#xff1b;前端则通过Vue.js框架构建动态…

力扣:122. 买卖股票的最佳时机 II

动态规划思路&#xff1a; 1.先声明一个dp数组来表示在下标为i时手中有无股票的最大利润&#xff0c;dp【i】【0】表示为在下标为i时&#xff0c;手中没有股票。dp【i】【1】表示为在下标为i时&#xff0c;手中有股票。 2.在这题中我们要判断两种情况分别是在下标i时手中有股…

Linux用户常用命令——Linux命令(一)

大家好&#xff0c;从这篇文章开始我将开始进行Linux常用命令的学习&#xff0c;本专栏的每一个知识点我都会尽量在Linux系统中手操实现一遍。如果在读这篇文章的你也想熟悉Linux常用操作命令&#xff0c;我非常推荐你也搭个Linux系统进行实操学习。因为Linux常用的命令的知识点…