小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

linux下的C語言開發(fā)(網絡編程)

 思考的軌跡 2012-04-03

linux下的C語言開發(fā)(網絡編程)

【 聲明:版權所有,歡迎轉載,請勿用于商業(yè)用途。  聯(lián)系信箱:feixiaoxing @163.com】


    不管在Windows平臺下面還是在Linux平臺下面,網絡編程都是少不了的。在互聯(lián)網發(fā)達的今天,我們的生活基本上已經離不開網絡了。我們可以用網絡干很多的事情,比如說IM聊天、FTP下載、電子銀行、網絡購物、在線游戲、電子郵件的收發(fā)等等。所以說,對于一個軟件的開發(fā)者來說,如果說他不會進行網絡程序的開發(fā),那真是難以想象的。


    在開始介紹網絡編程的方法之前,我們可以回憶一下計算機網絡的相關知識。目前為止,我們使用的最多網絡協(xié)議還是tcp/ip網絡。通常來說,我們習慣上稱為tcp/ip協(xié)議棧。至于協(xié)議棧分成幾層,有兩種說法。一種是五層,一種是七層,我個人本身也比較傾向于五層的劃分方法。大家可以通過下面的圖看看協(xié)議棧是怎么劃分的。


    5、應用層
    4、傳輸層
    3、網絡層
    2、數(shù)據(jù)鏈路層
    1、物理層


    網絡的不同層次實現(xiàn)網絡的不同功能。物理層主要實現(xiàn)報文的成幀處理;數(shù)據(jù)鏈路層完成對報文的優(yōu)先級的管理,同時實現(xiàn)二層轉發(fā)和流量控制;網絡層實現(xiàn)路由和轉發(fā)的功能,一方面它需要實現(xiàn)對報文的fragment處理,另外一方面它還需要對路由信息進行處理和保存;傳輸層實現(xiàn)報文的發(fā)送和接受,它利用計數(shù)、時序、定時器、重發(fā)等機制實現(xiàn)對報文的準確發(fā)送,當然這都是tcp的發(fā)送機制,而udp一般是不保證報文正確發(fā)送和接收的;應用層就是根據(jù)傳輸層的端口信息調用不同的程序來處理傳輸?shù)膬热?,端?080是http報文,端口21是ftp報文等等。上面的邏輯稍顯復雜,朋友們可以這么理解,

    物理層關心的是如何把電氣信號變成一段報文;數(shù)據(jù)鏈路層關心的是mac地址、vlan、優(yōu)先級等;網絡層關心的是ip地址,下一跳ip;傳輸層關心的是端口資源;應用層關心的是報文組裝、解析、渲染、解析、存儲、執(zhí)行等等。

    目前關于tcp/ip完整協(xié)議棧的代碼很多,其中我認為寫得比較好的還是linux內核/net/ipv4下面的代碼。如果朋友們對ipv6的代碼感興趣,也可以看看/net/ipv6的代碼。檔案如果朋友們對整個協(xié)議棧的代碼結構理解得不是很清楚,可以參考《linux網絡分析與開發(fā)》這本書。

    當然,作為應用層,我們的其實考慮的不用這么復雜。對于網絡程序編寫人員來講,所有網絡的資源只要和一個socket關聯(lián)在一起就可以了。當然在socket可用之前,我們需要為它配置端口信息和ip地址。配置完了之后,我們就可以慢慢等待報文的收發(fā)了。所以一般來說,作為服務器端口的處理流程是這樣的,

    a) 創(chuàng)建socket
    b) 綁定socket到特定的ip地址
    c) 對socket進行偵聽處理
    d) 接受socket,表明有客戶端和服務器連接
    e) 和客戶端循環(huán)收發(fā)報文
    f) 關閉socket


    作為服務器程序而言,它要對特定的端口進行綁定和偵聽處理,這樣稍顯復雜。但是如果是編寫客戶端的程序,一切的一切就變得非常簡單了,

    a) 創(chuàng)建socket
    b) 鏈接服務器端地址
    c) 和服務器端的socket收發(fā)報文


    上面只是對網絡編程做了一個基本的介紹,但是好多的東西還是沒有涉及到,比如說:(1) 什么時候該使用udp,什么時候該使用tcp?(2) 如何把多線程和網絡編程聯(lián)系在一起? (3) 如何把多進程和網絡編程聯(lián)系在一起? (4) 如何利用select函數(shù)、epoll_create機制、非阻塞函數(shù)提高socket的并發(fā)處理效率? (5) linux內核是怎么實現(xiàn)tcp/ip協(xié)議的? (6) 我們自己是否也可以實現(xiàn)協(xié)議的處理流程等等?

    關于這些內容,我們會重新開辟一個主題,逐步進行分析和仿真處理。敬請期待。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多