前端计网面试题(二)

一、在浏览器中输入url并且按下回车之后发生了什么?

  • 首先解析url,判断url是否合法,如果合法再判断是否完整。如果不合法,则使用用户默认的搜索引擎进行搜索。
  • DNS域名解析获取URL对应的ip地址。(首先看本地是否有缓存,没有查找本地DNS服务器,没有的话再向根域名服务器发送请求获取顶级域名服务器的地址,然后再向顶级域名服务器发送请求,获得权威域名服务器的地址,最终向权威域名服务器发送请求获取到域名的ip地址)
  • 获取MAC地址
  • TCP三次握手建立连接(首先客户端向服务器端发送一个SYN请求报文和一个随机序号,服务器收到请求后向客户端发送一个ACK确实报文段,并且也发送一个随机序号,客户端收到后再发送一个ACK确认报文,服务器收到后确认。
  • HTTPS握手(如果使用https协议则存在,主要利用到SSL/TSL协议保障信息的完整和安全性,防止数据在传输过程中被篡改,冒充,窃听。具体主要是通过混合加密(对称和非对称加密算法),摘要算法(哈希函数进行比较,判断信息是否被篡改),数字签名,以及申请数字证书实现身份验证,信息加密以及完整性校验)
  • 返回数据:页面请求发送以后,服务器会返回相应的响应头和HTML正文。
  • 浏览器解析渲染:首先处理HTML文件并构建DOM树,然后处理CSS标记构建CSSDOM树,将DOM树和CSSOM树合并为一颗渲染树,然后根据渲染树来布局,计算每个节点的几何信息,将各个节点的信息渲染到屏幕上,完成页面的渲染。
  • TCP四次挥手释放连接:首先客户端发送一个FIN报文和一个序列号,服务器收到后会发送一个ACK确认报文,此时服务器还可以发送数据给客户端,然后服务器发送一个FIN报文和一个序列号,客户端收到后发送确认。经过2MSL(最长段报文生命周期)后,连接关闭。

二、URL的组成部分

主要包括协议,域名,端口号,虚拟目录(/与/之间的内容),文件名(/到?之间的内容),参数部分(?后面的内容)

三、TCP(传输控制协议)和UDP(协议数据报协议)

  • 都是传输层协议

1.TCP协议特点

  • 面向连接(发送数据之前必须建立连接)
  • 仅支持单播传输(点对点),不支持广播和多播。
  • 面向字节流传输
  • 可靠传输(利用确认重传机制)
  • 提供拥塞控制

2. TCP和UDP区别

在这里插入图片描述

3.使用场景

TCP:文件传输,接收邮件,远程登录
UDP:QQ聊天,语音,视频

4.TCP重传机制

基于时间:TCP在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传。
基于确认信息:数据可能出现丢失、重复或失序的情况,为保证数据传输的正确性,TCP会重传其认为已丢失的包。

5.TCP拥塞控制机制

  • 慢启动:开始的时候不要发送大量数据,而是先测试一下网络的拥塞程度,由小到大增加拥塞窗口的大小。
  • 拥塞避免:当窗口值到达慢开始门限值的一半时,执行拥塞避免,每经过一个返回时间RTT就把发送方的拥塞控制窗口加一。
  • 快速重传:快重传要求接收方在收到一个失序的报文段后就立即发出重复确认,发送方只要连续收到三个重复确认就立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
  • 快恢复:当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半。但是接下去并不执行慢开始算法。

6.流量控制

流量控制就是为了让发送方发送数据的速度不要太快,要让接收方来得及接收。TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。

  • 当一个连接建立时,连接的每一端分配一个缓冲区来保存输入的数据,并将缓冲区的大小发送给另一端。

四、websocket

WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。

WebSocket 的出现就解决了半双工通信的弊端。它最大的特点是:服务器可以向客户端主动推动消息,客户端也可以主动向服务器推送消息。

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

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

相关文章

Qt_显示VTK和PCL

文章内容 读取PCL文件在Qt中显示VTK模型在Qt中显示PCL数据文章用来在以后使用时查找方便代码 UI 界面添加Widget窗口,提升为 QVTKOpenGLNativeWidget VTK的库需要单独进行编译。这个相对好编译,但是debug编译会报错。 #include "QPCL.h"// 显示点云的库 #include…

HTML开发 Vue2.x + Element-UI 动态生成表单项并添加表单校验

基于vue2.x 和element-ui 动态生成表单项并添加表单校验; 1、需求问题 如下图,项目有个需求,点击添加按钮,新增一行设备信息,且每项信息必填; 2、代码 看到这个需求,首先想到要使用v-for的形…

使用 flask + qwen 实现 txt2sql 流式输出

前言 一般的大模型提供的 api 都是在提问之后过很久才会返回对话内容,可能要耗时在 3 秒以上了,如果是复杂的问题,大模型在理解和推理的耗时会更长,这种展示结果的方式对于用户体验是很差的。 其实大模型也是可以进行流式输出&a…

Vue3 一 快速启动基于Vite 创建项目

编码规范 TypeScript 组合式API setup语法糖 基于Vite 创建项目 WinR输入 CMD 回车后打开CMD命令行 已安装 18.3以上版本的NodeJS,js(安装) 我们用 NPM 方式安装 输入命令npm create vuelatest PS D:\WORK\NodeJS> npm create vuelatest Need to install the following …

4.组件间通信-v-model

vue3组件间通信-v-model 父组件&#xff1a; <template><div class"father"><h3>父组件</h3><!-- <h4>{{ username }}</h4><h4>{{ password }}</h4> --><!-- v-model用在html标签上 --><!-- <in…

前端工程化工具系列(十四)—— Webpack(v5.91.0):应用模块打包器与构建工具

Webpack 是用于现代 JavaScript 应用程序的静态模块打包器。 当 webpack 处理应用程序时&#xff0c;它会在内部构建一个依赖关系图&#xff0c;该图映射项目所需的每个模块最终会生成一个或多个包。 1 概念 1.1 modules Webpack 中&#xff0c;无论是 JS 、CSS 还是图片等&…

《软件定义安全》之一:SDN和NFV:下一代网络的变革

第1章 SDN和NFV&#xff1a;下一代网络的变革 1.什么是SDN和NFV 1.1 SDN/NFV的体系结构 SDN SDN的体系结构可以分为3层&#xff1a; 基础设施层由经过资源抽象的网络设备组成&#xff0c;仅实现网络转发等数据平面的功能&#xff0c;不包含或仅包含有限的控制平面的功能。…

Python语言读取图像

import cv2 import numpy as np width 640 # 图像宽度height 480 # 图像高度channels 3 # 颜色通道数imgEmpty np.empty((height, width, channels), np.uint8) # 创建空白数组imgBlack np.zeros((height, width, channels), np.uint8) # 创建黑色图像 RGB0imgWhite …

STM32 uc/OS-III多任务程序

目录 一、项目创建 二、代码移植 1、uC/OS-III源码处理 2、KEIL文件配置 ​编辑3、文件修改 启动文件 ​编辑app_cfg.h includes.h bsp.c和bsp.h main.c lib_ cfg.h app.c和app.h 三、总结 学习目标&#xff1a; 学习嵌入式实时操作系统&#xff08;RTOS&#xf…

贪心算法03(leetcode1005,134,135)

参考资料&#xff1a; https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.html 1005. K 次取反后最大化的数组和 题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xf…

覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 论文及代码详解

2000年一篇论文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 横空出世&#xff0c;解决了很多计算机和机器人领域的覆盖路径问题&#xff0c;今天我来详细解读这个算法。 The Boustrophedon Cellular Decomposition 算法详解 这篇论文标题为"C…

arm系统中双网卡共存问题

文章目录 单网卡单独运行双网卡共存问题双网卡解决方案方案一方案二方案三验证双网卡通过网卡名获取IP通过TCP与服务端通信参考单网卡单独运行 双网卡共存问题 双网卡解决方案 方案一 https://blog.csdn.net/HowieXue/article/details/75937972 方案二 http://bbs.witech…

办理公司诉讼记录删除行政处罚记录删除

企业行政处罚记录是可以做到撤销消除的&#xff0c;一直被大多数企业忽略&#xff0c;如果相关诉讼记录得不到及时删除&#xff0c;不仅影响企业招投标&#xff0c;还影响企业的贷款申请&#xff0c;严重的让企业资金链断裂&#xff0c;影响企业长远发展和企业形象。行政处罚是…

SpringBoot整合RabbitMQ实现消息延迟队列

环境依赖 SpringBoot 3.1.0 JDK 17 前期准备 安装MQ: liunxdockerrabbitmq安装延迟队列插件 实例 实现延迟队列的一种方式是在 RabbitMQ 中使用消息延迟插件&#xff0c;这个插件可以让你在消息发送时设置一个延迟时间&#xff0c;超过这个时间后消息才会被消费者接收到…

Vyper重入漏洞解析

什么是重入攻击 Reentrancy攻击是以太坊智能合约中最具破坏性的攻击之一。当一个函数对另一个不可信合约进行外部调用时&#xff0c;就会发生重入攻击。然后&#xff0c;不可信合约会递归调用原始函数&#xff0c;试图耗尽资金。 当合约在发送资金之前未能更新其状态时&#…

Dubbo 3.x源码(20)—Dubbo服务引用源码(3)

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了调用createProxy方法&#xff0c;根据服务引用参数map创建服务接口代理引用对象的整体流程&#xff0c;我们知道会调用createInvokerForRemote方法创建远程引用Invoker&#xff0c;这是Dubbo …

深入理解Python:多线程与多进程编程

深入理解Python:多线程与多进程编程 在现代软件开发中,充分利用计算机的多核处理能力来提升程序的性能是至关重要的。Python提供了多线程和多进程两种并发编程方式。本文将深入探讨这两种并发编程的基本概念、使用方法以及各自的优缺点,并通过实际代码示例展示其应用。 目…

总结七大排序算法

插入排序 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a;把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。实际中我们玩扑克牌时&#xff0c;就用了…

QML键盘事件的用法和示例

文章目录 处理单一按键处理组合键处理快捷键在QML中,键盘事件通常通过Keys对象和相关的事件处理器来管理。这些事件处理器可以直接添加到任何接受键盘输入的QML元素中。这里介绍一下各种键盘事件的处理方式。 处理单一按键 处理单一按键的方式比较简单,直接在元素的Keys对象…

Python Mistune库:Markdown解析和处理

更多Python学习内容&#xff1a;ipengtao.com Mistune是一个用于Python的快速且功能强大的Markdown解析库。它以其高性能和灵活性著称&#xff0c;能够轻松扩展和定制。Mistune支持标准的Markdown语法&#xff0c;并且可以通过插件扩展支持更多功能&#xff0c;例如数学公式、高…