计算机网络面试题

news2025/7/6 4:55:51

1. TCP建⽴连接的过程。

三次握⼿:

1. 第⼀次握⼿(客户端发送syn包到服务器端):客户端发送syn包到服务器端,进⼊syn_send状态,等待服务器端的确认;

2. 第⼆次握⼿(服务器返回syn+ack包给客户端):服务器端收到客户端的syn包,发送syn+ack包给客户端,进⼊syn_recv状态;

3. 第三次握⼿(客服端返回ack包给服务端):客户端收到服务器端的syn+ack包,发送个ack包到服务器端,⾄此,客户端与服务器端进⼊established状态;

4. 握⼿过程中传送的包不包含任何数据,连接建⽴后才会开始传送数据,理想状态下,TCP连接⼀旦建⽴,在通信双⽅的任何⼀⽅主动关闭连接前,TCP连接都会⼀直保持下去。

2. TCP断开连接的过程。

四次挥⼿:

1. 第⼀次挥⼿⼿:主动关闭⽅发送fin包到被动关闭⽅,告诉被动关闭⽅我不会再给你发送数据了;

2. 第⼆次挥⼿⼿:被动关闭⽅收到syn包,发送ack给对⽅,确认序号为收到序号+1;

3. 第三挥⼿:被动关闭⽅也也发送fin包给主动关闭⽅,告诉对⽅我也不会给你发送数据了;

4. 第四次挥⼿:主动关闭⽅收到syn包,发送ack给对⽅,⾄此,完成四次挥⼿;

3. 浏览器发⽣302跳转背后的逻辑?

浏览器在原请求地址的响应的Location域找到要跳转的URI执⾏跳转。

浏览器输⼊URL后发⽣了什么

1.DNS域名解析;

2.建⽴TCP连接;

3.发送HTTP请求;

4.服务器处理请求;

5.返回响应结果;

6.关闭TCP连接;

7.浏览器解析HTML;

8.浏览器布局渲染;

4. HTTP协议的交互流程。 HTTP和HTTPS的差异, SSL的交互流程?

a. Http协议

1、建⽴TCP连接;

2、发送HTTP请求;

3、服务器处理请求;

4、返回响应结果;

5、关闭TCP连接;

b. http三次握⼿:

i. 第⼀次握⼿:客户端发送syn包(syn=j)到服务器,并进⼊SYN_SEND状态,等待服务器确认;

ii. 第⼆次握⼿:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时⾃⼰也发送⼀个SYN包(syn=k),即SYN+ACK包,此时服务器进⼊SYN_RECV状态;

iii. 第三次握⼿:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进⼊ESTABLISHED状态,完成三次握⼿。

c. HTTPS协议

HTTPS协议就是基于SSL的HTTP协议

HTTPS使⽤与HTTP不同的端⼝(HTTPS80 , HTTPSS443)

提供了身份验证与加密通信⽅法,被⼴泛⽤于互联⽹上安全敏感的通信。

1、客户端请求SSL连接,并将⾃⼰⽀持的加密规则发给⽹站。

2、服务器端将⾃⼰的身份信息以证书形式发回给客户端。证书⾥⾯包含了⽹站地址,加密公钥,以及证书的颁发机构。

3、获得证书后,客户要做以下⼯作

  • 验证证书合法性
  • 如果证书受信任,客户端会⽣成⼀串随机数的密码,并⽤证书提供的公钥进⾏加密。
  • 将加密好的随机数发给服务器。

4、获得到客户端发的加密了的随机数之后,服务器⽤⾃⼰的私钥进⾏解密,得到这个随机数,把这个随机数作为对称加密的密钥。(利⽤⾮对称加密传输对称加密的密钥)

5、之后服务器与客户之间就可以⽤随机数对各⾃的信息进⾏加密,解密。注意的是:证书是⼀个公钥,这个公钥是进⾏加密⽤的。⽽私钥是进⾏解密⽤的。公钥任何都知道,私钥只有⾃⼰知道。这是⾮对称加密。⽽对称加密就是钥匙只有⼀把,我们都知道。之所以⽤到对称加密,是因为对称加密的速度更快。⽽⾮对称加密的可靠性更⾼。

客户端请求--服务端发送证书(公钥)--客户端验证证书,并⽣成随机数,通过公钥加密后发送给服务端--服务端⽤私钥解密出随机数--对称加密传输数据。

d. HTTP与HTTPS的区别

1、HTTPS协议需要申请证书。

2、HTTP是明⽂传输;HTTPS使⽤的是具有安全性的SSL加密传输协议

3、HTTP端⼝是80;HTTPS端⼝号是443

4、HTTP连接简单⽆状态;HTTPS由SSL+HTTP协议构件的可进⾏加密传输、身份验证的⽹络协议。

5. Rest和Http什么关系?⼤家都说Rest很轻置,你对Rest⻛格如何理解?

a. Http是⼀种协议,Rest是⼀种软件架构⻛格。

b. URL定位资源,⽤HTTP动词(GET,POST,DELETE,DETC)描述操作。

c. GET表示查询、POST表示新建、PUT表示更新、DELETE表示删除等。

  • GET /api/v1/user 获取⽤户列表
  • GET /api/v1/user/1 获取ID为1的⽤户
  • POST /api/v1/user 新建⽤户
  • PUT /api/v1/user/1 更新ID为1的⽤户信息
  • DELETE /api/v1/user/1 删除ID为1的⽤户

1、概念:REST(英⽂:Representational State Transfer,简称REST,表现层状态转化),指的是⼀组架构约束条件和原则。满⾜这些约束条件和原则的应⽤程序或设计就是 RESTful。

2、⼀种软件架构⻛格,设计⻛格⽽不是标准,只是提供了⼀组设计原则和约束条件。它主要⽤于客户端和服务器交互类的软件。基于这个⻛格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

3、Restful架构:

(1)每⼀个URI代表⼀种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个HTTP动词(GET⽤来获取资源,POST⽤来新建资源(也可以⽤于更新资源),PUT⽤来更新资源,DELETE⽤来删除资源。),对服务器端资源进⾏操作,实现"表现层状态转化”。

6. TCP的滑动窗⼝协议有什么⽤?讲讲原理。

滑动窗⼝协议是传输层进⾏流控的⼀种措施,接收⽅通过通告发送⽅⾃⼰的窗⼝⼤⼩,从⽽控制发送⽅的发送速度,从⽽达到防⽌发送⽅发送速度过快⽽导致来不及接受。

7. HTTP协议都有哪些⽅法?

1. GET 请求获取由Request-URI所标识的资源。

2. POST 在Request-URI所标识的资源后附加新的数据。

3. HEAD 请求获取由Request-URI所标识的资源的响应消息报头。

4. OPTIONS 请求查询服务器的性能,或查询与资源相关的选项和需求。

5. PUT 请求服务器存储⼀个资源,并⽤Request-URI作为其标识。

6. DELETE 请求服务器删除由Request-URI所标识的资源。

7. TRACE 请求服务器回送收到的请求信息,主要⽤语测试或诊断。

8. 交换机与路由器的区别?

1、⼯作层次不同

  • 最初的交换机⼯作在OSI模型中的数据链路层,⼯作原理简单
  • 路由器⼯作在OSI模型中的⽹络层,得更多协议信息,做更智能的转发决策

2、数据转发所依据的对象不同

  • 交换机是利⽤物理地址(MAC地址),确定转发的⽬的地址。(MAC固化硬件,⼀般不可更改)
  • 路由器是利⽤IP地址,确定转发的⽬的地址。(IP通常为⽹关或系统⾃动分配的)

3、是否可以分割⼴播域

  • 传统的交换机可以分割冲突域,不能分割⼴播域,⽽路由器可以分割⼴播域
  • 由交换机连接的⽹段仍然属于同⼀⼴播域,⼴播数据报会在交换机连接的所有⽹段上传播,某些情况导致通信拥೿和安全漏洞。连接到路由器上的⽹段被分配成不同的⼴播域,所以,⼴播数据不穿过路由器

虽然三层交换机可以分割⼴播域,但是⼦⼴播域之间不能通信,还是需要路由器

4、路由器提供了防⽕墙的服务

路由器仅仅转发特定地址的数据包,不传送不⽀持路由协议的数据包,不传送未知⽬标⽹络数据包,从⽽可以防⽌⼴播⻛暴

5、表

⼆层交换机上存在MAC表,三层交换机上存在路由表、MAC表、ARP表,路由器上存在路由表和ARP表。

总之,交换机在具体的城域⽹中扮演着VLAN透传的⻆⾊,就是桥。路由器的每⼀个端⼝都是⼀个独⽴的⼴播域和冲突域,⽽交换机是只有⼀个⼴播域和端⼝数量的冲突域。

9. Socket⽹络通信、NIO流以及多线程处理技术,Netty、Mina?

1、socket⽹络通信:

NIO流以及多线程处理技术:

  • BIO:阻塞式,线程池初始时创建⼀定量线程,超过则等待;
  • NIO:⾮阻塞式,不同的线程⼲专业的事情,提⾼系统吞吐量;
  • NIO+异步处理:让少量的线程做⼤量的事情;

2、Mina:Apache Mina是⼀个能够帮助⽤户开发⾼性能和⾼伸缩性⽹络应⽤程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。采⽤⾮阻塞⽅式的异步传输,⽀持批量传输数据。mina框架简单⾼效,完成了底层的线程管理,内置编码器能够满⾜⼤多数⽤户的需求,省去了消息编码和解码的⼯作。

3、Netty:本质是JBoss开发的⼀个jar包,⽬的是开发⾼性能、⾼可靠性的⽹络服务和客户端服务;提供异步⾮阻塞的、事件驱动的⽹络应⽤程序的NIO框架和⼯具;处理socket;通过Future-Listener机制,⽤户可以⽅便的主动获取或者通过通知机制获得IO操作结果。

10. http协议(报⽂结构,断点续传,多线程下载,什么是⻓连接)

a. 概念:

i. HTTP协议是Hyper Text Transfer Protocol(超⽂本传输协议)的缩写,是⽤于从万维⽹(WWW:World Wide Web )服务器传输超⽂本到本地浏览器的传送协议。

ii. HTTP是⼀个基于TCP/IP通信协议来传递数据(HTML ⽂件, 图⽚⽂件, 查询结果等)。

iii. HTTP是⼀个属于应⽤层的⾯向对象的协议,由于其简捷、快速的⽅式,适⽤于分布式超媒体信息系统。它于1990年提出,经过⼏年的使⽤与发展,得到不断地完善和扩展。⽬前在WWW中使⽤的是HTTP/1.0的第六版,HTTP/1.1的规范化⼯作正在进⾏之中,⽽且HTTP-NG(Next Generation of HTTP)的建议已经提出。

iv. HTTP协议⼯作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

b. 主要特点:

1、简单快速:客户向服务器请求服务时,只需传送请求⽅法和路径。请求⽅法常⽤的有GET、HEAD、POST。每种⽅法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模⼩,因⽽通信速度很快。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

3.⽆连接:⽆连接的含义是限制每次连接只处理⼀个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采⽤这种⽅式可以节省传输时间。

4.⽆状态:HTTP协议是⽆状态协议。⽆状态是指协议对于事务处理没有记忆能⼒。缺少状态意味着如果后续处理需要前⾯的信息,则它必须重传,这样可能导致每次连接传送的数据量增⼤。另⼀⽅⾯,在服务器不需要先前信息时它的应答就较快。

5、⽀持B/S及C/S模式。

11. get与post区别

1. 表单的method如果为get,那么所有的参数信息都会显示在浏览器的地址栏,当我们使⽤浏览器地址栏输⼊⽹址的⽅式来发送请求时,那么该请求⼀定是get⽅式

2. 对于get⽅式,底层是将所有参数附加在请求资源的后⾯⼀起传递的,对于post⽅式,底层是将所有参数附加在请求参数的最后⼀⾏的下⼀⾏的下⼀⾏

Get请求的数据是被附在url之后(HTTP协议头中),POST请求数据则放置在HTTP包的包体head中;

3. 对于get,post⽅式,servlet不同处理:doGet(),doPost();4、浏览器处理:重复访问使⽤GET⽅法请求的⻚⾯,浏览器会使⽤缓存处理后续请求。使⽤POST⽅法的form提交时,浏览器基于POST将产⽣永久改变的假设,将让⽤户进⾏提交确认。

12. Nginx性能调优:

1、增加同时打开⽂件数open files数量;

2、处理⼤量静态⽂件的磁盘I/O时(此时worker进程是单线程的),增加CPU核⼼数Worker Processes数量,提⾼计算能⼒;

3、如果⽹站流量很⾼,则可以提升worker进程连接数Worker Connections(默认1024);

4、控制keep alive在10s-20s之间,减少连接的时间开销;

5、合理设置open file cache时间提⾼处理效率;

6、提⾼⽹路带宽;

7、开启压缩传输数据gzip,设置压缩级别gzip_comp_level为1-2,再⾼效果不明显并且浪费CPU了;

8、扩展机器数量。

13. rpc和http的区别,使⽤场景:

区别:

传输协议

  • RPC,可以基于TCP协议,也可以基于HTTP协议
  • HTTP,基于HTTP协议

传输效率

  • RPC,使⽤⾃定义的TCP协议,可以让请求报⽂体积更⼩,或者使⽤HTTP2协议,也可以很好的减少报⽂的体积,提⾼传输效率
  • HTTP,如果是基于HTTP1.1的协议,请求中会包含很多⽆⽤的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为⼀个RPC来使⽤的,这时标准RPC框架更多的是服务治理

性能消耗,主要在于序列化和反序列化的耗时

  • RPC,可以基于thrift实现⾼效的⼆进制传输
  • HTTP,⼤部分是通过json来实现的,字节⼤⼩和序列化耗时都⽐thrift要更消耗性能

负载均衡

  • RPC,基本都⾃带了负载均衡策略
  • HTTP,需要配置Nginx,HAProxy来实现

服务治理(下游服务新增,重启,下线时如何不影响上游调⽤者)

  • RPC,能做到⾃动通知,不影响上游
  • HTTP,需要事先通知,修改Nginx/HAProxy配置

总结:RPC主要⽤于公司内部的服务调⽤,性能消耗低,传输效率⾼,服务治理⽅便。HTTP主要⽤于对外的异构环境,浏览器接⼝调⽤,APP接⼝调⽤,第三⽅接⼝调⽤等。

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

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

相关文章

Js逆向教程-08跟值技巧

Js逆向教程-08跟值技巧 一、加密函数最有可能出现在哪里? 一般不会出现在jquery成熟的第3仓库里面。 jquery是封装好的成熟的第3仓库,一般不会去修改它。 因为如果jquery版本提升了,还要去改jquery。 一般会出现在自己写的js代码中&#x…

LabVIEW性能和内存管理 3

LabVIEW性能和内存管理 3 本文介绍LabVIEW性能和内存管理的几个建议3。 显示缓冲区分配。 “显示缓冲区分配”工具位于工具>配置文件>显示缓冲区分配 In Place优化例程。对波形数组的每个元素进行操作 下面是如何使用ShowBuffer allocation工具提高性能的示例。从层次…

HashMap的面试题

目录 1、底层数据结构 1.7和1.8有何不同 2、为什么用红黑树,为何不一上来就树化,树化阈值为何是8,何时会树化,何时会退化为链表 3、索引如何计算?hashCode都有了,为何还要提供hash()方法?数组…

综合实验——高级网络应用检测

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 综合实验 实验要求 三层交换机配置 三层交换机一 三层交换机…

教程详解从照片到倾斜摄影模型、影像地形点云的成果输出,网页端Web发布展示

一、数据获取 需要自己在下面网址中下载相应数据,获取the island of Torbjrnskjr,下载后,共计200张带pos的jpg照片,存储到纯英文目录下 国外Sensefly共享的航拍数据 包括数据原片、分辨率介绍、覆盖范围,飞行高度、照…

Linux-实操篇8-shell脚本编写

一、shell是什么 二、shell脚本如何执行 2.1 新建一个shell脚本 ## 第一步新建一个shell脚本 vim aaa.sh ## 内容如下,#!/bin/bash 表示shell脚本的执行协议,必须要写 #!/bin/bash echo "hello word!!!"2.2 执行方式 方式一:先给…

R语言中的函数19:openxlsx::read.xlsx(), write.xlsx(), writeData(), writeDataTable()

文章目录read.xlsx()函数介绍实例writeData()和writeDataTable()函数介绍实例write.xlsx()函数介绍实例read.xlsx()函数介绍 read.xlsx(xlsxFile,sheet,startRow 1,colNames TRUE,rowNames FALSE,detectDates FALSE,skipEmptyRows TRUE,skipEmptyCols TRUE,rows NULL,c…

Oracle技术分享 卸载grid软件

如果grid软件安装失败,可能需要重新安装,这时候紧紧删除软件是解决不了问题的,还需要删除grid的配置信息,需要安装软件的原因各式各样。 1 资源无法启动。 2 root.sh执行失败。 1 如果执行root.sh失败,可以删除&#x…

相似度系列8:unify-BARTSCORE: Evaluating Generated Text as Text Generation

BARTSCORE: Evaluating Generated Text as Text Generation 这篇文章是用生成模型解决问题,根据生成模型中输入和输出的差别,代表不同的评测方面。 不足:针对不同的任务选择bart score的输入和输出?different input and output co…

Allegro 172版本自动放置层叠

Allegro 172版本自动放置层叠 Allegro 172版本支持自动放置层叠,无需手动绘制,效果如下图 具体操作步骤如下 选择Manufacture-选择Cross Section Chart命令 会出现一个对话框 常用参数介绍如下 Chart Unit 是层叠单位 Maximun Chart height 是层叠的高度 X-Scale Factor…

预约挂号项目之预约挂号模块

目录一、预约挂号详情1、需求分析2、api接口2.1 、controller代码:2.2 、Service类接口:2.3 、添加service接口实现:学习指南: https://www.zhihu.com/question/351439302/answer/2362637429?utm_id0 一、预约挂号详情 1、需求…

[数据结构]链表OJ题 (三) 链表的中间结点、链表中倒数第k个结点、合并两个有序链表、链表分割、链表的回文结构

作者: 华丞臧. 专栏:【数据结构】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章目录一、链表的中间结点题目描述…

Python学习笔记(十六)——Numpy

Numpy NumPy(Numerical Python的简称)是高性能科学计算和数据分析的基础包, 其中包含了数组对象(向量、矩阵、图像等)以及线性代数等。 NumPy库主要功能 • ndarray(数组)是具有矢量算术运算和复杂广播能力的多维数组。 • 具有用于对数组数…

项目资源管理从学会向上管理开始

“如何一句话证明你当过项目经理?” 这个话题在网上引发了广大项目管理人的兴趣,纷纷发表了个人看法(变相吐槽)。各种回答戳中笑点,同时也表达了作为项目经理的心酸。  “普通的薪资水平,却要为整个项目的…

基于微信公众平台API的菜谱小程序 的设计与实现

摘 要 由于人们生活水平的不断提高,人们对网络的需求也是不断提高,但是又不想通过下载各种不常用的app增加手机内存。小程序正好就可以做到这个特点,不用下载、及实际用、用完就走,现在很多的行业兴起,尤其餐饮行业最…

D. Decrease the Sum of Digits

Problem - 1409D - Codeforces 题意: 你得到了一个正整数n。在一次移动中,你可以使n增加1(即使n:n1)。你的任务是找出为了使n的数位之和小于或等于s,你需要执行的最小移动数。 你必须回答t个独立的测试案例。 输入 输入的第一…

基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)

📝个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,…

Webpack基础使用 + 高级配置【重点!】

http://xxpromise.gitee.io/webpack5-docs/senior/optimizePerformance.html#code-split 笔记好评!!!!一定要把网址记好,真的nice!!!! 只是发博客记录一下,没…

java后端pageHelper分页实现方法

文章目录背景方法一:mysql的limit进行分页方法二:使用插件Mybatis-PageHelper(拦截器原理)1、本质2.实现步骤引入依赖修改application.yml修改代码总结背景 当一次查库数据量较大,不光给数据库带来压力,同时前端渲染页面压力也很…

Linux权限

系列文章目录 Linux 环境搭建以及xshell远程连接_crazy_xieyi的博客-CSDN博客 Linux常用命令详解_crazy_xieyi的博客-CSDN博客 文章目录 一、用户操作二、三种角色三、文件类型和访问权限四、修改文件权限一、用户操作 Linux下有两种用户:超级用户(roo…