Linux C 程式 Linux網路編程(21)

來源:互聯網
上載者:User

標籤:

Linux網路編程
網路編程必備的理論基礎
網路模型,地址,連接埠,TCP/IP協議

TCP/IP協議是目前世界上使用最廣泛的網路通訊協定
日常中的大部分應用使用該系列協議(瀏覽網頁,收發電子郵件,QQ聊天等)

1.網路模型與協議
TCP/IP各層功能:
    (1).網路介面層  TCP/IP最下一層,包含多種邏輯鏈路控制和媒體訪問協議
    (2).Internet層  網路層負責在發送端和接收端之間建立一條虛擬路徑  主要協議IP協議
            IP協議不能保證資料完整到達目的地,這個任務由他上面的傳輸層完成。
            這一層的ARP協議(位址解析通訊協定)和RARP(反位址解析通訊協定)用於IP地址和物理地址(通常是網卡地址的互相轉換)。
            如果資料在傳輸過程中出現問題,該層的ICMP協議產生錯誤判文
    (3).傳輸層      
          TCP(傳輸控制通訊協定)協議或者UDP(使用者資料包通訊協定)協議,
              差錯控制,傳輸確認,丟失重傳
              
          
    (4).應用程式層
            面向使用者提供一系列的訪問網路通訊協定:傳輸檔案的ftp協議,遠程登入的telnet協議寄送電子郵件的smtp協議,最常用用於瀏覽網頁的http協議
            近幾年來十分流行的點對點共用檔案協議,BitTorrent協議,該協議基於http協議
            
            TCP/IP由許多協議構成協議簇,如,TCP,IP,UDP,FTP,HTTP
            
2.地址
    為了使網路上的電腦互相通訊,必須有一個唯一的標識符來區分網路上的每台電腦
    有兩種標識符可以使用:
    物理地址和IP地址
    
    對乙太網路來說,物理地址是48位的位串,此地址在網卡生產過程已經固定,不可更改,全球唯一。
    有多塊網卡,一個網卡代表一個網路介面,成為多重主目錄電腦。

3.IP地址
TCP/IP協議能夠使電腦進行與底層網路無關的通訊,底層網可以是乙太網路,令牌環網,或其他類型網。
由於物理地址依賴於底層網路,不同的底層網路採用不同的物理地址。
必須使用與底層網路無關的通用地址來標識網路上的電腦。
IP由32位位元位組成:電腦所在的網路號和該網路給該電腦分配的主機號。
IP地址按照一定的格式分為五類:
A,B,C,D,E類

A類: 0+網路ID+主機ID(24位) 1.0.0.0 - 127.255.255.255
B類:  10+網路ID+主機ID(16位)  128.0.0.0 - 191.255.255.255
C類: 110+網路ID+主機ID(8位) 192.0.0.0 - 223.255.255.255
D類: 1110+組播地址  224.0.0.0 - 239.255.255.255
E類: 11110+保留地址 240.0.0.0 - 247.255.255.255


TCP/IP上的每台主機還有一個32位子網路遮罩    :用來區分IP地址的網路號和主機號

將子網路遮罩和IP地址按位與可以得到IP地址的網路號,網路號是一台主機所處的網路的編號,
eg:主機IP:222.197.168.244 子網路遮罩是 255.255.255.0  按位與 = 222.197.168.0 ,那麼這台機所處的網路編號為222.197.168.0
    
近年來,隨著越來越多的電腦介入互連網,IP地址快耗盡。於是提出IPv6,使用128位來標識IP地址

4.連接埠
TCP,UDP協議採用16位連接埠號碼來識別他們。
連接埠號碼是一個無符號的整數,範圍是0-2的16次方 0- 65535
連接埠號碼分兩部分:
  (1).保留連接埠,範圍0-1023,由權威機構規定用途 , 如:21TCP連接埠用於FTP協議。80TCP連接埠由HTTP協議專用。
 
 
5.IP協議
網路層最重要的協議
無論傳輸層使用何種協議,都要依靠IP協議來確認到達目的電腦的路由。
IP協議主要用來確定路由。
當到達同一個目的地有多個路由時,IP協議會選擇一條最短的路由將資料分組傳輸到目的電腦。
IP協議還定義一組規則:
  (1),目的地不存在,不可達,丟棄傳送中的資料分組。
  (2).定義資料儲存格式,叫做IP資料報,由IP首部和資料兩部分組成
 
6.使用者資料包通訊協定UDP
位於傳輸層,在網路層上在應用程式層下。UDP協議嚮應用程式提供一種面向不需連線的服務。不需要建立串連。

7.傳輸控制通訊協定TCP
TCP提供一個面向連結的,可靠的資料服務。
通訊過程:
  (1).串連的發起包向目標電腦發送一個請求建立串連的資料包
  (2).伺服器收到請求,對用戶端的同步訊號做出響應,並發送自己的同步訊號給用戶端
  (3).用戶端對服務端發過來的同步訊號做出響應,串連建立完成,可以進行資料轉送了。
 
  關閉:
  (1);請求主機發送一個關閉串連的請求給另一方
  (2);另一方收到關閉連結的請求後,發送一個接收請求的確認資料包,並關閉socket連結。
  (3);請求主機手到確認資料包,發送一個確認資料包,告知另一方發送的確認包已收到,請求主機關閉他的socket串連。
 
 8 通訊端編程

9.編寫安全的代碼
造成安全問題的原因:
    使用者或管理員缺乏安全意識,TCP/IP協議固有缺陷,程式中的安全性漏洞。
    威脅最大的是緩衝區溢位漏洞
    
 (1).網路攻擊
         常見的網路攻擊方法:
             (1).掃描和探測
             (2).監聽
             (3).拒絕服務
             (4).惡意軟體
     (2).緩衝區溢位
         向緩衝區內填充的資料超過了緩衝區的容量,溢出的資料覆蓋在了原來的合法資料上。
         根本原因:C/C++語言不安全,沒有    機制檢查引用和數組,指標的邊界,導致越界訪問。
         Linux中,進程在記憶體中的資料分為3部分:文本段,資料區段,堆棧段
         文本段:可執行代碼和唯讀資料,通常屬性是唯讀
         資料區段:存放全域變數,靜態變數,
         堆棧段:臨時變數,函數參數在棧上,由malloc函數動態分配的記憶體稱為堆。
         
         程式從外部接收輸入資料 -- 系統分配記憶體存放資料 (緩衝區)-- 當輸入超過緩衝區容量時,資料會儲存到緩衝區之後,覆蓋了原來緩衝區之外的合法資料。
         
         防止緩衝區溢位:
         對程式定義的緩衝區做嚴格的邊界檢查。
           避免使用strcpy漏洞函數。使用strncpy或memcpy代替
         
     (3).輸入檢查:
         
     進一步學習:TCP/IP詳解 ,用TCP/IP進行網路互聯 ,UNIX網路編程
 
         
         
         
        


    



Linux C 程式 Linux網路編程(21)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.