歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux 系統應用編程——網絡編程(基礎篇)

一、網絡體系結構
1、OSI模型和TCP/IP 模型
網絡體系結構指的是網絡的分層結構以及每層使用的協議的集合。其中最著名的就是OSI協議參考模型,他是基於國際標准化組織(OSI)的建議發展起來的。它分為7個層次:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層及物理層。

這個7層的協議模型規定的非常細致和完善,但在實際中沒有被廣泛的使用,其中最重要的原因之一就是它過於復雜。盡管如此,它仍是此後很多協議模型的基礎。與此相區別的TCP/IP模型將OSI 的7層協議模型簡化為4層,從而更有利於實現和高效通信。
TCP/IP 參考模型和OSI參考模型的對應關系如下:

下面具體講解各層在TCP/IP 整體架構中的作用。
1)網絡接口層
網絡接口層(Network Interface Layer)是TCP/IP的最底層,負責將二進制流轉化為數據幀,並進行數據幀的發送和接收。數據幀是網絡傳輸的基本單元;
2)網絡層
網絡層(Internet Layer)負責在主機之間的通信中選擇數據包的傳輸路徑,即路由。當網絡層接收到傳輸層的請求後,傳輸某個具有目的地址信息的分組。該層把分組封裝在IP數據包中,填入數據包的首部,使用路由算法來確定是直接交付數據包,還是把它傳遞給路由器,最後把數據包交給適當的網絡接口進行傳輸。
網絡層還要負責處理傳入的數據包,檢驗其有效性,使用路由算法來決定應對該數據包進行本地處理還是應該轉發。
如果數據包的目的機處於本機所在的網絡,該層軟件就回去出數據包的首部,再選擇適當的傳輸層協議來處理這個分組。最後,網絡層還要根據需要發出和接手ICMP(Internet控制報文協議)差錯和控制報文。
3)傳輸層
傳輸層(Transport Layer)負責實現應用程序之間的通信服務,這種通信又叫做端到端通信。傳輸層要系統地管理信息的流動,還要提供可靠的傳輸服務,以確保數據到達無差錯、無亂序。為了達到這個目的,傳輸層協議軟件要進行協商,讓接收方會送確認信息及讓發送方重發丟失的分組。傳輸層協議軟件把要傳輸的數據流分為分組,把每個分組連同目的地址交給網絡層去發送。
4)應用層
應用層(Application Layer)是分層模型的最高層。應用程序使用相應的應用層協議,把封裝好的數據提交個傳輸層或是從傳輸層接收數據並處理。

2、TCP/IP協議
TCP/IP是“transmission Control Protocol/Internet Protocol”的簡寫,中文譯名為傳輸控制協議/互聯網絡協議)協議, TCP/IP(傳輸控制協議/網間協議)是一種網絡通信協議,它規范了網絡上的所有通信設備,尤其是一個主機與另一個主機之間的數據往來格式以及傳送方式。TCP/IP是INTERNET的基礎協議,也是一種電腦數據打包和尋址的標准方法。在數據傳送中,可以形象地理解為有兩個信封,TCP和IP就像是信封,要傳遞的信息被劃分成若干段,每一段塞入一個TCP信封,並在該信封面上記錄有分段號的信息,再將TCP信封塞入IP大信封,發送上網。在接受端,一個TCP軟件包收集信封,抽出數據,按發送前的順序還原,並加以校驗,若發現差錯,TCP將會要求重發。因此,TCP/IP在INTERNET中幾乎可以無差錯地傳送數據。
對普通用戶來說,並不需要了解網絡協議的整個結構,僅需了解IP的地址格式,即可與世界各地進行網絡通信。
TCP/IP協議通信模型

TCP/IP結構

3、TCP和UDP
1)TCP
TCP向應用層提供可靠的面向鏈接的數據流傳輸服務。它能提供可靠性通信(數據無誤、數據無丟失、數據無失序、數據無重復到達)。
通過源/目的的IP可以唯一地區分網絡中兩個設備,再通過源/目的的端口可以唯一地區分網絡中兩個通信的應用程序。
三次握手協議
TCP會話通過三次握手來初始化。三次握手的目標是使數據段的發送和接收同步。同時也向其他主機表明其一次可接收的數據量(窗口大小),並建立邏輯連接。這三次握手的過程可以簡述如下:  
●源主機發送一個同步標志位(SYN)置1的TCP數據段。此段中同時標明初始序號(Initial Sequence Number,ISN)。ISN是一個隨時間變化的隨機值。  
●目標主機發回確認數據段,此段中的同步標志位(SYN)同樣被置1,且確認標志位(ACK)也置1,同時在確認序號字段表明目標主機期待收到源主機下一個數據段的序號(即表明前一個數據段已收到並且沒有錯誤)。此外,此段中還包含目標主機的段初始序號。  
●源主機再回送一個數據段,同樣帶有遞增的發送序號和確認序號。  
  至此為止,TCP會話的三次握手完成。接下來,源主機和目標主機可以互相收發數據。

2)UDP
UDP即用戶數據報協議,是一種面向無連接的不可靠傳輸協議,具有資源消耗少、處理速度快的特點。
適用情況:
發送小尺寸數據(如對DNS服務器進行IP地址查詢時);;
流媒體等網絡多媒體服務中通常會采用UDP方式進行實時數據傳輸;
4、IP地址
IP地址是指互聯網協議地址(英語:Internet Protocol Address,又譯為網際協議地址),是IP Address的縮寫。IP地址是IP協議提供的一種統一的地址格式,它為互聯網上的每一個網絡和每一台主機分配一個邏輯地址,以此來屏蔽物理地址的差異。
1)IP地址類型
公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center因特網信息中心)負責。這些IP地址分配給注冊並向Inter NIC提出申請的組織機構。通過它直接訪問因特網。
私有地址
私有地址(Private address)屬於非注冊地址,專門為組織機構內部使用。
以下列出留用的內部私有地址
A類 10.0.0.0--10.255.255.255
B類 172.16.0.0--172.31.255.255
C類 192.168.0.0--192.168.255.255
2)IP地址分類
初設計互聯網絡時,為了便於尋址以及層次化構造網絡,每個IP地址包括兩個標識碼(ID),即網絡ID和主機ID。同一個物理網絡上的所有主機都使用同一個網絡ID,網絡上的一個主機(包括網絡上工作站,服務器和路由器等)有一個主機ID與其對應。Internet委員會定義了5種IP地址類型以適合不同容量的網絡,即A類~E類。
其中A、B、C3類(如下表格)由InternetNIC在全球范圍內統一分配,D、E類為特殊地址。
類別最大網絡數IP地址范圍最大主機數私有IP地址范圍A126(2^7-2)0.0.0.0-127.255.255.2551677721410.0.0.0-10.255.255.255B16384(2^14)128.0.0.0-191.255.255.25565534172.16.0.0-172.31.255.255C2097152(2^21)192.0.0.0-223.255.255.255254192.168.0.0-192.168.255.255
A類IP地址
一個A類IP地址是指, 在IP地址的四段號碼中,第一段號碼為網絡號碼,剩下的三段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,A類IP地址就由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”。A類IP地址中網絡的標識長度為8位,主機標識的長度為24位,A類網絡地址數量較少,有126個網絡,每個網絡可以容納主機數達1600多萬台。
A類IP地址 地址范圍1.0.0.0到127.255.255.255[1] (二進制表示為:00000001 00000000 00000000 00000000 - 01111110 11111111 11111111 11111111)。最後一個是廣播地址。
A類IP地址的子網掩碼為255.0.0.0,每個網絡支持的最大主機數為256的3次方-2=16777214台。
B類IP地址
一個B類IP地址是指,在IP地址的四段號碼中,前兩段號碼為網絡號碼。如果用二進制表示IP地址的話,B類IP地址就由2字節的網絡地址和2字節主機地址組成,網絡地址的最高位必須是“10”。B類IP地址中網絡的標識長度為16位,主機標識的長度為16位,B類網絡地址適用於中等規模的網絡,有16384個網絡,每個網絡所能容納的計算機數為6萬多台。
B類IP地址地址范圍128.0.0.0-191.255.255.255[3] (二進制表示為:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111)。 最後一個是廣播地址。
B類IP地址的子網掩碼為255.255.0.0,每個網絡支持的最大主機數為256的2次方-2=65534台。
C類IP地址
一個C類IP地址是指,在IP地址的四段號碼中,前三段號碼為網絡號碼,剩下的一段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,C類IP地址就由3字節的網絡地址和1字節主機地址組成,網絡地址的最高位必須是“110”。C類IP地址中網絡的標識長度為24位,主機標識的長度為8位,C類網絡地址數量較多,有209萬余個網絡。適用於小規模的局域網絡,每個網絡最多只能包含254台計算機。
C類IP地址范圍192.0.0.0-223.255.255.255[3] (二進制表示為: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。
C類IP地址的子網掩碼為255.255.255.0,每個網絡支持的最大主機數為256-2=254台
Copyright © Linux教程網 All Rights Reserved