1. 什么是计算机网络
- 计算机网络是由多个计算机和设备通过通信链路相互连接形成的系统,以便于共享资源和信息。
2. 什么是协议
- 协议是网络中各方之间通信的规则和标准,比如,HTTP,TCP/IP等。
3. 什么是IP地址
- IP 地址是用于标识网络中设备的唯一地址,分为 IPv4(例如:192.168.1.1)和 IPv6(例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334)
4. 什么是子网
- 子网是将大型网络划分为较小网络的过程,以提高性能和安全性。
5. 什么是DNS
- DNS 即域名系统,将域名解析为IP地址的服务,方便用户访问网络资源。
6. 什么是NAT
- NAT 即网络地址转换,可将私有 IP 地址转换为公有 IP 地址,实现多个设备共享一个公有 IP 上网。
7. 什么是带宽和延迟
- 带宽是网络传输数据的能力,通常指单位时间内传输的数据量。延迟是数据从一个点传输到另一个点所花费的时间。
8. 什么是VPN
- VPN 是虚拟专用网络,通过在公共网络上建立加密通道,实现安全远程访问和通信。
9. 路由器和交换机的区别
- 路由器用于连接不同网络并转发数据包,工作在网络层。而交换机用于连接同一网络的设备,工作在数据链路层,基于MAC地址传输数据。
10. OSI与TCP/IP模型
OSI 有七层模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP 有四层模型,分别是网络接口层、网际层、传输层、应用层。TCP/IP 模型更简洁实用,被广泛应用。
- 应用层:包含所有应用程序协议,为用户提供服务。比如,HTTP、FTP、SMTP,DNS。
- 传输层:提供端到端的通信服务,控制数据流的完整性与顺序。比如,TCP、UDP
- 网络层:负责数据包的寻址与路由,使用IP协议。比如IP协议(IPv4、IPv6)
- 网络接口层:处理物理传输及网络接口,包含所有网络接口技术。以太网,Wi-Fi等。
11. HTTP、FTP、SMTP、DNS用途
- HTTP(超文本传输协议):用于在 Web 浏览器和 Web 服务器之间传输超文本(如网页内容)。它是互联网上应用最为广泛的一种网络协议。通过 HTTP,用户可以在浏览器中输入网址访问网页、提交表单、下载文件等。
- FTP(文件传输协议):用于在网络上进行文件的上传和下载。它允许用户连接到远程服务器,浏览服务器上的文件目录,并将文件从服务器下载到本地计算机,或者将本地文件上传到服务器。FTP 通常用于文件共享、软件分发等场景。
- SMTP(简单邮件传输协议):用于发送电子邮件。当你使用邮件客户端(如 Outlook、Foxmail 等)发送邮件时,邮件客户端会使用 SMTP 协议将邮件发送到邮件服务器,然后邮件服务器再将邮件转发到接收方的邮件服务器。
- DNS(域名系统):主要用于将域名转换为 IP 地址。当你在浏览器中输入一个域名(如 www.example.com)时,DNS 服务器会将这个域名解析为对应的 IP 地址,然后浏览器才能通过 IP 地址连接到目标服务器。DNS 使得用户可以使用容易记忆的域名来访问网站,而不必记住复杂的 IP 地址。
12. TCP与UDP的区别
- TCP是面向连接的,在发送数据之前必须先建立连接(通过三次握手),只有在形成稳定的连接后,数据才会传输。而UDP不需要建立连接,适合需要快速传输的应用。
- TCP提供可靠性,确保数据包的顺序性,并对丢失的数据进行重传,并使用ACK机制来确保接收方已成功接收数据。而UDP,不提供可靠性,数据包可能在传输过程中丢失、重复或顺序错误。
- TCP因为需要建立连接、确认数据和重传丢失的数据,所以传输速度相对比较慢。而UDP啥都没有,传输速度较快。
- TCP数据以字节流的形式传输,确保完整的流数据的顺序,而UDP数据被封装为数据报,每个数据报独立处理。
- TCP适用于对数据可靠性要求高的场景,如文件传输、电子邮件、网页浏览等。在这些场景中,数据的完整性和准确性相对重要,即使传输速度稍慢也可以接收。例如,当你从网上下载一个软件时,你希望下载的文件是完整无误的,这时就需要使用TCP协议来保证数据的可靠传输。而UDP,适用于对实时性要求高、对数据准确性要求相对较低的场景。比如视频通话,在线游戏、或者网络语音通话。在这些场景中,快速的数据传输和低延迟比数据的完全准确性更为重要。例如,在玩在线游戏时,玩家的操作需要快速地传输到服务器,即使偶尔丢失一些数据包,也不会对游戏体验产生太大影响。
13. TCP三次握手四次挥手
- 三次握手是TCP连接建立的过程,包括:
- 客户端发送SYN报文,请求建立连接
- 服务端发送SYN-ACK报文,表示同意连接。
- 客户端发送ACK报文,连接建立完成。
- 完成这三次握手后,客户端和服务器之间就建立了可靠的TCP连接。
- 四次挥手是TCP连接终止的过程,包括:
- 主动关闭连接的一方(如客户端)发送FIN报文,通知对方准备关闭连接。
- 服务端收到后,发送ACK报文,表示已收到关闭请求。
- 服务端关闭连接时,发送FIN报文。
- 客户端收到后,发送ACK报文,连接关闭完成。
- TCP 三次握手不能用两次握手来代替,原因如下:
- 防止已失效的连接请求报文突然又传送到服务器,从而产生错误
- a. 假设采用两次握手。客户端向服务器发送一个连接请求报文,由于网络延迟等原因,这个报文在某个网络节点长时间滞留。客户端超时后,重新发送一个连接请求报文并建立连接,数据传输完毕后释放连接。
- b.这时,那个被滞留的连接请求报文突然到达服务器。服务器收到这个失效的连接请求报文后,会误认为客户端又发出一次新的连接请求,于是向客户端发送确认报文,并进入已建立连接状态,等待客户端发送数据。但此时客户端并没有发起新的连接请求,不会向服务器发送数据,从而导致服务器一直等待,浪费服务器资源。
- 三次握手才能确保双方都有发送和接收数据的能力
- 第一次握手,客户端发送请求,表明客户端有发送能力;第二次握手,服务器回应,表明服务器有接收能力且能向客户端发送数据;第三次握手,客户端回应,表明客户端有接收能力。这样通过三次握手,双方才能确定彼此的收发能力都正常,从而为可靠的数据传输建立基础。
14. Http和Https的区别
- 安全性
- Http,不提供数据加密,不安全。而Https使用SSL/TLS对数据进行加密,确保数据传输的安全性。
- 端口号
- Http默认使用80端口,Https默认使用443端口进行通信
- 性能上
- Http,相对较快,因为没有加密和解密的过程。Https,因为需要加密和解密处理时间稍慢。
- 场景上
- Http,适合对安全性要求不高的场景,例如浏览一些公共信息的网站。Https用于传输敏感信息的场景,例如,银行网站等。
- 证书
- Http,不需要任何证书,Https,需要SSL/TLS证书,证书由认证机构颁发,用于验证网站的身份。
- 用户体验
- Http,浏览器中不会有任何安全警告。Https,浏览器会显示安全锁标志,表明用户的数据传输是安全的。
总结
- HTTP 是一种基本的数据传输协议,但不安全,适合传输非敏感信息。
- HTTPS 是安全增强版本,通过加密保护数据传输,适合需要保护用户信息和隐私的场景。
15. Https连接建立的过程
HTTPS(超文本传输安全协议)基于 HTTP 并通过 SSL/TLS(安全套接字层/传输层安全协议)来提供加密和安全性。建立 HTTPS 连接的过程主要包括以下几个步骤:
- 客户端发起请求;
- 服务器响应并发送证书;
- 客户端验证证书;
- 生成会话密钥;
- 服务器解密会话密钥;
- 建立安全连接;
- 数据传输;
- 连接关闭;
总结
HTTPS 通过以上步骤建立安全连接,其主要过程涉及证书的交换、验证和会话密钥的生成。通过此过程,客户端和服务器之间的数据传输得到妥善的加密和保护,确保了安全性。
16. 对称加密和非对称加密
- 对称加密在加密和解密过程中使用相同的密钥,快速但面临密钥管理的困难。如AES
- 非对称加密通过公钥和私钥实现加密和解密,安全性较高,但是处理速度相对较慢。如RSA
通常,两者可以结合使用:非对称加密用于安全地交换对称加密所需的密钥,而对称加密用于实际的数据加密。这种组合既能提高安全性,又能提高效率。
17. Get和Post的区别
- 数据发送位置
- Get用于获取资源,数据在Url中,而Post用于提交数据,数据在请求体中。
- 安全性
- Get因为数据在Url中不适合传输敏感信息,Post相对更安全。
- 数据长度限制
- Get请求Url长度受限制,而Post没有明确的长度限制,适合传输大量数据。
- 幂等性
- Get请求是幂等的,发送多次不会改变服务器状态,而Post通常不是幂等的,可能导致不同结果。
- 缓存
- Get可以被浏览器缓存,而Post一般不被缓存。
总结
- GET 用于获取资源,数据在 URL 中;POST 用于提交数据,数据在请求体中。
- 选择使用哪种请求,取决于操作的类型和数据的保密性。
18. Http常见响应状态码
- 200 OK:请求成功,响应数据正常返回
- 301 Moved Permanently:表示请求的资源已被永久移动到新位置。浏览器会自动重定向到新的 URL
- 302 Found:表示请求的资源临时被移动到了另一个位置。与 301 类似,但不保证重定向是永久性的
- 400 Bad Request:表示客户端发送的请求有语法错误或无法被服务器理解
- 403 Forbidden:表示服务器理解请求,但拒绝执行,通常是因为客户端没有足够的权限访问资源
- 404 Not Found:表示服务器找不到请求的资源
- 500 Internal Server Error:表示服务器内部发生错误,无法完成请求。
- 502 Bad Gateway:表示作为网关或代理的服务器,从上游服务器接收到无效的响应
19. 转发和重定向的区别
- 定义
- 转发是服务器内部处理请求,将一个资源转发到另一个资源,而重定向服务器向客户端发送一个新的URL,让客户端重新发起请求。
- 请求处理
- 转发发生在服务端,客户端不知道请求已经被转发。请求的URL不会改变,重定向发生在客户端,客户端会看到URL的改变。
- 状态码
- 使用RequestDisptcher.forward() 方法,不会改变响应状态码。重定向使用HttpServeltResponse.sendRedirect()方法,通常返回 302 (Found) 或 301 (Moved Permanently) 状态码。
- 性能
- 转发是相对高效的,因为所有操作发生在服务器端,而无须客户端发起新的请求。重定向会增加额外的请求/响应开销,因为客户端需要再次发起请求。
总结
- 转发 是服务器内部的操作,URL 不变;而 重定向 是服务器指示客户端发起新的请求,URL 会改变。
- 转发在同一请求中处理,效率较高;重定向则较慢,因需额外请求。
20. Cookie和Session的区别
- 存储位置
- Cookie存储在浏览器中,每次请求时,浏览器会自动发送Cookie给服务器;而Session存储在服务器端,客户端通过一个唯一的SessionId(通常存储在Cookie中)来识别会话。
- 数据存储容量
- 每个Cookie的大小通常限制在4KB左右,而Session的限制主要取决于服务器的内存和配置,通常可以存储大量数据。
- 安全性
Cookie因为存储在客户端,不适合存储敏感信息。而Session更安全,因为数据存储在服务器端,客户端无法直接访问。通常用于存储敏感信息。
总结
- Cookie 主要存储在客户端,容量小,安全性低,适合存储简单的用户信息;而 Session 存储在服务器端,容量大,安全性高,适合存储敏感数据和会话信息。
21. 浏览器输入url后的过程
当用户在浏览器中输入一个 URL 后,浏览器会经过一系列步骤来请求并显示该网页。以下是这一过程的主要步骤:
- URL解析
- 浏览器解析用户输入的 URL,拆分出协议(如 HTTP/HTTPS)、主机名、端口(如果有)、路径和查询参数。
- DNS查询
- 域名解析:浏览器查找域名的 IP 地址。如果浏览器的 DNS 缓存中没有该域名的记录,它会向 DNS 服务器发送请求。
- DNS 服务器返回相关的 IP 地址。
- 建立TCP连接
- 三次握手:浏览器通过 TCP 协议与服务器建立连接。该过程包括:
- 客户端发送 SYN 包。
- 服务器响应 SYN-ACK 包。
- 客户端发送 ACK 包,完成连接建立。
- 发送HTTP请求
- 浏览器通过建立的 TCP 连接向服务器发送 HTTP 请求,通常包括:
- 请求方法(如 GET、POST)
- URL 路径
- HTTP 版本
- 请求头信息
- 服务器处理请求
- 服务器接收到请求后,处理并生成响应,通常包括:
- 响应状态码(如 200, 404)
- 响应头信息
- 响应体(如 HTML 文档、JSON 数据等)
- 发送HTTP响应
- 服务器将响应数据发送回浏览器。
- 渲染网页
- 解析 HTML:浏览器解析返回的 HTML 文档,构建 DOM 树。
- 解析 CSS:处理 CSS 文件,并构建 CSSOM 树。
- 执行 JavaScript:执行客户端脚本,可能会改变 DOM 和样式。
- 构建渲染树:将 DOM 和 CSSOM 合并,生成渲染树。
- 布局:计算每个元素的位置和大小。
- 绘制:将内容绘制到屏幕上。
- 处理资源
- 如果 HTML 文档中包含其他资源(如 CSS、JavaScript、图像等),浏览器会发起相应的请求。这些资源可以并行请求以提高加载速度。
- 完成
- 一旦所有资源都加载完成,网页展示给用户,用户可以与其进行互动。
总结
整个过程可以简化为如下:
- 浏览器进行DNS解析,获取对应ip;
- 根据ip建立TCP连接;
- 浏览器向服务器发送HTTP请求;
- 服务器发送HTTP响应;
- 浏览器进行渲染;
网络基础篇
最新推荐文章于 2024-11-02 15:22:06 发布