WEB页面请求的过程

news2024/9/21 22:39:43

WEB页面请求的过程
在这里插入图片描述
需求:学校网络里的电脑访问到Google网络中的web服务器中

1、电脑通过物理网线接入校园网中

2、电脑运行DHCP协议,从本地的DHCP服务器获取一个IP地址(DHCP服务器一般由网关路由器充当)
获取过程:
1)电脑作为DHCP客户端,会先发送一个DHCP请求报文----DHCP–discover包(广播包)
传输层:SP(源端口号):68 DP:67
网络层:SIP:0.0.0.0 (代表自己没有IP地址) DIP:255.255.255.255(广播地址)
数据链路层:SM:自己的MAC DMAC:全F

        数据包先通过传输介质,来到交换机上。交换机收到数据包先关注数据帧中的源MAC地址,将源MAC地址和进入接口的对应关系记录在本地的MAC地址表中。之后,再看目标MAC地址,因为目标MAC地址是广播地址,所以,交换机将执行泛洪动作,将该数据包发于所有和自己连接的设备(发送设备除外)。
        因为路由器和交换机连接,路由器将收到该广播帧。先看二层MAC地址,因为是广播帧,所以,将解二层封装看三层;因为三层的目标IP地址是255.255.255.255,所以,路由器将解三层封装,根据三层封装中的协议号(17)判定将该数据交给UDP模块进行处理,UDP解四层封装,UDP模块基于目标端口号67,判定此数据寻址的是DHCP服务,将交于DHCP服务进行后续处理。则此时DHCP服务器收到了DHCP客户端的请求。

(DHCP传输层用的是UDP协议,UDP协议号是17)
2)DHCP服务器将响应DHCP客户端的请求,回复DHCP-offer包。----单播/广播
这个包中将携带可分配网段中的一个可用IP地址(图中可分配网段为68.80.2.0/24,所携带的可用IP地址为68.80.2.101),其中还会包含网关68.80.2.1和DNS服务器68.87.71.226信息。
3)DHCP客户端进行反选,回复DHCP-Request包—请求的是DHCPoffer中的IP的信息。—广播包(可能收到多个DHCP-OFFER,通过广播包的形式,一方面告诉请求IP的DHCP服务器,需要获取他的IP地址;另一方面,告诉广播域中其他的DHCP服务器(如果有)自己所请求的IP地址并不是他们的,可以将地址进行释放)
注:DHCP客户端如果收到多个DHCP-offer,则将选择第一个收到的进行请求。
4)DHCP服务器将发送DHCP-ACK进行最终的确认。—单播/广播(不同厂商不一样)

3、电脑此时已经具备访问谷歌服务器的基本网络条件,则将在浏览器中输入www.google.com的URL(统一资源定位符)

4、因为输入的是域名信息,但是访问服务器需要IP地址信息,所以,电脑将触发生成一个DNS请求,发给DNS服务器。
DNS:域名解析协议
DNS协议请求查找的方法:
1、递归查找—电脑向本地DNS服务器发送查找请求(电脑向本地DNS服务器请求百度的IP地址,本地DNS在自己的地址表中查找百度的IP地址,如果有则直接回复百度的IP地址;如果没有,本地DNS服务器则向下继续查找别的DNS是否有,如果这个DNS也没有,则这个DNS继续向下查找,直到找到,找到后再一层一层往上传输,原路返回,直到本地DNS收到百度的IP地址,本地DNS服务器再将百度的IP地址发送给电脑。)(本地递归查找一般是用UDP的53号端口)
2、迭代查找—本地DNS服务器发送的查找请求(比如说电脑向本地DNS服务器请求百度的IP地址,本地DNS在自己的地址表中查找百度的IP地址,如果有则直接回复百度的IP地址,如果没有,这时候本地DNS回给电脑回复一个IP地址,但是这个IP地址不是百度的IP,而是另一台DNS服务器,这个DNS服务器再在本地地址表中查询是否有百度的IP地址,如果有则回复给电脑,如果没有,则再给电脑回复另外一台DNS服务器的IP地址…………)(迭代查找用的是TCP的53号端口)
传输层: UDP DP :53
网络层:SIP:68.85.2.101 DIP:68.87.71.226
数据链路层:SM:自己MAC 目标MAC:???(现在还不知道)(目标MAC是网关MAC,因为电脑和DNS服务器不在一个广播域,所以要网关路由器帮忙转发信息)

5、为了获取网关的MAC地址,电脑需要先以网关IP:68.85.2.1作为请求IP,发送一个ARP请求包。
源IP:68.85.2.101 目标IP:68.85.2.1
源MAC:自己的MAC 目标MAC:全F(广播的形式)
工作过程:
首先,主机通过广播的形式发送ARP请求,通过IP地址请求MAC地址。因为是广播帧,所以,广播域内所有的设备均会收到这个请求,设备收到后,先将数据包中的源IP和源MAC的对应关系记录在自己本地的ARP缓存表中。然后,再看请求的IP地址,如果请求的不是自己的IP地址,则将直接丢弃数据包。如果请求的是自己的IP地址,则进行应答。之后,再进行通讯时,将优先查看本地的ARP缓存表,若有记录,则按照记录中的MAC地址添加;若不存在记录,则再发ARP请求获取。
通过ARP请求,电脑将获得网关的MAC地址

6、则DNS请求包将正常封装
传输层:UDP DP :53
网络层:SIP:68.85.2.101 DIP:68.87.71.226
数据链路层:SM:自己MAC 目标MAC:网关的MAC

7、网关收到电脑发送的DNS请求的数据包,先看MAC地址,目标MAC是自己的MAC,则将解二层封装,看三层。基于三层的目标IP地址去查看本地的路由表。如果存在可以匹配上的路由条目,则将按照路由条目的指示来进行转发。如果不存在,则将直接丢弃该数据报。(但是在当前情景中网关会通过缺省路由发给公网中的ISP)

**8、通过路由器的转发,该请求包将来到本地的DNS服务器上。**如果本地的DNS服务器的缓存中存在该域名对应的IP地址,则将直接返回给电脑。如果没有,则将向DNS根服务器发起迭代查找请求,最终获取到该域名对应的IP地址,返回给电脑。(迭代查找时使用的是TCP的53号端口)

9、电脑将通过DNS协议获得www.google.com所对应的IP地址信息。之后,将触发本地电脑到目标服务器的HTTP关系的建立。
因为HTTP协议是基于TCP协议来进行工作的,所以,需要先完成电脑和目标服务器之间的TCP会话连接。(三次握手)
当TCP会话建立之后,客户端(电脑)和服务器将建立双向的会话通道,将可以相互发送信息。

10、客户端----服务器:发送Http请求----获取网页信息----发送GET请求

11、服务器----客户端:收到GET请求后服务器将会给客户端 返回网页信息(200 OK)----至此,小明的电脑上将获取到谷歌web服务器的页面信息。

三次握手没有建立的情况下,双方不能传输数据。三次握手和数据可靠传输是两件事情,必须保证面向连接没有问题,数据才能可靠传输。
如果双方是客户端(C)、服务器(S)模型—CS模型,一般都是客户端先发送同步请求包进行第一次握手
如果两端不是客户端、服务器模型,谁先发送数据都无所谓,只是一方发送之后,另一方就抑制了第一次握手能力

三次握手:
第一次握手:主机向服务器发送同步请求包(syn+req)(syn标记位置1)
同步请求:请求两端为相同的状态(A主机准备给B发送数据,B服务器做好准备接收的状态)(主机请求服务器的端口开放)
第二次握手:服务器给主机回复(ACK+syn+req,(ACK标记位置1)(ACK确认标记位) ACK是确认的意思)(确认的同时又发送了一个同步请求包)(服务器请求主机的端口开放)
第三次握手:主机给服务器回复ACK包(ACK标记位置1,因为通信是双向的,所以也会把SYN请求标记位置1)

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

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

相关文章

盛水最多的容器 + 接雨水(相向双指针)

目录 一、盛水最多的容器 二、 接雨水 2.1 - 前后缀分解 2.2 - 相向双指针 一、盛水最多的容器 题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使…

BPM结合低代码,为企业信息化建设添砖加瓦

编者按:业务流程管理和低代码平台结合的意义是什么?能为用户带来什么?本文了分析了低代码平台和BPM结合的意义,并进一步介绍了低代码BPM软件开发平台的应用场景。关键词:嵌入式流程激活,端到端流程打通&…

【ES6】模块化语法(默认、按需导入import导出export的操作)

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:ES6模块化语法(默认、按需导入导出的操作) 本文速览: 目录 本文速览&#x…

Word图片自动编号,调整图片顺序自动更新图片编号,引用该图片的地方也对应更新

Word图片自动编号,调整图片顺序自动更新图片编号,引用该图片的地方也对应更新1.软件环境⚙️2.问题描述🔍3.解决方法🐡3.1.为图片添加题注,实现图片自动编号3.2.设置编号格式(可选)3.3.在文中引…

参数服务器的参数设置

#! /usr/bin/env python #condingutf-8 import rospy if __name__ __main__: #初始化节点 rospy.init_node(param_set) #新增参数 rospy.set_param(type_p,xiaohuangche) rospy.set_param(radius_p,0.15) #修改参数 rospy.set_param(radius_p,0.2…

我的【二哈喇子!】周岁生日

文章目录回看CSDN的2022新年新Flag回看CSDN的2022 提示:这里可以添加本文要记录的大概内容: 各位朋友大家好,我是二哈喇子!谢谢你现在在阅读这篇文章。 二零二二年一月二十一日,我的小二哈"出生"了&#x…

2022年报表开发工具Stimulsoft产品迭代汇总

Stimulsoft Reports是一款报告编写器,主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署,如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等,在你的应用程序中嵌入报告设计器…

AC7811-BLDC无感控制代码详解

BLDC控制框图 BLDC 的控制电路对电机转子位置信号进行逻辑变换后产生脉宽调制 PWM 信号,驱动逆变器的功率开关管,从而控制 BLDC 电机各相绕组按一定顺序工作,在电机气隙中产生跳跃式旋转磁场。BLDC 转子旋转时,每转过 60&#xf…

云游戏三重门:体验、生态和硬件

配图来自Canva可画 如今硬件已经成为制约游戏体验的最主要因素之一。而云游戏的提出,则被看做是解决这种矛盾的其中一种重要手段。对于玩家来说,云游戏意味着既不再需要价格高昂的硬件设备,也不再需要体量庞大的游戏本体,就能获得…

ssd重装系统的详细教程

当我们给电脑更换安装了新的固态硬盘,原来的系统没有了。那么电脑新固态ssd怎么安装win7系统,下面小编就教下大家ssd重装系统教程,希望大家都可以学会哦。 工具/原料: 系统版本:Windows7 品牌型号:惠普星…

PDF怎么转换成excel免费?快收藏这几个方法

在我们日常处理的的工作文件中,PDF文件的数量是越来越高的,而且因为PDF文件比较方便观看,所以很多数据文件也都是PDF格式的,不过PDF文件是不可编辑的,所以在一定程度上还是有限制的,这样我们就不能及时修改…

数据的存储(2)大小端字节序存储

TIPS 1. 2. 3. *是解应用操作符,*指针变量,对指针变量进行解应用操作,固然没问题。但是要知道的是:也可以直接对最最原始的地址进行解应用操作,如*字符串常量,*数组名,*&a等等&#…

云开发项目如何管理资产下的设备?

在开发 SaaS 应用前,开发者需要先在 涂鸦 IoT 开发平台 上创建云开发项目并进行必要的配置。下面我将为大家介绍管理资产的详细操作方法。 云开发支持以资产为维度,对不同资产下的设备进行权限分隔和资产内设备的统一管理。 新建资产 资产&#xff08…

dpdk-lvs的一次线上故障排查报告

背景 我们内部基于 dpdk 自研的高性能负载均衡器 dpdk-lvs 已经在多个机房部署上线,运行正常,但近期有多个金融相关的业务反馈,服务数据包在经过dpdk-lvs转发后,会出现hang住的情况。 问题 1、dpdk-lvs 已经在多个机房上线&…

服务搭建篇(五) Redis单机/redis-cluster集群搭建

一. Redis集群简介 redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩…

C语言重点解剖指针和数组要点速记

1.指针指向的是最低字节地址。 2.每一次跑程序,变量的地址都会是随机的,这是一种保护机制。基本上不可以使用地址直接访问变量。 3.以下是一段有意思的代码。 4.在栈上开辟变量,地址由高到低变化,值得注意的是,不是连…

云原生|kubernetes|kube-bench安全检测工具的部署和使用

前言: 安全是一个绕不开的话题,那么,在云原生领域,在kubernetes内更加的需要安全。毕竟没有人愿意自己的项目是千疮百孔,适当的安全可以保证项目或者平台稳定高效的运行。 安全性是一个永远不会消失的问题&#xff0c…

基于springboot+mybatis+mysql+vue软件缺陷管理系统

基于springbootmybatismysqlvue软件缺陷管理系统一、系统介绍二、功能展示1.主页2.个人中心3.缺陷管理4.项目管理5.系统管理6.统计分析三、代码展示四、其它1.其他系统实现2.获取源码一、系统介绍 系统主要功能: 开发人员:主页、个人中心(我…

Java记录2:Java的三种注释类型

Java 注释 文章目录Java 注释一、单行注释 //二、多行注释 /*三、文档注释用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性)。   注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来&#xff0…

EasyExcel写数字格式数据默认为科学计数法解决方案

问题背景 我们项目有个场景是excel下载,需要将数字类型的数据由字符格式转化为数字格式,但由于数字较长,利用easyExcel写入文件后,数字类型会默认展示为科学计数法。下面我们来看看demo演示。 demo演示 准备以下代码 public c…