Linux高性能網(wǎng)絡(luò)編程
2011-08-20 14:10一、課程目標(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語言 教學(xué),所以學(xué)員需擁有較好的C語言基礎(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 簡介
- 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():獲取本地和對端地址
- 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)對網(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ù)用對于網(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ī)制的適用場合
- 網(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 簡介
- 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é)
六、課程資源
????? 可獲取的課程資源見: 教學(xué)資源 。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
