關于TCP/IP與OSI模型基礎學習
§·OSI七層模型介紹
OSI(Open system interconnection 開放系統互聯),七層網絡模型稱為開放式系統互聯參考模型 ,是一個邏輯上的定義,一個規范,它把網絡從邏輯上分為了7層。每一層都有相關、相對應的物理設備,比如路由器,交換機。OSI 七層模型是一種框架性的設計方法 ,建立七層模型的主要目的是為解決異種網絡互連時所遇到的兼容性問題,其最主要的功能使就是幫助不同類型的主機實現數據傳輸。它的最大優點是將服務、接口和協議這三個概念明確地區分開來,通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊。
§·OSI七層模型模型優點
建立七層模型的主要目的是為解決異種網絡互連時所遇到的兼容性問題。它的最大優點是將服務、接口和協議這三個概念明確地區分開來:
服務說明某一層為上一層提供一些什么功能,
接口說明上一層如何使用下層的服務,
而協議涉及如何實現本層的服務;
這樣各層之間具有很強的獨立性,互連網絡中各實體采用什么樣的協議是沒有限制的,只要向上提供相同的服務并且不改變相鄰層的接口就可以了。網絡七層的劃分也是為了使網絡的不同功能模塊(不同層次)分擔起不同的職責,從而帶來如下好處:
● 減輕問題的復雜程度,一旦網絡發生故障,可迅速定位故障所處層次,便于查找和糾錯;
● 在各層分別定義標準接口,使具備相同對等層的不同網絡設備能實現互操作,各層之間則相對獨立,一種高層協議可放在多種低層協議上運行;
● 能有效刺激網絡技術革新,因為每次更新都可以在小范圍內進行,不需對整個網絡動大手術;
● 便于研究和教學。
◎·一.物理層(Physical Layer)
O S I 模型的最低層或第一層,該層包括物理連網媒介,如電纜連線連接器。物理層的協議產生并檢測電壓以便發送和接收攜帶數據的信號。在你的桌面P C 上插入網絡接口卡,你就建立了計算機連網的基礎。換言之,你提供了一個物理層。盡管物理層不提供糾錯服務,但它能夠設定數據傳輸速率并監測數據出錯率。網絡物理問題,如電線斷開,將影響物理層。 用戶要傳遞信息就要利用一些物理媒體,如雙絞線、同軸電纜等,但具體的物理媒體并不在OSI的7層之內,有人把物理媒體當做第0層,物理層的任務就是為它的上一層提供一個物理連接,以及它們的機械、電氣、功能和過程特性。如規定使用電纜和接頭的類型、傳送信號的電壓等。在這一層,數據還沒有被組織,僅作為原始的位流或電氣電壓處理,單位是bit比特。
◎·二.數據鏈路層(Datalink Layer)
OSI模型的第二層,它控制網絡層與物理層之間的通信。它的主要功能是如何在不可靠的物理線路上進行數據的可靠傳遞。為了保證傳輸,從網絡層接收到的數據被分割成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括發送方和接收方的物理地址以及檢錯和控制信息。其中的地址確定了幀將發送到何處,而糾錯和控制信息則確保幀無差錯到達。 如果在傳送數據時,接收點檢測到所傳數據中有差錯,就要通知發送方重發這一幀。
數據鏈路層的功能獨立于網絡和它的節點和所采用的物理層類型,它也不關心是否正在運行 Wo r d 、E x c e l 或使用I n t e r n e t 。有一些連接設備,如交換機,由于它們要對幀解碼并使用幀信息將數據發送到正確的接收方,所以它們是工作在數據鏈路層的。
數據鏈路層(DataLinkLayer):在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,并進行各電路上的動作系列。
數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。
數據鏈路層協議的代表包括:SDLC、HDLC、PPP、STP、幀中繼等。
◎·三.網絡層(Network Layer)
O S I 模型的第三層,其主要功能是將網絡地址翻譯成對應的物理地址,并決定如何將數據從發送方路由到接收方。
網絡層通過綜合考慮發送優先權、網絡擁塞程度、服務質量以及可選路由的花費來決定從一個網絡中節點A 到另一個網絡中節點B 的最佳路徑。由于網絡層處理,并智能指導數據傳送,路由器連接網絡各段,所以路由器屬于網絡層。在網絡中,“路由”是基于編址方案、使用模式以及可達性來指引數據的發送。
網絡層負責在源機器和目標機器之間建立它們所使用的路由。這一層本身沒有任何錯誤檢測和修正機制,因此,網絡層必須依賴于端端之間的由D L L提供的可靠傳輸服務。
網絡層用于本地L A N網段之上的計算機系統建立通信,它之所以可以這樣做,是因為它有自己的路由地址結構,這種結構與第二層機器地址是分開的、獨立的。這種協議稱為路由或可路由協議。路由協議包括I P、N o v e l l公司的I P X以及A p p l e Ta l k協議。
網絡層是可選的,它只用于當兩個計算機系統處于不同的由路由器分割開的網段這種情況,或者當通信應用要求某種網絡層或傳輸層提供的服務、特性或者能力時。例如,當兩臺主機處于同一個L A N網段的直接相連這種情況,它們之間的通信只使用L A N的通信機制就可以了(即OSI 參考模型的一二層)。
◎·四.傳輸層(Transport Layer)
O S I 模型中最重要的一層。傳輸協議同時進行流量控制或是基于接收方可接收數據的快慢程度規定適當的發送速率。除此之外,傳輸層按照網絡能處理的最大尺寸將較長的數據包進行強制分割。例如,以太網無法接收大于1 5 0 0 字節的數據包。發送方節點的傳輸層將數據分割成較小的數據片,同時對每一數據片安排一序列號,以便數據到達接收方節點的傳輸層時,能以正確的順序重組。該過程即被稱為排序。
工作在傳輸層的一種服務是 T C P / I P 協議套中的T C P (傳輸控制協議),另一項傳輸層服務是I P X / S P X 協議集的S P X (序列包交換)。
◎·五.會話層(Session Layer)
負責在網絡中的兩節點之間建立、維持和終止通信。 會話層的功能包括:建立通信鏈接,保持會話過程通信鏈接的暢通,同步兩個節點之間的對話,決定通信是否被中斷以及通信中斷時決定從何處重新發送。
你可能常常聽到有人把會話層稱作網絡通信的“交通警察”。當通過撥號向你的 ISP (因特網服務提供商)請求連接到因特網時,ISP 服務器上的會話層向你與你的 PC 客戶機上的會話層進行協商連接。若你的電話線偶然從墻上插孔脫落時,你終端機上的會話層將檢測到連接中斷并重新發起連接。會話層通過決定節點通信的優先級和通信時間的長短來設置通信期限
◎·六.表示層(Presentation Layer)
應用程序和網絡之間的翻譯官,在表示層,數據將按照網絡能理解的方案進行格式化;這種格式化也因所使用網絡的類型不同而不同。
表示層管理數據的解密與加密,如系統口令的處理。例如:在 Internet上查詢你銀行賬戶,使用的即是一種安全連接。你的賬戶數據在發送前被加密,在網絡的另一端,表示層將對接收到的數據解密。除此之外,表示層協議還對圖片和文件格式信息進行解碼和編碼。
◎·七.應用層(Application Layer)
應用層也稱為應用實體(AE),它由若干個特定應用服務元素(SASE)和一個或多個公用應用服務元素(CASE)組成。每個SASE提供特定的應用服務,例如文件運輸訪問和管理(FTAM)、電子文電處理(MHS)、虛擬終端協議(VAP)等。CASE提供一組公用的應用服務,例如聯系控制服務元素(ACSE)、可靠運輸服務元素(RTSE)和遠程操作服務元素(ROSE)等。主要負責對軟件提供接口以使程序能使用網絡服務。術語“應用層”并不是指運行在網絡上的某個特別應用程序 ,應用層提供的服務包括文件傳輸、文件管理以及電子郵件的信息處理。
◎·簡版:
1.物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地后在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。
2.數據鏈路層:定義了如何讓格式化數據以進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保數據的可靠傳輸。
3.網絡層:在位于不同地理位置的網絡中的兩個主機系統之間提供連接和路徑選擇。Internet的發展使得從世界各站點訪問信息的用戶數大大增加,而網絡層正是管理這種連接的層。
4.傳輸層:定義了一些傳輸數據的協議和端口號(WWW端口80等),如:TCP(傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的)。 主要是將從下層接收的數據進行分段和傳輸,到達目的地址后再進行重組。常常把這一層數據叫做段。
5.會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數據傳輸的通路。主要在你的系統之間發起會話或者接受會話請求(設備之間需要互相認識可以是IP也可以是MAC或者是主機名)
6.表示層:可確保一個系統的應用層所發送的信息可以被另一個系統的應用層讀取。例如,PC程序與另一臺計算機進行通信,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符。如有必要,表示層會通過使用一種通格式來實現多種數據格式之間的轉換。
7.應用層: 是最靠近用戶的OSI層。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。
§·TCP/IP四層模型
TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇。TCP/IP協議簇分為四層,IP位于協議簇的第二層(對應OSI的第三層),TCP位于協議簇的第三層(對應OSI的第四層)。
TCP/IP通訊協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。這4層分別為:
1 應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。
2傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據并把它傳輸到下一層中,這一層負責傳送數據,并且確定數據已被送達并接收。
3互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。
4 網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、Serial Line等)來傳送數據。
※·三次握手第一次
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:
![]() |
|
疑問:客戶端與服務器通信,是何時知道需要使用TCP連接,何時開始三次握手(肯定是傳數據之前),那如何識別上層把數據封裝好可,傳給 傳輸層 ,
§·TCP/IP四層邏輯圖
※·TCP/IP與OSI參考模型對比
TCP/IP是我們實際使用的應用,OSI七層模型可供學習和教學
§·TCP/IP四層邏輯圖每層數據封裝圖解
數據鏈路層為——數據幀
Internet(互聯網)層為——IP報文
傳輸層——TCP/UDP數據段
※·抓包工具:wireshark 1.12.7版本
Frame: 物理層的數據幀概況
Ethernet II: 數據鏈路層以太網幀頭部信息
Internet Protocol Version 4: 互聯網層IP包頭部信息
Transmission Control Protocol: 傳輸層的數據段頭部信息
Hypertext Transfer Protocol: 應用層的信息
※·數據鏈路層格式組成
以太網幀的格式組成:我們對比兩種幀格式: Ethernet 與 IEEE802.3 的簡單區別。
以太網Ethernet字段 |
字段長度(字節) |
目的 |
對應數值 |
|
Preamble (前導碼) |
8 |
|||
目標MAC地址 |
6 |
指定接受方MAC地址 |
b0-25-aa-17-0f-15 |
|
源MAC地址 |
6 |
指明發送方MAC地址 |
00:0c:29:42:59:60 |
|
type(類型) |
4 |
上層數據類型 |
ip (0x0800 ) |
|
數據后填充 |
46-1500 |
數據 |
||
幀校驗序列(FCS) |
4 |
數據校驗生成的校驗碼,錯誤就丟棄此幀 |
||
合計最小字節數為: |
28字節 |
注意:如果幀小于61字節,則要求”填充“,讓這個幀達到最小長度為 64字節
※·IP報文
IP報文格式 |
字段長度 |
對應數值 |
|
ver (IP版本號) |
4位 |
IP V4 |
|
IHL(首部長度) |
4位 |
20字節 |
|
tos(服務類型) |
8 |
||
total_len(數據包長度) |
16 |
||
ident(標識) |
16 |
15747 |
|
flags(標志) |
3 |
0x02 |
|
(片內偏移) |
0 |
||
ttl(生存周期) |
8 |
64 |
|
proto(協議TCP UDP或其他) |
8 |
TCP (6) |
|
checksum(報頭校驗和) |
16 |
0X0000 |
|
sourceIP(源地址) |
32 |
10.1.16.1 |
|
destIP(目標地址) |
32 |
10.1.16.61 |
|
選項 |
|||
填充 |
|||
合計: |
※·TCP數據段格式
TCP報文格式 |
字段位數 |
對應數值 |
|
SourPort 源端口號 |
16 |
55425 |
|
DestPort 目的端口號 |
16 |
22 |
|
SequNum 序列號 |
32 |
1822 |
|
AcknowledgeNum 確認號 |
32 |
2534 |
|
HeaderLen TCP頭長度 |
4 |
20 |
|
resv 保留 |
6 |
||
Flag 標志位 |
6 |
ACK位1 |
|
WindowSize 窗口大小 |
16 |
16203 |
|
CheckSum 檢驗和 |
16 |
64812 |
|
urgentPointer 緊急數據偏移量 |
16 |
0 |
※·UDP數據段格式
UDP報文格式 |
字段位數 |
對應數值 |
|
SourPort 源端口號 |
16bit |
8000 |
|
DestPort 目的端口號 |
16bit |
8706 |
|
Length 數據包長度 |
16bit |
55 |
|
CheckSum 校驗和 |
16bit |
0x9529 |
※·1.通過抓包工具分析TCP三次握手
連接由于SSH是使用TCL協議的,所以應該有三次握手的界面,上圖中就有相關的信息,由于排除了部分不需要數據,導致編號不是連續的,不過還是值得我們去了解的。
◎·TCP握手第一次
#客戶端發送 帶Seq 為0 ,ack為0 的數據包發往服務器
#客戶機發送信息后,處于 SYN_SENT狀態,等待服務器發回的SYN_ACK包
注:frame物理層數據概括:該包為66個字節,包含所有的數據(不過好像這個數字有問題,現在不討論)。
◎·TCP握手第二次
服務器回應客戶機的序列號0 ,發給客戶機ack為1的數據包
#客戶機收到服務器發過來的確認 sequence number :0 acknowledgment number :1
#服務器發送SYN_ACK的后,服務器處于 SYN_RECV狀態
◎·TCP握手第三次:
#客戶機回應服務器的序列號0 ,發給服務器的ack為1的數據包,客戶機處于ESTABLISHED狀態。
#服務器收到客戶機發送的信息,也處于ESTABLISHED狀態,就可以傳送數據了。
小結:
以上通過抓包簡單的分析了,有很多的選項不太清楚,還有待慢慢研究與學習,不過也了解了一些術語方面的知識。
原創文章,作者:linux_root,如若轉載,請注明出處:http://www.www58058.com/42873
文檔功底相當不錯,也非常認真,很出彩,加油