前端计网面试题(二)

一、在浏览器中输入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,一经查实,立即删除!

相关文章

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 …

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

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

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 三、总结 学习目标: 学习嵌入式实时操作系统(RTOS&#xf…

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

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

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

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

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

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

Vyper重入漏洞解析

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

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

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

总结七大排序算法

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

Python Mistune库:Markdown解析和处理

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

数据结构严蔚敏版精简版-栈和队列以及c语言代码实现

1栈的定义和特权 栈(stack)是限定仅在表尾进行插入或删除操作的线性表。 注:虽然说栈的实现就是一端插入和删除,但不一定是在“表尾”,这个“表尾”是广义的。 头插法实现链栈 尾插法实现链栈 因此,对栈来说,表尾…

算法——Floyd判圈算法

介绍 Floyd判圈算法用于判断一个链表中是否有环。 思想 使用快慢指针fast, slow,快指针每次走两步fast fast.next.next,慢指针每次走一步slow slow.next。当出现fast null || fast.next null时,说明链表不存在环,如果存在环…

1.2-自然语言的分布式表示-基于计数的方法

本篇笔记对应的视频链接为: 3-基于计数的方法表示单词-将文字转换成编号的预处理工作_哔哩哔哩_bilibili;4-基于计数的方法表示单词-使用共现矩阵进行单词的分布式表示_哔哩哔哩_bilibili;5-基于计数的方法表示单词-单词之间相似度计算_哔哩哔…

计算机网络 —— 网络层(CIDR)

计算机网络 —— 网络层(CIDR) CIDR的提出背景什么是CIDR基本概念划分示例应用优势 举个例子路由聚合常用数字 我们今天来看IPv4地址划分的另一种方法 —— CIDR。 CIDR的提出背景 CIDR(无类域间路由,Classless Inter-Domain Ro…

大众汽车裁员加速,38万元遣散费起步

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 几周前,大众汽车宣布了一项新的裁员计划。 一、裁员行动与额外福利并行 大众汽车近期在裁员行动上取得了显著进展,其遣散…

深度解析:AI Prompt 提示词工程的兴起、争议与未来发展

PART1: 提示词工程的兴起 在人工智能领域中,一个新的领域——提示词工程(prompt engineering)——开始显露头角。 这个领域的核心在于精心设计输入,以引导AI模型产生特定的、期望的输出。 随着AI技术的飞速发展,特别…

无头+单向+非循环链表的实现

这里写目录标题 1. 链表1.1 链表的概念及结构1.2 链表的分类 2. 接口实现3. 链表的实现3.1 打印链表3.2 头插3.3 尾插3.4 头删3.5 尾删3.6 单链表查找3.7 在pos之前插入3.8 在pos之后插入3.9 删除pos位置的值3.10 删除pos位置之后的值3.11 链表的释放3.12 动态申请一个节点 4. …