Logo
Section 1 / 9

基础内容

恭喜,我们终于完成了!现在可以开始写代码了。

导入

基础内容

恭喜,我们终于完成了!现在可以开始写代码了。

套接字编程

  • 回顾一下,网络应用程序通常由两个程序组成:服务器程序和客户端程序。这两个程序分别运行在两台独立的终端系统上。

  • 当这些程序中的任何一个需要与其他程序通信时,它们会将要发送的数据写入自己的套接字。底层协议随后会将数据传输到目标位置。

网络应用程序的类型

  • 标准型:使用基于权威标准文档制定的知名协议的应用程序。

    • 优点:任何其他开发者都可以编写与标准应用兼容的应用程序。
    • 缺点:部分可定制性会受到影响。
  • 专有型:使用开发者自行设计协议的应用程序。这类应用的源代码通常不公开。

    • 优点:高度可定制,能够针对特定应用场景进行优化。
    • 缺点:编写与专有应用兼容的应用程序非常困难。此外,自行设计协议可能引入安全漏洞。

你知道吗? 虽然实现与专有应用兼容的应用程序很困难,但并非不可能。一个典型案例是Windows网络文件共享。Windows使用一种专有的服务器消息块(SMB)协议来实现文件共享,只有Windows客户端才能访问Windows共享的文件、文件夹和打印机。然而,一些黑客通过收集数据包并逆向分析协议,开发出了名为SAMBA的开源实现,使得Linux客户端也能访问Windows文件共享,甚至可以与Windows域共享文件、文件夹和打印机。这种方法的挑战在于,当Windows更新其专有协议时,开源客户端和服务器将无法与新版Windows通信,黑客们不得不重新开始分析工作。

Python中的套接字编程

接下来我们将学习如何用Python编写应用程序的基础知识。这是真正应用你所学内容的绝佳方式。

本章接下来的内容包括:

  1. 我们从最基础的内容开始,学习如何使用 socket 库创建UDP套接字。

  2. 接着,我们将编写一个完整的UDP服务器和客户端程序,并实际运行它们,观察其工作过程。

  3. 然后,我们会对UDP服务器进行一些改进。

  4. 你将完成一个项目!自己动手编写一个聊天应用程序。

  5. 最后,我们会展示如何通过少量修改,将程序改为基于TCP运行。


现在让我们开始设置套接字吧!

传输层

设置 UDP 套接字