IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 面试题准备 20211116 -> 正文阅读

[网络协议]面试题准备 20211116

一、计算机网络(速览速背)

1 分层结构

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。

除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:

img


1、物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的模数转换与数模转换)。这一层的数据叫做比特。

物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。

2、数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。

3、网络层:主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。

4、传输层:定义了一些传输数据的协议和端口号(WWW 端口80等),如TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段进行传输,到达目的地址后在进行重组。常常把这一层数据叫做段。

5、会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)

6、表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够识别的东西,如图片、声音等)

7、应用层:主要是一些终端的应用,比如说FTP(File Transfer Protocol,文件传输协议,各种文件下载),WEB(World wide web,IE浏览),QQ之类的(你就把它理解成我们在电脑屏幕上可以看到的东西,就是终端应用)


img

https://www.runoob.com/w3cnote/summary-of-network.html#_label0

IP协议(Internet Protocol,因特网互联协议)

OSI/RM模型(Open System Interconnection/Reference Model,开放式系统互联通信参考模型)

2 TCP/UDP

TCP协议(Transmission Control Protocol,传输控制协议)

UDP协议(User Datagram Protocol,用户数据报协议)

区别

1.基于连接与无连接; 2.对系统资源的要求(TCP较多,UDP少); 3.UDP程序结构较简单; 4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

TCP三次握手,四次挥手

TCP 在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般
称为“四次挥手”

三次握手

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cijBNKgo-1637070730659)(C:\Users\liuzc\AppData\Roaming\Typora\typora-user-images\image-20211116132529456.png)]

四次挥手

四次挥手是用来断开服务器和客户端之间的通信的,之所以要断开连接,是因为TCP/IP 协议是要占用端口号的,而
计算机的端口却是有限的,不进行断开的话,势必会造成计算机资源的浪费。
第一次挥手:客户端发送关闭请求
第二次挥手:服务端响应客户端关闭请求
第三次挥手:服务端发送关闭请求
第四次挥手:客户端发送关闭确认请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0QCrfqe7-1637070730661)(C:\Users\liuzc\AppData\Roaming\Typora\typora-user-images\image-20211116132737397.png)]

TCP状态中TIME_WAIT的作用
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器
设置的时间。这么做有两个理由:
(1)确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。(为实现TCP全双工连接的可靠释放)

(2)可能存在已失效的连接请求报文段,为了防止这种报文段出现在本次连接之外,需要等待一段时间。(为使旧的数据包在网络因为过期而消失)

为什么要三次握手?

解释1:在只有两次"握手"的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据…问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,"三次握手"很有必要!

解释2:三次握手中的每一次都是必须的。如果是两次握手,在第二次结束后,服务器并不能保证客户端已经收到了第二次的请求,如此一来的话,服务器会一直保存着这个通信过程,因为TCP通信都是要占用端口的,造成了一定的资源浪费。所以,就一定要让客户端来发送ACK的确认请求。

为什么要四次挥手?

解释1:试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

解释2:因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手

使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。

3 HTTP/HTTPS

https://www.runoob.com/w3cnote/http-vs-https.html

基本概念

HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。

HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTPS 默认工作在 TCP 协议443端口

区别

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

    注:SSL,Secure Sockets Layer ,安全套接字协议

  • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

无状态

无状态协议(Stateless Protocol)是指浏览器对于事物的处理没有记忆功能

? 例如:通过账户密码登录进了一个网站,当再次进入时则需要重新输入账户密码……

HTTP就是一种无状态协议,它对用户的操作没有记忆功能。为了解决这种情况,引出了Cookie&Session机制,让浏览器具备了记忆功能

长连接、短连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

—————————————————————————————————————————————

tcp长连接优缺点:长连接可以省去较多的tcp建立/关闭的操作,减少浪费,节省时间,对于频繁请求资源的客户,较适用于长连接;client和server如果长时间不关闭的话,会存在一个问题,随着客户的越来越多,server早晚会有扛不住的一天,这时需要采取一些策略,如关闭一些长时间不读写操作的连接,这样可以避免一些恶意连接导致server端服务受损,如果条件再允许,就可以以客户端为颗粒度,限制每个客户端的最大连接数

tcp短连接优缺点:短连接对于服务器来说较为简单,存在的连接都是有用的连接,不需要额外的控制,但如果客户端连接频繁,会在tcp的建立和关闭上浪费时间。

https://blog.csdn.net/qq_38270106/article/details/83539289

—————————————————————————————————————————————

4 状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

https://www.runoob.com/http/http-status-codes.html


200 OK //客户端请求成功
301 Moved Permanently(永久移除),请求的 URL 已移走。 Response 中应该包含一个 Location URL, 说明资
源现在所处的位置
302 found 重定向
400 Bad Request //客户端请求有语法错误, 不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在, eg:输入了错误的 URL

500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

5 Cookie和Session

? 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份Session通过在服务器端记录信息确定用户身份

? Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发送请求时,同时会发送所有为该服务器存储的 cookie。
? Session 是存储在 web 服务器端的一块信息。 session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

Cookie 和 session 的不同点:
1、无论客户端做怎样的设置, session 都能够正常工作。当客户端禁用 cookie 时将无法使用 cookie。

2、在存储的数据量方面: session 能够存储任意的 java 对象, cookie 只能存储 String 类型的对象。


详解cookie和session

https://www.cnblogs.com/l199616j/p/11195667.html

6 URI和URL

URI = Uniform Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。
URL = Uniform Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串。
URN = Uniform Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。
URI是一种宽泛的含义更广的定义,而URL则是URI的一个子集。
因为一个人的身份证是不可以重复的,那么一个身份证就可以唯一标识一个人,但是你是找不到这个人的,只能是唯一标识。那么这就相当于是URI。
而身份证上的地址加上姓名,就可以唯一标识你这个人并且还能找到你。这就相当于URL。
URI是唯一标识,但是不一定能找到,不是定位资源,是标识资源,
URL是唯一标识,但同时还能找到,可以定位资源。

二、操作系统(能理解最好,不理解先背,不要花太多时间)

1 线程和进程

区别

状态

同步

死锁

三、数据结构和算法

1 数据结构

数组

链表

队列

2 算法

先练习最简单的几个排序查找

www.zhihu.com/question/24964987

四、设计模式(23种)

1 单例

2 工厂

3 代理

4 适配器

5 观察者

6 模板

五、实操工具

1 Git/SVN

2 Maven/Gradle

3 Linux基本操作

4 Nginx

5 ELK

6 postman

六、JAVA基础

1 HelloWorld

Java特点、优点

环境

JDK

JRE

开发环境配置

2 基础语法

语法

关键字

数据类型

逻辑控制语句

3 面向对象

思想

细细品

对象之间的关系(依赖、关联、聚合、组合)

原则

封装

继承

多态

四个常考关键字

static

final

this

super

初始化

属性和方法

1、构造方法

2、重载和重写

向上转型、向下转型

内部类

4 接口和抽象类

考烂了的题目

5 集合(重要!!!)

集合家谱

https://www.runoob.com/java/java-collections.html

各种list

各种Set

各种Map

6 注解、反射、泛型、I/O、枚举、异常

7 多线程

线程池

并发容器

原子类

线程与进程

并发与并行

死锁

生命周期和状态

两个常问关键字

synchronized

volatile

8 JVM(突击记忆)

内存模型

垃圾回收

类加载机制

调优

七、数据库(MYSQL)

1 SQL基本能力

www.runoob.com/sql/sql-tutorial.html

2 事务

3 索引

4 锁

5 连接池

6 分库分表

1、为什么分?

2、如何分?

水平

垂直

7 主从

8 读写分离

八、JavaWeb

1 html

2 css

3 js

4 ajax

5 vue

6 Servlet(前五个走马观花,这个要学明白,为springMVC做准备)

九、中间件

1 缓存 redis

数据类型

string

hash

list

set

zset

基础学习

www.runoob.com/redis/redis-tutorial.html

常见问题

1、数据类型

2、持久化

3、集群

4、通道

5、事务

6、Redis分布式锁

7、缓存穿透、缓存雪崩、缓存击穿。是什么?原因,如何避免

2 消息队列

消息队列一般的业务rabbitMQ已经足够使用了,了解一下几种MQ的异同和优缺点

1、rabbitMQ

2、rocketMQ

3、kafka

3 搜索引擎

1、elasticsearch(玩这个就行,另一个往这上面引)

2、solr

十、框架

1 Spring

1、AOP

2、IoC

3、BeanFactory

4、bean的作用域、生命周期

5、事务隔离级别

2 SpringMVC

1、工作流程图

2、DispatcherServlet

3、WebApplicationContext

3 MyBatis

4 SpringBoot

启动过程、自动装配原理

十一、微服务/分布式

1 理论

1、CAP

2、BASE

2 服务发现/注册(容易问)

1、Eureka

2、zookeeper

3、etcd

4、Nacos

5、Consul

3 网关

1、Zuul

2、Gateway

4 负载均衡

Ribbon

5 服务调用

Feign

6 熔断降级

Hystrix

7 统一配置

1、Config

2、Nacos

8 链路追踪

1、Sleuth

2、zipkin

3、skywalking

9 认证、鉴权、单点登录

1、Shiro

2、Spring Security

3、OAuth2

4、SSO

10 消息总线

1、Bus

11 SpringCloud和dubbo的区别

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:30:16  更:2021-11-18 11:31:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/3 22:27:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码