投資手機網(wǎng)站源碼廣告聯(lián)盟平臺排名
總結TCP/IP四層模型
閱讀目錄(Content)
- 一、TCP/IP參考模型概述
- 1.1、TCP/IP參考模型的層次結構
- 二、TCP/IP四層功能概述?
- 2.1、主機到網(wǎng)絡層 ?
- 2.2、網(wǎng)絡互連層 ?
- 2.3、傳輸層 ?
- 2.3、應用層?
- 三、TCP/IP報文格式
- 3.1、IP報文格式
- 3.2、TCP數(shù)據(jù)段格式
- 3.3、UDP數(shù)據(jù)段格式
- 3.4、套接字
前言
在這里有一個問題,有的書上說TCP/IP是四層有的卻說是五層。其實這個問題我也上網(wǎng)查了一下資料。
tcp/ip是事實標準,分4層。osi模型是國際標準,分7層。講課的時候,一般把他們綜合起來講,就說是5層。他把網(wǎng)絡接口層分開為數(shù)據(jù)鏈路層和物理層了。
我們探討一下為什么ISO七層模型不適用而大部分都是使用的是TCP/IP四層模型呀?
OSI的七層協(xié)議體系結構的概念清楚,理論也比較完整,但它既復雜又不實用,TCP/IP體系結構則不同,它現(xiàn)在已經(jīng)得到了非常廣泛的應用,TCP/IP是一個四層的體系結構,
它包含應用層、運輸層、網(wǎng)際層和網(wǎng)絡接口層(用網(wǎng)際層這個名字是強調(diào)這一層是為了解決不同網(wǎng)絡的互連問題? ),不過從實質(zhì)來講,TCP/IP只有最上面的三層,因為最下面的網(wǎng)絡接口層基本上和一般的通信鏈路的功能上沒有多大差別,
對于計算機網(wǎng)絡來說,這一層并沒有什么特別新的具體的內(nèi)容,因此在學習計算機網(wǎng)絡原理是往往采用折中的辦法,即綜合OSI和TCP/IP的優(yōu)點,采用一種只有五層協(xié)議的體系結構
?
回到頂部(go to top)
一、TCP/IP參考模型概述
ISO制定的OSI參考模型的過于龐大、復雜招致了許多批評。與此對照,由技術人員自己開發(fā)的TCP/IP協(xié)議棧獲得了更為廣泛的應用。如下圖,是TCP/IP參考模型和OSI參考模型的對比示意圖。
?
1.1、TCP/IP參考模型的層次結構
TCP/IP協(xié)議棧是美國國防部高級研究計劃局計算機網(wǎng)(Advanced Research Projects Agency Network,ARPANET)和其后繼因特網(wǎng)使用的參考模型。ARPANET是由美國國防部(U.S.Department of Defense,DoD)贊助的研究網(wǎng)絡。
最初,它只連接了美國境內(nèi)的四所大學。隨后的幾年中,它通過租用的電話線連接了數(shù)百所大學和政府部門。最終ARPANET發(fā)展成為全球規(guī)模最大的互連網(wǎng)絡-因特網(wǎng)。最初的ARPANET于1990年永久性地關閉?! ?br /> TCP/IP參考模型分為四個層次:應用層、傳輸層、網(wǎng)絡互連層和主機到網(wǎng)絡層。如下圖所示。
回到頂部(go to top)
二、TCP/IP四層功能概述?
在TCP/IP參考模型中,去掉了OSI參考模型中的會話層和表示層(這兩層的功能被合并到應用層實現(xiàn))。同時將OSI參考模型中的數(shù)據(jù)鏈路層和物理層合并為主機到網(wǎng)絡層。下面,分別介紹各層的主要功能。
?
2.1、主機到網(wǎng)絡層
網(wǎng)絡接入層與OSI參考模型中的物理層和數(shù)據(jù)鏈路層相對應。它負責監(jiān)視數(shù)據(jù)在主機和網(wǎng)絡之間的交換。事實上,TCP/IP本身并未定義該層的協(xié)議,而由參與互連的各網(wǎng)絡使用自己的物理層和數(shù)據(jù)鏈路層協(xié)議,
然后與TCP/IP的網(wǎng)絡接入層進行連接。地址解析協(xié)議(ARP)工作在此層,即OSI參考模型的數(shù)據(jù)鏈路層。
實際上TCP/IP參考模型沒有真正描述這一層的實現(xiàn),只是要求能夠提供給其上層-網(wǎng)絡互連層一個訪問接口,以便在其上傳遞IP分組。由于這一層次未被定義,所以其具體的實現(xiàn)方法將隨著網(wǎng)絡類型的不同而不同?!?/p>
?
2.2、網(wǎng)絡互連層
網(wǎng)絡互連層是整個TCP/IP協(xié)議棧的核心。它的功能是把分組發(fā)往目標網(wǎng)絡或主機。同時,為了盡快地發(fā)送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發(fā)送的順序可能不同,這就需要上層必須對分組進行排序。
網(wǎng)絡互連層定義了分組格式和協(xié)議,即IP協(xié)議(Internet Protocol)?! ?br /> 網(wǎng)絡互連層除了需要完成路由的功能外,也可以完成將不同類型的網(wǎng)絡(異構網(wǎng))互連的任務。除此之外,網(wǎng)絡互連層還需要完成擁塞控制的功能。
?
2.3、傳輸層
? ? 在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體可以進行會話。在傳輸層定義了兩種服務質(zhì)量不同的協(xié)議。即:傳輸控制協(xié)議TCP(transmission control protocol)和用戶數(shù)據(jù)報協(xié)議UDP(user datagram protocol)?! ?br /> TCP協(xié)議是一個面向連接的、可靠的協(xié)議。它將一臺主機發(fā)出的字節(jié)流無差錯地發(fā)往互聯(lián)網(wǎng)上的其他主機。在發(fā)送端,它負責把上層傳送下來的字節(jié)流分成報文段并傳遞給下層。
在接收端,它負責把收到的報文進行重組后遞交給上層。TCP協(xié)議還要處理端到端的流量控制,以避免緩慢接收的接收方?jīng)]有足夠的緩沖區(qū)接收發(fā)送方發(fā)送的大量數(shù)據(jù)?! ?br /> UDP協(xié)議是一個不可靠的、無連接協(xié)議,主要適用于不需要對報文進行排序和流量控制的場合?! ?/p>
?
2.3、應用層
TCP/IP模型將OSI參考模型中的會話層和表示層的功能合并到應用層實現(xiàn)?! ?br /> 應用層面向不同的網(wǎng)絡應用引入了不同的應用層協(xié)議。其中,有基于TCP協(xié)議的,如文件傳輸協(xié)議(File Transfer Protocol,FTP)、虛擬終端協(xié)議(TELNET)、超文本鏈接協(xié)議(Hyper Text Transfer Protocol,HTTP),也有基于UDP協(xié)議的。
回到頂部(go to top)
三、TCP/IP報文格式
?
3.1、IP報文格式
IP協(xié)議是TCP/IP協(xié)議族中最為核心的協(xié)議。它提供不可靠、無連接的服務,也即依賴其他層的協(xié)議進行差錯控制。
在局域網(wǎng)環(huán)境,IP協(xié)議往往被封裝在以太網(wǎng)幀中傳送。而所有的TCP、UDP、ICMP、IGMP數(shù)據(jù)都被封裝在IP數(shù)據(jù)報中傳送。如下圖所示:
TCP/IP報文封裝
IP頭部(報頭)格式:(RFC 791)
分析:
1)版本(Version)字段:占4比特。用來表明IP協(xié)議實現(xiàn)的版本號,當前一般為IPv4,即0100?! ?br /> 2)報頭長度(Internet Header Length,IHL)字段:占4比特。是頭部占32比特的數(shù)字,包括可選項。普通IP數(shù)據(jù)報(沒有任何選項),該字段的值是5,即160比特=20字節(jié)。此字段最大值為60字節(jié)?! ?/p>
3)服務類型(Type of Service ,TOS)字段:占8比特。其中前3比特為優(yōu)先權子字段(Precedence,現(xiàn)已被忽略)。第8比特保留未用。第4至第7比特分別代表延遲、吞吐量、可靠性和花費。
當它們?nèi)≈禐?時分別代表要求最小時延、最大吞吐量、最高可靠性和最小費用。這4比特的服務類型中只能置其中1比特為1??梢匀珵?,若全為0則表示一般服務。服務類型字段聲明了數(shù)據(jù)報被網(wǎng)絡系統(tǒng)傳輸時可以被怎樣處理。
例如:TELNET協(xié)議可能要求有最小的延遲,FTP協(xié)議(數(shù)據(jù))可能要求有最大吞吐量,SNMP協(xié)議可能要求有最高可靠性,NNTP(Network News Transfer Protocol,網(wǎng)絡新聞傳輸協(xié)議)可能要求最小費用,而ICMP協(xié)議可能無特殊要求(4比特全為0)。
實際上,大部分主機會忽略這個字段,但一些動態(tài)路由協(xié)議如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根據(jù)這些字段的值進行路由決策。
4)總長度字段:占16比特。指明整個數(shù)據(jù)報的長度(以字節(jié)為單位)。最大長度為65535字節(jié)。
5)標志字段:占16比特。用來唯一地標識主機發(fā)送的每一份數(shù)據(jù)報。通常每發(fā)一份報文,它的值會加1?! ?br /> 6)標志位字段:占3比特。標志一份數(shù)據(jù)報是否要求分段?! ?br /> 7)段偏移字段:占13比特。如果一份數(shù)據(jù)報要求分段的話,此字段指明該段偏移距原始數(shù)據(jù)報開始的位置。
8)生存期(TTL:Time to Live)字段:占8比特。用來設置數(shù)據(jù)報最多可以經(jīng)過的路由器數(shù)。由發(fā)送數(shù)據(jù)的源主機設置,通常為32、64、128等。每經(jīng)過一個路由器,其值減1,直到0時該數(shù)據(jù)報被丟棄?! ?br /> 9)協(xié)議字段:占8比特。指明IP層所封裝的上層協(xié)議類型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等?! ?br /> 10)頭部校驗和字段:占16比特。內(nèi)容是根據(jù)IP頭部計算得到的校驗和碼。計算方法是:對頭部中每個16比特進行二進制反碼求和。(和ICMP、IGMP、TCP、UDP不同,IP不對頭部后的數(shù)據(jù)進行校驗)?! ?br /> 11)源IP地址、目標IP地址字段:各占32比特。用來標明發(fā)送IP數(shù)據(jù)報文的源主機地址和接收IP報文的目標主機地址?! ?br /> 12)可選項字段:占32比特。用來定義一些任選項:如記錄路徑、時間戳等。這些選項很少被使用,同時并不是所有主機和路由器都支持這些選項??蛇x項字段的長度必須是32比特的整數(shù)倍,如果不足,必須填充0以達到此長度要求。
?
3.2、TCP數(shù)據(jù)段格式
TCP是一種可靠的、面向連接的字節(jié)流服務。源主機在傳送數(shù)據(jù)前需要先和目標主機建立連接。然后,在此連接上,被編號的數(shù)據(jù)段按序收發(fā)。同時,要求對每個數(shù)據(jù)段進行確認,保證了可靠性。
如果在指定的時間內(nèi)沒有收到目標主機對所發(fā)數(shù)據(jù)段的確認,源主機將再次發(fā)送該數(shù)據(jù)段。
TCP頭部結構(RFC 793、1323)
分析:
1)源、目標端口號字段:占16比特。TCP協(xié)議通過使用"端口"來標識源端和目標端的應用進程。端口號可以使用0到65535之間的任何數(shù)字。在收到服務請求時,操作系統(tǒng)動態(tài)地為客戶端的應用程序分配端口號。
在服務器端,每種服務在"眾所周知的端口"(Well-Know Port)為用戶提供服務。
2)順序號字段:占32比特。用來標識從TCP源端向TCP目標端發(fā)送的數(shù)據(jù)字節(jié)流,它表示在這個報文段中的第一個數(shù)據(jù)字節(jié)?! ?br /> 3)確認號字段:占32比特。只有ACK標志為1時,確認號字段才有效。它包含目標端所期望收到源端的下一個數(shù)據(jù)字節(jié)?! ?br /> 4)頭部長度字段:占4比特。給出頭部占32比特的數(shù)目。沒有任何選項字段的TCP頭部長度為20字節(jié);最多可以有60字節(jié)的TCP頭部。
5)標志位字段(U、A、P、R、S、F):占6比特。各比特的含義如下:
URG:緊急指針(urgent pointer)有效?! ?br /> ACK:確認序號有效。
PSH:接收方應該盡快將這個報文段交給應用層?! ?br /> RST:重建連接?! ?br /> SYN:發(fā)起一個連接?! ?br /> FIN:釋放一個連接?! ?br /> 6)窗口大小字段:占16比特。此字段用來進行流量控制。單位為字節(jié)數(shù),這個值是本機期望一次接收的字節(jié)數(shù)?! ?br /> 7)TCP校驗和字段:占16比特。對整個TCP報文段,即TCP頭部和TCP數(shù)據(jù)進行校驗和計算,并由目標端進行驗證。
8)緊急指針字段:占16比特。它是一個偏移量,和序號字段中的值相加表示緊急數(shù)據(jù)最后一個字節(jié)的序號?! ?br /> 9)選項字段:占32比特。可能包括"窗口擴大因子"、"時間戳"等選項。
?
3.3、UDP數(shù)據(jù)段格式
UDP是一種不可靠的、無連接的數(shù)據(jù)報服務。源主機在傳送數(shù)據(jù)前不需要和目標主機建立連接。數(shù)據(jù)被冠以源、目標端口號等UDP報頭字段后直接發(fā)往目的主機。這時,每個數(shù)據(jù)段的可靠性依靠上層協(xié)議來保證。在傳送數(shù)據(jù)較少、較小的情況下,UDP比TCP更加高效?! ?br />
UDP頭部結構(RFC 793、1323)
分析:
1)源、目標端口號字段:占16比特。作用與TCP數(shù)據(jù)段中的端口號字段相同,用來標識源端和目標端的應用進程?! ?br /> 2)長度字段:占16比特。標明UDP頭部和UDP數(shù)據(jù)的總長度字節(jié)。
3)校驗和字段:占16比特。用來對UDP頭部和UDP數(shù)據(jù)進行校驗。和TCP不同的是,對UDP來說,此字段是可選項,而TCP數(shù)據(jù)段中的校驗和字段是必須有的。
?
3.4、套接字
在每個TCP、UDP數(shù)據(jù)段中都包含源端口和目標端口字段。有時,我們把一個IP地址和一個端口號合稱為一個套接字(Socket),而一個套接字對(Socket pair)可以唯一地確定互連網(wǎng)絡中每個TCP連接的雙方(客戶IP地址、客戶端口號、服務器IP地址、服務器端口號)。
? 常見協(xié)議和對應的服務端口號
注意:不同的應用層協(xié)議可能基于不同的傳輸層協(xié)議,如FTP、TELNET、SMTP協(xié)議基于可靠的TCP協(xié)議。TFTP、SNMP、RIP基于不可靠的UDP協(xié)議?! ?br /> 同時,有些應用層協(xié)議占用了兩個不同的端口號,如FTP的20、21端口,SNMP的161、162端口。這些應用層協(xié)議在不同的端口提供不同的功能。如FTP的21端口用來偵聽用戶的連接請求,而20端口用來傳送用戶的文件數(shù)據(jù)。
再如,SNMP的161端口用于SNMP管理進程獲取SNMP代理的數(shù)據(jù),而162端口用于SNMP代理主動向SNMP管理進程發(fā)送數(shù)據(jù)?! ?br /> 還有一些協(xié)議使用了傳輸層的不同協(xié)議提供的服務。如DNS協(xié)議同時使用了TCP 53端口和UDP 53端口。DNS協(xié)議在UDP的53端口提供域名解析服務,在TCP的53端口提供DNS區(qū)域文件傳輸服務。
?
?