前面的話
HTTP協議對于前端工程師是非常重要的。我們在瀏覽網站時,訪問的每一個WEB頁面都需要使用HTTP協議實現。如果不了解HTTP協議,就不可能了解網站的本質。在學習HTTP之前,本文先介紹一些網絡基礎知識
網絡
簡單地說,網絡就是在一定的區域內將兩個或兩個以上的計算機以一定的方式連接起來,以供用戶共享文件、程序、數據等資源。下面就幾種常見的網絡類型及分類方法做簡要介紹
1、按覆蓋范圍分
局域網(local area network,LAN):局域網一般在幾十米到幾千米范圍內,一個局域網可以容納幾臺到幾千臺計算機,局域網往往用于某一群體,比如一個公司、一個單位、某一幢樓、某一個學校等
城域網(Metropolis Area Network,MAN):城域網是規模局限在一座城市范圍內的區域性網絡,一般來說,覆蓋范圍介于10~100KM之間
廣域網(Wide Area Network,WAN):廣域網是將分布在各地的局域網連接起來的網絡,是網絡之間的網絡。廣域網的范圍非常大,可以跨越國界、洲界,甚至全球范圍。廣域網的典型代表是Internet
目前,還有兩個比較流行的網絡概念:存儲區域網(Storage Area Network,SAN)和虛擬專用網(Virtual Private Network,VPN)。SAN是專用的高性能網絡,它用于在服務器與存儲資源之間傳輸數據。由于SAN是一個獨立的專用網絡,從而可以避免在客戶機與服務器之間的任何傳輸沖突。VPN是一種在公共網絡上傳輸私有網絡數據的專用網絡技術,利用VPN,一個遠程用戶或分支機構可以與總部之間建立一條安全的隧道,用于傳輸私有數據
2、按拓撲結構分
網絡拓撲(Topology)確定了網絡的結構。網絡拓撲有兩種:一種是物理拓撲,是指實際布線或設備相互連接的幾何形式;另一種是邏輯拓撲,它定義了媒體如何存取由主機發送的數據
(1)物理拓撲
按照物理拓撲結構的不同,可以將網絡分為星型網絡、環型網絡、總線型網絡三種基本類型
a、總線型網絡。網絡中所有的站點共享一條數據通道,總線的兩端有端結點。總線型網絡安裝簡單方便,需要鋪設的電纜最短,成本低,某個站點的故障一般不會影響整個網絡,但介質的故障會導致網絡癱瘓。總線網安全性低、監控比較困難、增加新站點也不如星型拓撲網絡容易。所以,總線型網絡結構現在基本上已經被淘汰
b、環型拓撲。環型網絡結構的各站點通過通信介質連成一個封閉的環形。環形網絡容易安裝和監控,但容量有限,網絡建成后,難以增加新的站點。因此,現在組建局域網已經基本上不使用環形網絡結構了
c、星型拓撲。各站點通過點到點的鏈路與中心站點相連。星型網絡很容易在網絡中增加新的站點,數據的安全性和優先級容易控制,易實現網絡監控,一個站點出了問題,不會影響整個網絡的運行,但中心站點的故障會引起整個網絡癱瘓,星型網絡結構是現在最常用的網絡拓撲結構

在這三種類型的網絡結構基礎上,可以組合出拓展星型、層次型、網狀型等其他類型拓撲結構的網絡
(2)邏輯拓撲
網絡邏輯拓撲指各臺主機通過傳輸介質相互通信的方式。最常見的兩種邏輯拓撲形式是廣播拓撲和令牌拓撲
a、廣播拓撲。每臺主機都把所要發送數據的目標地址設為網絡介質上某個特定網絡接口卡的地址、多播地址或廣播地址,然后把該數據發送到傳輸介質中。每臺主機使用傳輸介質時不必遵循某種次序,即先來先服務。現在最常使用的以太網就是采用這種方式來工作的
b、令牌拓撲。令牌拓撲通過向各臺主機順序傳遞一個電子令牌來控制網絡介質的訪問。當一臺主機接收到令牌時,它就可以把數據發送到網絡介質上。如果該主機沒有數據要發送,那么就將令牌傳遞給下一臺主機,如此循環。使用令牌傳遞的主要有令牌環和光纖分布式數據接口(FDDI),它們都是在物理環形拓撲上使用令牌傳遞的
3、按傳輸介質分
按照網絡的傳輸介質分類,可以將計算機網絡分為有線網絡和無線網絡兩種。有線網絡包括采用同軸電纜、雙絞線、光纖等有線介質連接的計算機網絡。局域網通常采用單一的傳輸介質,而城域網和廣域網采用多種傳輸介質
(1)雙絞線
采用雙絞線連網,因價格便宜,安裝方便,所以是目前最常見的連接方式。計算機局域網中的雙絞線可分為非屏蔽雙絞線、鋁箔屏蔽的雙絞線和屏蔽雙絞線
a、非屏蔽雙絞線(Unshielded Twisted Paired,UTP)價格低廉、容易安裝及重新配置,所以是最常見的傳輸介質,它由兩股線規很細的銅線組成,互相絕緣,以固定間隔彼此絞合在一起,絞合的作用是為抵消電脈沖傳輸過程中所形成的電磁場。在傳輸距離(理論上是100m)范圍內,五類UTP的數據傳輸速率可以達到100Mb/s,甚至 1000Mb/s
b、鋁箔屏蔽的雙絞線(Foil Twisted Pair,FTP)帶寬較大,抗干擾能力強。相對的,屏蔽線比非屏蔽線價格及安裝成本要高一些,線纜彎曲性能稍差。六類線及六類之前的屏蔽系統多采用這種形式

c、屏蔽雙絞線(Shielded Twisted-Pair, STP)每一對雙絞線都有一個鋁箔屏蔽層。四對雙絞線合在一起,并且還有一個公共的金屬編織屏蔽層,這是七類線的標準結構,它適用于高速網絡的應用

[注意]雙絞線的制作口訣一般為白橙橙、白綠藍、白藍綠、白棕棕
雙絞線有3種類型:直通線、交叉線和全反線。直通線(Straight-through)主要用于不同種設備的互連;交叉線(Crossover)主要用于同種設備的互連;全反線(Rollover)用于對路由器和交換機進行初始配置或用于異步傳輸
(2)同軸電纜
與雙絞線相比,同軸電纜含有線規較粗的單層實心導體,導體一般由銅或覆以銅的鋁制成。中間的導體外面覆以一層絕緣材料,這種絕緣材料有助于把中間的導體和外面的金屬鋁箔屏蔽層隔開。外面通常會包一層金屬網,再包一層保護皮對電纜加以保護。中間的導體可支持高頻信號,幾乎不會出現困擾UTP及同類電纜的信號衰減問題
以太網及其他LAN技術原先使用同軸電纜是因為它能支持高頻信號,而且不受電磁干擾影響。然而,面對迅猛發展的雙絞線,成本高昂加上安裝困難導致同軸電纜退居其后。現在使用同軸電纜較多的網絡是有線電視網
同軸電纜根據粗細程度不同,分為粗纜(10Base5)和細纜(10Base2)。粗纜的傳輸距離是500m,細纜的傳輸距離是185m

(3)光纖網
光導纖維簡稱光纖,光纖傳輸距離長,傳輸速率高,可達數千兆bps,抗干擾性強,不會受到電子監聽設備的監聽,是高安全性網絡的理想選擇。光纖是細如頭發般的透明玻璃絲,可用來傳導光信號。光纖由纖芯和包層組成,由于纖芯的折射率大于包層的折射率,故光波在界面上形成全反射,使光只能在纖芯中傳播,實現通信
工程中使用最多的分法是按光纖橫截面上折射率來分,有單模光纖和多模光纖。單模光纖纖芯直徑較小,采用激光作為光源,傳輸的方向是沿光纖直徑方向,因此單模光纖數據傳輸速率較快,傳輸距離較遠,價格相對較貴;多模光纖纖芯直徑較大,采用發光二極管作為光源,傳輸的方向是全反射,因此多模光纖數據傳輸速率較慢,傳輸距離較近,價格相對較便宜

(4)無線網
無線網采用微波、紅外線、無線電等傳輸,由于無線網絡的連網方式靈活方便,是一種很有前途的組網方式
4、按服務方式分
按照網絡的服務方式分類,可以將計算機網絡分為客戶機/服務器網和對等網兩種
a、客戶機/服務器(Client/Server)網
服務器是指專門提供服務的高性能計算機或專用設備,客戶機是指用戶計算機。這是客戶機向服務器發出請求并獲得服務的一種網絡形式,多臺客戶機可以共享服務器提供的各種資源,這是最常用、最重要的一種網絡類型,不僅適合于同類計算機聯網,也適合于不同類型的計算機聯網。這種網絡安全性容易得到保證,計算機的權限、優先級易于控制,監控容易實現,網絡管理能夠規范化。網絡性能在很大程度上取決于服務器的性能和客戶機的數量。目前針對這類網絡有很多優化性能的服務器,稱為專用服務器
b、對等網(Peer-to-Peer)
對等網不要求專用服務器,每臺客戶機都可以與其他客戶機對話,共享彼此的信息資源和硬件資源,組網的計算機一般類型相同。這種網絡方式靈活方便,但是較難實現集中管理與監控,安全性也低,較適合于部門內部協同工作的小型網絡
另外還有一些非正規的分類方法,如企業網、校園網,根據名稱便可理解。從不同的角度對網絡有不同的分類方法,每種網絡名稱都有特殊的含義。了解網絡的分類方法和類型特征,是熟悉網絡技術的重要基礎之一
OSI
OSI和ISO容易混淆。ISO是國際標準化組織(International Standard Organization)。而OSI是ISO提出的關于計算機網絡的一個開放式系統互連參考模型(Open System Interconnection/Reference Model)
要想讓兩臺計算機進行通信,必須使它們采用相同的信息交換規則。我們把在計算機網絡中用于規定信息的格式,以及如何發送和接收信息的一套規則稱為網絡協議(Network Protocol)或通信協議(Communication Protocol)
為了減少網絡協議設計的復雜性,網絡設計者并不是設計一個單一、巨大的協議來為所有形式的通信規定完整的細節,而是采用把通信問題劃分為許多個小問題,然后為每個小問題設計一個單獨的協議的方法,絕大多數網絡采用分層設計方法。所謂分層設計方法,就是按照信息的流動過程將網絡的整體功能分解為一個個的功能層,不同機器上的同等功能層之間采用相同的協議,同一機器上的相鄰功能層之間通過接口進行信息傳遞
OSI模型是一個開放體系結構,它規定將網絡分為7層,并規定每層的功能

物理層
物理層的主要功能是完成相鄰結點之間原始比特流的傳輸,控制數據怎樣被放置到通信介質上。物理層協議關心的典型問題是使用什么樣的物理信號來表示數據“1”和“0”;一位持續的時間多長;數據傳輸是否可同時在兩個方向上進行;最初的連接如何建立和完成,通信后連接如何終止;物理接口(插頭和插座)有多少針以及各針的用處等。物理層的設計主要涉及物理層接口的機械、電氣、功能和過程特性,以及物理層接連接的傳輸介質等問題,物理層的設計還涉及通信工程領域內的一些問題
1、中繼器(Repeater)
中繼器是連接網絡線路的一種裝置,常用于兩個網絡結點之間物理信號的雙向轉發工作。中繼器是最簡單的網絡互聯設備,主要完成物理層的功能,負責在兩個結點的物理層上按位傳遞信息,完成信號的復制、調整和放大功能,以此來延長網絡的長度。由于存在損耗,在線路上傳輸的信號功率會逐漸衰減,衰減到一定程度時將造成信號失真,因此會導致接收錯誤。中繼器就是為解決這一問題而設計的,它完成物理線路的連接,對衰減的信號進行放大,保持與原數據相同
雙絞線理論上的最大傳輸距離是100m,如果超過100m,由于信號的衰減,很難保證信息傳輸的正確性,可以使用中繼器來延長傳輸的距離。中繼器僅適用于以太網,可將兩段或兩段以上(使用多個中繼器)的以太網互連起來
2、集線器(Hub)
集線器相當于多端口的中繼器,也可以把信號整形、放大后發送到所有結點上。在環型網絡中只存在一個物理信號傳輸通道,都是通過一條傳輸介質來傳輸的,這樣就存在各結點爭搶信道的矛盾,傳輸效率較低。引入集線器這一網絡設備后,每一個工作站是用它自己專用的傳輸介質連接到集線器的,各結點間不再只有一個傳輸通道,各結點發回來的信號通過集線器集中,集線器再把信號整形、放大后發送到所有結點。這樣至少在上行通道上不再出現碰撞現象。但基于集線器的網絡仍然是一個共享介質的局域網,這里的“共享”其實就是集線器內部總線,所以當上行通道與下行通道同時發送數據時仍然會存在信號碰撞現象。當集線器在其內部端口檢測到碰撞時,產生碰撞強化信號向集線器所連接的所有端口進行傳送,這時所有數據都將不能發送成功
正因為集線器的這一不足之處,所以它不能單獨應用于較大網絡中(通常是與交換機等設備一起分擔小部分的網絡通信負荷),就像在大城市中心不能有單車道一樣,因為網絡越大,出現網絡碰撞現象的機會就越大。也正因如此,集線器的數據傳輸效率是比較低的,因為它在同一時刻只能有一個方向的數據傳輸,也就是所謂的“半雙工”方式。如果網絡中要選用集線器作為單一的連接設備,那么網絡的規模最好在10臺以內,而且集線器帶寬應為10/100Mb/s以上
集線器除了共享帶寬這一不足之處外,還有另一個方面的不足必須要考慮,那就是它的廣播工作方式。因為集線器屬于OSI七層模型的物理層,基本上不具有“智能”的能力,更別說“學習”功能了。它也不具備交換機所具有的MAC地址表,所以它發送數據時都是沒有針對性的,而是采用廣播方式發送。也就是說,當它要向某結點發送數據時,不是直接把數據發送到目的結點,而是把數據包發送到與集線器相連的所有結點
這里引入兩個概念:沖突域(CollisionDomain)和廣播域(BroadcastDomain)。當兩個比特在同一介質上同時傳輸時就會產生沖突。所謂沖突域就是指發送數據給一個單一目標所影響的范圍;所謂廣播域是指發送數據給一個不明確目標所影響的范圍,集線器將把該廣播包轉發到除接收端口以外的所有端口,集線器上的所有設備屬于同一個廣播域
所有通過集線器(不管有多少個集線器)互連的網絡中只有一個廣播域、一個沖突域。這種廣播式發送數據有兩方面不足:一、用戶數據包向所有結點發送,很可能帶來數據通信的不安全因素,一些別有用心的人很容易就能截獲他人的數據包:二、由于所有數據包都是向所有結點同時發送,可能造成網絡擁塞現象,降低網絡執行效率

數據鏈路層
數據鏈路層的主要功能是如何在不可靠的物理線路上進行數據的可靠傳輸。數據鏈路層完成的是網絡中相鄰結點之間可靠的數據通信。為了保證數據的可靠傳輸,發送方把用戶數據封裝成幀(Frame),并按順序傳送各幀。由于物理線路的不可靠,因此發送方發出的數據幀有可能在線路上出錯或丟失,從而導致接收方不能正確接收到數據幀。為了保證能讓接收方對接收到的數據進行正確性判斷,發送方為每個數據分塊計算出CRC(循環冗余檢驗),并把CRC添加到幀中,這樣接收方就可以通過重新計算CRC來判斷數據接收的正確性。一旦接收方發現接收到的數據有錯,則發送方必須重傳這一幀數據。然而,相同幀的多次傳送也可能使接收方收到重復的幀。比如,接收方給發送方的“確認幀”被破壞后,發送方也會重傳上一幀,此時接收方就可能接收到重復幀。數據鏈路層必須解決由于幀的損壞、丟失和重復所帶來的問題
數據鏈路層要解決的另一個問題是防止高速發送方的數據把低速接收方“淹沒”。因此,需要某種信息流量控制機制使發送方得知接收方當前還有多少緩存空間。為了控制的方便,流量控制常常和差錯處理一同實現
在最普遍的以太網中,數據鏈路層通過MAC(Media Access Control,媒體訪問控制)地址負責主機之間數據的可靠傳輸。數據鏈路層的設備必須能夠識別出數據鏈路層的地址,即MAC地址。一個設備如果能識別MAC地址,該設備至少是數據鏈路層以上的設備。數據鏈路層的網絡設備主要有網卡、網橋和交換機
1、網卡(NIC)
網卡(Network Interface Card,NIC)也叫網絡適配器,是連接計算機與網絡的硬件設備。網卡的主要工作原理是整理計算機上發往網線上的數據,并將數據分解為適當大小的數據幀之后向網絡上發送出去。對于網卡而言,每塊網卡都有一個唯一的網絡結點地址, 它是網卡生產廠家在生產時燒入ROM(Read Only Memory,只讀存儲芯片)中的,叫做MAC地址,且保證絕對不會重復
網卡插在計算機或服務器擴展槽中,通過網絡線(如雙絞線、同軸電纜或光纖)與網絡交換數據、共享資源。計算機對接收到的數據幀進行比較,如果數據幀中的目標MAC地址與本機網卡的MAC地址相同,或者目標MAC地址是廣播MAC地址,即 “FFFFFFFFFFFF”,則計算機對數據幀進行處理;否則,計算機丟棄該數據幀
可以在DOS窗口中使用“ipconfig/all”命令査看計算機網卡的MAC地址,網卡的MAC地址用十六進制表示,占用48個比特,前24個比特表示廠商,后24個比特為設備編號

2、網橋(Bridge)
網橋工作在數據鏈路層,用于將兩個LAN連接在一起并按MAC地址轉發幀。物理層的集線器可以擴展網絡的規模,但所有通過集線器相連的主機屬于同一個沖突域,任何時刻只能有一臺主機發送數據,如果有兩臺主機同時發送數據就會發生沖突,導致數據發送失敗。當同一個沖突域中的主機數據量非常多時,數據發生沖突的可能性大大增加,此時可以使用網橋來分隔沖突域
網橋可以用來分隔沖突域,把一個沖突域分隔成兩個沖突域,通過增加沖突域的數量,減小每個沖突域的大小,減少沖突發生的可能。連接兩個網段的網橋能從一個網段向另一個網段傳送完整而且正確的幀,不會傳送干擾或有問題的幀
網橋主要用于互聯以太網分段,傳輸需在兩個不同分段間傳輸的信息,但是阻斷局部分段內的信息,因此網橋減少了網絡上的通信總量
因為網橋能檢査出一些故障,所以比中繼器使用更廣泛。兩個通過中繼器相連的網段,如果由于閃電而導致其中一個網段上有電干擾,中繼器會把它傳送到另一個網段。相反,如果干擾發生在通過網橋連接的網段中,網橋接收到一個不正確的幀,丟棄該幀。類似地,網橋不會把從一個網段傳送來的沖突信號傳送到另一個網段。因此,網橋會把故障控制在一個網段中而不會影響到另一個網段
網橋比中繼器和集線器對數據包做更多的處理,延時也相對增加,一個雙端口的網橋包括兩個沖突域和一個廣播域

3、交換機(Switch)
與網橋的工作過程類似,交換機也根據源MAC學習,根據目的MAC進行轉發,按每一個數據幀中的MAC地址決策信息轉發地址表
交換機轉發方式分為3種情況:情況一、交換機對己知的單播幀,只往對應的端口轉發;情況二、交換機對未知的單播幀,即交換機還沒有學到數據幀中的目的MAC地址,交換機泛洪數據包,即發往除接收端口以外的所有端口;情況三、交換機對組播幀和廣播幀進行泛洪轉發,即發往除接收端口以外的所有端口
類似網橋,交換機提供了網絡互聯功能。交換機的每個端口都是一個獨立的沖突域, 可以為每個工作站提供更高的帶寬。因為交換機可以使用現有的電纜、中繼器、集線器和工作站的網卡,不必做高層的硬件升級;交換機對工作站是透明的,這樣管理開銷低廉,簡化了網絡結點的增加、移動和網絡變化的操作;并且交換機的價格與集線器所差無幾,所以在當今的網絡中,交換機被普遍使用
可以簡單地把交換機看成是多端口的網橋,但二者有一些區別。網橋一般只有2個端口,而一般交換機最少也有4個端口,還有24端口、48端口,甚至更多口的交換;網橋采用軟件進行轉發,而交換機采用專門設計的集成電路,基于硬件進行數據轉發,交換機以線路速率在所有的端口并行轉發信息,提供了比傳統網橋高得多的操作性能,操作接近單個局域網性能,遠遠超過普通網橋互聯網絡之間的轉發性能;而且,交換機的端口造價遠低于網橋

網絡層
網絡層(Network)的主要功能是完成網絡中主機間的報文傳輸。在廣域網中,這包括產生從源端到目的端的路由,根據采用的路由協議,選擇最優的路徑
網絡層涉及的協議有IP、IPX等,網絡層的設備必須能識別出網絡層的地址,比如路由器、三層交換機等都可以根據IP地址做路徑選擇,它們都屬于網絡層設備
路由器是一種連接多個網絡或網段的網絡層設備,它能將不同網絡或網段之間的數據信息進行“翻譯”,以使它們能夠相互“讀懂”對方的數據,從而構成一個更大的網絡。它不是應用于同一網段的設備,而是應用于不同網段或不同網絡之間的設備。路由器之所以能在不同網絡之間起到“翻譯”的作用,是因為它不再是一個純硬件設備,而是支持相當豐富路由協議的軟、硬結合的設備,支持的協議有RIP、OSPF、EIGRP等,這些路由協議就是用來實現連通不同網段或網絡的
路由器有兩大典型功能,即數據通道功能和控制功能。數據通道功能包括轉發決定、背板轉發,以及輸出鏈路調度等,一般由特定的硬件來完成;控制功能一般用軟件來實現,包括與相鄰路由器之間的信息交換、系統配置、系統管理等
路由器具有判斷網絡地址和選擇路徑的功能,它能在多網絡互聯環境中,建立靈活的連接,可用完全不同的數據分組和介質訪問方法連接各種子網。路由器屬于網絡層的一種互聯設備,有隔離廣播的作用,它的每個端口都是一個單獨的廣播域,也是一個單獨的沖突域
在局域網接入廣域網的眾多方式中,通過路由器接入互聯網是最為普遍的方式。使用路由器互聯網絡的最大優點是:各互聯子網仍保持各自獨立,每個子網可以采用不同的拓撲結構、傳輸介質和網絡協議,網絡結構層次分明。通過路由器與互聯網相連,則可完全屏蔽公司內部網絡。有些路由器內部還集成了入侵防御和防火墻功能,因此使用路由器可以用來防御攻擊,保護內部網絡的安全
傳輸層
傳輸層(Transport Layer)是整個網絡的關鍵部分,實現兩個用戶進程間端到端(End-to-End)的可靠通信,處理數據包錯誤、數據包次序,以及其他一些關鍵傳輸問題。向下提供通信服務的最高層,彌補通信子網的差異和不足,向上是用戶功能的最低層。與數據鏈路層有相似之處,不同的地方在于前者是端到端的,后者是點到點的,而且比數據鏈路層協議復雜得多
傳輸層的主要功能有:提供建立、維護和拆除傳輸層連接,向網絡層提供合適的服務,提供端到端的錯誤恢復和流量控制,向會話層提供獨立于網絡層的傳送服務和可靠的透明數據傳輸
傳輸層相關的協議有TCP (Transmission Control Protocol,傳輸控制協議)、UDP (User Datagram Protocol,用戶數據報協議),它們涉及服務使用的端口號,主機根據端口號識別服務(常用的WWW服務端口號是80, Telnet服務端口號是23等),區分會話(源IP、源端口號、目標IP、目標端口號,四者共同唯一標識一個會話)
會話層
會話層(Session Layer)允許不同機器上的用戶之間建立會話關系,會話層提供的服務之一是管理對話控制。會話層允許信息同時雙向傳輸,或任一時刻只能單向傳輸。如果屬于后者,類似于物理信道上的半雙工模式,會話層將記錄此時該輪到哪一方。一種與對話控制有關的服務是令牌管理,有些協議保證雙方不能同時進行同樣的操作,這一點很重要。為了管理這些活動,會話層提供了令牌,令牌可以在會話雙方之間移動,只有持有令牌的一方可以執行某種關鍵性操作
另一種會話層服務是同步,如果在平均每小時出現一次大故障的網絡上,兩臺機器間要進行一次兩小時的文件傳輸,想想會出現什么樣的問題?每一次傳輸中途失敗后,都不得不重新傳送這個文件。當網絡再次出現大故障時,可能又會半途而廢。為了解決這個問題,會話層提供了一種方法,即在數據中插入同步點。每次網絡出現故障后,僅僅重傳最后一個同步點以后的數據
表示層
表示層(Presentation Layer)完成某些特定的功能,對這些功能人們常常希望找到普遍的解決辦法,而不必由每個用戶自己來實現。值得一提的是,表示層以下各層只關心從源主機到目標主機可靠地傳送比特,而表示層關心的是所傳送的信息的語法和語義
表示層服務的一個典型例子是用一種大家一致選定的標準方法對數據進行編碼
網絡上計算機可能采用不同的數據表示,所以需要在數據傳輸時進行數據格式的轉換。例如在不同的機器上常用不同的代碼來表示字符串(ASCII和EBCDIC)、整型數(二進制反碼或補碼),以及機器字的不同字節順序等。為了讓采用不同數據表示法的計算機之間能夠相互通信并交換數據,在通信過程中使用抽象的數據結構來表示傳送的數據,而在機器內部仍然采用各自的標準編碼。管理這些抽象數據結構,并在發送方將機器的內部編碼轉換為適合網上傳輸的傳送語法,以及在接收方做相反的轉換等,都是由表示層來完成的
此外,表示層還涉及數據壓縮和解壓、數據加密和解密等工作
應用層
聯網的目的在于支持運行于不同計算機上的進程進行通信,而這些進程則是為用戶完成不同任務而設計的。可能的應用是多方面的,不受網絡結構的限制。應用層(Application Layer)包含大量人們普遍需要的協議,如HTTP(Hyper text Transfer Protocol,超文本傳輸協議),該應用默認使用的是TCP的80端口;FTP(File Transfer Protocol, 文件傳輸協議),多用于因特網上的文件傳輸,該應用管理端口默認使用的是TCP的21號端口;SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議),用于郵件的發送,該應用默認使用的是TCP的25號端口;POP3(Post Office Protocol Version 3,郵局協議版本3),用于郵件的接收,該應用默認使用的是TCP的110號端口;DNS(Domain Name System,域名系統),用于因特網上域名的解析;Telnet(遠程登錄)是一種字符模式的終端服務,它可以使用戶通過網絡進入遠程主機或網絡設備,然后對遠程主機或網絡設備進行操作,這種連通可以發生在局域網里面,也可以通過互聯網進行,該應用默認使用的是TCP的23號端口
對于需要通信的不同應用來說,應用層的協議都是必需的。比如,當某個用戶想要獲得遠程計算機上的一個文件拷貝時,他要向本機的文件傳輸軟件發出請求,這個軟件與遠程計算機上的文件傳輸進程通過文件傳輸協議進行通信,這個協議主要處理文件名、用戶許可狀態和其他請求細節的通信。遠程計算機上的文件傳輸進程使用其他特征來傳輸文件內容
TCP/IP
TCP/IP是目前最成功、使用最頻繁的互聯網協議。TCP/IP參考模型是四層結構,分別是網絡訪問層(NetworkAccess),包括OSI模型的物理層和數據鏈路層,在這一層可以看到數據幀的源和目的MAC地址;網際層(Internet),相當于OSI模型中的網絡層,在這一層可以看到數據包的源和目的IP地址;傳輸層(Transport),和OSI模型中的傳輸層一致,在這一層可以看到數據分段源和目的的端口,以及所使用的協議;應用層(Application),包括OSI模型的上三層,即會話層、表示層和應用層
ISO/OSI參考模型是在其協議被開發之前設計出來的。這意味著ISO/OSI模型并不是基于某個特定的協議集而設計的,因而它更具有通用性。但另一方面,也意味著ISO/OSI模型在協議實現方面存在某些不足。而TCP/IP模型正好相反。先有協議,模型只是現有協議的描述,因而協議與模型非常吻合。問題在于TCP/IP模型不適合其他協議棧。因此,它在描述其他非TCP/IP網絡時用處不大

網絡訪問層
網絡訪問層(Network Access)的功能包括IP地址與物理硬件地址的映射,以及將IP分組封裝成幀。基于不同硬件類型的網絡接口,網絡訪問層定義了和物理介質的連接。網絡訪問層包含了數據鏈路層的地址,如用在以太網上就是MAC地址。此層是TCP/IP模型的最底層,負責接收從IP層傳來的IP數據報,并將IP數據報通過低層物理網絡發送出去,或者從低層物理網絡上接收物理幀,解封裝出IP數據報,交給IP層處理
網際層
網際層(Internet)的主要功能包括三個方面:1、處理來自傳輸層的分組發送請求:將分組裝入IP數據報,填充報頭,選擇去往目的結點的路徑,然后將數據報發往適當的網絡接口;2、處理輸入數據報:首先檢查數據報的合法性,然后進行路由選擇,假如該數據報己到達目的結點(本機),則去掉報頭,將IP報文的數據部分交給相應的傳輸層協議;假如該數據報尚未到達目的結點,則轉發該數據報;3、處理ICMP(Internet Control Message Protocol,網際控制信息協議)報文: 即處理網絡的路由選擇、流量控制和擁塞控制等問題
TCP/IP網絡模型的網際層在功能上非常類似于ISO/OSI參考模型中的網絡層。網際層上的協議包括IP協議、ICMP協議、Proxy協議、ARP協議、RARP協議、BOOTP協議和DHCP協議
1、IP協議
IP的責任就是把數據從源傳送到目的地。它不負責保證傳送可靠性、流控制、包順序和其他對于主機到主機協議來說很普通的服務。IP實現兩個基本功能:尋址和分段。IP可以根據數據報報頭包括的目的地址將數據報傳送到目的地址,在此過程中IP負責選擇傳送的路線,這種選擇路線功能稱為路由功能。如果有些網絡內只能傳送小數據報,IP可以將數據報重新組裝并在報頭域內注明
構成IP報頭的字段如下圖所示

括號中的數值表示該字段所占用的比特數。其中,優先級和服務類型字段一般用于QoS(Quality of Service,服務質量);存活期(Time To Live, TTL)是數據報可以生存的時間上限,它由發送者設置,每經過一次路由,TTL至少減1,如果未到達目的地時,生存時間減為零,則拋棄此數據報;源和目的IP地址用于表示數據從哪來,到哪去
IP不提供可靠的傳輸服務,它不提供端到端的或結點到結點的確認,對數據沒有差錯控制,它只使用報頭的校驗碼,不提供重發和流量控制。如果出錯可以通過ICMP報告,ICMP在IP模塊中實現
2、ICMP
ICMP(Internet Control Message Protocol, Internet 控制消息協議)是TCP/IP協議族的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用
在網絡體系結構的各層次中,都需要控制,而不同的層次有不同的分工和控制內容,IP層的控制功能是最復雜的,主要負責差錯控制、擁塞控制等,任何控制都是建立在信息的基礎之上的。在基于IP數據報的網絡體系中,IP協議自身沒有內在機制來獲取差錯信息并處理。為了處理這些錯誤,TCP/IP設計了ICMP協議,當某個網關發現傳輸錯誤時,立即向信源主機發送ICMP報文,報告出錯信息,讓信源主機采取相應處理措施,它是一種差錯和控制報文協議,不僅用于傳輸差錯報文,還傳輸控制報文
經常使用的用于檢査網絡通不通的Ping命令,這個“Ping”的過程實際上就是ICMP協議工作的過程。發送主機首先發送一個ICMP Echo Request的包,包含64字節數據,它被發送后,接收方會返回一個ICMP Echo Reply的包,返回的數據中包含了接收到的數據的拷貝。還有其他網絡命令,如跟蹤路由的Tracert命令也基于ICMP協議
ICMP報文包含在IP數據報中,屬于IP的一個用戶,IP頭部就在ICMP報文的前面,所以一個ICMP報文包括IP頭部、ICMP頭部和ICMP報文,IP頭部的Protocol值為1就說明這是一個ICMP報文,ICMP頭部中的類型(Type)域用于說明ICMP報文的作用及格式,此外還有一個代碼(Code)域用于詳細說明某種ICMP報文的類型,所有數據都在ICMP頭部后面
RFC定義了13種ICMP報文格式

[注意]代碼為15、16的信息報文已經作廢
下面是幾種常見的ICMP報文
a、響應請求。我們日常使用最多的ping,就是響應請求(Type=8)和應答(Type=0),一臺主機向一個結點發送一個Type=8的ICMP報文,如果途中沒有異常(例如被路由器丟棄、目標不回應ICMP或傳輸失敗),則目標返回Type=0的ICMP報文,說明這臺主機存在,更詳細的tracert通過計算ICMP報文通過的結點來確定主機與目標之間的網絡距離
b、目標不可到達、源抑制和超時報文。這三種報文的格式是一樣的,目標不可到達報文(Type=3)在路由器或主機不能傳遞數據報時使用,例如要連接對方一個不存在的系統端口(端口號小于1024)時,將返回Type=3、Code=3的ICMP報文,它提示的意思就是目標不可到達。常見的不可到達類型還有網絡不可到達(Code=0)、主機不可到達(Code=1)、協議不可到達(Code=2)等。源抑制則充當一個控制流量的角色,它通知主機減少數據報流量,由于ICMP沒有恢復傳輸的報文,所以只要停止該報文,主機就會逐漸恢復傳輸速率。最后,無連接方式網絡的問題就是數據報會丟失,或者長時間在網絡游蕩而找不到目標,或者擁塞導致主機在規定時間內無法重組數據報分段,這時就要觸發ICMP超時報文的產生。超時報文的代碼域有兩種取值:Code=0表示傳輸超時,Code=1表示重組分段超時
c、時間戳。時間戳請求報文(Type=13)和時間戳應答報文(Type=14)用于測試兩臺主機之間數據報來回一次的傳輸時間。傳輸時,主機填充原始時間戳,接收方收到請求后填充接收時間戳后以Type=14的報文格式返回,發送方計算這個時間差
3、ARP
ARP(Address Resolution Protocol,地址解析協議)負責將某個IP地址解析成對應的MAC地址。在局域網中,網絡中實際傳輸的是 “幀”,幀里面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的,所謂“地址解析”就是主機在發送幀前根據目標IP地址得出目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行
如果源主機在本地緩存中找到目標主機對應的MAC地址,則源主機用此MAC地址封裝幀,并發送出去;如果沒有找到,則源主機發送一個ARP的查詢包(ARP Request)。ARP查詢包中的源IP地址是源主機的IP地址,目標IP地址是目標主機的IP地址,源MAC地址是源主機的MAC地址,ARP査詢包中的目的MAC地址是廣播MAC地址FF-FF-FF-FF-FF-FF。源主機封裝完成后,把ARP查詢包以廣播的形式發送出去,廣播域內的所有主機均收到此廣播包,如果目標IP地址不是本機IP,則放棄繼續處理該數據包,并在本地緩存增加或更新源主機對應的MAC地址。如果目標IP地址與本機相同,也在本地緩存中增加或更新源主機對應的MAC地址,然后發回ARP應答包(ARP Reply)
因此,ARP請求包是廣播包,而ARP應答包是單播包
使用“arp -a”命令可以查看本機的ARP緩存表;使用“arp -d”命令刪除本機的ARP緩存,使用“arp -s”命令把IP地址和MAC地址進行綁定

4、ProxyARP
前面介紹的ARP協議可以幫助主機或路由器獲知局域網上某個IP地址對應的MAC地址,可卻無法獲知一臺遠程主機對應的IP地址,因為ARP査詢包是廣播包,路由器有隔離廣播的作用,致使ARP查詢包無法穿越路由器而到達遠端的目的主機。局域網內的主機可以配置默認網關來訪問遠端主機,可主機不允許配置多個默認網關。如果某個默認網關(一般是路由器)因故障停機,即使該局域網還有另一臺出口路由器,主機也不會向其他的路由器發送數據,此時需要重新配置主機的網關。而代理ARP則可以在這種情況下自動幫助那些在某個子網中的主機,在不重新配置路由甚至默認網關的情況下,發送數據到遠端主機
使用ProxyARP(代理 ARP)可以在網絡中單獨增加一臺路由器,而不會影響其他路由器的路由表。但是使用代理ARP也帶來嚴重不足:使用代理ARP將會明顯增加網絡分段中的傳輸業務量,并且網絡中的主機也將會保持比正常時大許多的ARP表,并以此來處理全部的IP到MAC的地址映射
5、RARP
前面介紹的ARP是己知其他計算機的IP地址,查詢其他計算機的MAC地址。而RARP(Reverse Address Resolution Protocol,反向地址轉換協議) 是己知本機的MAC地址,詢問本機的IP地址。典型用在無盤工作站上,當一臺無盤工作站啟動時,它沒有辦法在其初始化時了解自己的IP地址,但是,它可以知道自己的MAC地址。無盤工作站可以通過發送RARP的包來詢問與此MAC地址相對應的IP地址,網絡上會指定一個被稱為RARP服務器的計算機來響應這個請求,這樣無盤工作站就會得到自己的IP地址
RARP是早期提供的通過硬件地址獲取IP的解決方案,但它有自身的局限性。比如,RARP客戶與RARP服務器不在同段,中間有路由器等設備連接,這時候利用RARP就顯得無能為力,因為RARP請求報文不能通過路由器。BOOTP(BootstrapProtocol,引導協議)提供了很好的解決方法,同樣,在今天的大中型網絡中,DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)協議也是常用協議之一
6、BOOTP
BOOTP(BootstrapProtocol,引導協議)也是一種客戶/服務器的協議,可以為無盤操作系統或配置成動態獲取的計算機提供IP地址、子網掩碼、網關(路由器地址),以及DNS信息。實現過程分兩種情況:1、這與RARP工作環境一樣,即客戶與服務器在同一網段,BOOTP服務器被動打開UDP端口67,客戶端通過UDP端口68發送請求,因為客戶端不知道自己的IP地址,也不知道服務器的IP地址,客戶機使用全0的源地址與全1的目標地址,服務器通過單播或廣播方式響應;2、客戶與服務器在不同網段,實現的方法是,每個網段中設置一個中繼代理,中繼代理知道服務器的地址,其收到目標端端口為67的廣播報文,就將該報文封裝成單播數據報,然后發送給BOOTP服務器,服務器知道該報文來自于中繼代理,因為在中繼代理發送的報文中有其IP地址,中繼代理收到BOOTP服務器的回應后,把它發送給BOOTP請求客戶
7、DHCP
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)與BOOTP協議差不多,但DHCP功能更強,不僅可以通過租期方便地實現動態分配,而且還可以提供除IP地址、子網掩碼、網關及DNS以外的幾十個網絡參數
[注意]ARP、ProxyARP和RARP也屬于網絡訪問層,可以說ARP協議跨越OSI七層模型的二層和三層。正因為如此,一些處在網絡層的防火墻對低層的ARP攻擊顯得無能為力
傳輸層
在TCP/IP網絡中,IP采用無連接的數據報機制,對數據進行“盡力而為的傳遞”,即只管將報文盡力傳送到目的主機,無論傳輸正確與否,不做驗證,不發確認,也不保證報文的順序。TCP/IP的可靠性體現在傳輸層,傳輸層協議之一的TCP協議提供面向連接的服務(傳輸層的另一個協議UDP是無連接的)。傳輸層的主要功能是可靠而又準確地傳輸并控制源主機與目的主機之間的信息流,提供端到端的控制,通過滑動窗口機制提供流控制,通過序列號和確認機制來保證可靠性。TCP傳輸控制協議發送數據分段時,可以保證數據的完整性。流控制可以避免發送數據的主機使接收主機的緩存溢出的問題,緩存溢出會導致數據的丟失。可靠的傳輸可以通過下列方法實現:1、接收方對收到的數據分段向發送方進行確認;2、發送方向接收方重傳所有未被確認的數據分段;3、在目的端將數據分段按正確的順序重組,并刪除重復的數據分段;4、提供避免和控制擁塞的機制
1、TCP
TCP (Transmission Control Protocol,傳輸控制協議)是一種面向連接的傳輸層協議,能提供可靠的數據傳輸。在面向連接的環境中,開始傳輸數據之前,端點之間先要建立連接。TCP負責將消息拆分成數據分段,重傳丟失的數據分段井將數據分段在目的主機重組成消息
了解TCP報頭中的源端口、目的端口、序列號、確認號和窗口,有助于理解TCP傳輸的可靠性和TCP的滑動窗口機制

TCP/IP協議組常用的協議如圖所示,其中使用TCP的應用層協議有FTP、HTTP、SMTP、POP3、Telnet和DNS等,使用UDP的協議有DNS和TFTP等

2、UDP
UDP(User Datagram Protocol,用戶數據報協議)是TCP/IP協議棧中無連接的傳輸協議,它是一種簡單協議,它交換數據報而沒有確認機制或傳輸保證,錯誤處理和重傳機制必須由上層協議來完成。從TCP和UDP的數據分段格式中可以看出,UDP的簡單性非常明顯。UDP協議主要面向請求/應答式的交易型應用,一次交易往往只有一來一回兩次報文交換,假如為此而建立連接和撤銷連接,開銷是相當大的,這種情況下使用UDP就非常有效。另外,UDP協議也應用于那些對可靠性要求不高,但要求網絡的延遲較小的場合,如話音和視頻數據的傳送
組播一般使用的都是UDP協議,很多廣播教學軟件使用的就是組播地址和UDP協議,教師機只需要發送一份數據到組播地址,所有的學生機加入這個組播地址,接收教師機的廣播教學,學生機的多少對教師機的性能影響不大

3、三次握手
TCP協議是面向連接的,所以它在開始傳輸數據之前需要先建立連接。要建立或初始化一個連接,兩端主機必須同步雙方的初始序號。同步是通過交換連接建立數據分段和初始序號來完成的,在連接建立數據分段中包含一個SYN(同步)的控制位。同步需要雙方都發送自己的初始序號,并且發送確認的ACK。此過程就是三次握手
第一次握手:主機A發往主機B,主機A的初始序號是X,設置SYN位,未設置ACK位
第二次握手:主機B發往主機A,主機B的初始序號是Y,確認號(ACK)是X+1,X+1確認號暗示己經收到主機A發往主機B的同步序號。設置SYN位和ACK位
第三次握手:主機A發往主機B,主機A的序號是X+1,確認號是Y+1,Y+1確認號暗示已經收到主機B發往主機A的同步序號。設置ACK位,未設置SYN位
三次握手解決的不僅僅有序號問題,還解決了包括窗口大小、MTU(Maximum Transmission Unit,最大傳輸單元),以及所期望的網絡延時等其他問題

4、滑動窗口
在大多數可靠、面向連接的數據傳輸中,數據分組必須以與發送時相同的順序傳輸到接收端。任何數據分組丟失、損壞、重復或接收時亂序都將導致協議出錯。最基本的解決方法是讓接收方在接收到每一個數據分段后都確認
如果發送方在發送每一個數據分段后都要等候確認,吞吐量是很低的, 因此大多數面向連接、可靠的協議都允許一次發送多個數據分段。因為發送方在發送完數據分組之后和處理完接收到的確認之前是有一段時間間隔的,這段間隔可以用來傳輸更多的數據。在沒有收到確認的情況下,窗口是允許發送方發送數據分組的個數的
TCP使用期待確認,即確認號就是所期待接收的下一個字節。滑動窗口是指在TCP會話中窗口大小是動態協商的。滑動窗口是一種流控機制,允許源設備在向目的設備發送一定數量的數據之后接收一個確認
假設窗口大小為3,源設備可以發送3個字節到目的設備,然后需要等待一個確認。目的設備接收到這3個字節之后,向源設備返回一個確認,這時候源設備就可以繼續傳輸下面3個字節了。如果目的設備沒有收到這3個字節,它就不會返回確認,源設備沒有接收到確認,它就知道這些字節需要重傳

5、確認機制
TCP在傳輸前,需要對每個數據分段進行編號。接收端主機將數據分段重組成完整信息,TCP必須恢復由Internet通信系統導致的數據損壞、丟失、重復或亂序。TCP通過為傳輸的每個字節指定序號,并且要求接收端TCP的主動確認(ACK)來實現

如上圖所示,1、源主機A遠程登錄目的主機B,源主機使用一個本地的隨機端口1058,訪問目的主機的23號服務端口。源主機初始序號是100,沒有確認號;2、主機B收到主機A的數據包進行響應,返回的數據包源端口是23,目的端口是1058,主機B返回的包中的端口號和主機A發過來的端口號中的源和目的端口剛好相反。主機B的初始序號是1,確認號101表示已經收到主機A的序號100,希望接收序號101的包;3、主機A對主機B發過來的包進行響應,發送的序號是101,確認號2表示已經收到主機B的序號1
應用層
應用層包括所有的高層協議,與OSI的應用層協議相差不大,包括HTTP(超文本傳輸協議,使用TCP的端口80)、Telnet(遠程登錄協議,使用TCP的端口23)、FTP(文件傳輸協議,使用TCP的端口21和一個不確定的數據傳輸端口)、SMTP(簡單郵件傳輸協議,使用TCP的端口25)、POP3(郵局3協議,使用TCP的端口110)、DNS(域名服務,使用UDP和TCP的端口53)等
文章列表