linux高性能网络编程,Linux高性能网络编程的介绍
Linux高性能網(wǎng)絡(luò)編程
一、課程目標(biāo)
本次課程深入講解Linux下的socket編程,并以此為基礎(chǔ),著重討論如何提高網(wǎng)絡(luò)服務(wù)端應(yīng)用的性能,通過本次課程的學(xué)習(xí),學(xué)員將收獲以下方面的成果:
熟練使用socket系列函數(shù)進(jìn)行網(wǎng)絡(luò)編程;
深刻理解服務(wù)端應(yīng)用的性能要求;
利用Linux提供的各種機(jī)制,有效地解決服務(wù)端應(yīng)用的性能瓶頸。
二、參訓(xùn)要求
參加本次課程的學(xué)員須具備以下能力:
了解TCP/IP協(xié)議,有網(wǎng)絡(luò)編程概念。
本次課程使用 C語(yǔ)言 教學(xué),所以學(xué)員需擁有較好的C語(yǔ)言基礎(chǔ);
能熟練使用常用的Linux命令;
能熟練使用gcc、gdb、熟練撰寫makefile;
最好熟練使用vi、emacs等文本編輯器其中的一種。
三、課程實(shí)踐環(huán)境
學(xué)員自備電腦
操作系統(tǒng):GNU/Linux 2.6+(建議使用Redhat AS 5+或Ubuntu、Fedora)
編譯器:GCC v4.1+、GDB v7.0+
可選IDE:Eclipse CDT
四、課程大綱
本次課程由以下幾個(gè)部分構(gòu)成:
1、POSIX Thread – 多線程
線程管理
線程創(chuàng)建:pthread_create()
線程終止:pthread_exit()
線程連接和分離:join and detach
線程同步機(jī)制
互斥體:mutex
讀寫鎖:read-write lock
條件變量:condition variable
線程屬性控制
mutex屬性控制
2、Socket 簡(jiǎn)介
Socket地址數(shù)據(jù)結(jié)構(gòu):struct sockaddr,struct sockaddr_in
字節(jié)序以及字節(jié)序操作:ntohl(), ntohs(), htonl(), htons()
Internet地址操作:inet_aton(), inet_addr(), and inet_ntoa(), inet_pton(), inet_ntop()
3、TCP Socket
socket():創(chuàng)建socket
bind():綁定地址
listen():開始偵聽
accept():接受來自客戶端的連接
connect():連接到服務(wù)器
getsockname()和getpeername():獲取本地和對(duì)端地址
I/O 操作:read(), write()
更高效的I/O 操作:readv(), writev()
TCP Server編程步驟
TCP Server v1:迭代式Echo Server
TCP Server v2:多進(jìn)程并發(fā)式Echo Server,使用fork()和exec*()
TCP Server v3:多線程并發(fā)式Echo Server,使用pthread
TCP Client編程步驟
TCP Client:Echo Client
4、UDP Socket
recvfrom()和sendto():收發(fā)UDP數(shù)據(jù)報(bào)
UDP Echo Server
UDP Echo Client
組播(Multicast)和廣播(Broadcast)
5、Socket Options和 IP Options
常用的Socket Options
常用的IP Options
Socket選項(xiàng)和IP選項(xiàng)對(duì)網(wǎng)絡(luò)應(yīng)用的影響
6、I/O多路復(fù)用:構(gòu)建反應(yīng)式(Reactive)網(wǎng)絡(luò)應(yīng)用
UNIX I/O多路復(fù)用機(jī)制概要
為什么I/O 多路復(fù)用對(duì)于網(wǎng)絡(luò)應(yīng)用很重要
I/O 多路復(fù)用與多線程(反應(yīng)式模型和并發(fā)模型)
select / poll
在TCP Server和UDP Server中使用select和poll
Linux特有I/O 多路復(fù)用機(jī)制:Event poll (epoll)
在TCP Server和UDP Server中使用epoll
7、異步I/O:構(gòu)建前攝式(Proactive)網(wǎng)絡(luò)應(yīng)用
相關(guān)概念:同步I/O和異步I/O、Proactor模式
異步I/O 是如何提高I/O 性能的
異步I/O系列操作
使用異步I/O的機(jī)制構(gòu)建TCP Server
8、高性能網(wǎng)絡(luò)編程討論
考究高性能網(wǎng)絡(luò)編程中應(yīng)該遵循的原則,討論并發(fā)、同步、事件多路分離等機(jī)制的適用場(chǎng)合
網(wǎng)絡(luò)應(yīng)用的瓶頸何在
事件多路分離 vs 一連接一線程 (Event demultiplexing vs One thread per connection)
同步I/O vs 異步I/O (Synchronous I/O vs Asynchronous I/O)
如何適當(dāng)?shù)厥褂枚嗑€程
什么時(shí)候需要多個(gè) 事件多路分離線程
9、應(yīng)用層協(xié)議定義與實(shí)現(xiàn)
為什么要自定義應(yīng)用層協(xié)議
定義應(yīng)用層協(xié)議 (以XMMEP協(xié)議為例)
用C++實(shí)現(xiàn)自定義的協(xié)議 (以XMMEP協(xié)議為例)
注:XMMEP為X-Messenger Message Exchanging Protocol
五、時(shí)間安排
課程時(shí)間:2天,以每天6小時(shí)計(jì),具體安排如下:
Day1
1 – POSIX Thread – 多線程
2 – Socket 簡(jiǎn)介
3 – TCP Socket
4 – UDP Socket
5 – Socket Options和 IP Options
Day2
6 – I/O多路復(fù)用:構(gòu)建反應(yīng)式(Reactive)網(wǎng)絡(luò)應(yīng)用
7 – 異步I/O:構(gòu)建前攝式(Proactive)網(wǎng)絡(luò)應(yīng)用
8 – 高性能網(wǎng)絡(luò)編程討論
9 – 應(yīng)用層協(xié)議定義與實(shí)現(xiàn)
課程回顧與總結(jié)
總結(jié)
以上是生活随笔為你收集整理的linux高性能网络编程,Linux高性能网络编程的介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刚得不孕症能治好吗
- 下一篇: 登录linux后台工具,linux后台进