网络知识面试题

news2024/11/27 0:24:43

一、TCP 和 UDP 的区别

我们一句话概率区别就TCP 是有连接的可靠传输,UDP 是无连接的不可靠传输。
1、TCP 在传输数据时需要先建立连接,UDP 不需要
2、TCP 传输的数据包比较复杂,UDP 传输的数据包比较简单
3、TCP 使用确认应答机制、超时重传机制、流量控制、拥塞控制保证可靠性,UDP每次发送多少就接收多少,即使丢失也不负责所以不可靠
4、TCP 面向字节流,且本身机构复杂+安全机制较多导致传输效率较低(延迟应答、捎带应答,滑动窗口有提高效率的作用,但是整体还是效率偏低),UDP 面向数据报传输效率高

二、什么是三次握手,什么是四次挥手

三、Get 请求和 Post 请求的区别是什么?

安全性(1)get 请求是不安全的,因为在传输过程,数据被放在请求的 url 中;post 请求的所有操作对用户来说都是不可见的。 但是这种说法也不是绝对的,也可以在 get 请求加上 request body,给 post 请求带上 url 参数。
 
请求长度限制(2)get 请求提交的 url 中的数据最多只能是几千个字节,这个限制是浏览器或者服务器给添加的,http协议并没有对 url 长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求;而 POST 请求没有明确的长度限制,但服务器可能会对请求体大小进行限制。
 
数据类型(3)get 请求只能进行 URL 编码,限制 form 表单的数据集的值必须为 ASCII 字符;而 post 请求支持整个 ISO10646字符集。
 
执行效率(4)get 请求的执行效率比 post 请求好。get 请求是 form 表单提交的默认方法。

幂等性(5GET 请求是幂等的,多次发送相同的 GET 请求不会对服务器产生影响;而 POST 请求不是幂等的,多次发送相同的 POST 请求可能会对服务器产生多次影响。

传输层数据包区别(6)get 请求产生一个 TCP 数据包;post 请求产生两个 TCP 数据包。对于 get 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应200(返回数据);而对于 post 请求,浏览器先发送 header,服务器响应100 continue,浏览器再发送 data,服务器再响应200(返回数据)。当然具体的也要看浏览器。
缓存(7)浏览器一般会对 GET 请求进行缓存,也会保存在浏览器记录中;浏览器很少对 POST 请求缓存

四、HTTPS 和 HTTP 的区别是什么?

1、HTTP 协议的缺点:

  1. 通信使用明文,不安全
  2. 未验证接受者的信息,可能遭到伪装
  3. 无法验证报文的正确性,因为数据可能被篡改

2、 如果需要建立安全的通讯,则需要

  1. 通信安全:确保对方信息正确
  2. 数据安全:确保数据未篡改

3、HTTPS 介绍
HTTPS(安全套接字超文本传输协议),采用了SSL之后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。
加密方法:SSL 采用一种公开的加密方法,方法是公开的,密钥是保密的
共享密钥:加解密使用同一个密钥,密钥也需要传送给对方,安全性低,效率高
使用两把秘钥的公开秘钥加密:使用一对非对称的秘钥,一把叫做私有秘钥,另一把叫做公开秘钥。客户端使用接收方的公开密钥进行加密发送数据。服务端使用自己的私有密钥进行解密使用。密钥无需要传送给对方,安全性高,效率低

HTTPS采用混合加密方式:利用两种加密方式的优点,组合起来进行通信;在交换秘钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享加密方式。

客户端如何知道服务端的公开密钥时可靠的?答:需要第三方介入认证

①服务器拥有公开密钥和 私有密钥,将自己的公开密钥等到数据证书认证机构。
②数字证书机构(CA机构)对服务器的公钥进行 **数字签名** ,并颁发 **公钥证书**(服务器公钥+CA的数字签名)
③客户端向服务端发送数据前先向CA机构验证服务端公钥的真实性
	前提一:客户端要和CA机构通信前提知道 CA 机构的公钥。(提前植入到浏览器了)
	前提二:客户端要和服务端通信前提知道公钥证书。(操作系统中安装了正确且受信任的证书,也是服务器提前发的) 
	客户端拿到公钥证书 ,使用 CA 的公钥向 CA 验证数字签名,就能验证 服务端的公钥 的真实性了。
④客户端 **用服务端的公钥 对共享密钥** 加密发送给服务端。
⑤服务器 **用私钥对功效密钥**解密读取数据
⑥客户端 **使用共享密钥 对 数据** 加密发送给服务端

在这里插入图片描述

五、域名解析过程 大佬的文章

我们知道网络中定位客户端和服务端计算机都是根据 IP 地址。我们访问百度首页时使用 域名 www.baidu.com。这中间是通过 DNS协议解析出其对应的 IP 为 128.23.14.16,具体流程如下:
0️⃣我的电脑:先在浏览器缓存和本地 Host 文件找 域名映射,如果找到了则直接返回。如果没有则继续向外界求助:
①我的电脑向本地 DNS 服务器发请求,例如:中国移动,中国电信等,如果本地 DNS 服务器域名映射表中存在则返回,否则继续。

本地 DNS 服务器接本应向权威域名服务器 baidu.com 继续请求查找 www.baidu.com 的 IP
根域名服务器 . 保存—》顶级域名服务器的IP,例如 .com 的IP
顶级域名服务器 保存—》权威域名服务器的IP,例如 baidu.com 的IP
如果本地有 baidu.com 的IP,则直接请求权威
无baidu.com 的IP,若有.com 的IP 则请求顶级域名服务器
无.com 的IP,则直接请求 根域名服务器

下面我们假设都没有的情况。
②本地 DNS 服务器 向 根域名服务器询问.com 的IP
③接收返回的 .com 的IP 127.23.45.78,并缓存
④本地 DNS 服务器 向 顶级域名服务器 询问 baidu.com 的IP
⑤接收返回的 baidu.com 的IP 155.123.34.56,并缓存
⑥本地 DNS 服务器 向 权威域名服务器 询问 www.baidu.com 的IP
⑦接收返回的 www.baidu.com 的IP,并缓存
⑧本地 DNS 服务器 向我的电脑发送 www.baidu.com 的IP

在这里插入图片描述

六、CDN

CDN 可以理解为服务器的代理。
例如我们需要向服务器获取资源,但是如果服务器距离我们太遥远,获取资源太耗时,此时就出现了 CDN , CDN 提供了很多节点,并且提供了一下作用

1、客户端请求 静态资源时,会先请求 CDN ,CDN 中如果有则直接返回,无则 CDN 请求服务器并保存,再返回给客户端
2、客户端请求 部分动态静态资源时,会先请求 CDN ,CDN 中会有少量服务器接口,直接返回
3、因为 CDN 介于客户端和服务端之间,则对客户端请求资源时起到了加速的作用,我们有时也称为 CDN 加速器
4、如果中间 CDN 节点压力过大马上宕机,会立刻以任播的形式从周围 CDN 节点找到最近的转移压力

八、你在浏览器输入一个网址,到页面加载出数据,都发生了那些事情?

当你在浏览器中输入一个网址后,以下是大致的步骤:

1、DNS解析:浏览器首先会将输入的网址发送给DNS服务器,以获取该网址对应的IP地址。DNS服务器将网址转换为相应的IP地址,并返回给浏览器。

2、建立TCP连接:浏览器使用获取到的IP地址与目标服务器建立TCP连接。TCP是一种可靠的传输协议,用于在网络上建立可靠的连接。

3、发送HTTP请求:一旦TCP连接建立,浏览器就会向服务器发送一个HTTP请求。这个请求包含了要访问的网页的相关信息,如请求方法(GET、POST等)、请求头部、请求体等。

4、服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。这可能涉及到数据库查询、业务逻辑处理等。

5、服务器发送HTTP响应:服务器处理完请求后,会将生成的响应发送回浏览器。响应包含了HTTP状态码、响应头部、响应体等信息。

6、浏览器渲染页面:浏览器接收到服务器发送的HTTP响应后,会根据响应中的内容进行页面渲染。它会解析HTML、CSS和JavaScript,并将它们转换为可视化的网页。

7、关闭连接:一旦页面渲染完成,浏览器会关闭与服务器的TCP连接。页面上的资源(如图片、脚本等)可能会继续通过HTTP请求加载。

应用层
1、输入的是域名,就需要先进性域名解析IP [www.baidu.com]
我的电脑:浏览器检查浏览器缓存 + 本地 Host 文件 查找 IP 地址
本地DNS服务器:中国电信、中国移动 查自己的缓存记录
2、HTTP 协议请求默认按照 GET 请求处理,会在数据内容的基础上加一层 Header 标头组织成 GET 请求的格式。

传输层
1、HTTP 协议是基于传输层的 TCP 协议,针对 GET 请求浏览器一般指发出一个TCP 请求包。http header 和 data 一并发送出去。(这点和 POST 请求的处理有些不同)
2、TCP 协议会在上层数据包基础上增加一层标头,其中会包含发送端+接收端的 Port 信息
3、TCP 进行三次握手

网络层
1、IP 协议会在上层数据包基础上增加一层标头,其中会包含发送端 + 接收端的 IP 信息。
2、ARP 协议会根据接收端的 IP 信息解析出接收端的 MAC 地址

数据链路层
1、以太网协议会已知接收者的 MAC 信息后进行广播找到接收者,在上层数据包基础上增加一层标头,其中包含 MAC 地址。
2、将上面信息继续解析,按照每组 0/1 信息进行分组解析。

物理层
将上层的光电信息使用物理设备进行传输到服务器

到达服务器之后。再逆向解析出请求数据。

九、Socket 编程 大佬文章

在计算机网络编程技术中,两个进程或者说两台计算机可以通过一个网络通信连接实现数据的交换,这种通信链路的端点就被称为“套接字”(英文名称也就是Socket)。
Socket是网络驱动层提供给应用程序的一个接口或者说一种机制。

java.net 包的两个类Socket和ServerSocket,分别用来实现双向安全连接的客户端和服务器端,进行网络通信时,Socket需要借助数据流来完成数据的传递工作

基于 TCP 的Socket网络编程

客户端实现步骤:
1)建立连接,连接指向服务器及端口。
2)打开Socket关联的输入/输出流
3)向输出流中写入信息
4)从输入流中读取响应信息。
5)关闭所有的数据流和Socket。

服务器端实现步骤:
1)建立连接,监听端口。
2)使用accept()方法等待客户端发起通信
3)打开Socket关联的输入/输出流。
4)从输入流中读取请求信息。
5)向输出流中写入信息。
6)关闭所有的数据流和Socket

基于 UDP 的Socket网络编程

发送方实现步骤:
1)获取本地主机的InetAddress对象。
2)创建DatagramPacket对象,封装要发送的信息。
3)利用DatagramSocket对象将DatagramPacket对象数据发送出去。
接收方实现步骤:
1)创建DatagramPacket对象,准备接收封装的数据。
2)创建DatagramSocket对象,接收数据保存于DatagramPacket对象中。
3)利用DatagramPacket对象处理数据。

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

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

相关文章

通过Python模拟计算附近WIFI密码,没有我蹭不到的网

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 今天来分享一下如何通过 Python 脚本实现 WIFI 密码的自动猜解 无图形界面 先来看看怎么实现没有图形界面版的自动猜解。 WIFI猜解 导入模块 import pywifi from pywifi import const import time import datetime测试连…

ejbca:8443报文跟踪

安装客户端证书后,访问管理员页面 :8443/ejbca/adminweb 同时在wireshark抓包 1、客户端向对端发出Client hello 在Server Hello看到一个颁发给客户端的证书,颁发给5be85c9c1df9(客户端node hostname 5be85c9c1df9)但没有在Clie…

ROS机器人操作系统Catkin的编译与常用命令的使用介绍

ROS中命令有很多,对一些频繁使用的常见命令,做一个整理,这些命令在平时操作机器人当中都是常用到的,也是在ROS中如何让机器人正常运作的必备知识。 尤其是对包进行编译时,熟悉CMake的朋友来说会很简单,在R…

方法重载和方法重写

方法的重载 Overload 对于功能类似的方法,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。多个方法的名称一样,但是参数列表不一样。( 同名不同参 ) 方法重载与下列因素相关: 参…

Java正确的错误捕获姿态

理论概述 在Java中,捕获异常并且合理地处理或抛出异常是编写健壮和可靠代码的关键部分。但是有时候我们可能会对各种错误的捕获方法有点模棱两可,不知道怎么合适的去使用,这里作为基础知识我们做一个回顾巩固!只有正确的开发方法…

原生js发送ajax请求---ajax请求篇(一)

在原生js中我们使用的是XMLHttpRequest对象来发送ajax请求 主要步骤就是: 1.创建XMLHTTPRequest对象 2.使用open方法设置和服务器的交互信息 3.设置发送的数据,开始和服务器端交互 4.注册事件 5.更新界面 (1) get方式 //步骤一…

Java自学网站推荐,专业教学快速提升

Java自学网站可以是学习Java的有用资源之一。它们通常提供了丰富的教学材料、在线课程、编程练习和实例项目,帮助初学者系统地学习Java编程语言和相关技术。 动力节点是一家专业的Java培训机构,他们提供在线视频学习平台,你可以参考他们的官方…

在用的二手电动汽车,雨季时,要注意保养哪些地方?

二手电动汽车在雨季的保养有一些特别需要注意的地方。首先,你要确保你的车子有足够的防水措施。电动汽车的电池组和控制系统通常都装在车辆底部,而这些部分是最怕水的。如果这些部分进水,可能会导致严重的电气故障,甚至可能会引起…

多语言B2B2C跨境购物平台无货源商品库搭建(全开源)

要搭建一个多语言B2B2C跨境购物平台,需要以下几个步骤,包括商品库的搭建、网站基础架构、多语言支持、订单管理、会员管理、营销推广、物流配送和支付接口集成。 1. 商品库的搭建 首先需要建立一个商品库,包括商品的名称、描述、价格、图片…

3理解图像本质-AI-python

下载Jupyter Lab 代码如下: import numpy as np //导入包 import matplotlib.pyplot as plt //为了显示图片要导入另一个图 %matplotlib inline //显示图片防止出错,在行内显示 from PIL import Image //读取图片 img Image.open(E:/ANCONDA/AI_Pyth…

Web前端之NodeJS、Vue

文章目录 一、Babel转码器1.1 Babel安装流程1.2 Babel命令行转码 二、Promise对象三、测试方式四、Vue(渐进式JS框架)4.1 准备4.2 创建一个项目4.3 运行一个项目 五、模板语法5.1 文本5.2 原始html5.3 属性Attribute5.4 使用JavaScript表达式 六、条件渲…

数据结构与算法基础-学习-28-图之拓扑排序

一、相关概念 名称描述有向无环图无环的有向图,简称DAG图(Directed Acycline Graph),通常用来描述一个工程或系统的进行过程。AOV网用一个有向图表示一个工程的各子工程及其相互制约的关系,其中顶点表示活动,弧表示活…

paddleseg数据集自定义比例划分为测试集test.txt,训练集train.txt,验证集val.txt

将语义分割的数据集标注好后如下所示: 整理好图片和标签文后需要按照比例划分为训练集,验证集,测试集。 具体划分代码见下: import glob import os.path import argparse import warnings import numpy as npdef parse_args():p…

数组对象去重的几种方法

场景: let arrObj [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 } ]; 方法一:…

Leetcode.1289 下降路径最小和 II

题目链接 Leetcode.1289 下降路径最小和 II rating : 1697 题目描述 给你一个 n x n 整数矩阵 g r i d grid grid ,请你返回 非零偏移下降路径 数字和的最小值。 非零偏移下降路径 定义为:从 g r i d grid grid 数组中的每一行选择一个数字&#xff…

matplotlib/seaborn 笔记:mpld3 让图像可交互

只需要一行代码 mpld3.display()/mpld3.enable_notebook() 即可让 matplotlib/sdeaborn画的图有交互性 import numpy as np import matplotlib.pyplot as plt import mpld3xnp.random.random(1000) ynp.random.random(1000)plt.hist2d(x,y,bins(100,100)) mpld3.enable_noteboo…

国产芯力特SIT1024QHG四通道本地互联网络(LIN)收发器,可替代TJA1024HG

SIT1024Q 是一款四通道本地互联网络(LIN)物理层收发器,符合 LIN 2.0、LIN 2.1、LIN 2.2、 LIN 2.2A 、 ISO 17987-4:2016 (12V) 和 SAE J2602 标准。主要适用于使用 1kbps 至 20kbps 传输速 率的车载网络。 SIT1024Q 通过 TXDx 引…

聊聊低代码的本质,是应用开发的未来吗?

聊聊低代码的本质,是应用开发的未来吗? 一、前言 二、什么是低代码以及功能特点? 什么是低代码开发? 低代码平台的特点和功能 三、低代码的本质是什么? 四、优秀且低调的低代码平台 五、结论 一、前言 低代码开发是近年…

当管理多个项目面临这些挑战时,怎样才能不翻车?

企业越发展,同时进行的项目就越多。管理工作量、跟踪截止日期以及了解优先顺序也变得更复杂了。在此过程中,多项目管理通常面临4个常见挑战。 1. 优先事项不明确或相互冲突 无论你的项目计划多么严谨,事情也不可能总是按照预期进行。在管理单…

3年测试经验,用例设计竟然不知道状态迁移法?

1、概念 状态迁移法主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导致状态迁移的事件&…