TCP/IP 协议栈的各层分别是什么?每层的作用是什么?

TCP/IP协议栈由4个层次组成:

  1. 应用层:提供网络应用服务,如HTTP、FTP、SMTP等协议,用于进程间通信。
  2. 传输层:负责端到端的可靠数据传输,如TCP和UDP协议。TCP提供可靠连接,UDP提供无连接数据报服务。
  3. 网络层:负责数据包的路由选择和转发,如IP协议。实现不同网络之间的互联互通。
  4. 数据链路层:定义数据帧的格式,并在直接相连的网络中传输,如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协议栈,是网络编程的基础。