面试的一些网安题简述1(自用)

本文整理了网安面试常见的计算机网络题目及答案,涵盖ARP、RIP、OSPF等协议原理,TCP与UDP区别、三次握手四次挥手等内容,还介绍了HTTP请求过程、Cookies和session区别等知识,以及SSL、HTTPS保证安全的原理和常见状态码。

网上看到的一些网安面试要考的计网题目,在这里对题目和答案进行简单整理,可能有些不详细,因为我自己对计网还是比较熟,但是大多数我都怕自己忘了整的蛮多的。

大多出自:

网络安全面试题_重要协议分布层-优快云博客

其他皆来自网络博客内容,因为内容较多且杂无法一一附上博客链接,如有侵权,还请联系我删除。

如有错误,还请指正。

arp协议的工作原理

arp协议是“Address Resolution Protocol”(地址解析协议)的缩写所谓

“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

rip的定义和工作原理 

路由信息协议RIP

动态路由选择协议,距离矢量型路由协议,使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离

30s一次,距离在0-15  不是则忽略;存在就覆盖

RIP协议中路由器信息交换的对象协议中的路由器只和相邻的路由器交换信息
RIP中路由器之间交换的信息路由器中自己的路由表
路由信息交换的时间周期性交换

  以及路由环路的预防措施

OSPF定义和工作原理 

链路状态算法的路由协议

域内, hello请求包

  1. 相邻路由器建立邻居关系

  2. 邻居之间交互链路状态信息并同步至LSDB

  3. 计算最优路径

  4. 将最优路径添加到路由表

 

RARP定义和工作原理 

反向地址转换协议

RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址

<br class="Apple-interchange-newline"><div></div>

 

TCP 与 UDP 区别总结

 

TCP适用于对数据传输可靠性和完整性有较高要求的场景,如文件传输、网页访问等;而UDP适用于对数据传输速度要求较高、可以容忍部分数据丢失的实时通信、音视频传输等场景。

udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。

 

什么是三次握手四次挥手? 

 

三次握手是TCP协议建立连接的过程。在进行数据传输之前,客户端和服务器需要通过三次握手来确认彼此的身份和建立可靠的通信

  1. 客户端向服务器发送SYN(同步)包,表明自己请求建立连接。

  2. 服务器收到SYN包后,回复一个ACK(确认)包,表示收到了客户端的请求,并且愿意建立连接。

  3. 客户端收到ACK包后,再次向服务器发送一个ACK包,表示已经收到了服务器的确认消息,连接建立成功。

四次挥手是指在TCP连接中,断开连接时需要进行的步骤

除了第一次客户端发送FIN报文,其他三次都是需要确认的。这是因为TCP协议保证了传输的可靠性,需要确保报文的送达和接收。四次挥手中每一步的主要作用如下:

第一步:客户端发送FIN报文,告诉服务端不会再发送数据了。

第二步:服务端收到FIN报文后,发送一个ACK报文给客户端,确认接收到了FIN报文。

第三步:服务端发送FIN报文,告诉客户端服务端不会再发送数据了。

第四步:客户端收到FIN报文后,发送一个ACK报文给服务端,确认接收到了服务端的FIN报文。

 

tcp 为什么要三次握手? 

确认双方的通信能力:

在进行数据传输之前,双方需要确认彼此的通信能力。客户端发起连接请求,服务器回应确认,再由客户端发送确认,这样可以确保双方的通信能力正常。

避免旧连接的延迟影响:

如果只有两次握手,客户端发送连接请求,但该请求在网络中被延迟,可能由于网络拥塞或其他原因导致延迟。此时,客户端可能会认为连接已建立,但服务器并不知情。当客户端再次发送数据时,服务器可能会拒绝或丢弃这些数据,因为它并没有建立有效的连接。通过引入第三次握手,可以避免旧连接的影响,确保客户端和服务器都知道连接已成功建立。

防止重复连接的建立:

如果只有两次握手,客户端发送连接请求,但在网络中由于某种原因延迟。此时,客户端可能认为连接未建立,因此发送新的连接请求。如果服务器接收到了两个连接请求,并回应确认,就会建立两个相互独立的连接。这可能导致资源浪费和数据混乱。通过引入第三次握手,可以确保服务器收到重复的连接请求时能够正确处理,避免重复连接的建立。

 

dns 的定义和工作原理 

因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

将主机域名转换为ip地址,属于应用层协议,使用UDP传输。( DNS应用层协议)

DNS的工作流程可以简述为以下几个步骤:

浏览器解析:当用户在浏览器中输入一个域名时,浏览器会首先解析域名,提取出主机名和顶级域名。

本地缓存查询:浏览器会查询本地缓存,看是否存在该域名的解析结果。如果存在,则直接返回IP地址,节省了网络查询的时间。

递归查询:如果本地缓存中不存在相应的解析结果,浏览器会向本地配置的DNS服务器发送递归查询请求。本地DNS服务器会负责递归查询,并将结果返回给浏览器。

迭代查询:如果本地DNS服务器也没有相应的解析结果,它会向根域名服务器发送迭代查询请求。根域名服务器负责管理顶级域名服务器的IP地址,它会根据顶级域名(例如.com)的信息返回对应的顶级域名服务器的IP地址。

顶级域名查询:本地DNS服务器向顶级域名服务器发送查询请求,并根据顶级域名的信息返回下一级域名服务器的IP地址。这个过程会一层一层地向下查询,直到找到负责解析的权威域名服务器。

权威域名查询:最后,本地DNS服务器向权威域名服务器发送查询请求,并获取域名对应的IP地址。本地DNS服务器会将解析结果缓存起来,并返回给浏览器。

结果返回:浏览器收到本地DNS服务器返回的IP地址后,会将其存储在本地缓存中,并发起与该IP地址相关的网络请求。

 

递归:

image-20240328163700690

迭代:

 

一次完整的 HTTP 请求过程 

 

1.DNS解析

浏览器进行DNS域名解析,得到对应的IP地址

2.TCP三次握手

根据这个IP,找到对应的服务器建立连接(三次握手)

3.发起HTTP请求

建立TCP连接后发起HTTP请求(一个完整的http请求报文)

4.服务器响应HTTP请求

服务器响应HTTP请求,浏览器得到html代码(服务器如何响应)

5.浏览器解析

浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)

6.浏览器进行页面渲染

浏览器对页面进行渲染呈现给用户

7.服务器关闭TCP连接

服务器关闭TCP连接(四次挥手

 

Cookies 和 session 区别 

 

Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。

(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的

(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全

(4)设置cookie时间可以使cookie过期。但是使用session-destory(),将会销毁会话。

 GET 和 POST 的区别

(1)post请求更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存)

(2)post请求发送的数据更大(get请求有url长度限制,http协议本身不限制,请求长度限制是由浏览器和web服务器决定和设置)

(3)post请求能发送更多的数据类型(get请求只能发送ASCII字符)

(4)传参方式不同(get请求参数通过url传递,post请求放在request body中传递)

(5)get请求产生一个TCP数据包;post请求产生两个TCP数据包(get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;post请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)

 

 HTTPS 和 HTTP 的区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用;

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议;

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

4、http的连接很简单,是无状态的;

 

session 的工作原理

当用户首次访问 Web 应用时,Web 应用会自动生成一个唯一的 Session ID,将这个 Session ID 以 Cookie 的形式返回给浏览器。

  1. 在用户浏览器中生成一个名为 sessionid 的 Cookie(名字可以自己配置),它包含了 Session ID。

  2. 当用户访问 Web 应用中的其他页面时,浏览器会自动将 Cookie 中的 Session ID 发送给服务器端。

  3. 服务器端收到请求后,通过反序列化 Session ID 来查找对应的 Session 对象。

  4. 如果找到了对应的 Session,服务器端就可以根据 Session 中保存的数据来处理请求。如果没有找到对应的 Session,服务器端可能会创建新的 Session。

  5. 当 Session 中的数据发生变化时,服务器端会持久化这些数据,确保用户刷新页面或打开新窗口时数据不会丢失。

  6. 当用户关闭浏览器,Session 或者 Session ID 就会被销毁,表示用户本次会话结束。

http 长连接和短连接的区别 

长连接(Long-lived Connection):长连接是指在一段时间内保持连接并可以多次使用的连接。在HTTP中,如果客户端与服务器之间的初始请求-响应会话建立后,客户端可以继续使用同一连接发起其他请求,直到连接关闭或者达到一定的时间限制。这意味着同一TCP连接上可以处理多个请求,而不是为每个请求建立新的连接。这样可以提高效率,减少网络开销,特别是在处理大量请求的情况下。然而,如果客户端和服务器之间的长连接没有正确管理,也可能导致资源浪费和性能问题。

短连接(Short-lived Connection):短连接是指每次请求一个资源时,都会建立新的连接,并在完成请求后关闭连接。这种方式的优点是每次请求都需要单独建立连接,因此可以更有效地利用网络资源,特别是在处理少量请求的情况下。此外,由于每次请求都需要新的连接,因此可以更好地控制并发连接数和网络流量。然而,短连接也有一些缺点,例如需要更多的网络开销和建立新连接的时间,这可能会影响性能和响应时间。

什么是 TCP 粘包/拆包?发生原因?解决方案 

 

如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。

原因

TCP是基于字节流的,虽然应用层和传输层之间的数据交互是大小不等的数据块,但是TCP把这些数据块仅仅看成一连串无结构的字节流,没有边界;

在TCP的首部没有表示数据长度的字段,基于上面两点,在使用TCP传输数据时,才有粘包或者拆包现象发生的可能。

1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。 2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。 3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。 4、接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。

解决办法

发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。 2、发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。 3、可以在数据包之间设置边界,如添加特殊符号,这样,接收端通过这个边界就可以将不同的数据包拆分开。

 TCP 如何保证可靠传输?

 

数据分块:将数据包划分为合适的大小,这样更能适应网络的限制,如果数据发生错误或丢失,只要重传有问题的部分即可,减少重传的数据量。方便进行流量和拥塞控制。

2、数据包有序号,可以根据序号对失序的数据包进行重新排序、并且可以去重,丢弃重复的数据包。

3、校验和,TCP会用头部信息和数据进行校验,来确保传输过程中有没有发生变化,如果认为被修改了会丢弃这个数据包。

4、超时重传机制,发送数据包后,会启动定时器等待接收方的确认信息,如果超过一定时间都没收到之后会进行重传。

5、流量控制。TCP连接的两方都有自己的缓冲区,接收方只允许发送方发送自己能承受的数据量,如果接收方处理不过来,会要求降低发送速度,避免丢包。

6、拥塞控制:网络拥塞时,减少数据的发送。

URI 和 URL 的区别 

URL(统一资源定位符)是Internet上资源的地址,可以定义为引用地址的字符串,用于指示资源的位置以及用于访问它的协议。

URI(统一资源标识符)是标识逻辑或物理资源的字符序列,与URL类似,也是一串字符。通过使用位置,名称或两者来标识Internet上的资源;它允许统一识别资源。

 

 

什么是 SSL ? 

SSL是什么?SSL怎么用?-优快云博客  

附上博客,此处我还没完全了解清楚。

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。

SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

① 保密:在握手协议中定义了会话密钥后,所有的消息都被加密;

② 鉴别:可选的客户端认证,和强制的服务器端认证;

③ 完整性:传送的消息包括消息完整性检查(使用MAC)

 

https 是如何保证数据传输的安全(SSL 是怎么工作保证安全的) 

加密技术: HTTPS通过采用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议,实现了客户端与服务器之间的加密通信。这意味着所有传输的数据,无论是文本、图片还是视频,都将在传输过程中被加密,仅可通过特定密钥解密,有效防止了中间人攻击和数据窃听。

数据完整性: HTTPS确保了数据在传输过程中保持未被篡改的状态。利用如SHA等消息摘要算法对数据进行完整性校验,接收方能够验证数据在传输过程中是否遭到篡改,保障了数据的真实性和完整性。

身份验证: 通过SSL/TLS证书,HTTPS实现了对服务器(以及有时客户端)的身份验证。这些证书由权威的证书颁发机构(CA)签发,含有服务器的公钥和身份信息,帮助用户确认其与服务器的通信是安全可靠的。

TCP 对应的应用层协议,UDP 对应的应用层协议 

 

TCP 是一种面向连接的协议,通常用于数据传输至关重要的应用程序。以下是几个常见的应用层协议:

HTTP(Hyper Text Transfer Protocol):HTTP 使用 TCP 作为其默认传输协议,用于在 Web 浏览器和 Web 服务器之间传输 HTML、CSS 和 JavaScript 内容等。例如,在浏览器中输入网址时,通常会使用 HTTP/TCP 协议进行数据传输。
​
HTTPS(Hyper Text Transfer Protocol Secure):HTTPS 类似于 HTTP 协议,但使用安全套接字层协议(SSL/TLS)对数据进行加密,从而保护数据的安全性。同样是基于 TCP 协议实现。
​
FTP(File Transfer Protocol):FTP 是一个文件传输协议,允许在客户端和服务器之间传输文件。FTP 数据传输的信道常常使用随机数据端口,这些端口不同于常规 FTP 控制通道端口,控制通道依然使用 TCP。
​
SMTP(Simple Mail Transfer Protocol):SMTP 协议用于电子邮件发送,包括将邮件从客户端发送到服务器,并在多台服务器之间传递邮件。
​
Telnet:Telnet是一种互联网远程登录协议,它在计算机网络上提供双向的可靠的虚拟终端连接服务。Telnet使用TCP作为传输层协议。

UDP 是一种无连接的协议,适用于实时应用(如语音和视频),这些应用需要速度而不是可靠性。以下是几个常见的应用层协议:

DNS(Domain Name System):DNS 提供域名到 IP 地址的解析服务,用于将用户输入的域名转换为 IP 地址。DNS 使用 UDP 协议确保高效率和快速响应。
​
DHCP(Dynamic Host Configuration Protocol):DHCP 用于动态地为计算机分配 IP 地址、子网掩码、路由器地址、域名服务器等网络信息。DHCP 运行在 UDP 协议之上,并使用广播方式通知访问它的设备们提供自身的配置信息。
​
TFTP(Trivial File Transfer Protocol):TFTP 是一个简单轻便的文件传输协议,没有鉴权和连接,支持大多数内核引导加载程序和其他小下载文件。
​
SNMP(Simple Network Management Protocol):SNMP 主要用于管理和监测网络设备等,它工作在 UDP 端口号为 161 和 162 的基础上,在 SHDN之上开展添加额外的安全功能来强化安全控制。

常见的状态码有哪些? 

状态码200: 状态码200表示服务器响应成功,也就是服务器找到了客户端请求的内容,并且将内容返回给客户端。

状态码302: 状态码302代表临时跳转。例如:URL地址A可以向URL地址B上跳转,但这并不是永久性的,在经过一段时间后,URL地址A还可能向URL地址C上跳转。

状态码301 : 状态码301和状态码302相似,不同的是状态码301往往代表的是永久性的重定向,值得注意的是,这种重定向跳转,从严格意义来讲不是服务器跳转,而是客户端跳转的。这个“跳”的动作是服务器是通过回传状态码301来下达给客户端的,让客户端完成跳转。

状态码304: 服务器通过返回状态码304可以告诉客户端请求资源成功,但是这个资源不是由服务器提供返回给客户端的,而是客户端本地浏览器缓存中就有的这个资源,因为可以从缓存中获取这个资源,从而节省传输的开销。

状态码403: 状态码403代表请求的服务器资源权限不够,也就是说,没有权限去访问服务器的资源,或者请求的IP地址被封掉了。

状态码404: 状态码404代表服务器上没有该资源,或者说服务器找不到客户端请求的资源,是最常见的请求错误码。

状态码500: 状态码500代表程序错误,也就是说请求的网页程序本身报错了。在服务器端的网页程序出错。由于现在的浏览器都会对状态码500做一定的处理,所以在一般情况下会返回一个定制的错误页面。


明天更点网安操作这些的。

这里是很菜的WL,

希望我的内容能帮到你,

我们下一集再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值