【每日八股】计算机网络篇(三):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:跨域资源分享。

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

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

相关文章

Docker入门指南:Windows下docker配置镜像源加速下载

Windows下docker配置镜像源加速下载 docker的官方镜像是海外仓库,默认下载耗时较长,而且经常出现断站的现象,因此需要配置国内镜像源。 国内镜像源概述 国内现有如下镜像源可以使用 "http://hub-mirror.c.163.com", "http…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序📚前言📚页面效果📚指令…

数据结构:二叉树的链式结构及相关算法详解

目录 一.链式结构的实现 1.二叉树结点基本结构,初始化与销毁: 二.链式结构二叉树的几种遍历算法 1.几种算法的简单区分: 2.前序遍历: 3.中序遍历: 4.后序遍历: 5.层序遍历(广度优先遍历B…

动态规划/贪心算法

一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术,尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题,并保存这些子问题的解以避免重复计算,从而提高效率。 动态规划的核心思想 最优子结…

【实战篇】【深度解析DeepSeek:从机器学习到深度学习的全场景落地指南】

一、机器学习模型:DeepSeek的降维打击 1.1 监督学习与无监督学习的"左右互搏" 监督学习就像学霸刷题——给标注数据(参考答案)训练模型。DeepSeek在信贷风控场景中,用逻辑回归模型分析百万级用户数据,通过特征工程挖掘出"凌晨3点频繁申请贷款"这类魔…

软考中级-数据库-3.2 数据结构-数组和矩阵

数组 一维数组是长度固定的线性表,数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。 例如一维数组a[5][a1,a2,a3,a4,a5] 二维数组a[2][3]是一个2行2列的数组 第一行[a11,a12,a13] 第二行[a21,a22,a23…

android亮灭屏流程分析

前言 亮灭涉及的东西非常多,因此单独写一个文档,进行详细说明,亮灭屏包括的东西不只是亮灭屏,还包括亮度调节、屏幕状态变化等东西。本文仅作学习使用,不涉及商业,侵权请联系删除。 framework层的学习链接…

V4L2框架基础

一、V4L2视频设备驱动基础 1.V4L2是专门为Linux设备设计的整合视频框架(其主要核心在Linux内核,相当于Linux操作系统上层的视频源捕获驱动框架)。为上层访问系统底层的视频设备提供一个统一的标准接口。V4L2驱动框架能够支持多种类型&#x…

C# 多线程

概述 进程和线程 进程:指在系统中运行的一个应用程序。 线程:进程中的一个执行任务。一个进程至少有一个线程,一个进程可以有多个线程,多个线程可共享数据。 多线程 多线程:在一个程序中同时运行多个线程&#xff0…

突破光学成像局限:全视野光学血管造影技术新进展

全视野光学血管造影(FFOA)作为一种实时、无创的成像技术,能够提取生物血液微循环信息,为深入探究生物组织的功能和病理变化提供关键数据。然而,传统FFOA成像方法受到光学镜头景深(DOF)的限制&am…

Deepgram推出Nova-3 Medical,AI语音转录助力医疗行业

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

centOS 环境 安装redis方法

一、准备centOS环境 参考文章:Hyper-V 安装CentOS7_代码草率了的博客-CSDN博客 二、redis官网 地址:Download | Redis 演示版本为?redis-5.0.14.tar.gz 三、redis源码编译 登录后创建soft目录 进入目录使用wget下载所需资源包 命令:w…

[51 单片机] --串口编程

1,通讯方式基本概念 1,按照 --> 数据传送方式串行通讯:使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度,串行通信的特点:传输线少,长距离传送时成本…

Golang的微服务服务发现机制

## 1. Golang微服务服务发现机制 微服务架构已经成为当今软件开发的主流趋势,它能将复杂的单体应用拆分成小而独立的服务单元,实现更快的开发、部署和扩展。在微服务架构中,服务发现是非常重要的一环,它能够实现服务之间的自动发现…

Python 创建地形图

原始地 DEM。 火山口湖 (OR) 区域的起始 DEM。数据来自 NASA DEM 本身非常美丽,但我们先进行分层。 将自定义色彩图应用于 DEM 对于我在 ArcGIS Pro 版本中所做的初始高程样式着色,我使用了“高程 #7”。在 matplotlib 中可用的标准颜色图中&#xff…

《Operating System Concepts》阅读笔记:p180-p187

《Operating System Concepts》学习第 20 天,p180-p187 总结,总计 8 页。 一、技术总结 1.forke-join A strategy for thread creation in which the main parent thread creates (forks) one or more child threads and then waits for the children…

文心4.5,大模型下半场的野心之作

2025年开年,全球大模型竞赛进入白热化阶段。2月28日,百度宣布其文心大模型4.5将于3月16日正式上线,强调其原生多模态与深度思考能力,并计划于6月30日开源。这一动作不仅标志着百度技术路线的重大转向,更被视为中国大模…

transformer架构解析{前馈全连接层,规范化层,子层(残差)连接结构}(含代码)-4

目录 前言 前馈全连接层 学习目标 什么是前馈全连接层 前馈全连接层的作用 前馈全连接层代码实现 规范化层 学习目标 规范化层的作用 规范化层的代码实现 子层(残差)连接结构 学习目标 什么是子层(残差)连接结构 子层连…

Django视图与URLs路由详解

在Django Web框架中,视图(Views)和URLs路由(URL routing)是Web应用开发的核心概念。它们共同负责将用户的请求映射到相应的Python函数,并返回适当的响应。本篇博客将深入探讨Django的视图和URLs路由系统&am…

串口通讯基础

第1章 串口的发送和接收过程 1.1 串口接收过程 当上位机给串口发送(0x55)数据时,MCU的RX引脚接受到(0x55)数据,数据(0x55)首先进入移位寄存器。数据全部进入移位寄存器后,一次将(0x55)全部搬运…