首页 > 其他分享 >Web页面请求历程

Web页面请求历程

时间:2024-02-27 09:12:57浏览次数:31  
标签:Web 网关 FF ip 报文 地址 DNS 历程 页面

本文仅对Web页面请求历程进行简单的介绍, 由于作者初学计算机网络, 同时也没有学习图论的知识, 若有不妥之处还请指出.

一、准备DHCP、UDP、IP和以太网

  • 以我的笔记本为例,我的笔记本与网络连接,此时笔记本没有ip地址,所以无法进行操作
  • 先获取ip地址,笔记本的操作系统生成一个DHCP请求报文,并将次报文放入目的端口67,源端口68的UDP报文段中,该UDP报文段被放在目的地址255.255.255.255(广播地址),源地址0.0.0.0
  • 包含该ip数据报被放置在MAC地址为FF:FF:FF:FF:FF:FF(广播)的以太网帧中。
  • 包含DHCP的帧发送到以太网交换机,以太网交换机在所有出端口广播该帧
  • 路由器收到该帧,并取出ip数据报,发现其地址为广播ip地址,就交于更上一层协议处理,因此提取出该数据报的载荷:即包含的UDP报文段
  • DHCP请求报从此UDP报文段中取出,此时DHCP服务器有了这个DHCP请求报文
  • 服务器根据自己的块分配地址给我的笔记本,并将IP地址、DNS服务器的ip地址、默认网关路由器的ip地址、子网块都包含在一个DHCP ACK报文段中,这个报文段被放入一个ip数据报中,再被放入有一个以太网帧中发回(原路返回)
  • 由于交换机是自学习的,我的笔记本的MAC地址会被记住,便可以通过交换机原路返回
  • 收到以太网帧后抽取数据报再抽取UDP报文段,再抽取ACK的内容,记录下自己的ip地址和DNS服务器的ip地址。并在ip转发表中加入默认网关的地址

二、准备DNS和ARP

  • 现在我在电脑上意图跳转www.google.com
  • 电脑的操作系统生成一个DNS查询报文,将字符串www.google.com放入DNS报文的问题段中.这个DNS查询报文被放在目的端口53的UDP报文段中,并生成ip数据报
  • 数据报生成以太网帧将要发往默认网关,然而现在我的笔记本只知道默认网关的ip地址不知道MAC地址,就要使用ARP协议获取MAC地址.
  • 笔记本先生成一个具有目的ip68.85.2.1(默认网关ip地址)的ARP查询报文,这个报文放在具有目的MAC为FF:FF:FF:FF:FF:FF(广播)的以太网帧中,并向交换机发送该帧,交换机将其广播.网关路由器则会收到该广播
  • 网关路由器传回一个ARP回答,传回来了他的MAC地址和ip地址
  • 我的笔记本接收到了这个回答的帧,并抽出了网关路由器的MAC地址

三、到DNS服务器

  • 网关路由器终于可以收到该帧了,接收该帧并抽取包含DNS查询的ip数据报.路由器查找该数据报的目的地址(DNS服务器的地址)并转发该帧
  • 该帧被isp网络接收,根据其域内协议,将ip数据报送到DNS服务器.DNS服务器抽取出DNS查询报文并在库中搜寻www.google.com对应的ip地址(或者询问其他层级的DNS服务器)
  • 查询成功后,DNS服务器形成了一个包含主机名到ip地址的映射的DNS回答报文,将此报文发回.

四、web客户和服务其交互(TCP和HTTP)

  • 现在我的笔记本可以生成TCP套接字并利用TCP进行数据传输,
  • 先进行三次握手:
    • 发送目的端口80的TCP SYN报文段,目的ip地址为google的ip地址,经过路由器的转发,到达www.google.com
    • 欢迎的报文会被返回,笔记本接收到欢迎的报文后就可以向www.google.com发送字节.可以发送一个HTTP GET报文,放置进数据报中,并交付到www.google.com
    • google返回http响应,笔记本从响应中抽取html文件,显示web网页

标签:Web,网关,FF,ip,报文,地址,DNS,历程,页面
From: https://www.cnblogs.com/Fgociallo/p/18036102

相关文章

  • ssts-hospital-web-master项目实战记录三十二:项目迁移-Vue项目Hook和插件的区别
    记录时间:2024-02-27一、准备工作【使用“文心一言”搜索】Vue3中的Hook(如setup、onMounted、onUpdated等)具体是如何工作的?它们与组件的生命周期有何关联?Vue3引入了CompositionAPI,这是一种新的、可选的方式来组织和重用Vue组件的逻辑。在CompositionAPI中,Hook(如setup、onMo......
  • uniapp nvue页面 map地图全屏设置
    因为nvue页面:100vh以及百分比不可用,所以1,可以获取当前屏幕高度然后赋值<map:latitude="latitude":longitude="longitude":style="'height:'+windowHeight*2+'rpx;'"></map>const{windowWidth,windowHeight,appName}=......
  • 解决uni-app 输入框,键盘弹起时页面整体上移问题
    我们每次在做UNIAPP小程序和H5遇到输入框时,总会在测试的时候点击输入框弹出软键盘把页面往上移动,仔细翻读uniapp文档的时候发现了一个属性adjust-position:Boolean类型,作用是键盘弹起时,是否自动上推页面1.发现将adjust-position属性设置为false。就可以了。前提是vue页面softin......
  • webserver服务器学习记录
    利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求利用标准库容器封装char,实现自动增长的缓冲区基于小根堆实现的定时器,关闭超时的非活动连接利用单例模式与阻塞队列实现异步的日志系统,记录服务器......
  • vue页面上显示package.json中的version
    在Vue项目中,你可以使用process.env来访问构建时注入的环境变量,包括package.json中的某些字段。但是,process.env通常不会直接包含package.json的所有内容。不过,你可以通过构建脚本将version字段注入到环境变量中。以下是如何在Vue项目中获取package.json中的version字段的步骤:在......
  • Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现
    前言:在上一篇中,我们了解了如何下载、配置和运行Taurus.MVCWebMVC框架。现在,让我们开始编写一个简单的页面并进行呈现。步骤1:创建控制器首先,我们需要创建一个控制器来处理页面呈现的逻辑。在VisualStudio中,右键单击项目文件夹,选择「添加」->「类」。在弹出的对话框中,......
  • ssts-hospital-web-master项目实战记录三十:项目迁移-插件实现说明
    记录时间:2024-02-26一、准备工作【使用“文心一言”搜索:Vue.js中模块和插件有什么区别?】在Vue.js中,模块(Modules)和插件(Plugins)都是用于扩展和增强Vue.js功能的方式,但它们在使用和目的上有一些不同。模块(Modules)模块是Vue.js中组织代码的一种方式,通常用于将应用程序划分为不同......
  • vue init webpack 和vue create的几点区别
    vueinitwebpack和vuecreate的几点区别:https://blog.csdn.net/xilejie/article/details/130061075?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170891269616800184194526%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request......
  • 一个支持Sora模型文本生成视频的Web客户端
    大家好,我是Java陈序员。最近OpenAI又火了一把,其新推出的文本生成视频模型——Sora,引起了巨大的关注。Sora目前仅仅只是发布预告视频,还未开放出具体的API.今天,给大家推荐一个最近十分火热的开源项目,一个支持使用Sora模型将文本生成视频的Web客户端。关注微信公众......
  • ssts-hospital-web-master项目实战记录十六:项目迁移-模块实现(page-info)
    记录时间:2024-02-25二、page-info模块实现framework/page-info/index.ts//javascript用来遍历指定对象所有的属性名称和值//obj需要遍历的对象constallProps=function(obj:any,props:string=''):string{ //使用Object.keys()获取对象自身的所有属性键 ......