文章目录
【网络云SRE运维开发】2024第52周-每日【2024/12/31】小测-计算机网络参考模型和通信协议的理论和实操考题-简要解析
理论题
1.1 OSI参考模型和TCP/IP模型的层次结构及其异同点
OSI参考模型拥有七层结构,从低到高依次为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每层都有其特定的功能和协议,旨在提供一个通用的、标准化的网络通信框架。
TCP/IP模型则更为精简,包含四层结构,从低到高为:网络接口层、互联网层、传输层和应用层。每层同样承载了网络通信的关键功能,更注重实用性,直接服务于互联网通信。
异同点:
- 层次结构:OSI模型有七层,TCP/IP模型有四层。
- 设计理念:OSI模型更侧重于标准化,而TCP/IP模型更注重实用性。
- 实际应用:OSI模型多用于教学和研究,TCP/IP模型则是现代网络通信的基石。
- 协议支持:OSI模型没有直接绑定特定的协议,而TCP/IP模型则直接关联了众多的协议,如IP、TCP、UDP等。
- 层次功能:OSI模型的层次划分更为细致,TCP/IP模型则相对简洁,某些层次的功能被合并。例如,网络接口层就涵盖了OSI模型中物理层和数据链路层的功能。
1.2 TCP协议中的三次握手过程及其必要性
三次握手过程:
- 第一次握手:客户端向服务器发送一个SYN(同步)包,用来发起连接。
- 第二次握手:服务器收到SYN包后会发送一个ACK(确认)包以及一个SYN包,用来确认客户端的请求并表示自身接收能力。
- 第三次握手:客户端收到服务器的ACK和SYN包后,会向服务器发送一个ACK包,表示连接已建立。
必要性:为了确保双方都能正确地发送和接收数据。通过三次握手,可以确认双方的收发能力正常,从而建立稳定的连接。如果只有一次握手就直接发送数据,可能会因为数据丢失而导致连接无法建立。
1.3 UDP协议的特点及其适用场景
特点:UDP协议是一种不可靠的、面向无连接的协议。它不提供可靠的数据传输和流量控制机制,但是具有较低的延迟和较小的开销。
适用场景:UDP适用于对实时性要求较高、数据传输量较小的应用场景,如音视频传输、DNS查询等。在这些场景中,即使偶尔丢失一些数据包,也不会对整体性能产生太大影响。
1.4 ARP协议的作用及其工作原理
作用:ARP协议(地址解析协议)是作用于链路层的网络协议,用于将网络层中的IP地址转换为物理层的MAC地址。
工作原理:当主机A要向主机B发送数据包时,但它不知道B的MAC地址,就会向广播地址发送一个ARP请求包。该请求包中包含A的IP地址和MAC地址,以及B的IP地址。位于同一局域网内的所有设备都会收到这个ARP请求包,包括主机B。主机B发现请求包中的IP地址与自己的IP地址匹配,就生成一个ARP应答包,其中包含B的MAC地址,并发送回主机A。主机A收到ARP应答包后,就知道了B的MAC地址,就可以将数据包发送给B了。
1.5 HTTP协议和HTTPS协议的区别
- 传输信息安全性:HTTP协议是明文传输,而HTTPS协议则具有安全性,为浏览器和服务器之间的通信加密,确保数据传输的安全。
- 连接方式:HTTP协议是无状态的连接,而HTTPS协议则是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
- 端口:HTTP协议使用的端口是80,而HTTPS协议使用的端口是443。
- 证书申请方式:HTTP协议免费申请证书,而HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
实操题
2.1 使用抓包工具捕获TCP三次握手和四次挥手的数据包
步骤:
- 打开Wireshark等抓包工具。
- 选择要捕获的网络接口。
- 开始捕获数据包。
- 在捕获的数据包中,找到TCP三次握手和四次挥手的数据包。
- 分析其报文结构,包括源地址、目的地址、序列号、确认号、标志位等信息。
注意:由于实际操作中网络环境复杂,可能需要过滤掉无关的数据包,以便更清晰地看到TCP三次握手和四次挥手的过程。
2.2 配置路由器实现不同VLAN之间的通信
设备:可以使用模拟软件(如Cisco Packet Tracer)或真实路由器。
配置步骤(以Cisco路由器为例):
- 确认路由器支持VLAN功能。
- 创建VLAN,并为每个VLAN分配一个唯一的VLAN ID。
- 将特定的端口或接口分配给创建的VLAN。
- 配置VLAN间路由,以便不同VLAN之间能够相互通信。这通常涉及到创建子接口并配置IP地址。
- 测试和验证配置是否成功。
注意:具体配置命令可能因路由器型号和操作系统版本而异。
2.3 使用Python编写UDP客户端和服务器程序
UDP服务器代码示例:
python
import socket
def create_udp_server(host='localhost', port=12345):
# 创建一个UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定到指定的主机和端口
server_socket.bind((host, port))
print(f"UDP Server started on {host}:{port}")
while True:
# 接收客户端发送的数据
data, address = server_socket.recvfrom(1024)
print(f"Received message from {address}: {data.decode()}")
# 向客户端发送响应
response = "Message received."
server_socket.sendto(response.encode(), address)
if __name__ == "__main__":
create_udp_server()
UDP客户端代码示例:
python
import socket
def create_udp_client(host='localhost', port=12345):
# 创建一个UDP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 向服务器发送消息
message = "Hello, UDP Server!"
client_socket.sendto(message.encode(), (host, port))
# 接收服务器的响应
data, server_address = client_socket.recvfrom(1024)
print(f"Received message from {server_address}: {data.decode()}")
if __name__ == "__main__":
create_udp_client()
运行步骤:
- 先运行UDP服务器代码。
- 再运行UDP客户端代码。
- 观察服务器和客户端的输出,确认消息已成功发送和接收。
2.4 在Linux系统中跟踪到某个网站的网络路由路径
步骤:
- 打开终端。
- 输入
traceroute www.baidu.com
或mtr www.baidu.com
命令(需要安装mtr工具)。 - 观察输出结果,包括经过的每个路由器的IP地址、名称(如果有的话)、TTL、延迟等信息。
分析:通过输出结果,可以了解数据包从本地到目标网站所经过的路径和每个路由器的性能情况。这对于诊断网络问题非常有帮助。
2.5 配置Web服务器并部署HTML页面
服务器软件:可以选择Apache或Nginx等流行的Web服务器软件。
配置步骤(以Apache为例):
- 下载并安装Apache服务器软件。
- 配置Apache的httpd.conf文件,设置服务器的根目录、端口号等参数。
- 在服务器的根目录下创建一个简单的HTML页面(如index.html)。
- 启动Apache服务器。
- 在浏览器中访问服务器的IP地址或域名,确认HTML页面已成功部署并可以正常访问。
注意:具体配置步骤可能因操作系统和Apache版本而异。在实际操作中,可以参考Apache的官方文档或相关教程进行配置。