查缺补漏----用户上网过程(HTTP,DNS与ARP)

news2024/11/12 15:56:59

(1)HTTP

来自湖科大计算机网络微课堂:

① HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接当收到响应后就立即关闭连接。

每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。

② HTTP/1.1采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。

为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少提高了下载文档的效率。

例题:

:看到MSS,一定要想到慢开始,拥塞避免算法。

2011年统考真题:

(2)DNS

① 若主机不知道本地域名服务器的MAC地址,会通过ARP查询,查询本地域名服务器的MAC地址。

注:通常情况下,网络管理员会手动为DNS服务器指定一个或多个固定的IP地址。

② 一旦用户的设备知道域名服务器的MAC地址,它就会构造一个DNS查询请求发送到域名服务器。这个DNS查询请求包含用户想要解析的域名。

③ 域名服务器收到DNS查询请求后,会查找其缓存或进行递归/迭代查询以确定域名的IP地址。一旦找到IP地址,域名服务器就会将结果(即域名的IP地址)返回给用户的设备。

④ 用户的设备收到DNS查询响应后,现在知道了它想要访问的网站的IP地址。
用户的设备可以使用这个IP地址来与网站服务器建立TCP/IP连接,并发送HTTP请求以获取网页内容。(这里知道网站IP地址,仍须通过ARP协议得到其MAC地址)

补充:注意区别浏览器的缓存和本地域名服务器缓存

浏览器缓存:浏览器缓存DNS查询结果,以便在后续访问相同域名时能够快速获取IP地址,而无需再次进行DNS查询。

本地域名服务器缓存:本地域名服务器缓存是存在于本地网络中的DNS服务器上的一种缓存机制。当用户尝试访问某个域名时,本地域名服务器会首先检查自己的缓存中是否已解析过该域名。如果已解析过且结果仍然有效(即未过期),本地域名服务器会直接将对应的IP地址返回给用户设备,而无需向更高级别的DNS服务器发起查询。

 例题:

① 主机H1首先会发送ARP请求,根据本地域名服务器的IP地址询问本地域名服务器的MAC地址,当得到本地域名服务器的MAC地址后,这时,交换机记录了H1和本地域名服务器的MAC地址和端口号。

② 主机H1向本地域名服务器发送DNS请求,获取域名对应的IP地址,在这期间交换机的表项不会发生改变。

③ H1获得IP地址,将目的IP地址与子网掩码逐位与,发现目的IP地址与自己不在同一个局域网内,于是要将数据报(这个数据报,是要与WEB服务器建立连接的数据报,即第1次握手的数据报)发给默认网关。

④ 此时,ARP表中只记录了本地域名服务器的MAC地址,所以他会再次发送ARP请求,获取默认网关的MAC地址。

③ WEB服务器收到握手请求后,会回复确认,这时路由器会将确认帧转发给交换机,交换机交给H1。

注意:默认网关在收到ARP请求并回复自己的MAC地址时,会顺便把H1的MAC地址记录在自己的ARP表中,所以只需把确认帧交给对应的交换机,交换机再传给H1即可。

解析:

极易错的题:

应注意的点:

① 忽略其他各种时延,只计internet上各服务器往返时延

② 首先要建立TCP连接(TCP握手的前两次连接),才能进行资源访问。

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

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

相关文章

koa、vue安装与使用

koa官网:https://koajs.com/ 首选创建一个文件夹:mkdir koaDemo (cmd即可) 文件夹初始化:npm init (cmd即可) 初始化完成后就会产生一个package.json的文件。 安装: npm install koa --save (vscode的控制台中安装&a…

Linux:版本控制器git的简单使用+gdb/cgdb调试器的使用

一,版本控制器git 1.1概念 为了能够更方便我们管理不同版本的文件,便有了版本控制器。所谓的版本控制器,就是能让你 了解到⼀个文件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录工程的每⼀次改动和版本迭代的⼀个…

ML 系列:第 21 节 — 离散概率分布(二项分布)

一、说明 二项分布描述了在固定数量的独立伯努利试验中一定数量的成功的概率,其中每个试验只有两种可能的结果(通常标记为成功和失败)。 二、探讨伯努利模型 例如,假设您正在抛一枚公平的硬币 (其中正面成功&#xff…

【优选算法篇】微位至简,数之恢宏——解构 C++ 位运算中的理与美

文章目录 C 位运算详解:基础题解与思维分析前言第一章:位运算基础应用1.1 判断字符是否唯一(easy)解法(位图的思想)C 代码实现易错点提示时间复杂度和空间复杂度 1.2 丢失的数字(easy&#xff0…

存算分离与计算向数据移动:深度解析与Java实现

背景 随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggrega…

WPS单元格重复值提示设置

选中要检查的所有的单元格 设置提示效果 当出现单元格值重复时,重复的单元格就会自动变化 要修改或删除,点击

Linux笔记之pandoc实现各种文档格式间的相互转换

Linux笔记之pandoc实现各种文档格式间的相互转换 code review! 文章目录 Linux笔记之pandoc实现各种文档格式间的相互转换1.安装 Pandoc2.Word转Markdown3.markdown转html4.Pandoc 支持的一些常见格式4.1.输入格式4.2.输出格式 1.安装 Pandoc sudo apt-get install pandoc # …

MySQL重难点(一)索引

目录 一、引子:MySQL与磁盘间的交互基本单元:Page 1、重要问题:为什么 MySQL 每次与磁盘交互,都要以 16KB 为基本单元?为什么不用多少加载多少? 2、有关MySQL的一些共识 3、如何管理 Page 3.1 单个 P…

solo博客使用非docker方式进行https部署

solo博客使用非docker方式进行https部署 数据库配置启动命令讲解设置自定义访问端口:9168 配置https访问部署效果 服务器上请通过 Docker 部署。但是我服务器资源有限,不想安装docker,直接以编译包的形式运行,节省资源。 如果不会…

【Steam登录】protobuf协议逆向 | 续

登录接口: ‘https://api.steampowered.com/IAuthenticationService/BeginAuthSessionViaCredentials/v1’ 精准定位,打上条件断点 this.CreateWebAPIURL(t) ‘https://api.steampowered.com/IAuthenticationService/BeginAuthSessionViaCredentials/v1…

环形链表问题(图 + 证明 + 题)

文章目录 判断链表是否有环返回链表开始入环的第一个结点 判断链表是否有环 题目链接 思路: 可以明确的是:若一个链表带环,那么用指针一直顺着链表遍历,最终会回到某个地方。 我们可以定义两个指针(快慢指针&#xf…

Linux Centos7 如何安装图形化界面

如果系统是以最小安装的话,一般是不带有图形化界面的,如果需要图形话界面,需要单独安装。本篇教程,主要介绍如何在CentOS7中安装图形化界面。 1、更新系统 首先,保证系统依赖版本处于最新。 sudo yum update -y2、安装 GNOME 桌面环境 sudo yum groupinstall "GNOME…

Spark的学习-02

Spark Standalone集群的安装 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接客、资源管理和任务 调度,等同于YARN中的ResourceManager 从:Worker:计算节点:负责利用自己…

Linux相关概念和易错知识点(20)(dentry、分区、挂载)

目录 1.dentry (1)路径缓存的原因 (2)dentry的结构 ①多叉树结构 ②file和dentry之间的联系 ③路径概念存在的意义 2.分区 (1)为什么要确认分区 (2)挂载 ①进入分区 ②被挂…

《Linux运维总结:基于银河麒麟V10+ARM64架构CPU部署redis 6.2.14 TLS/SSL哨兵集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、简介 Redis 哨兵模式是一种高可用性解决方案,它通过监控 Redis 主从架构,自动执行故障转移,从而确保服务的连续性。哨兵模式的核心组件包括哨兵(Sentine…

vue3实现一个无缝衔接、滚动平滑的列表自动滚屏效果,支持鼠标移入停止移出滚动

文章目录 前言一、滚动元素相关属性回顾一、实现分析二、代码实现示例:2、继续添加功能,增加鼠标移入停止滚动、移出继续滚动效果2、继续完善 前言 列表自动滚屏效果常见于大屏开发场景中,本文将讲解用vue3实现一个无缝衔接、滚动平滑的列表自…

腾讯云nginx SSL证书配置

本章教程,记录在使用腾讯云域名nginx证书配置SSL配置过程。 一、nginx配置 域名和证书,替换成自己的即可。证书文件可以自定义路径位置。服务器安全组或者防火墙需要开放80和443端口。 server {#SSL 默认访问端口号为 443listen 443 ssl; #请填写绑定证书的域名server_name c…

RabbitMQ的DLX(Dead-Letter-Exchange 死信交换机,死信交换器,死信邮箱)(重要)

RabbitMQ的DLX 1、RabbitMQ死信队列2、代码示例2.1、队列过期2.1.1、配置类RabbitConfig(关键代码)2.1.2、业务类MessageService2.1.3、配置文件application.yml2.1.4、启动类2.1.5、配置文件2.1.6、测试 2.2、消息过期2.2.1、配置类RabbitConfig2.2.2、…

陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解

时下,开发一款功能全面、用户体验良好的陪诊问诊APP成为了医疗行业的一大热点。本文将结合互联网医院系统源码,详细解析陪诊问诊APP的开发过程,为开发者提供实用的开发方案与技术指导。 一、陪诊问诊APP的背景与功能需求 陪诊问诊APP核心目…

FreeRTOS 21:递归互斥信号量

递归信号量,见文知义,递归嘛,就是可以重复获取调用的,本来按照信号量的特性,每获取一次可用信号量个数就会减少一个,但是递归则然, 对于已经获取递归互斥量的 任务可以重复获取该递归互斥量&…