计算机网络面试习题(下)
DNS原理
1,请说明DNS以及对应的工作原理
DNS,全称为域名系统(Domain Name System),是一个用于将主机域名转换为IP地址的应用层协议,使用UDP进行传输。其工作原理可以分为以下步骤:
- 用户在浏览器地址栏输入要访问的域名,如www.google.com。
- 用户的计算机向本地DNS服务器发出查询请求,询问是否有对应的IP地址。本地DNS服务器首先会在自身缓存中查找是否有该域名的记录,如果有,则直接返回IP地址;如果没有,则向根域名服务器发出查询请求。
- 根域名服务器返回一个标明负责该顶级域名的权威域名服务器的IP地址。
- 本地DNS服务器再向该权威域名服务器发送请求,该权威域名服务器返回相应的IP地址。
- 本地DNS服务器将IP地址缓存起来,并返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束。
速记
DNS是域名系统,域名转IP它做主。
应用层里UDP路,解析步骤要记住。
域名输入浏览器,本地DNS先求助。
缓存若有速返回,没有就往根处走。
根域返回权威路,本地再把请求出。
权威给出IP数,缓存之后送用户。
2,谈谈DNS解析过程,具体一点
- 客户机发出查询请求,在本地计算机缓存查找,若没有找到,就会将请求发送给DNS服务器。
- 本地DNS服务器会在自己的区域里面查找,找到即根据此记录进行解析,若没有找到,就会在本地的缓存里面查找。
- 本地服务器没有找到客户机查询的信息,就会将此请求发送到根域名DNS服务器(如:http://www.baidu.com/)。
- 根域名服务器解析客户机请求的根域部分,它把包含的下一级的DNS服务器的地址返回到客户机的DNS服务器地址。
- 客户机的DNS服务器根据返回的信息接着访问下一级的DNS服务器。
- 这样递归的方法一级一级接近查询的目标,最后在有目标域名的服务器上面得到相应的IP信息。
- 客户机的本地的DNS服务器会将查询结果返回给我们的客户机。
- 客户机根据得到的IP信息访问目标主机,完成解析过程。
速记
客户发请求,本地先找寻;
无果送DNS,区内缓存寻。
本地若还无,根域服务器;
根域指下级,递归找信息。
结果返客户,IP访主机,
解析过程毕,通信不迷离。
3,DNS负载均衡是什么策略?
当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会蹦掉。处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等。
速记
网站用户多,单台易崩锅。
DNS来救场,负载均衡强。
主机配多IP,解析结果替。
客户分散去,均衡压力低。
负载距离计,策略真给力。
4,为什么域名解析用UDP协议?
域名解析使用UDP协议的主要原因有以下几点:
- 低延迟:UDP 是一种无连接的协议,不需要在通信之前建立连接。这使得 DNS 查询 可以更快地进行,因为不需要进行握手和连接的建立过程,减少了通信的延迟。
- 快速响应:UDP 允许 DNS 服务器 以较快的速度响应 客户端 的查询。由于 UDP 包 的 头部较小,相对于 TCP 来说,不需要额外的开销和复杂的流量控制机制。
- 简单性:UDP 协议 的设计相对简单,实现和解析容易,这有助于减少 DNS 服务器 的负担和提高处理效率。
- 无状态:DNS 查询 通常是无状态的,每个查询和响应之间没有依赖关系。由于 UDP 的无连接特性,DNS 服务器 可以同时处理多个查询,而不需要维护连接状态。
- 容量适中:DNS 查询 通常只包含几十个字节的数据,而 UDP 的最大传输单元(MTU) 为 64KB,这足够容纳大多数 DNS 查询 和响应。即使查询数据超过了这个容量,UDP 协议 也可以通过分片机制来传输更多的数据。
总的来说,UDP 协议 的轻量级、快速响应和无状态特性使其成为进行 域名解析 的理想选择。但是,需要注意的是,虽然 UDP 协议 在许多情况下是有效的,但在一些特定的情况下,如需要可靠性保证的情况下,TCP 协议 可能更加合适。
速记
域名解析用UDP,五大原因要记牢。
无连低延速度妙,握手建立不用搞。
头小响应就是快,开销控制都抛掉。
协议简单易实现,处理高效负担少。
无态并发能力高,连接状态不操劳。
容量足够能装包,分片传输也可靠。
轻量快速很独到,域名解析真奇妙。
特定情况要知晓,TCP 可靠也重要。
5,为什么区域传送用TCP协议?
区域传送时使用TCP协议主要有以下两点考虑:
- 辅域名服务器会定时(一般是3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
- TCP是一种可靠的连接,保证了数据的准确性。
速记
区域传送用TCP,两点考虑要记清。
辅服定时查主名,数据变动要更新。
同步数据量庞大,UDP 难把重任承。
TCP 可靠连接行,数据准确心安宁。
传输协议
6,HTTP请求方法你知道多少?
客户端发送的 请求报文 第一行为请求行,包含了方法字段。
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法
速记
客户报文首行妙,请求方法其中找。
HTTP 规方法多,不同版本有分晓。
1.0 有三记牢靠,GET POST 和 HEAD。
1.1 新增又六条,OPT PUT PATCH 到。
DELETE TRACE CONNECT,请求方法真不少。
7,HTTP长连接和短连接的区别
HTTP长连接和短连接的主要区别在于它们在处理网络连接的方式上有所不同。
- 短连接:在客户端和服务端每进行一次HTTP通讯时,都会建立一个新的连接,通讯完成后就会关闭这个连接。在频繁通讯的情况下,这种方式会带来额外的开销,因为每次通讯都需要建立新的连接。例如,在使用web浏览器访问网站时,由于浏览器的请求数量大且频繁,如果使用短连接,将导致大量的TCP连接建立和断开,这可能会对服务器的性能和网络带宽造成压力。
- 长连接:当客户端和服务端完成一次HTTP通讯后,它们之间的连接不会关闭,而是保持打开状态,以便进行后续的通讯。这种方式可以减少频繁通讯时的开销,因为不需要每次都建立新的连接。长连接在数据传输上更加高效,因为一旦建立连接,就可以在同一个连接上多次传输数据,从而避免了频繁建立和关闭连接的开销。然而,长连接也可能会增加服务器的负担,因为需要维护更多的打开连接。
需要注意的是,HTTP/1.1协议引入了管道化连接的概念,使得多个请求可以通过同一个TCP连接并发传输,从而提高了请求的处理效率。此外,HTTP/2协议采用了多路复用的方式,使得多个请求可以同时在一个连接上传输,从而进一步提高了效率。
总之,长连接和短连接各有优缺点,需要根据具体的应用场景和需求来选择合适的方式。在需要频繁通讯的情况下,例如web浏览器的请求,使用短连接更合适;而在需要长时间保持连接以进行大量数据传输的情况下,例如实时通讯应用,使用长连接或管道化连接可能更合适。
速记
HTTP 连接有长短,短连新启开销添。
频繁通讯压服务器,带宽性能受牵连。
长连保持不断线,多次传输更省钱。
维护连接负担显,按需选择莫犯难。
HTTP 1.1 管道建,并发请求效率添。
HTTP 2 多路传,提升效率不简单。
8,SMTP:简单邮件传输(发送)协议
简单邮件传输(发送)协议(SMTP,Simple Mail Transfer Protocol) 基于 TCP 协议,用来发送电子邮件。
9,POP3/IMAP:邮件接收的协议
这两个协议没必要多做阐述,只需要了解 POP3 和 IMAP 两者都是负责邮件接收的协议即可。另外,需要注意不要将这两者和 SMTP 协议搞混淆了。SMTP 协议只负责邮件的发送,真正负责接收的协议是POP3/IMAP。
10,FTP:文件传输协议
FTP 协议 主要提供文件传输服务,基于 TCP 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。
FTP 是基于客户—服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接。如果我们要基于 FTP 协议开发一个文件传输的软件的话,首先需要搞清楚 FTP 的原理。
速记
FTP 真可靠,文件传输有高招。
TCP 连接稳又妙,系统差异能屏蔽。
C/S 模型设计好,两个连接不能少。
开发软件先知道,FTP 原理要明了。
11,Telnet:远程登陆协议
Telnet 协议 通过一个终端登陆到其他服务器,建立在可靠的传输协议 TCP 之上。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用Telnet并被一种称为SSH的非常安全的协议所取代的主要原因。
速记
Telnet 连他端,TCP 可靠做靠山。
可惜数据明文传,安全风险在眼前。
SSH 安全来替换,Telnet 渐少人用玩。
12,SSH:安全的网络传输协议
SSH( Secure Shell) 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立**在可靠的传输协议 TCP **之上。
服务器上传与csrf攻击
13,文件上传漏洞,以及如何防范
文件上传漏洞主要发生在以下几个情况下:
- 客户端校验不严格:如果客户端(通常是一个Web页面或者一个应用程序)没有对上传的文件进行充分的安全校验,攻击者可以尝试上传一个恶意的文件,并利用这个漏洞来攻击服务器。
- 服务端校验不严谨:尽管客户端进行了一些基本的文件校验,但服务端也需要进行类似的校验。如果服务端的校验不够严谨,攻击者仍然可能绕过客户端的校验,并上传恶意的文件。
- 文件类型判断不准确:在某些情况下,如果系统无法正确判断文件的类型(例如,由于文件格式被破坏或者被伪装),可能会导致错误的文件被上传。
- 权限设置不当:如果上传文件的Web服务器或者应用程序具有过高的权限(例如,可以写入到系统目录或者执行任意代码),那么攻击者上传的恶意文件就可能被执行。
以下是一些防范文件上传漏洞的方法:
- 客户端与服务端共同校验:在客户端进行文件名、文件内容等校验,并在服务端进行文件名、文件内容、文件类型等的校验,双重校验能够大大减少漏洞被攻击者利用的可能性。
- 文件类型和内容检测:通过检查文件的类型和内容,可以进一步防止恶意的文件被上传。例如,可以使用服务器端的语言特性或者正则表达式等方式来判断文件是否为预期的格式。
- 文件上传路径检查:在服务器端,应检查文件上传的路径,避免通过路径遍历等方式上传非法的文件。
- 文件重命名:在服务器端,对上传的文件进行重命名,使得攻击者即使上传了恶意的文件,也无法通过原始的文件名找到并利用它。
- 文件权限控制:如果必须在服务器端存储上传的文件,应将文件的权限设置得尽可能低,避免给攻击者留下可利用的权限。例如,可以将文件存放在一个没有执行权限的文件夹中。
- 文件内容二次渲染:这是指对上传的文件进行二次渲染或处理,使得攻击者即使上传了恶意的文件,也无法直接被服务器执行。这通常需要服务器端配合实现。
需要注意的是,防御文件的上传漏洞是一个全方位的工作,需要从多个角度进行防范。同时,定期的代码审计和安全测试也是必要的,可以帮助发现并修复可能存在的漏洞。
速记
文件上传有漏洞,多种情况会露头。
客户端弱校验松,服务端懒审核空。
类型判断出乌龙,权限设置大窟窿。
防范措施要记牢,多方校验不可少。
内容类型都检测,路径重命名来搞。
权限控制要做好,二次渲染别忘掉。
防御工作要全面,审计测试定期搞。
14,csrf是如何发生的,如何防范
CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击手段,攻击者通过伪造用户的请求,让用户在不知情的情况下执行某些操作,从而危害用户的利益和安全。
CSRF攻击通常发生在以下情况下:
- 用户已经登录了一个网站A,并且该网站使用了cookie等机制保存了用户的登录状态。
- 攻击者构造了一个恶意的请求,这个请求会利用网站A的某些功能,例如转账、发表言论等,并将这个请求发送到网站A。
- 由于用户已经登录了网站A,网站A会认为这个请求是来自用户的,因此会执行这个请求。
- 用户在不知情的情况下遭受了损失。
以下是一些防范CSRF攻击的方法:
- 使用验证码:在关键操作中加入验证码,让攻击者无法伪造用户的请求。
- 使用token:在用户提交表单时,生成一个token,并将token和用户提交的数据一起发送到服务器。服务器验证token的有效性,如果token无效,则拒绝执行请求。
- 使用HTTP Referer:检查请求的Referer头部,判断请求是否来自合法的来源。
- 使用SameSite cookie属性:设置cookie的SameSite属性为Strict或Lax,可以避免跨站请求携带cookie。
- 验证请求来源:验证请求的来源是否合法,例如检查请求的IP地址或者User-Agent头部。
- 使用HTTPOnly cookie:将cookie的httpOnly属性设置为true,可以避免JavaScript代码访问cookie。
- 使用CSP(Content Security Policy):CSP可以限制网页中执行的JavaScript代码的来源,避免恶意代码的执行。
速记
CSRF 搞伪造,用户利益受干扰。
登录网站有状态,恶意请求来伪装。
网站误认是用户,不知不觉遭了殃。
防范方法要记牢,验证码来把岗哨。
Token 验证不可少,Referer 检查很重要。
SameSite 设属性,Cookie 安全有保证。
请求来源要验证,HTTPOnly 别忘记。
CSP 策略也给力,恶意代码难侵袭。
15,可以解释一下RTO,RTT和超时重传分别是什么吗?
RTO,RTT和超时重传是网络通信中常用的概念,以下是相关解释:
- RTO(Retransmission Timeout):RTO是指从上一次发送数据开始,到下一次重发数据之间的时间间隔。当发送的数据长时间没有收到确认报文时,会触发超时重传机制,即重新发送数据。RTO的时间间隔通常是动态变化的,通常每次重传的RTO是前一次重传间隔的两倍,例如1RTT,2RTT,4RTT等,直到达到上限后停止重传。
- RTT(Round-Trip Time):RTT是指数据从发送到接收到对方响应之间的时间间隔,即数据在网络中传输一个往返所需的时间。RTT的大小是不稳定的,受到网络状况等多种因素的影响。
- 超时重传:在计算机网络中,超时重传是指当发送端发送报文后,如果长时间没有收到确认报文,则会重新发送该报文。这种情况通常发生在以下几种情况:发送的数据没有达到接收端,或者接收端没有响应;接收端虽然收到了数据,但是ACK报文在返回过程中丢失;接收端拒接或丢弃数据。
总的来说,RTO、RTT和超时重传都是在数据传输过程中保证数据可靠传输的重要机制。如想了解更多,建议请教专业人士。
速记
网络通信有概念,RTO、RTT 和重传。
RTO 超时重传限,间隔倍增上限见。
RTT 往返时间算,网络波动不稳定。
超时重传保安全,数据可靠心不悬。
cookie与session
16,cookie和session的工作原理
Cookie和Session的工作原理主要涉及客户端和服务器之间的交互。
- Cookie的工作原理:
当客户端请求服务器时,如果服务器需要记录该用户的信息,就使用 response 向客户端发送一个 Cookie。这个 Cookie 本质上是一段文本,包含用户的信息,并将其保存在客户端的浏览器上。当浏览器再次请求服务器时,浏览器会把请求的网址连同该 Cookie 一同提交给服务器。服务器通过检查该 Cookie 来获取用户信息。
- Session的工作原理:
Session 是在 Cookie 的技术上延伸的一种技术。当服务器向客户端发送 cookie 时,服务器会将相关信息保存在服务器,而 session 会根据 cookie 创建 sessionid,也就是 cookie 的 key 值。服务器可以通过 sessionid 来获取 session 保存的数据,从而进行数据的处理。由于 session 的存在,不管哪一个服务器处理请求,都可以通过同一个 session 获取到数据。
总的来说,Cookie 和 Session 都是通过在客户端和服务器之间传递信息来工作的。二者的区别在于,Cookie 将数据保存在客户端,而 Session 将数据保存在服务器端。
速记
Cookie 和 Session,交互原理要记真。
Cookie 是文本,服务端发存客户身。
再次请求同提交,服务端查知身份。
Session 延 Cookie,服务端存信息稳。
创建 ID 来对应,数据处理很安稳。
二者区别要分清,客户端存与服存。
17,cookie和session的区别
Cookie和Session都用于跟踪用户会话,但它们在存储位置、数据类型、生命周期等方面存在差异。
- 定义:Cookie 是针对每个网站的信息,每个网站只能对应一个 Cookie,而 Session 是针对每个用户,只有客户端才能访问。
- 存储位置:Cookie 存储在客户端,而 Session 存储在服务器上。这意味着 Cookie 对客户端是可见的,可以被客户端窥探、复制、修改,而 Session 不存在敏感信息泄露的风险。
- 数据类型:Cookie 中只能保存 ASCII 字符串,Session 中可以保存任意类型的数据,甚至 Java Bean 乃至任何 Java 类、对象等。
- 有效期:Cookie 的过期时间可以被设置得很长,而 Session 依赖于名为 JSESSIONID 的 Cookie,其过期时间默认为 -1,只要关闭了浏览器窗口,该 Session 就会过期。因此,Session 不能完成信息永久有效。
- 服务器压力:每个用户都会产生一个 Session,如果并发访问的用户过多,就会产生非常多的 Session,耗费大量的内存。
- 浏览器支持:所有主流浏览器都支持 Cookie,但只有主流的浏览器才支持 Session。
总的来说,Cookie 和 Session 都是用于跟踪用户会话的工具,它们各有特点和使用场景。
速记
Cookie Session 用途同,跟踪会话有不同。
定义方面要记清,网站对应 Cookie 明,用户对应 Session 行。
存储位置有区分,Cookie 客户 Session 存。
数据类型有差别,Cookie 字符 Session 大。
有效期也各不同,Cookie 长 Session 短匆。
服务压力 Session 重,浏览器支持有轻重。
ping、telnet、curl命令
18,ping命令的作用
Ping的工作原理
Ping(Packet Internet Groper)是一种网络诊断工具,用于测试目标主机是否可达并测量网络延迟。其核心原理基于ICMP协议(Internet Control Message Protocol),通过发送和接收数据包来分析网络状态。以下是其工作机制的详细说明:
Ping 的执行过程分为以下步骤:
(1)构造ICMP请求包
发送方(如用户电脑)生成一个 ICMP Echo Request数据包,包含以下关键字段:
- 类型(Type):8(表示 Echo Request)
- 序列号(Sequence Number):标识请求包的顺序
- 时间戳(Timestamp):可选字段,用于计算 往返时间(RTT)
(2)发送至目标主机
数据包通过 IP协议 封装,发送至 目标主机 的 IP地址。
目标主机 的操作系统(如 Linux/Windows)会检查 ICMP类型,若为 Echo Request,则触发响应。
接收并回复ICMP Echo Reply
目标主机 生成 ICMP Echo Reply包,类型字段 为 0,并复制请求包的 序列号、时间戳 等信息。
回复包 沿原路径返回至 发送方。
(3)计算延迟并显示结果
发送方 记录发送请求和接收回复的时间差,即 往返时间(RTT)。
输出结果包含 RTT、丢包率、目标IP 等信息,例如:
Reply from 192.168.1.1: bytes=32 time=1ms TTL=64
速记
Ping 是诊断宝,测通延迟有高招。
ICMP 是核心,收发包来把网瞧。
构造请求很重要,类型八来序不少。
时间戳记可计算,往返时间跑不了。
IP 封装发目标,主机检查有回应。
类型为零回包到,原路返回别乱跑。
发送接收时间差,RTT 算出有方法。
丢包 IP 都显示,网络状态全拿下。
18,ping命令的关键技术细节
(1)TTL(Time-To-Live)
ICMP包 中的 TTL字段 限制了数据包的最大跳数(默认通常为 64 或 128),每经过一个路由器 TTL 减 1。若 TTL 减至 0,路由器会丢弃包并返回 ICMP超时错误,用于诊断 路由路径。
(2)数据包大小
默认 Ping包 大小为 32 字节(Windows)或 56 字节(Linux),可通过参数调整(如 ping -l 1000 发送 1000 字节)。
(3)防火墙与ICMP限制
某些网络可能屏蔽 ICMP包(如 防火墙规则),导致 Ping失败 但目标主机实际可达(如 HTTP服务 正常)。
速记
Ping 有三点要记牢,TTL 、大小和防扰。
TTL 限跳默认高,路由减 1 超时报。
包大小有别不同,Win32 、Linux 五十六。
参数调整随心用,-l 加值字节动。
防火墙把 ICMP 拦,Ping 败未必主机瘫。
18,ping命令的实际应用场景
(1)网络连通性测试
快速判断 目标主机 是否在线(如 ping example.com)。
(2)延迟测量
评估 网络质量(如游戏服务器 Ping值 < 50ms 为佳)。
(3)路由诊断
通过 tracert(Windows)或 traceroute(Linux)结合 TTL 分析 路由路径。
速记
网络测试有三招,连通延迟路由瞧。
ping 测主机在不在,延迟数值要低好。
路由诊断用追踪,tracert 把路找。
19,telnet命令的作用
Telnet是一种网络协议,用于在客户端和服务器之间进行双向文本通信,它允许用户远程登录到另一台计算机上,并像在本地计算机上一样操作。以下围绕Telnet的常见使用场景和案例进行说明:
案例1:远程登录和管理服务器
场景描述:
系统管理员需要远程管理位于数据中心的一台Linux服务器。由于服务器没有图形界面,管理员需要通过命令行进行操作。
操作步骤:
- 在本地计算机上打开命令行工具(如Windows的CMD或Linux的终端)。
- 使用Telnet命令连接到服务器:例如:
telnet 服务器IP地址 端口号(默认23)telnet 192.168.1.100 23 - 输入服务器的用户名和密码,登录后即可执行命令。
注意事项:
- Telnet传输的数据(包括用户名和密码)是明文的,存在安全风险。因此,在生产环境中建议使用更安全的协议,如SSH。
案例2:测试网络设备的连通性
场景描述:
网络工程师需要测试一台网络设备(如路由器或交换机)是否正常运行,并验证其Telnet服务是否可用。
操作步骤:
- 在本地计算机上使用Telnet命令连接到网络设备:例如:
telnet 设备IP地址 端口号telnet 192.168.1.1 23 - 如果连接成功,说明设备在线且Telnet服务可用;如果连接失败,可能是设备未开机、网络不通或Telnet服务未启用。
注意事项:
- 现代网络设备通常默认禁用Telnet,推荐使用SSH进行远程管理。
案例3:学习网络协议和调试
场景描述:
学生或开发者希望学习TCP/IP协议的工作原理,或调试网络应用程序。
操作步骤:
- 使用Telnet客户端手动连接到一个服务(如HTTP服务器),并发送原始请求:
telnet www.example.com 80 - 连接成功后,手动输入HTTP请求头:
GET / HTTP/1.1 Host: www.example.com - 观察服务器的响应,分析HTTP协议的工作过程。
注意事项:
- Telnet可以帮助理解底层协议,但现代开发中更推荐使用Wireshark等工具进行抓包分析。
Telnet的局限性
安全性差:
Telnet传输的数据是明文的,容易被窃听或篡改。因此,在需要安全通信的场景中,应使用SSH替代。功能有限:
Telnet仅支持文本交互,无法传输二进制数据或图形界面。现代设备默认禁用:
大多数现代操作系统和网络设备默认禁用Telnet服务,以减少安全风险。
总结
Telnet是一种简单但过时的网络协议,适用于学习、测试或低安全性要求的场景。在实际生产环境中,应优先使用更安全的协议(如SSH、HTTPS)替代Telnet。如果必须使用Telnet,建议仅在受控的内部网络中使用,并确保网络环境的安全。
WebSocket
19,什么是WebSocket
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许服务器和客户端之间进行实时的双向数据传输,克服了传统 HTTP 请求-响应模式的局限性,为需要实时交互的应用(如在线聊天、实时游戏、股票行情监控等)提供了高效、低延迟的解决方案。
速记
WebSocket 真奇妙,TCP 连接全双道。
实时双向传数据,HTTP 局限它来消。
聊天游戏和股报,高效低延没烦恼。
20,WebSocket核心特点
- 全双工通信
- 客户端和服务器可以同时发送和接收数据,无需像 HTTP 那样需要建立多个连接或轮询。例如,在一个在线游戏中,玩家的操作和游戏的状态更新可以实时双向传输。
- 持久连接
- 连接建立后,会一直保持打开状态,直到一方或双方主动关闭。减少了频繁建立和关闭连接带来的开销,提高了通信效率。以股票行情应用为例,一旦建立 WebSocket 连接,服务器可以持续向客户端推送最新的股票价格变化,而不需要客户端不断地发起请求。
- 低延迟
- 由于数据可以直接推送,减少了中间环节,使得数据能够更快地到达对方。在实时聊天应用中,消息可以瞬间显示在对方的屏幕上,几乎感觉不到延迟。
速记
WebSocket 优势妙,三大特性要记牢。
全双通信同步跑,HTTP 繁琐都抛掉。
持久连接开销少,数据推送效率高。
低延传输速度秒,实时应用真可靠。
21,WebSocket工作原理
- 握手阶段
- 客户端通过 HTTP 请求向服务器发起 WebSocket 连接请求,请求头中包含特定的
Upgrade字段,表示希望将 HTTP 连接升级为 WebSocket 连接。服务器收到请求后,如果同意升级,会返回一个带有特定响应头的响应,此时连接成功升级为 WebSocket 连接。
- 客户端通过 HTTP 请求向服务器发起 WebSocket 连接请求,请求头中包含特定的
- 数据传输阶段
- 连接建立后,双方可以通过发送和接收 WebSocket 帧来进行数据传输。WebSocket 帧有自己的格式,包含了数据类型、长度等信息,可以高效地传输各种类型的数据,如文本、二进制数据等。
- 关闭阶段
- 当通信完成或出现异常时,一方可以发送关闭帧来关闭连接。另一方收到关闭帧后,会进行相应的清理工作,并关闭自己的连接。
速记
WebSocket 连三步,握手传输再闭户。
握手升级靠请求,特定字段来牵头。
服务同意回响应,连接升级便成功。
传输阶段用帧送,文本字节都畅通。
任务完结或出错,关闭帧发便收束。
22,WebSocket与传统 HTTP 的对比
| 对比维度 | 传统 HTTP | WebSocket |
|---|---|---|
| 通信模式 | 单向请求-响应,客户端发起请求,服务器响应 | 全双工,双方可随时发送数据 |
| 连接方式 | 每次请求建立新连接,完成后关闭 | 建立持久连接,保持打开状态 |
| 实时性 | 延迟较高,需轮询获取新数据 | 实时性强,数据可即时推送 |
| 资源消耗 | 频繁建立和关闭连接,资源消耗大 | 连接持久,资源消耗相对较小 |
| 适用场景 | 静态页面、简单数据获取 | 实时聊天、在线游戏、股票行情等实时应用 |
24,WebSocket应用场景
- 在线聊天应用
- 如微信网页版、钉钉网页版等,用户之间的消息可以实时传递,提供流畅的聊天体验。
- 实时游戏
- 在多人在线游戏中,玩家的操作和游戏的状态更新需要实时同步,WebSocket 可以确保这些信息的快速传输。
- 股票行情监控
- 投资者可以实时获取股票价格的变动情况,及时做出决策。
- 在线协作编辑
- 多个用户可以同时编辑一个文档,彼此的修改可以实时显示在其他用户的界面上。
25,WebSocket实现方式
- 客户端:在浏览器中,可以使用 JavaScript 的
WebSocket对象来建立 WebSocket 连接。例如:
const socket = new WebSocket('ws://example.com/socket');
socket.onopen = function() {
console.log('WebSocket 连接已建立');
socket.send('Hello, Server!');
};
socket.onmessage = function(event) {
console.log('收到服务器消息:', event.data);
};
socket.onclose = function() {
console.log('WebSocket 连接已关闭');
};
- 服务器端:可以使用各种编程语言和框架来实现 WebSocket 服务器,如 Node.js 的
ws库、Python 的websockets库等。
26,WebSocket优势与局限性
- 优势
- 实时性:满足对实时性要求高的应用需求。
- 高效性:减少连接建立和关闭的开销,提高通信效率。
- 双向性:支持双向数据传输,简化应用开发。
- 局限性
- 浏览器兼容性:虽然现代浏览器都支持 WebSocket,但在一些旧版本的浏览器中可能存在兼容性问题。
- 安全性:需要额外考虑安全措施,如使用
wss(WebSocket Secure)协议来加密数据传输,防止数据被窃取或篡改。
IP
24,IP协议的作用
IP协议(互联网协议)的作用可精炼概括为:实现网络层数据包的寻址与路由,具体体现在:
地址标识
为每台联网设备分配唯一IP地址(如IPv4/IPv6),作为设备在互联网中的"门牌号",确保数据精准送达目标主机。数据封装与传输
将上层协议(如TCP/UDP)的数据封装成IP数据包,添加源/目的IP地址、数据长度等头部信息,通过物理网络(如以太网)传输。路由决策
根据数据包的目的IP地址,结合路由表信息,动态选择最佳传输路径,实现跨网络的数据转发(如从家庭网络到云服务器)。分片与重组
当数据包超过链路MTU(最大传输单元)时,IP协议会将其拆分为多个分片传输,并在目标主机重新组装,确保数据完整性。
总结:IP协议是互联网通信的核心,通过地址标识、路由选择和分片机制,实现了全球异构网络间的互联互通,为上层应用(如HTTP、FTP)提供基础传输能力。
速记
IP 协议真重要,网络层里显高招。
地址标识独一号,门牌号准数据到。
封装传输加头标,物理网络把信捎。
路由决策选通道,跨网转发效率高。
分片重组保完整,异构互联基础牢。
24,IPV4与IPV6的区别
(1)地址空间
- IPv4:32位地址,总地址数约43亿个,早已耗尽。
- IPv6:128位地址,总地址数约3.4×10³⁸,足够全球每人分配数万亿地址。
(2)地址表示
- IPv4:点分十进制(如
192.168.1.1),4组0-255的数字。 - IPv6:十六进制+冒号分隔(如
2001:0db8:85a3::8a2e:0370:7334)。
(3)头部结构
- IPv4:固定头部20字节(可选字段可变长),处理复杂。
- IPv6:简化头部40字节(固定长度),无校验和,路由效率更高。
(4)配置方式
- IPv4:手动或DHCP动态分配,需NAT穿透。
- IPv6:支持无状态自动配置(SLAAC)和DHCPv6,无需NAT。
(5)安全性
- IPv4:依赖外部协议(如IPSec)加密,非默认。
- IPv6:IPSec内置,支持端到端加密,安全性更高。
(6)扩展性
- IPv4:扩展头有限,依赖NAT等补丁方案。
- IPv6:支持更大扩展头,适应未来需求(如物联网、移动网络)。
兼容性
- IPv4:广泛使用,但需过渡技术(如双栈、隧道)。
- IPv6:新协议,需逐步替代IPv4,部分老设备不支持。
总结对比表
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址空间 | 32位,约43亿个 | 128位,约3.4×10³⁸个 |
| 地址表示 | 点分十进制 | 十六进制+冒号分隔 |
| 头部复杂度 | 高(可选字段多) | 低(固定40字节) |
| 安全性 | 依赖外部协议 | 内置IPSec |
| 扩展性 | 有限,依赖NAT | 灵活,支持未来需求 |
| 过渡支持 | 无需 | 需双栈/隧道等技术 |
ARP
ARP(Address Resolution Protocol,地址解析协议) 是网络通信中用于将IP地址解析为对应的MAC地址的重要协议,属于TCP/IP协议族中的网络层协议。以下是关于ARP的详细介绍:
速记
ARP 真奇妙,网络通信不可少。
IP 地址要对号,MAC 地址来寻找。
TCP/IP 网络层,解析协议立功劳。
一、ARP的作用
- IP地址与MAC地址的映射:在局域网中,数据包的传输需要知道目标设备的MAC地址。ARP协议通过广播方式,将目标IP地址解析为对应的MAC地址,从而确保数据包能够正确传输到目标设备。
- 简化网络通信:ARP协议隐藏了网络层的细节,使得上层协议(如TCP、UDP)可以专注于处理数据传输,而无需关心底层物理地址的解析。
速记
局域网中传数据,目标 MAC 要清楚。
ARP 广播来相助,IP 解析不含糊。
网络细节它藏住,上层传输更专注。
二、ARP的工作原理
ARP请求:
- 当一台主机需要与另一台主机通信时,它会首先检查自己的ARP缓存表,看是否有目标IP地址对应的MAC地址。
- 如果ARP缓存表中没有目标IP地址对应的MAC地址,源主机就会构造一个ARP请求包,并在局域网内广播这个请求包。ARP请求包中包含源主机的IP地址和MAC地址,以及目标主机的IP地址。
ARP响应:
- 局域网内的其他主机在接收到ARP请求包后,会检查请求包中的目标IP地址是否与自己的IP地址匹配。
- 如果匹配,目标主机就会构造一个ARP响应包,并将自己的MAC地址包含在响应包中,然后单播发送给源主机。
ARP缓存更新:
- 源主机在接收到ARP响应包后,会将目标主机的IP地址和MAC地址添加到自己的ARP缓存表中,以便后续通信时使用。
速记
主机通信先查表,缓存有无 MAC 要。
若无地址就构造,广播请求包发跑。
其他主机接请求,目标 IP 细瞅瞅。
若能匹配别停留,响应单播快回头。
源机收到更新表,后续通信没烦恼。
三、ARP协议的特点
- 动态性:ARP协议是动态的,它能够根据网络环境的变化自动更新ARP缓存表。
- 局限性:ARP协议仅适用于局域网环境,无法跨越路由器进行地址解析。
- 安全性问题:由于ARP协议是基于广播的,存在ARP欺骗等安全风险。攻击者可以通过伪造ARP响应包来篡改ARP缓存表,从而实现中间人攻击等恶意行为。
速记
ARP 协议真动态,网络变化缓存换。
可惜仅限局域网,路由之外难寻伴。
广播机制有风险,伪造响应易遭骗。中间人来搞破坏,安全问题需防范。
四、ARP的应用场景
- 局域网通信:在局域网内,主机之间通过ARP协议进行地址解析,以实现数据包的正确传输。
- 网络管理:网络管理员可以使用ARP命令来查看或修改ARP缓存表,从而进行网络故障排查或优化。
速记
局域网内传数据,ARP 解析地址路。
管理若遇故障出,命令查改缓存助。
五、ARP协议的优化与安全
- ARP缓存更新策略:为了减少ARP广播对网络带宽的占用,可以设置合理的ARP缓存更新策略,如定期更新或按需更新。
- ARP安全机制:为了防止ARP欺骗等安全风险,可以采取多种安全机制,如ARP静态绑定、ARP防火墙等。这些机制可以限制ARP响应包的来源或验证ARP响应包的真实性,从而提高网络的安全性。
速记
ARP 缓存策略妙,更新合理带宽少。
定期按需选得好,广播占用能减少。
安全机制不能少,欺骗风险要防牢。
静态绑定防火墙,网络安全有保障。
