1. 程式人生 > >一、網絡的基本概念

一、網絡的基本概念

網絡基礎、osi七層協議、tcp三次握手、四次斷開

1.1、網絡組成組件

一般來說,兩臺或以上計算機使用任意介質(電纜、光纖或無線電波)、任意網絡(TCP/UDP、NetBEUI或IPX/SPX)來進行連接,並進行資源共享及通信,就可以稱為計算機網絡。網絡協議是網絡上建立通信及傳輸數據的雙方必須遵守的通信標準,它定義了接收方和發送方進行通信所必須遵循的規則,雙方同層的協議必須一致,否則無法進行通信或數據錯誤。為了組建通信網絡,通常需要一些特殊的設備,下圖是一個常見的網絡連接圖。

技術分享

節點(node):節點主要是具有網絡地址 (IP) 的設備之稱。

服務器主機(server):提供數據以響應給用戶的主機,都可以被稱為是一部服務器。

工作站(workstation)或客戶端(client):主動發起聯機去要求數據的,就可以稱為是客戶(client)。

網卡(Network Interface Card,NIC):主要提供網絡聯機的設備

網絡接口:主要在提供網絡地址(IP) 的任務。主機內部也都擁有一個內部的網絡接口,就是loopback這個循環測試接口!

網絡形態或拓樸(topology):各個節點在網絡上面的鏈接方式,一般講的是物理連接方式。

路由(route):是指路由器從一個接口上收到數據包,根據數據包的目的地址進行定向並轉發到另一個接口的過程,其工作在OSI參考模型第三層——網絡層的數據包轉發設備。

網關(gateway):又稱網間連接器、協議轉換器。網關在網絡層以上實現網絡互連,是最復雜的網絡互連設備,僅用於兩個高層協議不同的網絡互連。

  • OSI網絡模型與TCP/IP網絡模型

由ISO所定義的7層網絡模型--OSI(Open System Interconnect,開放系統互連)是網絡發展中的一個重要裏程碑,它的出現使各種網絡技術和設備有了參考依據,在網絡協議的設計和統一上起到一定作用。

OSI的7層模型中每一層都有清晰的特征。其中第7-4層處理數據源和數據目的地之間的通信問題,第3-1層處理網絡設備間的通信。各層功能為:

物理層:定義了有關傳輸介質的特性標準規範。

數據鏈路層:物理鏈路並不可靠,可能會出現錯誤。數據鏈路層將數據分成幀,以數據幀為最基本單位進行傳輸,通過收到的數據幀進行重新排序和整理,把不可靠的物理鏈路轉化成網絡模型的上層協議中可靠的數據鏈路。

網絡層:對數據按一定的長度進行分組,並在每個分組的頭中記錄源和目的主機的地址,然後根據這些地址來決定從源主機到目的主機的路徑。如果存在多條路徑,還要負責進行路由選擇。

傳輸層:這層的功能包括是選擇差錯恢復協議還是無差錯恢復協議,在同一主機上對不同應用的數據流的輸入進行復用,以及對所收到的順序不對的數據包進行重新排序。

會話層:在網絡實體間建立、管理和終止通信應用服務請求和響應會話等。

表示層:進行代碼轉換功能,以保證源主機的數據在目的主機上同樣能被識別。

應用層:OSI模型的最高層,實現網絡與用戶的直接對話。

技術分享

OSI的7層模型是一個理論模型,由於它太過龐大和復雜受到很多批評,而技術人員自己開發的TCP/IP協議棧則獲得更為廣泛的應用。與OSI的7層模型不同,TCP/IP模型沒有把主要精力放在嚴格的層次劃分上,而是側重於設備間的數據傳輸。TCP/IP模型的各層功能:

網絡接口層(鏈結層):定義了如何在已有的物理網絡介質上傳輸數據,在這層中包含以太網、令牌環網、幀中繼和異步傳輸模式等。

網絡層:將數據封裝成IP(Internet Protocol)數據包,發往目標網絡或主機。在這層包含了IP、

ICMP、IGMP、以及ARP等協議。

傳輸層:定義了數據傳輸時所使用的服務質量以及連接狀態,實現源端主機和目標主機上對等實體間的會話。在傳輸層上有兩個不同的協議:TCP、UDP。

應用層:TCP/IP模型將OSI參考模型中的會話層和表示層的合並到應用層,它定義了TCP/IP應用程序通信協議,包括HTTP、FTP、DNS和SMTP等。其中,沒中協議都對應不同的網絡服務,他們一般都會有特殊的端口號。

1.2、TCP/IP的網絡層相關數據包與數據

目前因特網環境的IP有兩個版本,一種是使用最為廣泛的IPv4,一種是預期未來會熱門的IPv6.IPv4記錄的地址由於僅有32位,預計在2012年前後會分配完畢,如此一來,新興國家或者新的網絡公司將沒有網絡可用。為了避免這個問題發生,因此產生了IPv6,IPv6地址可以達到128位,這樣的IP數量幾乎用不完。雖然IPv6具有前瞻性,但目前主流大多使用IPv4。

IP數據包的封裝:

TCP/IP協議定義了一個在因特網上傳輸的包,稱為IP數據包,而IP數據報(IP Datagram)是個比較抽象的內容,是對數據包的結構進行分析。 由首部和數據兩部分組成,其格式如圖所示。首部的前一部分是固定長度,共20字節,是所有IP數據報必須具有的。在首部的固定部分的後面是一些可選字段,其長度是可變的。首部中的源地址和目的地址都是IP協議地址。

技術分享

Version(版本):指IP協議的版本。

IHL(Internet Header Length, IP表頭的長度):告知這個 IP 封包的表頭長度。

Type of Service(服務類型),字段內容為PPPDTRUU。
PPP:表示此 IP 封包的優先度,目前很少使用;
D:若為0表示一般延遲(delay),若為1表示為低延遲;
T:若為0表示為一般傳輸量 (throughput),若為1表示為高傳輸量;
R:若為0表示為一般可靠度(reliability),若為1表示高可靠度。
UU:保留尚未被使用。

Total Length(總長度):指這個IP封包的總容量,包括表頭與內容(Data)部分,最大65535 bytes。

Identification(辨別碼):IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並 將此值賦給標識字段。但這個“標識”並不是序號,因為IP是無連接服務,數據報不存在按序接收的問題。當數據報由於長度超過網絡的MTU而必須分片時,這個標識字段的值就被復制到所有的數據報的標識字段中。相同的標識字段的值使分片後的各數據報片最後能正確地重裝成為原來的數據報.

Flags(特殊旗標)
D:若為 0 表示可以分段,若為 1 表示不可分段
M:若為 0 表示此 IP 為最後分段,若為 1 表示非最後分段。

Fragment Offset(分段偏移):表示目前這個 IP 分段在原始的 IP 封包中所占的位置。

Time To Live(TTL, 存活時間)表示這個 IP 封包的存活時間,範圍為 0-255。

Protocol Number(協定代碼)


1

ICMP (Internet Control Message Protocol)

2

IGMP (Internet Group Management Protocol)

3

GGP (Gateway-to-Gateway Protocol)

4

IP (IP in IP encapsulation)

6

TCP (Transmission Control Protocol)

8

EGP (Exterior Gateway Protocol)

17

UDP (User Datagram Protocol)

Header Checksum(表頭檢查碼):用來檢查這個 IP 表頭的錯誤檢驗之用。

Source Address:來源的 IP 地址

Destination Address:這裏就是目標的 IP 地址。

Options (其他參數)這個是額外的功能,提供包括安全處理機制、路由紀錄、時間戳、嚴格與寬松之來源路由等。

Padding(補齊項目):由於Options的內容不一定有多大,但是我們知道IP每個數據都必須要是32bits,所以,若 Options 的數據不足 32 bits 時,則由 padding 主動補齊。

IP地址的組成與分級:

IP地址其實是一種網絡數據包,而這種數據包的報頭最重要的就是32位的來源與目的地址。對於這32 bits的數值,為了方便記憶,將32bits的IP分成四小段,每段含有8bits,將8個bits轉換成十進制,並 且每一段中間以小數點隔開。

00000000.00000000.00000000.00000000    ==》  0.0.0.0
11111111.11111111.11111111.11111111    ==》  255.255.255.255

因此IP可以由0.0.0.0到255.255.255.255.但這遺傳數字中,又分為網絡段(Net_ID)與主機段(Host_ID)兩部分。例如C類地址192.168.0.0-192.168.0.255為例。

11000000.10101000.000000000.00000000
|--------Net_ID------------|--host--|

Net_ID 與 Host_ID 的限制:在同一個網段內,Net_ID 是不變的,而Host_ID則是不可重復,此外 Host_ID 在二進制的表示法當中,不可同時為 0 也不可同時為 1 ,因為全為 0 表示整個網段的地址,而全為 1 則表示為廣播的地址。

在局域網內通過IP 廣播傳遞數據:在同物理網段的主機如果設定相同的網域 IP 範圍 (不可重復),則這些主機都可以透過 CSMA/CD 的功能直接在區網內用廣播進行網絡的聯機,亦即可以直接網卡對網卡傳遞數據 (透過 MAC 訊框)。

設定不同區網在同物理網段的情況:在同一個物理網段之內,如果兩部主機設定成不同的 IP 網段, 則由於廣播地址的不同,導致無法透過廣播的方式來進行聯機。 此時得要透過路由器 (router) 來進行溝通才能將兩個網域連結在一起。

網域的大小:當 Host_ID 所占用的位越大,亦即 Host_ID 數量越多時,表示同一個網域內可用以設 定主機的 IP 數量越多。

網絡的劃分:

全0:網絡地址

全1:廣播地址

Class A : 0.xx.xx.xx ~ 127.xx.xx.xx #Net_ID的開頭是0

網絡數:126, 127

每個網絡中的主機數:2^24-2

默認子網掩碼:255.0.0.0

私網地址:10.0.0.0/8

Class B : 128.xx.xx.xx ~ 191.xx.xx.xx #Net_ID的開頭是10

網絡數:2^14

每個網絡中的主機數:2^16-2

默認子網掩碼:255.255.0.0

私網地址:172.16.0.0/16-172.31.0.0/16

Class C : 192.xx.xx.xx ~ 223.xx.xx.xx #Net_ID的開頭是110

網絡數:2^21

每個網絡中的主機數:2^8-2

默認子網掩碼:255.255.255.0

私網地址:192.168.0.0/24-192.168.255.0/24

Class D : 224.xx.xx.xx ~ 239.xx.xx.xx #Net_ID的開頭是1110

組播的特殊功用,如大批計算機的網絡還原

Class E : 240.xx.xx.xx ~ 255.xx.xx.xx #Net_ID的開頭是1111

保留沒有使用的網段

1.3、交換機與路由器

在同一局域網裏面,可以通過IP廣播的方式來實現數據的傳輸,但如果在非局域網時。就需要路由器器來幫忙了。簡單來說交換機為同一局域網內的不同主機服務,而路由器則為了不同局域網內的兩臺主機提供服務。

交換機:是基於網橋技術的多端口第二層網絡設備,它為數據幀從一個端口到另一個任意端口的轉發提供了低時延、低開銷的通路。交換機只能識別MAC地址。同一網絡內不同主機之間通信,通過交換機尋找最優通路,不能存在環路。

路由器:是OSI協議模型的網絡層中的分組交換設備(或網絡層中繼設備),路由器的基本功能是把數據(IP報文)傳送到正確的網絡。識別IP地址。不同網段主機通信時需要路由轉發。可以隔離廣播域。

技術分享

1.4、TCP協議數據包

網絡層的IP數據包只負責將數據送到正確的目標主機,但是數據包到底會不會被接收,或者有沒有被正確接收,就不是IP的任務了,那是傳輸層的的任務之一。在傳輸層有兩種協議,一種是面向連接的TCP數據包,一種無連接的UDP數據包,數據能不能正確被送達目的地,與這兩個數據包有很大的關系。

各個數據包之間的相關性:

技術分享

UDP數據包的報頭信息:

技術分享

TCP數據包的報頭信息:

技術分享

Sequence Number (封包序號):TCP 數據太大時(大於 IP 封包的容許程度),就得要進行分段。這個 Sequence Number 就是記錄每個封包的序號,可以讓收受端重新將 TCP 的數據組合起來。

Acknowledge Number (回應序號):為了確認主機端確實有收到client端所送出的封包數據,client端當然希望能夠收到主機方面的響應,那就是這個 Acknowledge Number 的用途了。當client 端收到這個確認碼時,就能夠確定之前傳遞的封包已經被正確的收下了。

Code (Control Flag, 控制標誌碼)

URG(Urgent):若為 1 則代表該封包為緊急封包,接收端應該要緊急處理,當中的 Urgent Pointer字段也會被啟用。

ACK(Acknowledge):若為 1 代表這個封包為響應封包,與 Acknowledge Number 有關。

PSH(Push function):若為 1 時,代表要求對方立即傳送緩沖區內的其他對應封包,而無須等待緩沖區滿了才送。

RST(Reset):如果 RST 為 1 的時候,表示聯機會被馬上結束,而無需等待終止確認手續。 這是個強制結束的聯機,且發送端已斷線。

SYN(Synchronous):若為 1,表示發送端希望雙方建立同步處理,也就是要求建立聯機。通常帶有SYN標誌的封包表示主動要連接到對方的意思。

FIN(Finish):若為 1 ,表示傳送結束,所以通知對方數據傳畢,是否同意斷線,只是發送者還在等待對方的響應。

三次握手與四次斷開:

技術分享

建立連接的過程:

【1】客戶端發出請求,SYN 位表示連接請求。序號是200,這個序號在網絡通訊中用作臨時的地址,每發一個數據字節,這個序號要加1,這樣在接收端可以根據序號排出數據包的正確順序,也可以發現丟包的情況,另外,規定SYN 位和FIN 位也要占一個序號,這次雖然沒發數據,但是由於發了SYN 位,因此下次再發送應該用序號201。

【2】服務器發出信息,也帶有SYN 位,同時置ACK 位表示確認,確認序號是500,表示“我接收到序號500及其以前所有的段,請你下次發送序號為501的段”,也就是應答了客戶端的連接請求,同時也給客戶端發出一個連接請求。

【3】客戶端發出信息,對服務器的連接請求進行應答,確認序號是501。在這個過程中,客戶端和服務器分別給對方發了連接請求,也應答了對方的連接請求,其中服務器的請求和應答在一個段中發出,因此一共有三個段用於建立連接,稱為‘‘‘三方握手(three-way-handshake)‘‘‘。在建立連接的同時,雙方協商了一些信息,例如雙方發送序號的初始值、最大段尺寸等。

TCP連接的關閉過程:

【1】客戶端發出信息,FIN 位表示關閉連接的請求。

【2】服務器發出信息,應答客戶端的關閉連接請求。

【3】服務器發出信息,其中也包含FIN 位,向客戶端發送關閉連接請求。

【4】客戶端發出信息,應答服務器的關閉連接請求。


本文出自 “隨風而飄” 博客,請務必保留此出處http://yinsuifeng.blog.51cto.com/10173491/1923251

一、網絡的基本概念