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

2024-02-16 06:28

本文主要是介绍面试计算机网络框架八股文十问十答第六期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

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.chinasem.cn/article/713748

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分