首页 > 操作系统 > LinuxLinux高性能网络编程

Linux高性能网络编程

时间2012-01-17 16:18:37作者
本文关键词: I/O  Server  线程  使用  Socket  TCP  课程  协议  网络应用    

    Linux高性能网络编程

    一、课程目标

    本次课程深入讲解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

 1/2    1 2 下一页 尾页