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

计算机网络基础篇

TCP/IP网络模型

TCP/IP网络模型的作用就是给数据包进行层层封装,帮助数据包能够正确的找到对应的设备接受数据

一个URL所经历的全部过程

URL所经历的全部过程:

HTTP -> DNS ->协议栈-TCP->IP->MAC->网卡->交换机->路由器->服务器

HTTP(数据包)

HTTP就是包含请求行(方法名如GET POST、URL、HTTP版本),请求头,请求体(具体数据)的数据包。请求发送到服务器后,服务器要响应请求,也是使用HTTP返回响应信息。响应HTTP包含响应行(HTTP版本、响应状态码200 400)、响应头、响应体。

DNS服务器(域名解析为IP)

DNS服务器分为每一个服务器都保存有根DNS服务器地址):

客户端发送请求前需要IP地址,而DNS服务器记录了域名与IP之间的关系,所以请求发送时需要先通过域名将域名转为IP。

如何通过域名找寻IP:

  1. 客户端先在本地DNS服务器查找对应IP。
  2. 本地DNS服务器没有,通过本地寻找根服务器,根服务器告诉你那个顶级服务器保存有对应IP地址。
  3. 顶级服务器也不记录DNS与IP之间的关系,他告诉你那个权威服务器保存有对应关系,这就通过域名找到IP地址。

协议栈(规定请求需要经过的路径)

协议栈定义了请求需要经过那些过程,即Socket将请求按照下图的顺序执行,对数据包进行层层包装。

TCP(封装端口号,控制数据包发送速度与安全)

TCP建立连接的三次握手

 TCP三次握手的原因是为了保证连接的稳定与可靠性。

三次握手的过程:

TCP分割数据包的大小

因为、以太网最大传输单元MTU(IP+TCP+数据包)不能超过1500字节(为了保证传输效率),所以超过1500字节TCP会将数据包拆分为多份发送。

IP(寻找数据包发送到的位置)

IP:包含源IP地址,目标IP地址,协议号(TCP/UDP,06表示使用TCP协议)

假设客户端有多个网卡,就会有多个 IP 地址,那 IP 头部的源地址应该选择哪个 IP 呢?

计算机中的路由表记录了:网卡,目标IP,子网掩码的关系。

我们通过 目标IP & 子网掩码 得到目标子网IP在目标子网IP在路由表中匹配,如果匹配到就知道在那个网卡发送消息

MAC(在子网中确定是那个设备)

MAC头包含:目标MAC、源MAC、协议(IP\ARP)

源MAC:直接将本设备的MAC地址写入源MAC中

目标MAC:通过IP地址获取子网,然后在子网中通过ARP广播的方式,询问子网下所有设备该IP是谁接收的,然后设备将自己的MAC返回。(为了避免每次都要广播,获取到MAC之后会在ARP缓存中记录IP与该设备MAC之间的关系)

网卡(将数字信号转为电信号)

网卡的作用是将数字信号转为电信号,将数据发送给交换机。

网卡被网卡驱动程序控制,会在请求开头加上开头加上报头和起始帧分界符(检测数据包的起始位置),在末尾加上用于检测错误的帧校验序列

交换机(将电信号转为数字信号)

交换机的作用将电信号转换为数字信号,然后将数据包发送出源IP所在的子网(数据在不同子网之间的转发)。

交换机接收包

交换机接收包之后会首先校验错误帧,保证包的完整性,然后将获取数据包的MAC地址与目标MAC做对比,如果有就根据目标MAC对应的端口转发。(交换机没有MAC地址,会将所有包保存到缓冲区,对MAC进行校验)

如果没有找到目标MAC

如果没有找到目标MAC,会将包发送给所有端口,但因为以太网中如果不是目标地址就不会接收该数据包。(如果是广播MAC地址,也会发给所有端口)

路由器(请求分发)

路由器有MAC地址,路由器可以作为数据包的请求方和接收方,他更像是以太网上的节点一样,数据可以在路由器中进行发,会在路由器这里改变MAC地址找寻接下来需要到达的设备

服务器(拆解请求获取数据包)

将数据包层层拆解,然后获取数据

Liunx如何接收发送数据包

liunx发送数据包

Liunx接收数据包

接收数据包跟发送数据包是相反的过程

1.网卡通过DMA将数据包写入ringbuffer

2.进行硬件中断,让CPU首先处理数据包

3.进行硬件中断屏蔽(防止CPU已经在做处理数据包的操作还要被硬件中断),启动软中断处理数据包

4.处理MAC、IP、TCP协议

5.将数据包发送给Socket对应的缓冲区里面,循环读取到ringbuffer中的数据,一直读到ringbuffer没有数据,开启硬件中断

6.应用层通过系统API获取Socket对应的缓冲数据

相关文章:

计算机网络基础篇

TCP/IP网络模型 TCP/IP网络模型的作用就是给数据包进行层层封装,帮助数据包能够正确的找到对应的设备接受数据。 一个URL所经历的全部过程 URL所经历的全部过程: HTTP -> DNS ->协议栈-TCP->IP->MAC->网卡->交换机->路由器->服…...

32 从前序与中序遍历序列构造二叉树

32 从前序与中序遍历序列构造二叉树 32.1 从前序与中序遍历序列构造二叉树解决方案 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return buildTreeHelper(preorder, inorder, 0, 0, inorder.size() - 1)…...

D82【python 接口自动化学习】- pytest基础用法

day82 pytest初体验 学习日期&#xff1a;20241128 学习目标&#xff1a;pytest基础用法 -- pytest初体验 学习笔记&#xff1a; 文件命名规范 py测试文件必须以test_开头&#xff08;或_test结尾&#xff09;测试方法必须以test开头测试类必须以Test开头&#xff0c;并且…...

在开发环境中,前端(手机端),后端(电脑端),那么应该如何设置iisExpress

首先&#xff0c;要想手机端应用能成功请求后端&#xff0c;两个设备至少需在同一个局域网内&#xff0c;且IP地址互通&#xff1b; 因为ajax是http(s)://IP地址端口号的方式请求&#xff0c;但是iisExpress默认是localhost如何解决&#xff0c;并没有IP地址&#xff0c;所以手…...

磁盘/系统空间占满导致黑屏死机无法开机的解决办法

文章目录 起因具体操作1.重启虚拟机&#xff0c;一直按CtrlShitf进入GRUP界面2.选“Ubuntu高级选项”并回车选择第二个&#xff0c;recovery mode![请添加图片描述](https://i-blog.csdnimg.cn/direct/201f9784c203406d802d24b39dc2d4a3.png)3.4.命令查看磁盘情况5.查找和删除文…...

使用zabbix监控k8s

一、 参考文献 小阿轩yx-案例&#xff1a;Zabbix监控kubernetes云原生环境 手把手教你实现zabbix对Kubernetes的监控 二、部署经验 关于zabbix监控k8s&#xff0c;总体来说是分为两块内容&#xff0c;一是在k8s集群部署zabbix-agent和zabbix- proxy。二是在zabbix进行配置。…...

MacOS安装MySQL数据库和Java环境以及Navicat

安装MySQL 去官网下载&#xff1a;MySQL 下载好后安装&#xff0c;在设置里往下滑&#xff0c;出现了这样&#xff0c;就代表安装成功了 接下来配置环境&#xff1a; 首先在我们的设备上找到终端并打开,输入 vim ~/.bash_profile(注意vim后面的空格)&#xff0c;输入完成后点击…...

算法的复杂度

1.数据结构前言 下面的概念有的比较难理解&#xff0c;做个了结就行。 1.1数据结构的起源 在现实生活中我们更多地并不是解决数值计算的问题&#xff0c;而是 需要一些更科学的手段如&#xff08;表&#xff0c;数&#xff0c;图等数据结构&#xff09;&#xff0c;才能更好…...

Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题

目录 1. root用户&#xff08;超级管理员&#xff09; 1.1 用于账户切换的系统命令——su 1.2 退回上一个用户命令——exit 1.3 普通命令临时授权root身份执行——sudo 1.3.1 为普通用户配置sudo认证 2. 用户/用户组管理 2.1 用户组管理 2.2 用户管理 2.2.1 …...

若依项目源码阅读

源码阅读 前端代码分析 代码生成器生成的前端代码有两个&#xff0c;分别是course.js用于向后端发送ajax请求的接口代码&#xff0c;另一个是index.vue&#xff0c;用于在浏览器展示课程管理的视图组件。前端的代码是基于vue3elementplus。 template用于展示前端组件别的标签…...

JVM知识点学习-1

学习视频&#xff1a;狂神说Java 类加载器和双亲委派机制 类加载器 作用&#xff1a;加载Class文件 流程&#xff1a;这里的名字car1。。在栈里面&#xff0c;但是数据在堆里面 类加载器的几个类型&#xff1a; 虚拟机自带的类加载器&#xff1b;启动类&#xff08;根Boot…...

TypeScript和JavaScript区别详解

文章目录 TypeScript和JavaScript区别详解一、引言二、类型系统1、静态类型检查TypeScript 示例JavaScript 示例 2、类型推断TypeScript 示例JavaScript 示例 三、面向对象编程TypeScript 示例JavaScript 示例 四、使用示例1. 环境搭建2. 创建TypeScript项目3. 安装TypeScript插…...

RVO动态避障技术方案介绍

原文&#xff1a;RVO动态避障技术方案介绍 - 哔哩哔哩 我们在开发游戏的时候经常会遇到这样的问题&#xff0c;当我们寻路的时候&#xff0c;其它人也在寻路&#xff0c;如何避免不从其它人的位置穿过。这个叫做动态避障&#xff0c;目前主流的解决方案就是RVO。本节我们来介绍…...

Vue进阶之单组件开发与组件通信

书接上篇&#xff0c;我们了解了如何快速创建一个脚手架&#xff0c;现在我们来学习如何基于vite创建属于自己的脚手架。在创建一个新的组件时&#xff0c;要在新建文件夹中打开终端创建一个基本的脚手架&#xff0c;可在脚手架中原有的文件中修改或在相应路径重新创建&#xf…...

OGRE 3D----5. OGRE和QML事件交互

在现代图形应用程序开发中,OGRE(Object-Oriented Graphics Rendering Engine)作为一个高性能的3D渲染引擎,广泛应用于游戏开发、虚拟现实和仿真等领域。而QML(Qt Modeling Language)则是Qt框架中的一种声明式语言,专注于设计用户界面。将OGRE与QML结合,可以充分利用OGR…...

ARIMA-神经网络混合模型在时间序列预测中的应用

ARIMA-神经网络混合模型在时间序列预测中的应用 1. 引言 1.1 研究背景与意义 时间序列预测在现代数据科学中扮演着越来越重要的角色。从金融市场的价格走势到工业生产的需求预测,从气象数据的天气预报到用电量的负荷预测,时间序列分析无处不在。传统的统计方法和现代深度学习…...

常见靶场的搭建

漏洞靶场 渗透测试&#xff08;漏洞挖掘&#xff09;切忌纸上谈兵&#xff0c;学习渗透测试&#xff08;漏洞挖掘&#xff09;知识的过程中&#xff0c;我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下&#xff0c;对于网站进行渗透测试攻击&#xff0c;是触及…...

[MacOS] [kubernetes] MacOS玩转虚拟化最佳实践

❓ 为什么不在MacOS本机安装呢&#xff1f;因为M系列芯片是Arm架构&#xff0c;与生产环境或者在本地调试时候&#xff0c;安装虚拟镜像和X86不同&#xff0c;造成不必要的切换环境的额外成本&#xff0c;所以在虚拟化的x86调试 步骤 & 详情 一: 安装OrbStack & 并配置…...

HarmonyOS:@Provide装饰器和@Consume装饰器:与后代组件双向同步

一、前言 Provide和Consume&#xff0c;应用于与后代组件的双向数据同步&#xff0c;应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递&#xff0c;Provide和Consume摆脱参数传递机制的束缚&#xff0c;实现跨层级传递。 其中Provi…...

git 上传代码时报错

在上传代码时&#xff0c;显示无法上传 PS E:\JavaWeb\vue3-project> git push To https://gitee.com/evening-breeze-2003/vue3.git! [rejected] master -> master (non-fast-forward) error: failed to push some refs to https://gitee.com/evening-breeze-20…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...