TCP/IP協(xié)議分層模型網(wǎng)絡(luò)協(xié)議通常分為不同層次進(jìn)行開發(fā),,每一層分別負(fù)責(zé)不同的通信功能,。一個協(xié)議族,比如TCP/IP,,是一組不同層次上的多個協(xié)議的組合,。TCP/IP通常被認(rèn)為是一個四層協(xié)議系統(tǒng),如下表所示:
通常情況下,,應(yīng)用程序就是一個用戶進(jìn)程,,而下三層則一般在(操作系統(tǒng))內(nèi)核中執(zhí)行,,例如 UNIX 操作系統(tǒng)。除此之外,,應(yīng)用層與下三層還有一個關(guān)鍵不同在于:應(yīng)用層關(guān)心的是應(yīng)用程序的細(xì)節(jié),,而不是數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸活動,下三層對應(yīng)用程序一無所知,,但它們要處理所有的通信細(xì)節(jié),。 在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層IP提供的是一種不可靠的服務(wù),,也就是說,,它只是盡快的將分組從源結(jié)點送到目的結(jié)點,但并不提供任何可靠性保證,。而另一方面,,TCP在不可靠的IP層上提供了一個可靠的運輸層。為了提供這種可靠的服務(wù),,TCP采用了超時重傳,、發(fā)送和接收端到端的確認(rèn)分組等機制。由此可見,,運輸層和網(wǎng)絡(luò)層分別負(fù)責(zé)不同的功能,。 TCP/IP 的分層在 TCP/IP 協(xié)議族中,有很多中協(xié)議,。如下圖所示:
IP 是網(wǎng)絡(luò)層上的主要協(xié)議,,同時被 TCP 和 UDP 使用,。TCP 和 UDP 的每組數(shù)據(jù)都通過端系統(tǒng)和每個中間路由器中的IP層在互聯(lián)網(wǎng)中進(jìn)行傳輸。ICMP是IP協(xié)議的附屬協(xié)議,,IP層用它來與其他主機或路由器交換錯誤報文和其他重要信息,。Ping 和 Traceroute,它們都使用了 ICMP,。IGMP 是 Internet 組織管理協(xié)議,,它用來把一個 UDP 數(shù)據(jù)報多播到多個主機,。 ARP(地址解析協(xié)議)和 RARP(逆地址解析協(xié)議)是某些網(wǎng)絡(luò)接口使用的特殊協(xié)議,用來轉(zhuǎn)換IP層和網(wǎng)絡(luò)接口層使用的地址,。 當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時,,數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個通過每一層直到被當(dāng)作一串比特流送入網(wǎng)絡(luò),,其中每一層對收到的數(shù)據(jù)都要增加一些首部信息(有時還要加一些尾部信息),。TCP 傳給IP的數(shù)據(jù)單元稱作TCP報文段或簡稱為 TCP 段。IP傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作IP數(shù)據(jù)報,。通過以太網(wǎng)傳輸?shù)谋忍亓鞣Q為幀,。 UDP 數(shù)據(jù)與 TCP 數(shù)據(jù)基本一致。唯一不同的是 UDP 傳給IP的信息單元稱為 UDP 數(shù)據(jù)報,,而且 UDP 的首部長為8字節(jié),。 IP:網(wǎng)際協(xié)議
不可靠的意思是指它不能保證IP數(shù)據(jù)報能夠成功地到達(dá)目的地。IP僅提供最基本的傳輸服務(wù),。如果發(fā)生某種錯誤時,,如某個路由器暫時用完了緩沖區(qū),IP有一個簡單的錯誤處理算法:丟棄該數(shù)據(jù)報,,然后發(fā)送ICMP消息報給信源端,。 無連接是指IP并不維護(hù)任何關(guān)于后續(xù)數(shù)據(jù)報的狀態(tài)信息,。每個數(shù)據(jù)報表的處理是相互獨立的,。這也說明,IP數(shù)據(jù)報可以不按發(fā)送順序接收,。 IP首部IP 數(shù)據(jù)報的格式,,如圖所示: 版本號:版本號字段占4位: IP協(xié)議的版本號,一般有兩個值,,如果為4就代表是IPv4,,6就代表是IPv6協(xié)議。 4→IPv4,, 6 → IPv6 首部長度:指首部占32位字的數(shù)目,。普通IP數(shù)據(jù)報(沒有任何選擇項)字段的值是5。 服務(wù)類型(TOS)字段:包括一個3bit的優(yōu)先權(quán)子字段,,4bit的TOS子字段和1bit未用位但必須置0,。4 bit的TOS分別代表:最小時延,、最大吞吐量、最高可靠性和最小費用,。4bit中只能置其中1bit,。 總長度字段:指整個IP數(shù)據(jù)報的長度,以字節(jié)為單位,。利用首部長度字段和總長度字段就可以知道IP數(shù)據(jù)報中數(shù)據(jù)內(nèi)容的起始位置和長度,。總長度字段是IP首部中必要的內(nèi)容,。 TTL:生存時間字段設(shè)置了數(shù)據(jù)報可以經(jīng)過的最多路由器數(shù),。 首部檢驗和字段:根據(jù)IP首部計算的檢驗和碼,。它不對首部后面的數(shù)據(jù)進(jìn)行計算。ICMP,、IGMP,、UDP、TCP在它們各自的首部中均含有同時覆蓋首部和數(shù)據(jù)檢驗和碼,。
IP路由選擇主機的路由選擇可以非常簡單:如果目的主機在直接連接的網(wǎng)絡(luò)上,,那么就把數(shù)據(jù)報直接傳給目的主機,,否則傳給默認(rèn)路由器。 在進(jìn)行路由選擇決策時,,主機和路由器都使用路由表,。在表中,有三種類型的路由:特定主機型,、特定網(wǎng)絡(luò)型和默認(rèn)路由型,。路由表在表目具有一定的優(yōu)先級。在選擇路由時,,主機路由優(yōu)先于網(wǎng)絡(luò)路由,,最后在沒有其他可選路由存在時才選擇默認(rèn)路由。 IP路由選擇是通過逐跳來實現(xiàn)的,。數(shù)據(jù)報在各站的傳輸過程中目的IP地址始終不變,,但是封裝和目的鏈路層地址在每一站都可以改變。 運輸層協(xié)議:TCP 和 UDP
多路復(fù)用與多路分解網(wǎng)絡(luò)層的傳輸通道只有一個,但是應(yīng)用進(jìn)程之間的交互關(guān)系卻很多,,因此運輸層擔(dān)負(fù)著將多個應(yīng)用進(jìn)程的報文通過同一個網(wǎng)絡(luò)層傳遞通道進(jìn)行傳輸,,并正確地交給某個應(yīng)用進(jìn)程的任務(wù),稱為運輸層的多路復(fù)用與多路分解,。 套接字和端口 端口和套接字的作用:為了表示主機中存在多個進(jìn)程,,我們用端口號標(biāo)識這臺主機中的進(jìn)程,用IP地址標(biāo)識這臺主機,;端口連同標(biāo)識主機接口的IP地址一起,,能夠唯一標(biāo)識網(wǎng)絡(luò)中的任何進(jìn)程(TCP 和 UDP 的端口號各自獨立);為了簡化編程操作,,我們引入套接字(Socket)來描述網(wǎng)絡(luò)兩端進(jìn)程之間的通信鏈(通信鏈表示通信雙方IP地址,、端口號及運輸層協(xié)議之間的關(guān)聯(lián))。 多路復(fù)用要求:套接字有唯一的標(biāo)識,,該標(biāo)識的具體格式與它是UDP還是TCP類型有關(guān);每個報文段都有特殊字段來指示該報文段要交付到的端口號 UDP 套接字用一個二元組(目的IP地址,、目標(biāo)端口號)來標(biāo)識的,,TCP套接字是用四元組(源IP地址、源端口號,、目的IP地址,、目的端口號)來標(biāo)識的。 UDP :用戶數(shù)據(jù)報協(xié)議UDP 是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議:進(jìn)程中每個輸出操作都正好產(chǎn)生一個UDP數(shù)據(jù)報,,并組裝成一份代發(fā)送的 IP 數(shù)據(jù)報,。它只是在 IP 的基礎(chǔ)上擴展了多路復(fù)用/分解功能,。 UDP 具有以下特點: UDP 報文段的首部格式: 從圖中可以看到,,UDP 數(shù)據(jù)報是由UDP首部和放置在UDP報文段的的數(shù)據(jù)字段的應(yīng)用層數(shù)據(jù)組成,。 UDP計算檢驗和的方法和計算IP數(shù)據(jù)報首部檢驗和的方式相似,不同之處在于IP數(shù)據(jù)報的檢驗和只檢驗IP數(shù)據(jù)報的首部,,但UDP的檢驗和是把UDP報文段和偽首部放在一起檢驗,,以防止將報文段意外的交付到錯誤的目的地。 TCP:傳輸控制協(xié)議TCP 能夠提供面向連接,、可靠數(shù)據(jù)傳輸和擁塞控制等服務(wù),。 TCP 的主要特點可以歸納為以下幾點: |
|
來自: 新用戶0935snDB > 《待分類》