面试常考:一次完整的网页请求过程

  1. 解析URL:浏览器确定Web服务器和文件名
  1. 生成HTTP请求

  2. DNS域名解析:查询真实地址,查询服务器域名对应的IP地址。DNS专门保存了Web服务器域名与IP的对应关系。

)

  1. 协议栈

    通过 DNS 获取到 IP 后,就可以把 HTTP 的传输工作交给操作系统中的协议栈

)

应用程序(浏览器)通过调用 Socket 库,来委托协议栈工作。协议栈的上半部分有两块,分别是负责

收发数据的 TCP 和 UDP 协议,它们两会接受应用层的委托执行收发数据的操作。

  1. TCP

TCP 报文头部的格式

源端口号,目的端口号:数据发送目的地

序号:解决数据包乱序问题

确认序列:确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送

达,这个是为了解决不丢包的问题

SYN:发起一个连接

ACK:回复

窗口大小:TCP 要做流量控制,通信双方各声明一个窗口(缓存大小),标识自己

当前能够的处理能力

三次握手:HTTP传输数据之前,首先需要与TCP建立连接。TCP连接的建立,就称为三次握手。

三次握手

  • 一开始,客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口,处于 LISTEN状态。

  • 然后客户端主动发起连接 SYN ,之后处于 SYN-SENT 状态。

  • 服务端收到发起的连接,返回 SYN ,并且 ACK 客户端的 SYN ,之后处于 SYN-RCVD 状态。

  • 客户端收到服务端发送的 SYN 和 ACK 之后,发送 ACK 的 ACK ,之后处于

ESTABLISHED 状态,因为它一发一收成功了。

  • 服务端收到 ACK 的 ACK 之后,处于 ESTABLISHED 状态,因为它也一发一收了。

TCP分割数据:

  1. TCP报文生成:在双方建立了连接后,TCP 报文中的数据部分就是存放 HTTP 头部 + 数据,组装好 TCP 报文之后,就需交给下面的网络层处理。
  1. IP:使用IP模块将数据封装成网络包

源地址IP:客户端输出的IP地址

目标地址:通过DNS域名解析得到的Web服务器IP地址

  1. IP报文生成:

    加上IP头部的数据包:

  1. 两点传输:MAC

    生成了 IP 头部之后,接下来网络包还需要在 IP 头部的前面加上 MAC 头部

    MAC包头格式:

    MAC包头格式

    发送方MAC地址,接收方MAC地址:用于两点之间的传输。

    但MAC 发送方和接收方如何确认呢?

    发送方的 MAC 地址获取就比较简单了,MAC 地址是在网卡生产时写入到 ROM 里的,只要将这个值读取出来写入到 MAC 头部就可以了。

    接收方的 MAC 地址就有点复杂了,只要告诉以太网对方的 MAC 的地址,以太网就会帮我们把包发送过去,那么很显然这里应该填写对方的 MAC 地址。

    所以先得搞清楚应该把包发给谁,这个只要查一下路由表就知道了。在路由表中找到相匹配的条目,然后把包发给 Gateway 列中的 IP 地址就可以了。

  2. ARP协议:找到路由器的MAC地址

    ARP协议

    ARP 协议会在以太网中以广播的形式,对以太网所有的设备喊出:“这个 IP 地址是谁的?请把你的MAC 地址告诉我”。

    然后就会有人回答:“这个 IP 地址是我的,我的 MAC 地址是 XXXX”。

    如果对方和自己处于同一个子网中,那么通过上面的操作就可以得到对方的 MAC 地址。然后,我们将这个 MAC 地址写入 MAC 头部,MAC 头部就完成了。

    这边我们有一个问题:每次都要广播获取,这不是很麻烦吗?

    这一点不用担心,操作系统会把本次查询结果放到一块叫做 ARP 缓存的内存空间留着以后用,不过缓存的时间就几分钟。

    ARP缓存:

    先查询 ARP 缓存,如果其中已经保存了对方的 MAC 地址,就不需要发送 ARP 查询,直接使用ARP 缓存中的地址。

    而当 ARP 缓存中不存在对方 MAC 地址时,则发送 ARP 广播查询。

​ 到达这一步的网络包:

  1. 出口:网卡

    IP 生成的网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要

    数字信息转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。

    负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序

    网卡驱动从 IP 模块获取到包之后,会将其复制到网卡内的缓存区中,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。

​ 起始帧分界符:是一个用来表示包起始位置的标记

​ 末尾的 FCS (帧校验序列):用来检查包传输过程是否有损坏

​ 最后网卡会将包转为电信号,通过网线发送出去

  1. 送别者 —— 交换机

    交换机的设计是将网络包原样转发到目的地。交换机工作在MAC 层,也称为二层网络设备

    交换机的包接收操作:

    首先,电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号。

    然后通过包末尾的 FCS 校验错误,如果没问题则放到缓冲区。这部分操作基本和计算机的网卡相同,但交换机的工作方式和网卡不同。

    计算机的网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址

    将包存入缓冲区后,接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表中有记录了。

    交换机的 MAC 地址表主要包含两个信息:

    • 一个是设备的 MAC 地址,

    • 另一个是该设备连接在交换机的哪个端口上。

  2. 出境大门 —— 路由器

    路由器与交换机的区别:

    • 路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址;

    • 交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有MAC地址。

    路由器的基本原理:

    路由器的端口具有 MAC 地址,因此它就能够成为以太网的发送方和接收方;同时还具有 IP 地址,从这个意义上来说,它和计算机的网卡是一样的。

    当转发包时,首先路由器端口会接收发给自己的以太网包,然后路由表查询转发目标,再由相应的端口

    作为发送方将以太网包发送出去。

  3. 服务器和客户端

数据包到达服务器后,服务器先扒开数据包的MAC头部,查看是否和服务器自己的 MAC 地址符合,符合就将包收起来。

接着继续扒开数据包的 IP 头,发现 IP 地址符合,根据 IP 头中协议项,知道自己上层是 TCP 协议。

于是,扒开 TCP 的头,里面有序列号,需要看一看这个序列包是不是我想要的,如果是就放入缓存中

然后返回一个 ACK,如果不是就丢弃。TCP头部里面还有端口号, HTTP 的服务器正在监听这个端口号。

于是,服务器自然就知道是 HTTP 进程想要这个包,于是就将包发给 HTTP 进程。

服务器的 HTTP 进程看到,原来这个请求是要访问一个页面,于是就把这个网页封装在 HTTP 响应报文里。HTTP 响应报文也需要穿上 TCP、IP、MAC 头部,不过这次是源地址是服务器 IP 地址,目的地址是客户端 IP 地址。

穿好头部衣服后,从网卡出去,交由交换机转发到出城的路由器,路由器就把响应数据包发到了下一个路由器,就这样跳啊跳。

最后跳到了客户端的城门把手的路由器,路由器扒开 IP 头部发现是要找城内的人,于是又把包发给了城内的交换机,再由交换机转发到客户端。

客户端收到了服务器的响应数据包后,同样也非常的高兴,客户能拆快递了!

于是,客户端开始扒皮,把收到的数据包的皮扒剩 HTTP 响应报文后,交给浏览器去渲染页面,一份特别的数据包快递,就这样显示出来了!

最后,客户端要离开了,向服务器发起了 TCP 四次挥手,至此双方的连接就断开了。

参考:图解网络

youminglan
关注 关注
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国家教师资格面试 语文试讲常考的课文.pdf
03-27
国家教师资格面试 语文试讲常考的课文.pdf
一次完整的http请求过程是怎样的?_http请求路径,被阿里面试官征服了
最新发布
2401_83620841的博客
04-16 858
TCP封包完成之后,就可以传输了,在完成“你瞅啥”,“瞅你咋地”,“来,过来唠唠”一系列操作之后,浏览器和服务器就完成了TCP的三次握手,建立了连接,后面就可以请求服务器资源了。服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源。服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理。这次请求响应之后,会断开连接,就这样,完成了一次HTTP的请求
WEB请求过程
在你书包里拉屎的博客
10-25 2385
WEB请求过程 一次完整的WEB请求过程 一次完整的web访问流程 前言:当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么? 大致过程如下: 一次完整的web访问流程简析: client:输入网址–>发起http request–>等待web server响应. server:收到client请求–>加载资源–>构建响应报文,发给client. 注:以下分析不考虑缓存问题. client发起http请求
JAVA面试】浏览器发出一个请求到收到响应经历了哪些步骤
Gangangan_的博客
05-11 1321
七层架构的主要目的是将网络通信分为不同的层次,使得网络设计和开发可以模块化,并且可以灵活地添加、修改或替换各层的协议,以满足不同的需求。每一层都有自己的功能和责任,通过协同工作,实现了可靠、高效的网络通信。
常见面试题:浏览器输入域名并打开完成的过程
啊Sei的博客
01-20 1726
面试回答: 1.在浏览器地址栏输入域名 2.DNS解析IP 3.在发送http请求前,先进行DNS域名解析,获取访问的IP地址 4.浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手 5.握手成功后,浏览器向服务器发送http请求 6.服务器接收请求,处理并返回响应 7.浏览器接收到服务器HTTP响应内容 8.浏览器进行渲染,解析HTML生成DOM树,解析CSS生成规则树,js引擎解析js 9.渲染完毕,四次挥手,关闭tcp连接 详细说明: 一、DNS域名解析IP地址 ...
面试热点:再浏览器上输入地址后的整个请求过程。只需要5步,详细过程
m0_57454517的博客
03-15 1503
面试中问在浏览器上输入url后整个请求和响应的过程,http请求过程,总计需要5步
面试题-http请求所经过的流程
weixin_44162368的博客
01-26 527
一、TCP/IP协议 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。 HTTP协议就是基于TCP/IP协议模型来传输信息的。 二、TCP三次握手 TCP是面向连接的,无论
2021年第一次面试Java实习生经历.doc
12-14
本文是关于一名Java实习生的面试经验分享,描述了作者在2021年第一次面试的经历。作者通过投递简历到上海有限公司湖南分公司,获得了面试机会,并详细记录了面试的整个过程。 在面试前,作者了解了该公司的状况,并...
html面试常考考点+css常考考点
09-21
HTML 和 CSS 面试常考知识点 HTML 面试题 1. HTML 语义化的理解 HTML 语义化是指使用 HTML标签来描述网页的结构和内容,使得搜索引擎和屏幕阅读器更好地理解网页的结构和内容。语义化可以提高搜索引擎的索引速度...
mysql进阶知识以及面试常考知识
08-27
MySQL进阶知识以及面试常考知识是一个针对MySQL数据库领域的学习和面试准备资源,旨在帮助用户深入了解MySQL的高级概念。 综合性内容:该资源提供了包括MySQL索引优化、查询性能优化、事务管理、锁机制、复制与高...
面试常考算法解题技巧
06-20
面试常考算法解题技巧进行讲解和分析,会讲解一些常用的数据结构,锻炼算法的思考方式,帮助在大厂面试过程如鱼得水。
面试题】一个Http请求的流程
小诚信驿站
06-25 5922
1.一个Http请求的流程: DNS域名解析 –> 发起TCP的三次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如javascript、css、图片等) –> 浏览器对页面进行渲染呈现给用户 举个例子在浏览器中输入www.baidu.com后执行的全...
页面请求的工作流程
PengTan
11-10 409
Java Web面试题–页面请求的工作流程一个web应用程序一般是由客户端程序与服务器程序两部分组成,客户端程序主要是指浏览器,用户可以通过浏览器查找所需的资源,然后这些资源的话是放在服务器上的。属于CS模式。(client-service) 整个工作流程的话: 1、首先是用户输入网址请求资源 2、浏览器接受用户的请求,并把该请求组装成指定的格式发送给服务器端,客户端和服务器端通过HTTP或者
Java面试题】一次完整的Http请求过程(非常详细)
热门推荐
zjkC050818的博客
10-25 1万+
当我们在浏览器的地址栏输入 www.google.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢? 以下过程仅是个人理解: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
前端面试题汇总(理论篇一)--页面加载及请求网络
Holly31的博客
05-18 404
JavaScript的单线程,与它的用途有关。当一个变量向另一个变量赋值引用类型的值时,同样也会将栈内存中的值复制一份放到新变量分配的空间中,但是引用类型保存在栈内存中的变量是一个地址,这个地址指向的是堆内存中的对象,所以这个变量其实复制了一个地址,两个地址指向同一个对象,改变其中任何一个变量都会互相影响。执行JS的时候,遇见同步任务,直接推入调用栈中执行,遇到异步任务,该任务挂起,等异步任务有返回之后推入到任务队列中,等调用栈中所有任务执行完成,将任务队列一个个推入并执行,重复这一系列的行为叫事件循环。
网页一次请求过程
is_scarecrow的博客
07-10 221
完成包接收之后,路由器就会去掉报的开头的MAC头部(MAC头部就是为了将数据包传到相应的路由器),然后会根据数据包中的IP地址进行包内容的转发:A 查询路由表判断转发目标:每条表数据的子网掩码和数据包IP进行与运算,得到得到转发目标,若没有那么按照默认路由处理。HTTP消息生成之后需要将消息发送给相应的web服务器,但是需要查询到该服务器对应的IP地址(因为委托操作系统发送消息的时候,必须提供通信对象的IP地址),而服务器和IP的对应关系是在DNS服务器上存储的。如果没有设置路径,那么访问的是默认的文件。
WEB页面请求过程
xiaoxiaoxyxz的博客
01-03 582
WEB页面请求过程
用户请求网站的流程——详细分析
whoim_i的博客
02-18 3087
目录访问流程简述DNS域名解析建立tcp三次握手客户端发出http请求服务端发出http响应tcp四次挥手断开连接网站集群内部请求分析 我们经常使用浏览器上网查询资源,看到网页从空白到丰满,这可能是一瞬间,也有可能要几秒钟或者直接弹出错误等。那么这背后的工作流程究竟是怎样的呢?接下来以访问www.baidu.com为例,进行一个流程的分析。 访问流程简述 当用户在浏览器地址中输入www.baidu...
一次完整的http请求过程(知识体系版)
星海拾遗
12-04 9739
最差的面试体验 面试官评价:除了学历,和培训班出来的没区别。 确实,很多东西我只是会用。面完回来,我发现我确实连一个完整的http请求如何发送都不明白。 失败并不可怕。但是一定得把失败的悲痛化成力量! 我觉得需要把掌握的知识串成一套完整的知识体系。 超长文预警 一次完整的http请求的全过程 域名解析------>tcp建立三次握手过程------>发送http请......
面试题6:springboot如何跨域请求
03-26
在Spring Boot中实现跨域请求可以通过以下几种方式: 1. 使用注解:可以在Controller类或者方法上使用`@CrossOrigin`注解来允许跨域请求。例如: ```java @RestController @CrossOrigin(origins = ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 如何划分子网 15607
  • 如何保存训练模型 9994
  • Pycharm如何生成requirements.txt文件 9472
  • 详解Tensor用法 8784
  • 安装tensorflow時, 遇到ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we ca 8112

分类专栏

  • 经验分享 3篇
  • 数据分析 7篇
  • 数字化 1篇
  • 计算机网络 1篇
  • 机器学习 17篇
  • nlp 7篇
  • 竞赛 6篇
  • pytorch 7篇
  • Java学习 1篇
  • 特征工程 1篇

最新评论

  • CCF大赛:电商用户购买行为预测 解决方案

    ladygaogaox: 您好,我看了您这篇文章《CCF大赛:电商用户购买行为预测 解决方案》,我想跑一遍,请问可以要一下您的数据和代码吗

  • CCF大赛:电商用户购买行为预测 解决方案

    风pro: 请问完整代码在哪里看呢

  • 如何划分子网

    大娘水饺小鸡: 5.(二)里面的A类地址范围应该是到127吧

  • Jupyter notebook:使用argparse包报错与解决方法

    weixin_46527056: 谢谢大佬解决了我的问题

  • 使用RNN进行中文文本分类(酒店评论)

    鲸落216: 请问这个是RNN代码吗?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 理解微服务架构模式
  • 技术架构基础组件简介
  • 《中台架构与实现》读书笔记
2023年6篇
2022年8篇
2021年30篇
2020年30篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网佳木斯区号如来神掌电视剧午夜梦回逃脱夜色无边成人起名扫黑风暴全集资源起名五行缺甚么如何加盟开店仙境传说奥德赛攻略八佰伴官网起名网免费取名三藏蚂蚁金服不扣纽的女孩文旅公司起名给猫咪起英文名大鱼起名网带水火的男孩起名大全pornmovie齐人有好猎者办公用品起名大全女孩儿 喜水木 起名移动硬盘无法识别对母校起名星卡里姓李的男生起什么名字起名公司网你是我的荣耀电视剧免费观看泓德基金管理有限公司好看的种马小说长身淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化