程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Beej’s Guide Network to Programming 系列連載03

Beej’s Guide Network to Programming 系列連載03

編輯:關於C

2.2網絡理論
       既然我剛才提到了協議層,那麼現在是討論網絡究竟如何工作和一些 關於 SOCK_DGRAM 包是如何建立的例子。當然,你也可以跳過這一段,如果你認為已經熟悉的話。

 \

現在是學習數據封裝(Data Encapsulation) 的時候了!它非常非常重 要。它重要性重要到你在網絡課程學習中無論如何也得也得掌握它。主要 的內容是:一個包,先是被第一個協議(在這裡是TFTP )在它的報頭(也許 是報尾)包裝(“封裝”),然後,整個數據(包括 TFTP 頭)被另外一個協議 (在這裡是 UDP )封裝,然後下一個(IP ),一直重復下去,直到硬件(物理) 層( 這裡是以太網 )。

       當另外一台機器接收到包,硬件先剝去以太網頭,內核剝去IP和UDP 頭,TFTP程序再剝去TFTP頭,最後得到數據。

       現在我們終於講到聲名狼藉的網絡分層模型 (Layered Network Model)。這種網絡模型在描述網絡系統上相對其它模型有很多優點。例如, 你可以寫一個套接字程序而不用關心數據的物理傳輸(串行口,以太網,連 接單元接口 (AUI) 還是其它介質),因為底層的程序會為你處理它們。實際 的網絡硬件和拓撲對於程序員來說是透明的。

       不說其它廢話了,我現在列出整個層次模型。如果你要參加網絡考試,可一定要記住:

l       表示層

l       會話層

l       傳輸層

l       網路層

l       數據鏈路層

l       物理層

物理層是硬件(串口,以太網等等)。應用層是和硬件層相隔最遠的--它 是用戶和網絡交互的地方。

       這個模型如此通用,如果你想,你可以把它作為維護指南。把它對應到 Unix,結果是:

l       應用層(telnet,ftp,etc.)

l       主機到主機傳輸層(TCP,UDP)

l       網際層(IP路由)

l       網路訪問層(以太網,wi-fi,以及任何)

現在,你可能看到這些層次如何協調來封裝原始的數據了。

       看看建立一個簡單的數據包有多少工作?哎呀,你將不得不使用 "cat" 來建立數據包頭!這僅僅是個玩笑。對於流式套接字你要作的是 send() 發 送數據。對於數據報式套接字,你按照你選擇的方式封裝數據然後使用 sendto()。內核將為你建立傳輸層和Internet 層,硬件完成網絡訪問層。 這就是現代科技。

       現在結束我們的網絡理論速成班。哦,忘記告訴你關於路由的事情了。 但是我不准備談它,如果你真的關心,那麼參考 IP RFC。

 摘自 xiaobin_HLJ80的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved