输入网址到网页显示,发生了什么?
从今天起,我准备在网上输出自己的八股了
浏览器解析URL:
根据URL解析 请求协议(http),请求的服务器(www.baidu.com),请求的文件路径(可以省略),解析完毕后生成HTTP请求信息
如果没有本身主机的IP地址,就先运行DHCP协议,从本地DHCP服务器获得一个IP地址
- 详细:操作系统生成一个DHCP请求报文,将报文放入具有目的地端口67(DHCP服务器)和源端口68(DHCP客户)的UDP报文段。该报文段被放置在一个具有广播IP目的地地址(255.255.255.255)和源IP地址0.0.0.0的IP数据报
- DHCP报文段封装成帧,该帧具有目的MAC地址FF:FF:FF:FF:FF:FF,广播到与交换机连接的所有设备
- DHCP服务器生成包含一个可用的IP地址和DNS服务器IP和网关路由器IP的报文,再不断封装成帧,返回去
如果没有服务端IP地址,就先运行DNS协议,从DNS服务器获得服务端IP,传输层也是UDP
TCP封装:
拿到域名的IP地址后,就去传输层进行协议封装,比如说使用TCP进行分装,这里就涉及到数据拆分,TCP报文头生成等等
IP封装:
传输层封装完毕后交给网络层IP模块进行IP封装,生成IP报文,包括源IP地址,目标IP地址,传输层是采取了什么协议等信息
MAC封装:
IP生成完毕后还需要在IP头部添加MAC头部,添加发送方和接收方的MAC地址,接收方的MAC地址是通过ARP协议获取的,ARP存在缓存,这时候的接收方的MAC并不是www.baidu.com的MAC,而是子网网关的MAC,然后由子网网关再发送给他的网关,MAC是不断变化的
网卡:
MAC封装后就将这些二进制数据复制到网卡的缓存区,然后网卡将数字信号转为电信号,顺着网线发出去or无线电波
交换机:
电信号顺着网线被交换机接收,又把电信号转为数字信号,然后查询接收方MAC地址是否有记录过,如果能查到,就将数据包发往对应的端口,如果查不到,就发往除了源端口之外的全部端口
路由器:
网络包经过交换机后到达了路由器,路由器已经包含了交换机的功能,路由器接受到网络包后,跟交换机一样,检查接收方MAC地址看看是不是发给自己的包,不是的话就丢弃,是的话放入接受缓冲区
接收了包之后会将包的MAC头部去掉,然后根据包的IP内容进行包的转发,根据自己的路由表及目标IP进行转发。
经过路由器在互联网的层层转发,最终到达服务器
服务器拆包:
服务器层层拆包,先看目标MAC地址是否是自己的,不是的话则丢弃此包,再检验目标IP地址是否符合,根据IP中的协议项,知道这是个TCP协议的包,如果是双方的第一个包的话,就进行TCP三次握手,先建立连接,然后再进行数据通信。根据TCP报文头还知道这应该是哪个端口的应用需要的包,将这个包转交给占用该端口的进程,进程获取到该包,发现是个HTTP请求,就将请求的资源封装到HTTP响应报文中,和客户端一样,经过层层包装,将数据包发送给客户端
客户端渲染:
客户端收到响应报文后,浏览器将响应数据渲染,页面就展示出来了
相关文章:
输入网址到网页显示,发生了什么?
从今天起,我准备在网上输出自己的八股了 浏览器解析URL: 根据URL解析 请求协议(http),请求的服务器(www.baidu.com),请求的文件路径(可以省略),解…...
Coredump-N:sprintf写越界
最近遇到一个sanitizer检查出来的问题; unsigned long abc = 0xffffffffffffffff; char link[8] = {0}; sprintf(link, "%u", abc);这段代码存在潜在问题。 数据类型不匹配: abc 是一个 unsigned long 类型...
自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)
自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口) 一、final关键字1、认识final关键字2、final修饰变量的注意3、常量 二、单例类(设计模式)1、设计模式的概念2、单例设计模式3、单例类有很多形式4、懒汉式单例类5、小…...
[LeetCode力扣hot100]-二叉树相关手撕题
简单 94.中序遍历 就说左子树-根-右子树顺序,之前也有二叉树相关的文章,基本上递归为主,这里用栈等方式实现下。 用到:栈 注意上面给出节点的基本结构,如左右,val指等 /*** Definition for a binary t…...
docker下部署kong+consul+konga 报错问题处理
前言: 由于在docker下部署一些项目比较特殊,特别是网络这一块,如果没有搞清楚,是很容易出问题的。 先上docker-compose 编排 这里的docker-compose for kong可以在 kong-compose 获取代码 version: 3.9x-kong-config:&kong…...
网络优化工作流程
DT路测 移动测试(Drive Test) CQT 定点测试(通信质量测试) DT 测试不能体现实际话务质量:回音、串音等网络问题不能通过 DT 测试发现,因此 CQT 拨打测试是 DT 测试很好的补充,也是目前室内外测…...
[题解]2024CCPC重庆站-小 C 的神秘图形
Sources:K - 小 C 的神秘图形Abstract:给定正整数 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le 10^5) n(1≤n≤105),三进制字符串 n 1 , n 2 ( ∣ n 1 ∣ ∣ n 2 ∣ n ) n_1,n_2(|n_1||n_2|n) n1,n2(∣n1∣∣n2∣n),按如下方法…...
React入门 - 0.React简介
React入门 - React简介 A Brief Introduction to React By JacksonML 1. 关于React React是一个知名的Web框架。众所周知,jQuery, Angular, Vue等框架都曾闪亮登场,并且,都仍然在全球市场占有一席之地。React这个颇有担当的新锐࿰…...
hive全量迁移脚本
#!/bin/bash #场景:数据在同一库下,并且hive是内部表(前缀的hdfs地址是相同的)#1.读取一个文件,获取表名#echo "时间$dt_jian_2-------------------------" >> /home/hadoop/qianyi_zengliang/rs.txt#…...
SpringCloud系列教程:微服务的未来(二十四)Direct交换机、Topic交换机、声明队列交换机
前言 在现代消息队列系统中,交换机是实现消息传递和路由的核心组件。本文将重点探讨三种常见的交换机类型:Direct交换机、Topic交换机和声明队列交换机。通过对这三种交换机的详细分析,我们将学习它们的工作原理、应用场景以及如何在实际项目…...
Sojson高级加密技术科普
1. 引言 什么是Sojson? Sojson是一款用于JavaScript代码加密与混淆的工具,它能够有效保护前端代码的知识产权,避免开发者的心血被随意窃取。 为什么需要代码加密? 在当今的互联网环境下,代码被轻易复制、篡改或逆向…...
mysql多主集群 galera cluster for mysql 8安装配置启动重启集群
[TOC] 一、安装mysql 1、安装 系统环境: Ubuntu 18.04 64位 MySQL 8.0.19 下载MySQL APT安装配置包 首先访问 https://dev.mysql.com/downloads/repo/apt/ 获取配置包下载地址 wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb sudo dpkg -i mysq…...
gitte远程仓库修改后,本地没有更新,本地与远程仓库不一致
问题 :gitte远程仓库修改后,本地没有更新,本地与远程仓库不一致 现象: [cxqiZwz9fjj2ssnshikw14avaZ rpc]$ git push Username for https://gitee.com: beihangya Password for https://beihangyagitee.com: To https://gitee.c…...
个人搭建CDN加速服务 特网科技
在互联网快速发展的今天,网站的加载速度对用户体验有着至关重要的影响,传统的网页加载方式依赖于服务器的性能和网络环境,这使得某些网站的页面加载时间过长,用户体验不佳,为了解决这个问题,许多企业开始采…...
mybatis 入门案例
前言 我们清楚 mybatis 是一个持久层框架,可以非常便捷的操作数据库。如最常见的对数据进行增删改查操作。 项目准备 1 在mybatis 数据库 创建 user 用户表 并插入以下两条数据 以下是一个user.sql 脚本文件如何使用 脚本文件可以参照MySQL数据库的备份与还原_控…...
Spring Boot最新技术特性深度解析与实战应用
一、反应式编程:WebFlux与非阻塞架构 1.1 核心价值与场景 Spring Boot 2.x全面拥抱反应式编程模型,通过Spring WebFlux支持异步非阻塞的请求处理,适用于高并发、低延迟的微服务场景(如实时通信、物联网数据处理)。其基于Reactor库实现,采用事件循环模型,显著提升资源利…...
Python使用Flask结合DeepSeek开发
一、背景 我之前关于DeepSeek使用ollama部署的文章大家可以把DeepSeek大模型部署起来。那么ollama还提供了可以调用对应部署模型的API接口。我们可以基于这些接口,做自己的二次开发。使用pythonflaskollama就可以进行模型对话调用。并且前端采用SSE的技术࿰…...
前端常见面试题-2025
vue4.0 Vue.js 4.0 是在 2021 年 9 月发布。Vue.js 4.0 是 Vue.js 的一个重要版本,引入了许多新特性和改进,旨在提升开发者的体验和性能。以下是一些关键的更新和新特性: Composition API 重构:Vue 3 引入了 Composition API 作为…...
大模型开发实战篇7:语音识别-语音转文字
语音识别大模型,是人工智能领域的一项重要技术,它能够将人类的语音转换为文本。近年来,随着深度学习技术的不断发展,语音识别大模型取得了显著的进展,并在各个领域得到了广泛应用。 主流语音识别大模型 目前…...
基于JAVA开发APISIX插件实战(1)-开发、部署、调试
我这篇APISIX-JAVA插件实战开编讲述初级工程师才会关心的开发部署调试,主要是因为APISIX-JAVA插件从前文基于JAVA开发APISIX插件-CSDN博客中我们可以了解到,它是通过unix的sock进行RPC的通信的,因此无法生成sock的windows环境是无法进行开发的。 如果使用Mac那么会怎么样?…...
QML 部件获得焦点触发的全局槽函数 onActiveFocusItemChanged
在qml的window窗口中,假如添加里许多其他部件,当这些部件改变时,会有一个全局部件焦点改变槽函数触发,就是 onActiveFocusItemChanged 可以通过此槽函数就可以知道当前焦点在哪一个部件上,也可以做一些自动化测试等&…...
DeepSeek 部署中的常见问题及解决方案:Mac 场景实践指南
DeepSeek 部署中的常见问题及解决方案:Mac 场景实践指南 随着大模型技术的快速发展,DeepSeek 作为开源领域的优秀代表,在本地化部署过程中常会遇到各类技术挑战。本文基于实际部署经验,梳理了五大高频问题及对应解决方案…...
OlympicArena 论文简介
近年来,大型语言模型(LLMs)和大型多模态模型(LMMs)的飞速发展,让AI逐渐展现出接近人类水平的认知推理能力。然而,如何科学评估AI在复杂问题解决中的真实水平,一直是学术界和产业界的…...
你具备数据素养吗?
在这个外卖平台能预测你明天想点什么的时代,当超市货架摆放都经过算法优化时,我们发现:数据素养已不再是专业人员的专利,而是数字公民的基本生存技能。一位小学班主任通过分析学生错题数据优化教学策略,社区便利店老板…...
如何用ClassFinal加密JAR保护知识产权!
0.前言 凌晨三点的办公室,咖啡杯底凝着褐色的残渍,键盘上跳跃的手指突然停滞。张工程师盯着屏幕上的反编译窗口,自己耗时三个月开发的规则引擎此刻像被解剖的标本般赤裸裸摊开——这正是上周交付给客户的jar包。当.class文件以伪代码形式暴露…...
轨迹优化 | 基于LBFGS优化器的无约束路径平滑(附ROS C++仿真)
目录 0 专栏介绍1 LBFGS优化器1.1 拟牛顿法框架1.2 LBFGS-Lite库 2 基于LBFGS的轨迹优化3 ROS C仿真 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线生成、碰撞检测…...
Vue2到Vue3:无痛升级之路
为什么要从 Vue2 升级到 Vue3 Vue 3 带来了众多令人瞩目的改进和新特性,这些优势使得升级到 Vue 3 对项目的长期发展具有重要意义。 性能显著提升:Vue 3 采用了基于 Proxy 的响应式系统,相比 Vue 2 使用的 Object.defineProperty,…...
第28篇 基于ARM A9处理器用C语言实现中断<四>
Q:可以改变上一期实验工程里红色LED计数的速率吗? A:在按键中断服务程序中使HPS Timer 0停止计数,修改定时器中使用的预设计数值,然后重启定时器;所有的修改都是在按键中断服务程序中完成。主程序和其他…...
Linux、Docker与Redis核心知识点与常用命令速查手册
Linux、Docker与Redis核心知识点与常用命令速查手册 一、Linux基础核心 1. 核心概念 文件系统:采用树形结构,根目录为/权限机制:rwx(读/写/执行)权限,用户分为owner/group/others软件包管理: …...
时间序列分析(四)——差分运算、延迟算子、AR(p)模型
此前篇章: 时间序列分析(一)——基础概念篇 时间序列分析(二)——平稳性检验 时间序列分析(三)——白噪声检验 一、差分运算 差分运算的定义:差分运算是一种将非平稳时间序列转换…...
