1. OSI模型和TCP/IP模型
OSI模型:
- 物理层(Physical Layer):负责比特流的传输,包括电缆、接头、电信号等物理介质。
- 数据链路层(Data Link Layer):负责帧的传输,处理错误检测和纠正,常见协议有以太网(Ethernet)。
- 网络层(Network Layer):负责分组的传输和路由选择,常见协议有IP。
- 传输层(Transport Layer):负责端到端的数据传输,常见协议有TCP和UDP。
- 会话层(Session Layer):负责建立、管理和终止会话。
- 表示层(Presentation Layer):负责数据的表示、加密和解密。
- 应用层(Application Layer):为应用程序提供网络服务,常见协议有HTTP、FTP、SMTP等。
TCP/IP模型:
- 网络接口层(Network Interface Layer):对应于OSI的物理层和数据链路层。
- 网络层(Internet Layer):对应于OSI的网络层,主要协议是IP。
- 传输层(Transport Layer):对应于OSI的传输层,主要协议是TCP和UDP。
- 应用层(Application Layer):对应于OSI的会话层、表示层和应用层,常见协议有HTTP、FTP、SMTP等。
2. TCP和UDP的区别
TCP(Transmission Control Protocol):
- 面向连接的协议。
- 提供可靠的数据传输。
- 进行流量控制和拥塞控制。
- 传输顺序保证。
- 使用三次握手建立连接,四次挥手断开连接。
UDP(User Datagram Protocol):
- 无连接的协议。
- 提供不可靠的数据传输。
- 不进行流量控制和拥塞控制。
- 不保证传输顺序。
- 适用于需要快速传输和低延迟的场景,如视频流和在线游戏。
3. 什么是DNS?DNS解析的过程是怎样的?
DNS(Domain Name System):DNS是用于将域名转换为IP地址的系统,使用户能够通过易记的域名访问网站而不是IP地址。
DNS解析过程:
- 用户在浏览器中输入域名,DNS查询请求被发送到本地DNS服务器。
- 本地DNS服务器检查缓存是否有该域名的IP地址。
- 如果缓存没有,本地DNS服务器将查询请求发送到根DNS服务器。
- 根DNS服务器返回顶级域(如.com)的权威DNS服务器地址。
- 本地DNS服务器向顶级域权威DNS服务器发送查询请求。
- 顶级域权威DNS服务器返回目标域的权威DNS服务器地址。
- 本地DNS服务器向目标域的权威DNS服务器发送查询请求。
- 目标域权威DNS服务器返回对应的IP地址。
- 本地DNS服务器缓存该IP地址,并返回给用户的浏览器。
- 浏览器使用该IP地址访问目标网站。
举例说明
1、首先在打开浏览器以后,比如输入http://www.xzx.cn的域名,它首先是由浏览器发起一个DNS解析请求,如果本地缓存服务器中找不到结果,则首先会向根服务器查询,根服务器里面记
录的都是各个顶级域所在的服务器的位置,当向根请求http://www.xzx.cn的时候,根服务器就会返回.cn服务器的位置信息。
2、递归服务器拿到.cn的权威服务器地址以后,就会寻问cn的权威服务器,知不知道xzx.cn的位置。这个时候cn权威服务器查找并返回http://xzx.cn服务器的地址。
3、继续向http://xzx.cn的权威服务器去查询这个地址,由http://xzx.cn的服务器给出了地址:202.173.11.10
4、最终才能进行http的链接,顺利访问网站。
5、一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存
4. HTTP和HTTPS的区别。
- HTTP(HyperText Transfer
Protocol):是一种无状态的协议,用于在Web浏览器和Web服务器之间传输超文本数据。HTTP传输的数据未加密。 - HTTPS(HyperText Transfer Protocol
Secure):是HTTP的安全版本,通过SSL/TLS协议对数据进行加密。HTTPS确保数据在传输过程中保密性、完整性和真实性。
5. 什么是三次握手和四次挥手?
三次握手:用于建立TCP连接的过程。
- SYN:客户端发送一个SYN(同步序列编号)包给服务器,表示请求建立连接。
- SYN-ACK:服务器接收到SYN包后,返回一个SYN-ACK包,表示同意建立连接,并向客户端确认同步序列编号。
- ACK:客户端接收到SYN-ACK包后,发送一个ACK(确认)包,表示连接建立成功。
四次挥手:用于断开TCP连接的过程。
- FIN:客户端发送一个FIN(结束)包,表示请求断开连接。
- ACK:服务器接收到FIN包后,发送一个ACK包,表示确认断开请求。
- FIN:服务器发送一个FIN包,表示准备断开连接。
- ACK:客户端接收到FIN包后,发送一个ACK包,表示连接断开。
6. 负载均衡的概念及其实现方式。
负载均衡是一种技术,用于分配网络流量或计算任务到多个服务器,以提高系统的性能和可靠性。常见的负载均衡实现方式包括:
- DNS负载均衡:通过DNS服务器将域名解析到不同的IP地址,分配请求到多个服务器。
- 硬件负载均衡:使用专用的负载均衡设备进行流量分配。
- 软件负载均衡:使用软件如Nginx、HAProxy等进行流量分配。
- 轮询(Round Robin):按顺序将请求分配给服务器。
- 加权轮询(Weighted Round Robin):根据服务器的权重进行请求分配。
- 最小连接数:将请求分配给当前连接数最少的服务器。