当前位置: 首页 > news >正文

【每日八股】计算机网络篇(三):IP

目录

  • DNS 查询服务器的基本流程
  • DNS 采用 TCP 还是 UDP,为什么?
    • 默认使用 UDP 的原因
    • 需要使用 TCP 的场景?
    • 总结
  • DNS 劫持是什么?解决办法?
  • 浏览器输入一个 URL 到显示器显示的过程?
    • URL 解析
    • TCP 连接
    • HTTP 请求
    • 页面渲染
    • 断开连接
  • PING 如何工作?
  • Cookie 和 Session 的区别是什么?
    • Cookie
    • Session
    • 差别
  • IPv4 和 IPv6 的区别?
  • 什么是跨域?什么情况下会发生跨域请求?
    • 概念
    • 解决办法

DNS 查询服务器的基本流程

  1. 首先,用户在浏览器输入域名后,浏览器会先检查自身缓存,若缓存中存在且未过期,则直接返回对应的 IP 地址。若浏览器中无缓存,则操作系统检查本地 Hosts 文件和系统 DNS 缓存。
  2. 若前两步骤未命中,则向本地 DNS 服务器发送递归查询请求;
  3. 本地 DNS 服务器无缓存,则以 DNS 客户的身份向根域名服务器发出解析请求;
  4. 根域名服务器收到请求后,判断该域名所属域,将对应的顶级域名服务器的 IP 地址返回给本地域名服务器;
  5. 本地域名服务器向顶级域名服务器发出解析请求报文;
  6. 顶级域名服务器收到请求后,将对应的授权域名服务器的 IP 地址返回给本地域名服务器;
  7. 本地域名服务器向授权域名服务器发起解析请求;
  8. 授权域名服务器收到请求后,将查询结果返回给本地域名服务器
  9. 本地域名服务器将查询结果保存到本地缓存,同时将 IP 地址返回给客户机;
  10. 用户通过获得的 IP 地址与目标服务器建立 TCP 连接,然后开始传输数据。

DNS 采用 TCP 还是 UDP,为什么?

DNS 主要使用 UDP(用户数据报协议),但在某些特定场景下会切换到 TCP(传输控制协议)。具体原因如下:

默认使用 UDP 的原因

高效性:UDP 是无连接的协议,无需建立和断开连接,减少了通信延迟。DNS 查询通常是简单的请求-响应模式,UDP 能更快地完成单次交互。

小数据包的适用性:DNS 的查询和响应通常较小(不超过 512 字节),UDP 单词传输即可满足需求。

低资源消耗:UDP 的头部开销更小(8 字节 vs. TCP 的 20 字节),适合高频的 DNS 查询场景。

需要使用 TCP 的场景?

响应数据过大:当 DNS 响应数据超过 512 字节(超过 UDP 的最大限制)时,服务器会返回截断标志(TC 位),客户端改用 TCP 重新请求(TCP 支持分段传输)。

区域传输:主 DNS 服务器向从服务器同步全量区域数据时,需通过 TCP 端口 53 完成,确保大量数据的可靠传输。

DNSSEC 拓展:启用 DNSSEC (DNS 安全拓展)后,数字签名会增加响应大小,可能超过 UDP 限制,强制使用 TCP。

可靠性要求:TCP 提供丢包重传、按需到达等机制,适合数据完整性要求高的场景(比如关键配置同步)。

总结

常规查询:UDP(快速、高效);

大规模传输及可靠性要求:TCP(如区域传输、大响应、DNSSEC)。

DNS 劫持是什么?解决办法?

DNS 劫持是一种网络攻击手段,攻击者通过篡改域名解析结果,将用户引导至虚假网站或插入广告

常见形式如下:

  • 路由器劫持:攻击者入侵路由器修改 DNS 设置;
  • 本地劫持:恶意软件修改设备 hosts 文件或 DNS 配置;
  • ISP 劫持:网络服务商主动劫持用于广告投放;
  • 中间人攻击:在传输链路中截获并篡改 DNS 响应。

解决办法:

  • 更换可信 DNS;
  • 设备检查;
  • 路由器防护;
  • 网络加密;
  • 定期更换重要账户密码;
  • 启用双重身份验证;
  • 使用网络监控工具(比如 Wireshark)检测异常请求;

浏览器输入一个 URL 到显示器显示的过程?

URL 解析

用户在浏览器输入域名后,浏览器首先从自身的缓存中查找是否存在域名,存在就取出对应的 IP 地址,否则去 OS 缓存查找。前两步均未命中的情况下,浏览器调用 OS 的 API 使操作系统开启 DNS 解析服务,递归地从本地 DNS 到 根域 DNS 再到顶级域 DNS 最后到权威域 DNS 请求解析,最终由权威域 DNS 返回域名的 IP 地址,浏览器会对其进行缓存。

TCP 连接

在 URL 解析过程中得到真实的 IP 地址后,浏览器会调用 Socket 函数,根据 IP 和端口与目标建立 TCP 连接。

HTTP 请求

浏览器向服务器发送一个 HTTP 请求,HTTP 协议是建立在 TCP 协议之上的应用层协议,其本质是在建立起的 TCP 连接之上,按照 HTTP 协议标准发送一个索要网页的请求。请求包括请求行、请求头、请求体三部分,有 GET、POST 等方法

页面渲染

服务器在收到浏览器发送的 HTTP 请求之后,会将收到的 HTTP 报文封装成 HTTP Request 对象,并通过不同的 Web 服务器进行处理,处理完的结果以 HTTP Response 对象的形式返回,包括状态码、响应头和响应报文三部分。

断开连接

数据传输完毕后,客户端和服务端通过四次挥手断连。

PING 如何工作?

PING(Packet Internet Groper)是一种网络诊断工具,用于测试两台设备之间的连通性。其核心原理是通过 ICMP 协议(Internet Control Message Protocol)发送探测数据包并等待响应。

ICMP主要的功能包括:确认IP包是否成功送达目标地址、报告发送过程中IP包被废弃的原因、改善网络设置等。在IP通信中如果某个IP包因为某种原因未能达到目标地址,具体的原因将由ICMP通知。

PING 的工作流程如下:

  1. 发送 Echo Request:首先源设备构造一个 ICMP Echo Request 数据包,包括目标 IP、序列号和时间戳;
  2. 数据包经过路由器逐跳转发,没经过一个路由,TTL 减一,若 TTL 归零,则路由器丢弃包并返回 ICMP Time Exceeded 消息;
  3. 目标设备收到 Echo Request 后,检查 ICMP 报文合法性,构造 ICMP Echo Reply 报文,将 Reply 发回源设备;
  4. 源设备收到 Echo Reply 之后,计算往返时间 RTT,统计丢包率。

Cookie 和 Session 的区别是什么?

Cookie

Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务器两个请求是否来自同一浏览器。

作用

  • 会话状态管理(如用户登录状态、购物车、游戏分数等其它需要记录的信息);
  • 个性化设置(如用户自定义设置、主题等);
  • 浏览器行为跟踪(分析用户行为等);

Session

Session代表着服务器和客户端一次会话的过程。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。

差别

  • 保存形式不同:Cookie 保存在客户端(浏览器),Session 保存在服务器;
  • 存取方式不同:Cookie 只能保存 ASCII,Session 可保存任意数据类型;
  • 有效期不同:Cookie 可设置为长时间保持,比如默认登录;Session 一般时效较短,客户端关闭或超时,Session 都会失效。
  • 存储大小不同:单个 Cookie 保存的数据不超过 4K,Session 可存储的数据远高于 Cookie。

IPv4 和 IPv6 的区别?

  • IPv6 的首部长度是 40 个字节,相对 IPv4 的首部长度 24 字节要长,但 IPv6 首部结构比 IPv4 简单。
  • IPv6 把 IP 地址由 32 位增加到 128 位,从而能够支持更大的地址空间。IPv6 简化了路由, 加快了路由速度。
  • IPv6 的可选项不放入报头,而是放在一个个独立的扩展头部。如果不指定路由器不会打开处理扩展头部, IPv6 放宽了对可选项长度的严格要求 (IPv4 的可选项总长最多为 40 字节) ,并可根据需要随时引入新选项。
  • IPv6 协议支持地址自动配置,这是一种即插即用的机制。IPv6 节点通过地址自动配置得到 IPv6 地址和网关地址。IPv6 支持无状态地址自动配置和状态地址自动配置两种地址自动配置方式。它会给配置 128 位的地址带来很大的方便,特别是无状态地址自动配置。
  • 在 IPv6 中加入了关于身份验证、数据一致性和保密性的内容。

什么是跨域?什么情况下会发生跨域请求?

概念

跨域(Cross-Origin)是指浏览器出于安全考虑,限制不同源(协议、域名、端口)之间的资源交互。常见的跨域场景包括:

  • 前后端分离开发时,前端localhost:3000调用后端localhost:8080
  • 调用第三方 API(如支付接口、地图服务);
  • 多子域名系统;
  • CDN 资源加载;

解决办法

  • Nginx:使用 Nginx 作为代理服务器和用户交互,用户就只需要在 80 端口上进行交互就可以了,这样就避免了跨域问题。
  • JSONP:网页通过添加一个 script 元素,向服务器请求 JSON 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来。缺点是只支持 get 请求,不支持 post 请求
  • CORS:跨域资源分享。

相关文章:

【每日八股】计算机网络篇(三):IP

目录 DNS 查询服务器的基本流程DNS 采用 TCP 还是 UDP,为什么?默认使用 UDP 的原因需要使用 TCP 的场景?总结 DNS 劫持是什么?解决办法?浏览器输入一个 URL 到显示器显示的过程?URL 解析TCP 连接HTTP 请求页…...

Gartner:数据安全平台DSP提升数据流转及使用安全

2025 年 1 月 7 日,Gartner 发布“China Context:Market Guide for Data Security Platforms”(《数据安全平台市场指南——中国篇》,以下简称指南),报告主要聚焦中国数据安全平台(Data Securit…...

从vue源码解析Vue.set()和this.$set()

前言 最近死磕了一段时间vue源码,想想觉得还是要输出点东西,我们先来从Vue提供的Vue.set()和this.$set()这两个api看看它内部是怎么实现的。 Vue.set()和this.$set()应用的场景 平时做项目的时候难免不会对 数组或者对象 进行这样的骚操作操作&#xff…...

深入浅出:UniApp 从入门到精通全指南

https://juejin.cn/post/7440119937644101684 uni-app官网 uniapp安卓离线打包流程_uniapp离线打包-CSDN博客 本文是关于 UniApp 从入门到精通的全指南,涵盖基础入门(环境搭建、创建项目、项目结构、编写运行)、核心概念与进阶知识&#x…...

DeepSeek未来发展趋势:开创智能时代的新风口

DeepSeek未来发展趋势:开创智能时代的新风口 随着人工智能(AI)、深度学习(DL)和大数据的飞速发展,众多创新型技术已经逐渐走向成熟,而DeepSeek作为这一领域的新兴力量,正逐步吸引越…...

阻塞队列的实现(线程案例)

一.什么是阻塞队列? 1.如果对于一个满的队列,还要把元素入队列,此时这个队列就会阻塞等待,一直阻塞到这个队列不满为止,从而把这个元素入队列! 2.如果对于一个空的队列,还要从队列拿出元素&…...

http status是什么?常见的http状态码指的是什么意思?

HTTP 状态码 HTTP 状态码(HTTP Status Code)是服务器在响应客户端请求时返回的一个三位数字代码,用于表示请求的处理结果。HTTP 状态码是 HTTP 协议的一部分,帮助客户端(如浏览器或应用程序)了解请求是否成…...

react组件分离,降低耦合

分离前 分离后...

【AI】AI白日梦+ChatGPT 三分钟生成爆款短视频

引言 随着人工智能(AI)技术的快速发展,AI在各个领域都展现出了强大的应用潜力。其中,自然语言处理技术的进步使得智能对话系统得以实现,而ChatGPT作为其中的代表之一,具有自动生成文本的能力,为…...

MYSQL的安装教程

mysql安装分为:普通安装和压缩包安装 压缩包安装很多会存在安装失败的情况,所以我这里就用了普通安装 一、官网下载安装包 www.mysql.com 点击DOWNLOADS: 进入社区版本下载: 点击最下面一行进行下载: 选择第二个离…...

深入解析 C# 中的泛型:概念、用法与最佳实践

C# 中的 泛型(Generics) 是一种强大的编程特性,允许开发者在不预先指定具体数据类型的情况下编写代码。通过泛型,C# 能够让我们编写更灵活、可重用、类型安全且性能优良的代码。泛型广泛应用于类、方法、接口、委托、集合等多个方…...

NUMA架构介绍

NUMA 架构详解 NUMA(Non-Uniform Memory Access,非统一内存访问) 是一种多处理器系统的内存设计架构,旨在解决多处理器系统中内存访问延迟不一致的问题。与传统的 UMA(Uniform Memory Access,统一内存访问…...

数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南

文章目录 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南ChatGPTKimi腾讯元宝DeepSeek 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南 产品隐私设置操作路径隐私协议ChatGPT…...

python爬虫:python中使用多进程、多线程和协程对比和采集实践

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. 多进程爬虫1.1 python多进程样例1.2 实现多进程爬虫2. 多线程爬虫2.1 python多线程样例2.2 实现多线程爬虫3. 协程爬虫3.1 python协程样例3.2 实现协程爬虫在网络爬虫中,为了提高抓取效率,常常需要使用多进程、多线…...

《OpenCV》—— dlib库

文章目录 dlib库是什么?OpenCV库与dlib库对比dlib库安装dlib——人脸应用实例——人脸检测dlib——人脸应用实例——人脸关键点定位dlib——人脸应用实例——人脸轮廓绘制 dlib库是什么? OpenCV库与dlib库对比 dlib库安装 dlib——人脸应用实例——人脸检…...

Linux搜索---find

find搜索 find 命令的核心功能是在指定的目录路径下,递归地搜索文件和目录,并且可以根据多种条件对搜索结果进行筛选,还能对符合条件的文件和目录执行特定操作。 一、基础语法结构 find [起始目录] [匹配条件] [执行操作] # 基本示例 find…...

python之爬虫入门实例

链家二手房数据抓取与Excel存储 目录 开发环境准备爬虫流程分析核心代码实现关键命令详解进阶优化方案注意事项与扩展 一、开发环境准备 1.1 必要组件安装 # 安装核心库 pip install requests beautifulsoup4 openpyxl pandas# 各库作用说明: - requests&#x…...

Blender常用快捷键的汇总

一、基础操作 全选/取消全选:A(全选)、AA(连续按两次A取消全选)复制物体:Shift D(复制后需点击确认位置)移动物体:G(按X/Y/Z可约束轴向移动)旋转…...

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件,找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…...

Unity 文字高度自适应

期望 文字有字号限制,输入文字文字后先判断高度是否适用于限制字号,若处于最小字号时高度任不适用,则调整RectTransform 的高度。 核心代码 每次输入文字时先将字号设定为原始字号。 comp.fontSize fontSize; comp.text content; 拓展T…...

Teaching Small Language Models Reasoning throughCounterfactual Distillation

2024.emnlp-main.333.pdfhttps://aclanthology.org/2024.emnlp-main.333.pdf 1.概述 大型语言模型(LLM),如GPT-3,在各种下游任务中表现出色,包括通过链式思维(CoT)进行问题解答。CoT鼓励模型在解决问题时生成中间推理步骤。尽管LLM取得了成功,但由于模型大小的限制,其…...

快速开始React开发(一)

快速开始React开发(一) React是一个JavaScript库,用于构建交互式网站,并且能够快捷创建SPA(Single Page App),其组件化的思想也是被一再传播,无论是普通的Web网站还是嵌入移动端交互…...

2025最新Transformer模型及深度学习前沿技术应用

第一章、注意力(Attention)机制 1、注意力机制的背景和动机(为什么需要注意力机制?注意力机制的起源和发展里程碑)。 2、注意力机制的基本原理(什么是注意力机制?注意力机制的数学表达与基本公…...

极狐GitLab 正式发布安全版本17.9.1、17.8.4、17.7.6

本分分享极狐GitLab 补丁版本 17.9.1、17.8.4、17.7.6 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何…...

[环境搭建篇] Windows 环境下如何安装Docker工具

Windows 环境下如何安装Docker工具 1. 检查系统要求2. 启用WSL 2和虚拟化步骤一:启用WSL步骤二:启用虚拟化(Hyper-V)步骤三:安装WSL 2内核 3. 安装Docker Desktop4. 配置Docker5. 家庭版用户替代方案6. 常见问题解决问…...

JavaScript 数组和字符串方法详解

一、数组方法 数组方法是操作数组的核心工具,分为修改原数组和返回新数组两类。 1. 常用修改原数组的方法 方法参数返回值说明示例push...items新长度末尾添加元素arr.push(4) → [1,2,3,4]pop无删除的元素删除最后一个元素arr.pop() → 3(原数组变[1,…...

达梦数据库系列之Mysql项目迁移为达梦项目

达梦数据库系列之Mysql项目迁移为达梦项目 1 达梦数据库安装及MySql数据迁移2 SpringBoot项目迁移2.1 驱动包引入2.2 驱动类配置2.3 数据源配置2.4 flowable迁移2.4.1 异常问题2.4.2 解决 3 迁移常见问题3.1 不是 GROUP BY 表达式3.1.1 dm.ini 开启Mysql兼容模式3.1.2 修改动态…...

10个实用IntelliJ IDEA插件

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 以下是为提升开发效率推荐的10个实用IntelliJ IDEA插件,涵盖代码质量、效率工具及热门框架支持: 一、代码质量与规范 SonarLint 实时…...

10分钟从零开始搭建机器人管理系统(飞算AI)

1. 安装插件 https://www.feisuanyz.com/ 2. Intellij IDEA中运行 创建一个BS架构的机器人远程操控系统,具备机器人状态及位置实时更新,可以实现机器人远程遥控,可以对机器人工作日志进行统计分析,以及其它管理系统的常用功能3…...

[自动驾驶-传感器融合] 多激光雷达的外参标定

文章目录 引言外参标定原理ICP匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人,每个雷达的位置和姿态不同,需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系&#xff08…...