Linux高性能网络编程
Linux高性能网络编程 2011-08-20 14:10 一、课程目标 本次课程深入讲解Linux下的socket编程,并以此为基础,着重讨论如何提高网络服务端应用的性能,通过本次课程的学习,学员将收获以下方面的成果: 熟练使用socket系列函数进行网络编程; 深刻理解服务端应用的性能要求; 利用Linux提供的各种机制,有效地解决服务端应用的性能瓶颈。 二、参训要求 参加本次课程的学员须具备以下能力: 了解TCP/IP协议,有网络编程概念。 本次课程使用 C语言 教学,所以学员需拥有较好的C语言基础; 能熟练使用常用的Linux命令; 能熟练使用gcc、gdb、熟练撰写makefile; 最好熟练使用vi、emacs等文本编辑器其中的一种。 三、课程实践环境 学员自备电脑 操作系统:GNU/Linux 2.6+(建议使用Redhat AS 5+或Ubuntu、Fedora) 编译器:GCC v4.1+、GDB v7.0+ 可选IDE:Eclipse CDT 四、课程大纲 本次课程由以下几个部分构成: 1、POSIX Thread - 多线程 线程管理 线程创建:pthread_create() 线程终止:pthread_exit() 线程连接和分离:join and detach 线程同步机制 互斥体:mutex 读写锁:read-write lock 条件变量:condition variable 线程属性控制 mutex属性控制 2、Socket 简介 Socket地址数据结构:struct sockaddr,struct sockaddr_in 字节序以及字节序操作:ntohl(), ntohs(), htonl(), htons() Internet地址操作:inet_aton(), inet_addr(), and inet_ntoa(), inet_pton(), inet_ntop() 3、TCP Socket socket():创建socket bind():绑定地址 listen():开始侦听 accept():接受来自客户端的连接 connect():连接到服务器 getsockname()和getpeername():获取本地和对端地址 I/O 操作:read(), write() 更高效的I/O 操作:readv(), writev() TCP Server编程步骤 TCP Server v1:迭代式Echo Server TCP Server v2:多进程并发式Echo Server,使用fork()和exec*() TCP Server v3:多线程并发式Echo Server,使用pthread TCP Client编程步骤 TCP Client:Echo Client 4、UDP Socket recvfrom()和sendto():收发UDP数据报 UDP Echo Server UDP Echo Client 组播(Multicast)和广播(Broadcast) 5、Socket Options和 IP Options 常用的Socket Options 常用的IP Options Socket选项和IP选项对网络应用的影响 6、I/O多路复用:构建反应式(Reactive)网络应用 UNIX I/O多路复用机制概要 为什么I/O 多路复用对于网络应用很重要 I/O 多路复用与多线程(反应式模型和并发模型) select / poll 在TCP Server和UDP Server中使用select和poll Linux特有I/O 多路复用机制:Event poll (epoll) 在TCP Server和UDP Server中使用epoll 7、异步I/O:构建前摄式(Proactive)网络应用 相关概念:同步I/O和异步I/O、Proactor模式 异步I/O 是如何提高I/O 性能的 异步I/O系列操作 使用异步I/O的机制构建TCP Server 8、高性能网络编程讨论 考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合 网络应用的瓶颈何在 事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection) 同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O) 如何适当地使用多线程 什么时候需要多个 事件多路分离线程 9、应用层协议定义与实现 为什么要自定义应用层协议 定义应用层协议 (以XMMEP协议为例) 用C++实现自定义的协议 (以XMMEP协议为例) 注:XMMEP为X-Messenger Message Exchanging Protocol 五、时间安排 课程时间:2天,以每天6小时计,具体安排如下: Day1 1 - POSIX Thread - 多线程 2 - Socket 简介 3 - TCP Socket 4 - UDP Socket 5 - Socket Options和 IP Options Day2 6 - I/O多路复用:构建反应式(Reactive)网络应用 7 - 异步I/O:构建前摄式(Proactive)网络应用 8 - 高性能网络编程讨论 9 - 应用层协议定义与实现 课程回顾与总结 六、课程资源 可获取的课程资源见: 教学资源 。
2011-08-20 14:10
本次课程深入讲解Linux下的socket编程,并以此为基础,着重讨论如何提高网络服务端应用的性能,通过本次课程的学习,学员将收获以下方面的成果:
参加本次课程的学员须具备以下能力:
本次课程由以下几个部分构成:
注:XMMEP为X-Messenger Message Exchanging Protocol
课程时间:2天,以每天6小时计,具体安排如下:
可获取的课程资源见: 教学资源 。