浏览器输入www.baidu.com的请求过程是怎么样的? 响应的过程是怎样的呢?

news2025/2/27 20:45:05

假设我们电脑的相关配置为:
ip地址:192.168.31.37
子网掩码:255.255.255.0
网关地址:192.168.31.1
DNS地址:8.8.8.8

1. DNS 解析

我们打开一个浏览器,请求ww.baidu.com地址,这个时候找DNS 服务器。 DNS 服务器解析域名之后,返回一个 IP 地址,比如 172.194.26.108 。接看会判断两个 IP 地址是不是一个子网的,用子网掩码 255.255.255.0 ,对两个IP地址做与运算,拿到192.168.31.0172.194.26.0,明显不是一个子网的。

DNS 解析

那就得发送一个数据包给网关,其实你就认为是我们的路由器吧,就是 192.168.31.1,而且我们是可以得到网关 IP地址的 mac 地址的,现在我们从应用层出发,通过浏览器访问一个网站,是走应用层的 http 协议的。

2. 发送http请求

http 协议分为几个部分:
请求方法+URL地址+http版本,如:GET http://172.194.26.108/test HTTP/1.1,
请求头:

Host:upload.guangzhou.io
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0

空行

请求体:比如常见的可以放一个json串

由此就构成了http请求报文;

3. 请求传递的过程

浏览器请求一个地址,先按照应用层的http协议,封装一个应用层数据包,数据包里就放了http请求报文
这个时候会将这个http请求报文打包成一个数据包,仅仅只是数据包的数据部分,此时是数据包是没有头的。上面根据http协议搞一个http请求报文,然后搞一个数据包出来,就是网络模型中到的应用层干的事儿了。

接着就是跑传输层来了,这个层是tcp协议,这个tcp协议会让你设置端口,发送方的端口随机选一个,接收方的端口一般是默认的80端口。这个时候,会把应用层数据包给封装到tcp数据包中去,而且会加一个tcp头,这个tcp数据包是对应一个tcp头的,这个tcp头里就放了端口号信息。

接着就来到了网络层,走的是ip协议,会把tcp头和tcp数据包封装到以太网数据包里去,然后再加上一个ip头,ip头里有本机和目标机器的ip地址,这里的本机ip地址为192.168.31.37,目标机器ip地址为172.194.26.108;
接着就来到了数据链路层,走的是以太网协议,会把ip头和ip数据包封装到以太网数据包里去,加上一个以太网数据包的头,里面包含本机网卡的mac地址,网关的mac地址。

在这里插入图片描述

之后一个以太网数据包会被切割为4个数据包,每个数据包里包含以太网头,ip头和切割后的ip数据包。ip头里包含了每个数据包的序号,这4个以太网数据包通过交换机发到你的网关上,然后你的路由器可以联通别的子网,将数据包转发到别的子网的路由器里去,最后到达百度的某台服务器机器;

在这里插入图片描述百度服务器接收到4个以太网数据包以后,根据ip头的序号,把4个以太网数据包里的ip数据包给拼起来,还原成一个完整的ip数据包。接着从ip数据包里拿出tcp数据包,再从tcp数据包里拿出http数据包,读取出http数据包里的各种协议内容,转给服务器上部署的系统去执行,把结果进行响应。

在这里插入图片描述

参考

https://blog.csdn.net/weixin_44811851/article/details/121877358

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

梅西进球了,用Python预测世界杯冠军是 ... 网友:痛,太痛了

今天凌晨,夺冠热门阿根廷终于赢球了,梅西也打进了自己本届世界杯的第一粒进球!你熬夜看这场比赛了吗? 小编也用Python预测了一下本届世界杯的冠军归属,结果却不是阿根廷,来一起看看吧~ 预测结果 根据Pyt…

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

2.1 QEMU事件循环机制 2.1.1 glibc事件循环机制 知识提炼: glib事件循环机制 QEMU程序的运行基于各类文件fd事件,QEMU在运行过程中会将自己感兴趣的文件fd添加到其监听列表上,并定义相应的处理函数。在QEMU主线程中,有一个循环…

JS--数组类型 Array 1

数组是一种特殊的对象&#xff0c;数组是按照顺序排列的一组值&#xff08;元素&#xff09;&#xff0c;每个位置都有一个编号&#xff0c;编号从0开始&#xff0c;编号也叫索引或者下标。数组可以存储任意数据类型。 一 、 创建数组方法 1.用[ ] <script>// 数字的…

【机器学习项目实战10例】(二):利用LightGBM实现天气变化的时间序列预测

🌠 『精品学习专栏导航帖』 🐳最适合入门的100个深度学习实战项目🐳🐙【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码🐙🐶【机器学习入门项目10例目录】项目详解 + 数据集 + 完整源码🐶🦜【机器学习项目实战10例目录】项目详解 + 数据集 +

MyBatis-Plus快速开发

1. 代码生成器原理分析 观察我们之前写的代码&#xff0c;会发现其中也会有很多重复内容&#xff0c;比如&#xff1a; 那我们就想&#xff0c;如果我想做一个Order模块的开发&#xff0c;是不是只需要将内容全部更换成Order即可&#xff0c;如&#xff1a; 所以我们会发现&am…

【Ctool】json 转 mysql

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ 编写js实现json转mysql效果图代码及注释2️⃣ 集成到ctool中src/views/tool/json.vuesrc/views/tool/library/json/index.js效果图&#x1f4d6; 参考资料&#x1f6eb; 导读 需求 获取某json格式的数据后&#xff0c;希望将它…

【csdn】gitcode初体验(开发云、Pages等)(持续更新)

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ 开发云上免密提交代码【https方式】gitcode页面直接进入开发云2️⃣ 【git方式】通过开发云主页创建项目实现免密更新git1. 通过gitcode页面获取git地址2. 创建并配置SSH公钥&#xff08;所有项目&#xff0c;公用一个公钥&…

【学生网页设计作品 】关于HTML公益主题网页设计——谨防电信诈骗网

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

yocto meta-st-stm32mp conf文件夹分析

meta-st-stm32mp conf文件夹分析 machine conf分析 本节主要分析conf/machine下面的文件 stm32mp1.conf 包含inc文件 include conf/machine/include/st-machine-common-stm32mp.inc include conf/machine/include/st-machine-providers-stm32mp.incst-machine-providers-…

骨传导耳机的危害有哪些,骨传导耳机是不是智商税?

关于骨传导耳机的资讯&#xff0c;在网上众说纷纭&#xff0c;那么骨传导耳机在佩戴使用时到底会不会对我们造成伤害&#xff0c;骨传导耳机到底是不是智商税呢&#xff1f;下面就给大家讲解一下骨传导耳机传播声音的方式吧。 骨传导耳机传播声音的方式是通过耳旁的骨骼传声&am…

地级市高新技术企业统计情况(2000-2019)

1、数据来源&#xff1a;国泰君安 2、时间跨度&#xff1a;2000-2019 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; ① 高新技术企业定义&#xff1a;高新技术企业是指通过科学技术或者科学发明在新领域中的发展&#xff0c;或者在原有领域中革新似的运作。在界定…

C语言实现扫雷游戏(分解代码,超级详细,无压力)

目录 一、扫雷游戏 1.1玩法 1.2游戏的基本功能 二、游戏的实现 2.1创建数组 2.1.1为什么设置两组行和列&#xff1f; 2.2初始化棋盘 ‘ 2.2.1函数的调用 2.2.2函数体的实现 2.3打印棋盘 2.3.1函数的调用 2.3.2函数体的实现 2.3.3运行结果 2.4设置雷的位置 2.4.1函数…

HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

华为云桌面Workspace,实惠更实用!

今年双十一的活动&#xff0c;在各大平台都掀起一股“剁手热潮”。而对于企业主来说&#xff0c;双十一也有各种活动&#xff0c;比如华为云推出了“实惠更实用&#xff0c;‘11’都如愿”活动&#xff0c;也令到企业采购部门蠢蠢欲动。这究竟是怎么回事呢&#xff1f; 据了解&…

JAVA的学习心路历程之JDK基础入门(下)

这篇是本人JAVA基础学习的下篇&#xff0c;上篇链接在&#xff1a; JAVA的学习心路历程之JDK基础入门&#xff08;上&#xff09;_Thomas_Lbw的博客-CSDN博客_jdk学习 目录 一、字符流 1.1 字符流基类 二、文件操作 2.1 文件操作 三、Swing 四、多线程编程 4.1 多线程…

算法刷题打卡第27天:省份数量---深度优先搜索

省份数量 难度&#xff1a;中等 有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市&#xff0c;组内不…

干测试这些年,去过阿里也去过小公司,给年轻测试员们一个忠告....

前言 你眼中的软件测试岗位是怎样的&#xff1f;大部分人可能会给出这样的回答&#xff1a;“测试&#xff1f;简单啊&#xff0c;没什么技术含量&#xff0c;无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现&#xff0c;麻烦点的就是测试下部署安装是否出现兼…

二十三、CANdelaStudio深入-SnapshotData编辑

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的SnapshotData编辑,欢迎各位朋友订阅、评…

C#语言实例源码系列-实现滚动字幕

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序

考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序 参考文献&#xff1a;考虑储能电池参与一次调频技术经济模型的容量配置方法 摘要 &#xff1a;规模间歇电源并网引起的电网频率问题&#xff0c;导致对引入储能辅助调频的研究越发迫切。提出一种考虑储能电池参…