计网:从输入URL到网页显示期间发生了什么

news2024/9/28 11:23:24

1、URL包含的信息

我们输入的url中包含着一些信息:

  • http:表示的此次我们使用的什么协议
  • /www.baidu.com:表示的是我们想要访问的服务器名称,也就是域名
  • dir3/home.html:表示我们所要访问的资源

2、通过DNS解析URL获得IP

在计算机寻址中我们是通过ip进行转发的,所以在进行信息发送之前我们需要将URL转化为IP。

在DNS服务器中储存了服务器域名和IP的对应关系。

其实真实域名是www.baidu.com.在最后还有一个点。这个点代表的就是根域名服务器。

域名服务器有:

DNS解析IP过程:

  1. 客户端会先询问本地域名服务器,看它是否知道这个域名所对应的ip地址。
  2. 如果本地域名服务器不知道就会去问,本地域名服务器就问讯根域名服务器,让他告诉自己这个域名属于哪个顶级域名服务器。
  3. 拿到所对应的顶级域名服务器地址后,就会问询这个域名所对应的是哪个权威域名服务器。
  4. 拿到对应的权威域名服务器后,本地域名服务器会就直接问权威域名服务器说这个域名所对应的IP地址是什么。此时权威域名服务器就可以直接将域名所对应的IP返回给本地DNS。
  5. 此时本地DNS就将IP返回给客户端,则客户端就和目标服务器进行连接建立。

并不是每此建立连接都有这么多过程。因为有缓存这个东西。客户端会先看看浏览器有没有这个域名缓存,如果没有则会去看看操作系统有没有这个缓存,如果没有就再去hosts文件看有没有标注这个域名和IP的关系,都没有的话才会去询问本地域名服务器。

3、传输层

获取到IP后就轮到网络传输中各个层起作用的时候了,对数据进行封装和传输。

在HTTP传输数据前要先建立TCP连接,也就是TCP三次握手。这三次握手的作用就是确认客户端和服务端双方都具有接收和返送消息的能力。

当数据过长时,超过MSS长度时,TCP会对HTTP包进行拆解,并把拆解出来的部分放到单独的TCP包中。

MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。

在TCP包中所包含的信息:

  • 在TCP协议中,源端口号和目标端口号是必不可少的。这两个端口号用于确定数据属于哪个应用程序。

  • TCP还使用序列号来解决数据包乱序的问题。通过为每个数据包分配一个序列号,接收方可以将乱序的数据包按照正确的顺序进行重组。

  • 确认号也是TCP中的重要元素。发送方在收到确认号之前会一直重复发送数据包,直到接收方发送确认号回复。这样可以解决数据包丢失的问题。

  • 还有一些状态位也是TCP中的重要内容。例如,SYN用于建立连接,ACK用于确认接收到的数据,RST用于重新连接,FIN用于结束连接等。TCP是一种面向连接的协议,因此双方需要维护连接的状态,并通过发送带有状态位的数据包来更新状态。

  • 此外,TCP还使用窗口大小来进行流量控制。通信双方会声明自己的窗口大小,以指示自己的处理能力。通过控制发送速度,TCP可以防止发送方发送过多的数据导致接收方无法处理。

  • TCP还会做拥塞控制,在网络情况差时,TCP可以通过控制自身的发送速度来减轻网络拥塞的影响。

加上TCP头后此时网络包是:

建立网TCP包后数据包就传输到了网络层,进行转发。

4、网络层

在 IP 协议里面需要有源地址 IP 和 目标地址 IP

  • 源地址IP,即是客户端输出的 IP 地址;
  • 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP。
  • 在转发过程中通过路由表规则判断转发到哪一个网段。
  • 匹配规则就是目的地址与路由表条目中的对应掩码进行与运算,如果运算后结果与相对应的条目相同,则转发到此条目所对应的端口所对应的网段中去。
  • 一般还说路由器都有一个默认网关,如果前面具体的条目每一个对应上的,则会转发到默认网关所对应的网段中去。

我们经常使用一个Ping命令,用于判断网络是否可达,这个命令使用的就是ICMP协议,是TCP/IP协议族的一部分,它运行在IP层之上,用于传输错误信息和控制信息。

当IP层接收到一个较大的数据包,并且知道下一跳的链路层MTU小于该数据包的大小时,IP层会对数据包进行拆分。每个拆分后的片段都会有一个新的IP头部,其中包括标识符、标志位和片段偏移字段,这些信息用于在接收端重组原始数据包。

MTU(Maximum Transmission Unit,最大传输单元)是指在一个特定的网络层或链路层上可以传输的最大数据包大小(不包括头部信息)。在以太网中,标准的MTU通常是1500字节。

5、数据链路层(MAC层)

在上一层中我们通过IP路由转发,可以进行路由转发,进行远程定位,但点到点中的数据发送就需要MAC层的帮助了,当数据进入到一个网络内,此时数据包中只有目的地址的IP,但传输数据需要对方发MAC地址,此时我们就需要一个协议:ARP协议。

ARP协议通过广播请求来获取目标设备的MAC地址:

  1. 发送方广播一个ARP请求,其中包含了目标IP地址。
  2. 目标设备接收到请求后,回应其MAC地址。
  3. 发送方将目标IP地址和MAC地址对应起来,存储在本地的ARP缓存表中,并使用该MAC地址发送数据。

6、物理层

在上面的过程中数据包存放的都是一串二进制数据,二进制数据无法进行传输,所以需要将其转化为电信号,才能进行传输,完成此工作的是网卡。在网卡驱动程式获得网络包后,会将其复制到网卡中,并在其头部加上报文头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。

7、服务端

当数据经过层层关卡,到达服务端后,会从协议栈自底向上逐渐拆解相对应层的协议头,最终给服务端真正的请求数据,并对其进行相应,然后通过自上向底对相应数据进行包装,最终有传输到客户端,客户端把返回回来的页面进行渲染,展示给用户。

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

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

相关文章

JAVA中的JMM(Java 内存模型)详解

1.JMM概念 Java 内存模型(Java Memory Model 简称JMM)是一种抽象的概念,并不真实存在,指一组规则或规范,通过这组规范定义了程序中各个变量的访问方式。 因为在不同的硬件生产商和不同的操作系统下,内存的访…

嵌入式安全:Provencore Secure os

嵌入式安全有何独特之处? 嵌入式安全领域的领导者 ProvenRun 宣布,其旗舰产品 ProvenCore for ARM™ Cortex-A 最近获得了 通用标准 (CC) EAL7 认证。这是全球首创,因为没有其他操作系统或可信执行环境 (TEE) 达到该安全级别。相比之下,移动安全市场上第二安全的 TEE(对于…

版本控制案例:全球虚拟制片领导者Dimension借助Perforce Helix Core管理大型二进制文件,实现跨地域团队协作,简化制作流程(上)

创建虚拟世界和人类角色需要一系列的软件工具。但最终愿景很少是由单一工作室独立完成的。对于大型项目,工作室需要通力合作,将全球的团队成员和数字资产联合起来。 Dimension Studio——体积内容捕捉和虚拟制片领域的领导者——不断将新技术和新方法融…

传统产品经理 vs AI产品经理

随着科技的日新月异和技术的不断革新,AI技术如今已深度融入各行各业,使得身处此领域的产品经理们迎来了前所未有的新挑战与广阔机遇。以下是我精心整理的内容,旨在分享传统产品经理如何顺应时代洪流,成功转型为AI产品经理的策略与…

Java面试之操作系统

1、冯诺依曼模型 运算器、控制器、存储器、输入设备、输出设备 32位和64位CPU最主要区别是一次性能计算多少字节数据,如果计算的数额不超过 32 位数字的情况下,32 位和 64 位 CPU 之间没什么区别的,只有当计算超过 32 位数字的情况下&#…

中国篆刻孙溟㠭凿木《应无所住而生其心》

应无所住而生其心 弘一法师言:学佛不是让你出家,也不是让你变得与众不同。学佛就是一个正常生活的人,一个善良的人懂得用佛法降服自心,消除烦恼所有有皆是虚妄,若见诸相非相,即见真我。 孙溟㠭凿木《应无…

Vue3发送验证码,开启倒计时,并且倒计时结束前无法点击

目录 1.最终效果 2.HTML 3.JS 1.最终效果 先看效果,点击发送验证码,然后开启倒计时,倒计时结束前无法再次发送,并且该按钮处于无法选中状态 废话少说,上干货,直接看代码 2.HTML 按钮部分内容&#xf…

揭秘eBay店铺排名提升秘诀:测评自养号的好处

在竞争激烈的电商市场,eBay作为全球知名的在线拍卖及购物网站,为卖家提供了广阔的舞台。如何在众多商品中脱颖而出,提升产品排名,成为每位eBay卖家关注的焦点。 eBay卖家如何提升排名? 1、关键词优化:关键…

适合制造业的项目管理软件都有哪些?

项目管理软件涉及进度、预算成本、资源、开发、流程、质量、风险、工时、知识文档、商务等各个方面,是企业项目管理领域的重要辅助工具,能够帮助组织提高项目管理水平与质量,确保项目顺利进行。 一、 奥博思 PowerProject 项目管理系统 Pow…

汇川Autoshop编程软件连接PLC并下载程序的具体步骤示例

汇川Autoshop编程软件连接PLC并下载程序的具体步骤示例 如下图所示,打开AutoShop编程软件后,新建项目,点击工具—通讯设置, 如下图所示,在弹出的窗口中选择通讯类型(这里选择以太网),设置好IP地址,然后点击搜索,正常情况下可以搜到PLC, 如下图所示,如果搜索不到PLC…

我在高职教STM32——I2C通信入门(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

基于PREEvision的架构方案评估

Introduction 随着汽车行业的快速发展和消费者需求的日益复杂化,现代汽车已不再仅仅是机械设备的集合体,更是高度复杂的电子和电气系统的结合体。在这样的背景下,如何有效地设计和优化汽车电气架构,成为制造商和供应商面临的关键…

CSS实现元素hover时背景色拉伸渐变

HTML代码 <ul><li><p><a href"#">Facebook搜索</a></p></li><li><p><a href"#">Instagram搜索</a></p></li><li><p><a href"#">Google搜索&…

【Qt】如何搭建Qt开发环境

Qt的开发工具 需要搭建Qt开发环境&#xff0c;需要安装3个部分&#xff1a; C编译器&#xff08;gcc、cl.exe...&#xff09;注意&#xff0c;这里的C编译器不是指visual studio这种集成开发环境&#xff0c;编译器不等于IDE&#xff0c;编译器只是IDE调用的一个程序。Qt SDK…

办公知识分享:如何自己制作一个图文二维码呢?

和一般的网址二维码、文件二维码等不同&#xff0c;H5编辑二维码支持在一个H5页面同时展示&#xff1a;图片内容、文字内容、并支持插入超链接、视频、音频等文件…。 其用途非常广泛&#xff0c;在教育、企业办公、产品包装设计、展会、艺术展览等都在使用H5编辑二维码来传播…

代码随想录算法训练营第24天 | 题目:93.复原IP地址 、78.子集 、 90.子集II

代码随想录算法训练营第24天 | 题目&#xff1a;93.复原IP地址 、78.子集 、 90.子集II 文章来源&#xff1a;代码随想录 题目名称&#xff1a;93.复原IP地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09…

Apache EChart前端图表

目录 一、了解Apache EChart 1.1 什么是Apache Echart 1.2 为什么要使用图表 1.3 常见的图表以及特点 二、Apache EChart的基本使用 2.1 下载echarts.js 2.2 echart基本使用案例 三、多类型图表的使用 3.1 柱状图(type:bar) --基本柱状图 --多系列柱状图 --堆叠柱状图…

我面试了个目标 50w 的大厂老哥,很符合预期

大家好&#xff0c;我是程序员鱼皮。上周我直播模拟面试了一位很优秀的老哥&#xff0c;有些感受想和朋友们分享分享。 先简单介绍一下&#xff1a;老哥是一本硕士出身 在大厂做后端开发 2 年&#xff0c;buff 拉满&#xff0c;目标是通过跳槽冲击 50 万的年薪。 说实在的&a…

Python 如何进行图像处理(OpenCV, PIL)

图像处理是计算机视觉的重要组成部分&#xff0c;它涉及对数字图像进行分析、修改和处理。在Python中&#xff0c;OpenCV和Pillow&#xff08;PIL是Pillow的前身&#xff09;是两个非常流行的图像处理库。 一、OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Lib…

【文心智能体】梗图七夕版,一分钟让你看懂如何优化prompt,以及解析低代码工作流编排实现过程和零代码结合插件实现过程,依然是干货满满,进来康康吧

目录 背景什么是梗图梗图概念梗图结构 低代码开发最小运行单元大模型链提示词模板文心模板输出效果 测试工具链HTTP请求工具 梗图工具链全流程 梗图优化Prompt提示词优化后梗图结构提示词前后对比优化前效果优化后效果API接口BOS图片水印 梗图插件格式说明构思插件清单文件定义…