TCP/IP协议栈由4个层次组成:
- 应用层:提供网络应用服务,如HTTP、FTP、SMTP等协议,用于进程间通信。
- 传输层:负责端到端的可靠数据传输,如TCP和UDP协议。TCP提供可靠连接,UDP提供无连接数据报服务。
- 网络层:负责数据包的路由选择和转发,如IP协议。实现不同网络之间的互联互通。
- 数据链路层:定义数据帧的格式,并在直接相连的网络中传输,如Ethernet协议。
每层的主要作用:
- 应用层:提供网络应用服务和接口
- 传输层:实现主机间可靠数据传输
- 网络层:实现网络互联和包路由
- 数据链路层:实现物理网络中的帧传输
代码示例:
应用层(HTTP Server/Client):
python
# 服务端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8000))
server_socket.listen(10)
# 客户端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8000))
传输层(TCP Server/Client):
python
# 服务端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8000))
server_socket.listen(10)
# 客户端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8000))
网络层(IP数据报):
python
ip_header = IPHeader('192.168.1.1', '192.168.1.2', protocol, total_length)
ip_datagram = ip_header.pack() + data
数据链路层(以太网帧):
python
ethernet_header = EthernetHeader(src_mac, dst_mac, ether_type)
ethernet_frame = ethernet_header.pack() + ip_datagram
TCP/IP协议栈定义了计算机网络体系结构。理解每层的作用和协议,有助于我们设计、实现和优化网络应用。熟练掌握TCP/IP协议栈,是网络编程的基础。