计算机网络是指通过通信链路连接在一起的计算机系统的集合,使得它们能够相互之间进行数据交换和资源共享。计算机网络的发展可以追溯到20世纪60年代末和70年代初,随着计算机技术的不断进步和应用的普及,计算机网络逐渐成为人们生活和工作中不可或缺的一部分。
发展历程
1. **ARPANET 的诞生**:美国国防部高级研究计划局(ARPA,现在的 DARPA)于1969年启动了 ARPANET 项目,这是世界上第一个分组交换网络,旨在连接远程计算机资源。
2. **TCP/IP 协议的诞生**:1970年代末期,美国国防部将 ARPANET 的标准协议改为 TCP/IP 协议套件,从而推动了互联网的发展和普及。TCP/IP 协议成为了全球互联网的基础协议。
3. **互联网的商用化**:1990年代初,互联网开始向商业领域扩展,商业互联网服务提供商如 AOL、CompuServe 和 Prodigy 等相继涌现,人们开始意识到互联网的商业潜力。
4. **Web 的兴起**:1990年代中期,万维网(World Wide Web)的诞生和普及极大地促进了互联网的发展。Web 浏览器和服务器的出现使得人们可以方便地访问和分享信息,推动了互联网的快速发展。
5. **移动互联网的崛起**:21世纪初,随着移动通信技术的快速发展,移动互联网开始崭露头角。无线网络技术如 3G、4G 和 5G 的推出,使得人们可以随时随地访问互联网,移动互联网应用迅速增长。
6. **物联网和5G**:近年来,物联网(Internet of Things,IoT)的兴起和 5G 技术的商用化,进一步推动了互联网的发展。物联网将数十亿台设备连接到互联网上,为人们的生活和工作带来了更多可能性。
下面是一些常见的计算机网络相关代码示例:
### 获取本机IP地址: ```python import socket def get_local_ip(): ip = socket.gethostbyname(socket.gethostname()) return ip # 调用函数获取本机IP地址 local_ip = get_local_ip() print(f"Local IP address: {local_ip}") ``` ### 发送UDP数据: ```python import socket # 定义目标地址和端口 host = 'localhost' port = 8080 # 创建UDP套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 发送数据 message = "Hello, UDP server!" sock.sendto(message.encode(), (host, port)) # 关闭套接字 sock.close() ``` ### 接收UDP数据: ```python import socket # 定义监听地址和端口 host = 'localhost' port = 8080 # 创建UDP套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定地址和端口 sock.bind((host, port)) print(f"Listening on {host}:{port}") # 接收数据 data, addr = sock.recvfrom(1024) print(f"Received data from {addr}: {data.decode()}") # 关闭套接字 sock.close() ``` ### 发送TCP数据: ```python import socket # 定义服务器地址和端口 server_host = 'localhost' server_port = 8080 # 创建TCP客户端套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 sock.connect((server_host, server_port)) # 发送数据 message = "Hello, TCP server!" sock.sendall(message.encode()) # 关闭套接字 sock.close() ``` ### 接收TCP数据: ```python import socket # 定义服务器地址和端口 host = 'localhost' port = 8080 # 创建TCP服务器套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 sock.bind((host, port)) sock.listen(1) print(f"Listening on {host}:{port}") # 接受客户端连接 conn, addr = sock.accept() print(f"Client connected from {addr}") # 接收数据 data = conn.recv(1024) print(f"Received data from client: {data.decode()}") # 关闭连接 conn.close() sock.close() ```