令牌环网与IPv4简介
令牌环网(Token Ring)是一种基于环形拓扑的计算机网络技术。其主要特征是网络中的数据传输是以令牌为控制的,只有持有令牌的设备才能发送数据,这样避免了冲突的发生,提高了网络的共享性与安全性。尽管令牌环网在上世纪80年代和90年代曾经流行,但随着以太网的普及,它的使用逐渐减少。
IPv4(互联网协议版本4)是广泛使用的互联网协议之一,它为网络设备提供了唯一的地址,用于数据包的路由与传输。IPv4地址为32位(4字节),通常用十进制点分表示,如192.168.1.1。
在计算机网络编程中,Socket套接字是实现网络通信的基础。通过Socket,程序可以在不同主机之间发送和接收数据。在IPv4上,Socket支持不同的传输协议,主要包括TCP(传输控制协议)和UDP(用户数据报协议)。
TCP与UDP的区别
TCP是一种面向连接的协议,提供可靠的数据传输服务,确保数据按顺序到达。但它的开销较大,适合对数据传输完整性要求高的应用,如HTTP、FTP等。
UDP是一种无连接的协议,数据包的发送不需要建立连接,具有较低的延迟和开销,适合实时性要求高但对数据完整性要求较低的应用,如视频直播、在线游戏等。
网络字节序列
在网络通信中,不同计算机的字节序(大端序与小端序)可能不同。为了保证数据的正确传输与解析,网络协议通常采用网络字节序(大端序)。在编程中,我们常使用一些函数进行字节序的转换,如htons
、ntohs
等。
示例代码
以下是一个简单的基于TCP的Socket通信示例,展示了如何在Python中创建一个服务器与客户端,进行数据的发送与接收。
TCP服务器
import socket
def tcp_server():
# 创建TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8080)) # 绑定主机地址和端口
server_socket.listen(5) # 监听客户端的连接请求
print("服务器启动,等待客户端连接...")
while True:
client_socket, addr = server_socket.accept() # 接受客户端连接
print(f"客户端 {addr} 已连接。")
data = client_socket.recv(1024) # 接收数据
if not data:
break
print(f"接收到数据: {data.decode()}")
client_socket.sendall(b"Hello from server!") # 发送数据给客户端
client_socket.close() # 关闭客户端连接
server_socket.close() # 关闭服务器
if __name__ == "__main__":
tcp_server()
TCP客户端
import socket
def tcp_client():
# 创建TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8080)) # 连接到服务器
client_socket.sendall(b"Hello from client!") # 发送数据
data = client_socket.recv(1024) # 接收数据
print(f"接收到数据: {data.decode()}")
client_socket.close() # 关闭连接
if __name__ == "__main__":
tcp_client()
总结
在现代网络通信中,令牌环网逐渐被以太网取代,而IPv4仍然是现有互联网的基石。通过Socket进行TCP/UDP编程,我们可以方便地实现网络通信的各种需求。尽管TCP有着较高的开销,提供可靠传输,但在对实时性有较高要求的场景下,UDP则显得尤为重要。理解这些基础概念,对网络编程的学习与实践都是至关重要的。