"第九章网络程序设计基础涵盖了传输层接口、面向连接编程模型以及面向无连接编程模型的概念。"
在计算机网络中,传输层是OSI模型的第四层,负责在不同网络设备之间提供可靠的或无连接的数据传输服务。本课件的第九章主要讲解了如何在这一层进行程序设计,特别是通过套接字接口来实现进程间的通信。
9.1 传输层接口
传输层接口,尤其是套接字(Socket),为应用程序提供了一种简单而抽象的通信方式。套接字不仅封装了底层网络协议的复杂性,还允许不同操作系统上的进程通过网络进行通信。其设计目标在于提供一种通用的方法,使得应用开发者无需关心具体的传输机制,如TCP或UDP,就能实现网络通信。
9.1.1 寻址
在网络通信中,寻址是至关重要的。每个参与通信的进程都需要知道对方的网络地址,这通常包括两部分:网络地址(如IP地址)和进程地址(如端口号)。在分层的网络架构中,IP地址标识主机,而端口号则标识主机上的特定进程。例如,在UNIX系统中,这些信息被封装在`sockaddr`结构体中,用于存储网络地址和端口信息。
9.1.2 套接字结构
在UNIX系统中,`sockaddr`结构体是一个通用的地址表示,而`sockaddr_in`结构体是针对IPv4的特定实现。它包含`sa_family_t`字段来指定地址族(如AF_INET代表IPv4),`in_port_t`字段用于存储端口号,`struct in_addr`字段存储IP地址,并且`sin_zero`用于填充和兼容性目的。
`socket()`系统调用是创建套接字的关键函数,它返回一个套接字描述符,该描述符后续可以用于绑定地址、监听连接请求或发送/接收数据。
9.2 面向连接的编程模型
面向连接的编程模型基于传输控制协议TCP,它提供的是面向连接、可靠的数据传输服务。TCP在数据传输前会建立连接(三次握手),在传输过程中保证数据的顺序和无丢失,最后通过四次挥手释放连接。面向连接的模型适用于需要高可靠性、顺序数据传输的应用,如HTTP、FTP等。
9.3 面向无连接的编程模型
面向无连接的编程模型基于用户数据报协议UDP,它不保证数据的顺序或可靠性,但具有更低的延迟和更高的效率。UDP适用于实时性要求高、对数据丢失容忍度较高的应用场景,如DNS查询、在线视频流等。
总结来说,本课件的第九章深入介绍了网络程序设计的基础,包括如何使用套接字进行进程间通信,以及如何根据需求选择面向连接或无连接的编程模型。这些知识对于理解和开发网络应用程序至关重要。