TCP/IP 协议栈及 OSI 参考模型详解
TCP/IP 協(xié)議棧及 OSI 參考模型詳解
轉(zhuǎn)載地址:http://www.codeceo.com/article/tcp-ip-osi-model.html
OSI參考模型
OSI RM:開放系統(tǒng)互連參考模型(open systeminterconnection reference model)
OSI參考模型具有以下優(yōu)點:
- 簡化了相關(guān)的網(wǎng)絡(luò)操作;
- 提供設(shè)備間的兼容性和標準接口;
- 促進標準化工作;
- 結(jié)構(gòu)上可以分隔;
- 易于實現(xiàn)和維護。
20世紀60年代以來,計算機網(wǎng)絡(luò)得到了飛速增長。各大廠商為了在數(shù)據(jù)通信網(wǎng)絡(luò)領(lǐng)域占據(jù)主導(dǎo)地 位,紛紛推出了各自的網(wǎng)絡(luò)架構(gòu)體系和標準,如IBM公司的SNA,Novell IPX/SPX協(xié)議,Apple公司的AppleTalk協(xié)議,DEC公司的DECnet,以及廣泛流行的TCP/IP協(xié)議。同時,各大廠商針對自己的協(xié)議生產(chǎn)出了不同的硬件和軟件。各個廠商的共同努力促進了網(wǎng)絡(luò)技術(shù)的快速發(fā)展和網(wǎng)絡(luò)設(shè)備種類的迅速增長。但由于多種協(xié)議的并存,也使網(wǎng)絡(luò)變得越來越復(fù)雜;而且,廠商之間的網(wǎng)絡(luò)設(shè)備大部分不能兼容,很難進行通信。
為了解決網(wǎng)絡(luò)之間的兼容性問題,幫助各個廠商生產(chǎn)出可兼容的網(wǎng)絡(luò)設(shè)備,國際標準化組織ISO于1984年提出了OSI RM(OpenSystem Interconnection Reference Model,開放系統(tǒng)互連參考模型)。OSI 參考模型很快成為計算機網(wǎng)絡(luò)通信的基礎(chǔ)模型。在設(shè)計OSI 參考模型時,遵循了以下原則:各個層之間有清晰的邊界,實現(xiàn)特定的功能;層次的劃分有利于國際標準協(xié)議的制定;層的數(shù)目應(yīng)該足夠多,以避免各個層功能重復(fù)。
OSI分層
通常OSI參考模型第一層到第三層稱為底層(lower layer),又叫介質(zhì)層(media layer),底層負責(zé)數(shù)據(jù)在網(wǎng)絡(luò)中的傳送,網(wǎng)絡(luò)互連設(shè)備往往位于下三層,以硬件和軟件的方式來實現(xiàn)。OSI參考模型的第五層到第七層稱為高層(upper layer),又叫住幾層(host layer),高層用于保障數(shù)據(jù)的正確傳輸,以軟件方式來實現(xiàn)。
OSI七層功能:
TCP/IP協(xié)議棧
由于OSI模型和協(xié)議比較復(fù)雜,所以并沒有得到廣泛的應(yīng)用。
而TCP/IP(transfer control protocol/internet protocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)模型因其開放性和易用性在實踐中得到了廣泛的應(yīng)用,TCP/IP協(xié)議棧也成為互聯(lián)網(wǎng)的主流協(xié)議。
TCP/IP模型各個層次分別對應(yīng)于不同的協(xié)議。TCP/IP協(xié)議棧是數(shù)據(jù)通信協(xié)議的集合 ,包含許多協(xié)議。其協(xié)議棧名字來源于其中最主要的兩個協(xié)議TCP(傳輸控制協(xié)議)和IP(網(wǎng)際協(xié)議)。TCP/IP協(xié)議棧負責(zé)確保網(wǎng)絡(luò)設(shè)備之間能夠通信。它是一組規(guī)則,規(guī)定了信息如何在網(wǎng)絡(luò)中傳輸。
TCP/IP模型的層間通信與數(shù)據(jù)封裝
TCP/IP每一層都讓數(shù)據(jù)得以通過網(wǎng)絡(luò)進行傳輸,這些層之間使用PDU(協(xié)議數(shù)據(jù)單元)彼此交換信息,確保網(wǎng)絡(luò)設(shè)備之間能夠通信。
A. 傳輸層數(shù)據(jù)中加入TCP報頭后得到PDU被稱為segment(數(shù)據(jù)段);
B. 數(shù)據(jù)段被傳遞給網(wǎng)絡(luò)層,網(wǎng)絡(luò)層添加IP報頭得到的PDU被稱為packet(數(shù)據(jù)包);
C. 數(shù)據(jù)包被傳遞到數(shù)據(jù)鏈路層,封裝數(shù)據(jù)鏈路層報頭得到的PDU被稱為frame(數(shù)據(jù)幀);
D. 幀被轉(zhuǎn)換為比特,通過網(wǎng)絡(luò)介質(zhì)傳輸。
這種協(xié)議棧向下傳遞數(shù)據(jù),并添加報頭和報尾的過程稱為封裝,數(shù)據(jù)被封裝并通過網(wǎng)絡(luò)傳輸后,接收設(shè)備將刪除添加的信息,并根據(jù)報頭中的信息決定如何將數(shù)據(jù)沿協(xié)議棧上傳給合適的應(yīng)用程序,這個過程稱為解封裝。不同設(shè)備的對等層之間依靠封裝和解封裝來實現(xiàn)相互間的通信。
物理層
物理層功能:
- 規(guī)定介質(zhì)類型、接口類型、信令類型;
- 規(guī)范在終端系統(tǒng)之間激活、維護和關(guān)閉物理鏈路的電氣、機械、流程和功能等方面的要求;
- 規(guī)范電平、數(shù)據(jù)速率、最大傳輸距離和物理接頭等特征。
物理層標準規(guī)定了物理介質(zhì)和用于將設(shè)備與物理介質(zhì)相連的接頭。
如上圖,局域網(wǎng)常用的物理層標準有IEEE指定的以太網(wǎng)標準802.3、令牌總線標準802.4、令牌環(huán)網(wǎng)標準802.5以及美國國家標準組織ANSI的X3T9.5委員會制訂的光纜標準FDDI(fiber distributed data interface,光纖分布式數(shù)據(jù)接口)等。廣域網(wǎng)常用的物理層標準有電子工業(yè)協(xié)會和電信工業(yè)協(xié)會EIA/TIA制定的公共物理層接口標準EIA/TIA-232(即RS-232)、國際電信聯(lián)盟ITU制定的串行線路接口標準V.24和V.35、以及有關(guān)各種數(shù)字接口的物理和電氣特性的標準G.703等。
物理層介質(zhì)和物理層設(shè)備:
物理層介質(zhì):
- 同軸電纜(coaxical cable)
- 雙絞線(twisted pair)
- 光纖(fiber)
- 無線電波(wireless raido)
同軸電纜:
同軸電纜是一種早期使用的傳輸介質(zhì),同軸電纜的標準分為兩種,10BASE2和10BASE5.這兩種標準都支持10Mbps的傳輸速率,最長傳輸距離分別為185米和500米。10BASE5和10BASE2的同軸電纜使用的同軸電纜的直徑分別為9.5mm和5mm,所以前者又稱為粗纜,后者又稱為細纜。一般情況下,10BASE2同軸電纜使用BNC接頭,10BASE5同軸電纜使用N型接頭。目前,10Mbps的傳輸速率早已不能滿足目前企業(yè)網(wǎng)絡(luò)需求,因此同軸電纜在目前企業(yè)網(wǎng)絡(luò)中很少應(yīng)用。
雙絞線:
雙絞線采用了一對互相絕緣的金屬導(dǎo)線互相絞合的方式來抵御一部分外界電磁波干擾。把兩根絕緣的銅導(dǎo)線按一定密度互相絞在一起,可以降低信號干擾的程度,每一根導(dǎo)線在傳輸中輻射的電波會被另一根線上發(fā)出的電波抵消,“雙絞線”的名字也是由此而來的。
與同軸電纜相比雙絞線(twistedpair)具有更低的制造和部署成本,因此在企業(yè)網(wǎng)絡(luò)中被廣泛應(yīng)用。雙絞線可分為屏蔽雙絞線(shieldedtwisted pair,STP)和非屏蔽雙絞線(unshieldedtwisted pair,UTP)。屏蔽雙絞線在雙絞線與外層絕緣封套之間有一個金屬屏蔽層,可以屏蔽電磁干擾。
雙絞線有很多種類型,不同類型的 雙絞線所支持的傳輸速率一般也不相同。例如,3類雙絞線支持10Mbps傳輸速率;5類雙絞線支持100Mbps傳輸速率,滿足快速以太網(wǎng)標準;超5類雙絞線及更高級別的雙絞線支持千兆以太網(wǎng)傳輸。
雙絞線線序:
568A線序:
1-綠白,2-綠,3-橙白,4-藍,5-藍白,6-橙,7-棕白,8-棕
568B線序:
1-橙白,2-橙,3-綠白,4-藍,5-藍白,6綠,7-棕白,8-棕
根據(jù)網(wǎng)線兩端連接網(wǎng)絡(luò)設(shè)備的不同,網(wǎng)線又分為直通線(平行線)和交叉線兩種。
直通線(平行線)就是按照前面介紹的568A標準或568B標準制作(即雙絞線兩端的線序一樣,568A的線序不常用,現(xiàn)主流用的都是568B的線序)
交叉線的一端保持原來的線序,另一端把1和3對調(diào),2和5對調(diào)。
直通線和交叉線的應(yīng)用:
1. 同種類型設(shè)備之間使用交叉線連接,不同類型設(shè)備之間使用直通線連接;
2. 路由器和PC屬于DTE(DataTerminal Equipment,數(shù)據(jù)終端設(shè)備)類型設(shè)備,交換機和HUB數(shù)據(jù)DCE(Data Circuit-terminatingEquipment,數(shù)據(jù)通信設(shè)備)類型設(shè)備。
光纖
雙絞線和同軸電纜傳輸數(shù)據(jù)時使用的是電信號,而光纖傳輸數(shù)據(jù)時使用的是光信號。光纖支持的傳輸速率包括10Mbps,100Mbps,1Gbps,10Gbps,甚至更高。根據(jù)光纖傳輸光信號模式的不同,光纖又可分為單模光纖和多模光纖。單模光纖只能傳輸一種模式的光,不存在模間色散,因此適用于長距離高速傳輸。多模光纖允許不同模式的光在一根光纖上傳輸,由于模間色散較大而導(dǎo)致信號脈沖展寬嚴重,因此多模光纖主要用于局域網(wǎng)中的短距離傳輸。光纖連接器種類喝多,常用的連接器包括ST,FC,SC,LC連接器。
串口電纜
網(wǎng)絡(luò)通信中常常會用到各種各樣的串口電纜。常用的串口電纜標準為RS-232,同時也是推薦的標準。但是RS-232的傳輸速率有限,傳輸距離僅為6米。其他的串口電纜標準可以支持更長的傳輸距離,例如RS-422和RS-485的傳輸距離可達1200米。RS-422和RS-485串口電纜通常使用V.35接頭,這種接頭在上世紀80年代已經(jīng)淘汰,但是現(xiàn)在仍在幀中繼、ATM等傳統(tǒng)網(wǎng)絡(luò)上使用。V.24是RS-232標準的歐洲版。RS-232本身沒有定義接頭標準,常用的接頭類型為DB-9和DB-25。現(xiàn)在,RS-232已逐漸被FireWire、USB等新標準取代,新產(chǎn)品和新設(shè)備已普遍使用USB標準。
沖突域
如圖是一個10BASE5以太網(wǎng),每個主機都是用同一根同軸電纜來與其它主機進行通信,因此,這里的同軸電纜又被稱為共享介質(zhì),相應(yīng)的網(wǎng)絡(luò)被稱為共享介質(zhì)網(wǎng)絡(luò),或簡稱為共享式網(wǎng)絡(luò)。共享式網(wǎng)絡(luò)中,不同的主機同時發(fā)送數(shù)據(jù)時,就會產(chǎn)生信號沖突的問題,解決這一問題的方法一般是采用載波偵聽多路訪問/沖突檢測技術(shù)(carrier sense multiple access/collisiondetection)。
CSMA/CD的基本工作過程如下:
1. 終端不停地檢測共享線路的狀態(tài)。如果線路空閑,則可以發(fā)送數(shù)據(jù);如果線路不空閑,則等待一段時間后繼續(xù)檢測(延時時間由退避算法決定)。
2. 如果有另一個設(shè)備同時發(fā)送數(shù)據(jù),兩個設(shè)備發(fā)送的數(shù)據(jù)會產(chǎn)生沖突。
3. 終端設(shè)備檢測到?jīng)_突之后,馬上停止發(fā)送自己的數(shù)據(jù),并發(fā)送特殊阻塞信息,以強化沖突信號,使線路上其他站點能夠盡早檢測到?jīng)_突。
4. 終端設(shè)備檢測到?jīng)_突后,等待一段時間之后再進行數(shù)據(jù)發(fā)送(延時時間由退避算法決定)。
CSMA/CD的工作原理可簡單總結(jié)為:先聽后發(fā),邊發(fā)邊聽,沖突停發(fā),隨機延遲后重發(fā)。
物理層設(shè)備:中繼器和集線器
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層又分為MAC子層和LLC子層
MACSub-layer:media access controlsub-layer介質(zhì)訪問控制子層
MAC子層負責(zé)指定數(shù)據(jù)如何通過物理線路進行傳輸,并向下與物理層通信,它定義了物理編址、網(wǎng)絡(luò)拓撲、線路規(guī)范、錯誤通知、按序傳遞和流量控制等功能。
LLCSub-layer:logic link control sub-layer邏輯鏈路控制子層
LLC子層負責(zé)識別協(xié)議類型并對數(shù)據(jù)進行封裝以便通過網(wǎng)絡(luò)進行傳輸。LLC子層主要執(zhí)行數(shù)據(jù)鏈路層的大部分功能和網(wǎng)絡(luò)層的部分功能。如幀的收發(fā)功能,在發(fā)送時,幀由發(fā)送的數(shù)據(jù)加上地址和CRC校驗等構(gòu)成,接收時將幀拆開,執(zhí)行地址識別、CRC校驗,并具有幀順序控制、差錯控制、流量控制等功能。此外,它還執(zhí)行數(shù)據(jù)報、虛電路、多路復(fù)用等部分網(wǎng)絡(luò)層的功能。
數(shù)據(jù)鏈路層協(xié)議
數(shù)據(jù)鏈路層協(xié)議規(guī)定了數(shù)據(jù)鏈路層幀的封裝方式。
局域網(wǎng)常用的數(shù)據(jù)鏈路層協(xié)議有IEEE802.2 LLC標準。
廣域網(wǎng)常用的數(shù)據(jù)鏈路層協(xié)議有:
- HDLC(high-level data link control,高級數(shù)據(jù)鏈路控制)
- PPP(point-to-point protocol,點到點協(xié)議)
- FR(frame relay,幀中繼)
數(shù)據(jù)鏈路層-以太網(wǎng)地址(MAC地址)
網(wǎng)絡(luò)設(shè)備的MAC地址是全球唯一的。MAC地址由48個二進制位組成,通常我們用十六進制數(shù)字來表示。其中前6位十六進制數(shù)字由IEEE統(tǒng)一分配給設(shè)備制造商,后6位十六進制數(shù)字由廠商自行分配。
網(wǎng)絡(luò)層
- 功能:在不同的網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)包
- 提供邏輯地址,如果數(shù)據(jù)跨網(wǎng)絡(luò)傳遞,則需要使用邏輯地址來尋址。
- 路由:將數(shù)據(jù)報文從一個網(wǎng)絡(luò)轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)。
- 設(shè)備:路由器、三層交換機
網(wǎng)絡(luò)層協(xié)議
常用網(wǎng)絡(luò)層協(xié)議有:
- IP(Internet Protocol):IP為網(wǎng)絡(luò)層最主要的協(xié)議,其功能即為網(wǎng)絡(luò)層的主要功能,一是提供邏輯編址,二是提供路由功能,三是報文的封裝和解封裝。ICMP、ARP、RARP協(xié)議輔助IP工作。
- ICMP(Internet Control Message Protocol)是一個管理協(xié)議并為IP提供信息服務(wù),ICMP消息承載在IP報文中。
- ARP(Address Resolution Protocol)實現(xiàn)IP地址到硬件地址的動態(tài)映射,即根據(jù)已知的IP地址獲得相應(yīng)的硬件地址。
- RARP(Reverse Address Resolution Protocol)實現(xiàn)硬件地址到IP地址的動態(tài)映射,即根據(jù)已知的硬件地址獲得相應(yīng)的IP地址。
網(wǎng)絡(luò)層地址:網(wǎng)絡(luò)地址在網(wǎng)絡(luò)層唯一標識一臺網(wǎng)絡(luò)設(shè)備。
網(wǎng)絡(luò)地址包含兩部分:網(wǎng)絡(luò)ID+主機ID(下節(jié)主要內(nèi)容)
傳輸層
主要功能:
- 分段上層數(shù)據(jù);
- 建立端到端連接;
- 將數(shù)據(jù)從一端主機傳送到另一端主機;
- 保證數(shù)據(jù)按序、可靠、正確傳輸。
傳輸層協(xié)議:
傳輸層協(xié)議主要包含傳輸控制協(xié)議TCP(transfer control protocol)和用戶數(shù)據(jù)報文協(xié)議UDP(user datagram protocol)
TCP提供面向連接的、可靠的字節(jié)流服務(wù)。面向連接意味著使用TCP協(xié)議作為傳輸層協(xié)議的兩個應(yīng)用之間在相互交換數(shù)據(jù)之前必須建立一個TCP連接。TCP通過確認、校驗、重組等機制為上層應(yīng)用提供可靠的傳輸服務(wù)。但是TCP連接的建立以及確認、校驗等機制都需要耗費大量的工作并且會帶來大量的開銷。
UDP提供簡單的、面向數(shù)據(jù)報的服務(wù)。UDP不保證可靠性,即不保證報文能夠到達目的地。UDP適用于更關(guān)注傳輸效率的應(yīng)用,如SNMP、Radius等,SNMP監(jiān)控網(wǎng)絡(luò)并斷續(xù)發(fā)送告警等消息,如果每次發(fā)送少量信息都需要建立TCP連接,無疑會降低傳輸效率,所以諸如SNMP、Radius等更注重傳輸效率的應(yīng)用程序都會選擇UDP作為傳輸層協(xié)議。另外,UDP還適用于本身具備可靠性機制的應(yīng)用層協(xié)議。
應(yīng)用層功能
- 為用戶提供接口、處理特定的應(yīng)用;
- 數(shù)據(jù)加密、解密、壓縮、解壓縮;
- 定義數(shù)據(jù)表示的標準。
應(yīng)用層協(xié)議
應(yīng)用層有許多協(xié)議,以下協(xié)議可以幫助您使用和管理 TCP/IP 網(wǎng)絡(luò):
- FTP(File TransferProtocol) 文件傳輸協(xié)議。用于傳輸獨立的文件,通常用于交互式用戶會話。
- HTTP(HypertextTransfer Protocol)超文本傳輸協(xié)議。 用于傳輸那些構(gòu)成萬維網(wǎng)上的頁面的文件。
- TELNET :遠程終端訪問。用于傳送具有TELNET控制信息的數(shù)據(jù)。它提供了與終端設(shè)備或終端進程交互的標準方法,支持終端到終端的連接及進程到進程分布式計算的通信。
- SMTP(Simple MessageTransfer Protocol)簡單郵件傳輸協(xié)議 和
- POP3(Post OfficeProtocol)郵局協(xié)議用于發(fā)送和接收郵件。
- DNS(Domain NameServer)是一個域名服務(wù)的協(xié)議,提供域名到IP地址的轉(zhuǎn)換,允許對域名資源進行分散管理。
- TFTP(Trivial FileTransfer Protocol)簡單文件傳輸協(xié)議。設(shè)計用于一般目的的、高吞吐量的文件傳輸。
- RIP(RoutingInformation Protocol)路由器用來在 IP 網(wǎng)絡(luò)上交換路由信息的協(xié)議。
- SNMP(Simple NetworkManagement Protocol)用于收集網(wǎng)絡(luò)管理信息,并在網(wǎng)絡(luò)管理控制臺和網(wǎng)絡(luò)設(shè)備(例如路由器、網(wǎng)橋和服務(wù)器)之間交換網(wǎng)絡(luò)管理信息。
- Radius(RemoteAuthentication Dial In User Service)撥號接入遠端認證協(xié)議完成接入用戶的認證、授權(quán)、計費功能的協(xié)議。
TCP/IP協(xié)議棧的封裝過程
以傳輸層采用TCP或者UPD、網(wǎng)絡(luò)層采用IP、鏈路層采用Ethernet為例,可以看到TCP/IP中報文的封裝過程如上圖所示。用戶數(shù)據(jù)經(jīng)過應(yīng)用層協(xié)議封裝后傳遞給傳輸層,傳輸層封裝TCP頭部,交給網(wǎng)絡(luò)層,網(wǎng)絡(luò)層封裝IP頭部后,再交給數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層封裝Ethernet幀頭和幀尾,交給物理層,物理層以比特流的形式將數(shù)據(jù)發(fā)送到物理線路上。
TCP Segment
TCP協(xié)議概述:
TCP為應(yīng)用程序提供一種面向連接的、可靠的服務(wù)。
TCP的可靠性:
- 面向連接的傳輸
- 最大報文段長度
- 傳輸確認機制
- 首部和數(shù)據(jù)的檢驗和
- 流量控制
TCP首部格式
TCP使用IP作為網(wǎng)絡(luò)層協(xié)議,TCP數(shù)據(jù)段被封裝在一個IP數(shù)據(jù)包內(nèi)。TCP數(shù)據(jù)段由TCP Head(頭部)和TCP Data(數(shù)據(jù))組成。
TCP最多有60個字節(jié)的首部,如果沒有任選字段,正常的長度是20字節(jié)。TCP Head如上圖標識的一些字段組成,這里列出幾個常用的字段。
- 16位源端口號:TCP會為源應(yīng)用程序分配一個源端口號。
- 16位目的端口號:目的應(yīng)用程序的端口號。每個TCP段都包含源和目的端的端口號,用于尋找發(fā)端和收端應(yīng)用進程。這兩個值加上IP首部中的源端IP地址和目的端IP地址可以唯一確定一個TCP連接。
- 32位序列號:用于標識從TCP發(fā)端向TCP收端發(fā)送的數(shù)據(jù)字節(jié)流。
- 32位確認序列號:確認序列號包含發(fā)送確認的一端所期望收到的下一個序號。確認序列號為上次成功收到的數(shù)據(jù)序列號加1。
- 4位首部長度:表示首部占32bit字的數(shù)目。因為TCP首部的最大長度為60字節(jié)。
- 16位窗口大小:表示接收端期望接收的字節(jié),由于該字段為16位,因而窗口大小最大值為65535字節(jié)。
- 16位檢驗和:檢驗和覆蓋了整個TCP報文段,包括TCP首部和TCP數(shù)據(jù)。該值由發(fā)端計算和存儲并由接收端進行驗證。
TCP的三次握手(建立連接)和四次揮手(斷開連接)
TCP連接的建立是一個三次握手的過程。如圖所示:
1、請求端(通常也稱為客戶端)發(fā)送一個SYN段表示客戶期望連接服務(wù)器端口,初始序列號為a。
2、服務(wù)器發(fā)回序列號為b的SYN段作為響應(yīng)。同時設(shè)置確認序號為客戶端的序列號加1(a+1)作為對客戶端的SYN報文的確認。
3、客戶端設(shè)置序列號為服務(wù)器端的序列號加1(b+1)作為對服務(wù)器端SYN報文段的確認。
這三個報文段完成TCP連接的建立。
TCP連接的建立是一個三次握手的過程,而TCP連接的終止則要經(jīng)過四次握手。
如圖所示:
1、請求端(通常也稱為客戶端)想終止連接則發(fā)送一個FIN段,序列號設(shè)置為a。
2、服務(wù)器回應(yīng)一個確認序號為客戶端的序列號加1(a+1)的ACK確認段,作為對客戶端的FIN報文的確認。
3、服務(wù)器端向客戶端發(fā)送一個FIN終止段(設(shè)置序列號為b,確認號為a+1)。
4、客戶端返回一個確認報文(設(shè)置序列號為b+1)作為響應(yīng)。
以上四次交互完成雙方向的連接的關(guān)閉。
TCP滑動窗口機制:
TCP滑動窗口技術(shù)通過動態(tài)改變窗口大小來調(diào)節(jié)兩臺主機間的數(shù)據(jù)傳輸。每個TCP/IP主機支持全雙工數(shù)據(jù)傳輸,因此TCP有兩個滑動窗口:一個用于接收數(shù)據(jù),另一個用于發(fā)送數(shù)據(jù)。TCP使用肯定確認技術(shù),其確認號指的是下一個所期待的字節(jié)。
如圖中所示以數(shù)據(jù)單方向發(fā)送為例,介紹滑動窗口如何實現(xiàn)流量控制。服務(wù)器端向客戶端發(fā)送4個大小為1024字節(jié)的數(shù)據(jù)段,其中發(fā)送端的窗口大小為4096,客戶端到以ACK4097響應(yīng),窗口大小調(diào)整為2048,表明客戶端(即接收端)緩沖區(qū)只能處理2048個字節(jié)的數(shù)據(jù)段。于是發(fā)送端改變其發(fā)送速率。發(fā)送接收端能夠接收的數(shù)據(jù)段大小2048的數(shù)據(jù)段。
UDP協(xié)議概述
- UDP為應(yīng)用程序提供面向無連接的服務(wù)。傳輸數(shù)據(jù)之前源端和目的端不需要建立連接。
- 不需要維持連接狀態(tài),收發(fā)狀態(tài)等,因此服務(wù)器可同時向多個客戶端傳輸相同的消息。
- UDP適用于對傳輸效率要求高的運用。
UDP首部格式
UDP和TCP一樣都使用IP作為網(wǎng)絡(luò)層協(xié)議,TCP數(shù)據(jù)報被封裝在一個IP數(shù)據(jù)包內(nèi)。由于UDP不象TCP一樣提供可靠的傳輸,因此UDP的報文格式相對而言較簡單。
整個UDP首部有如下標識:
- 16位源端口號:為源端應(yīng)用程序分配的一個源端口號。
- 16位目的端口號:目的應(yīng)用程序的端口號
- 16位UDP長度:是指UDP首部和UDP數(shù)據(jù)的字節(jié)長度。該字段的最小值為8。
- 16位UDP檢驗和:該字段提供與TCP檢驗和同樣的功能,只不過在UDP協(xié)議中該字段是可選的。
TCP VS UDP
IP packet
網(wǎng)絡(luò)層收到傳輸層的TCP數(shù)據(jù)段后會再加上網(wǎng)絡(luò)層IP頭部信息。普通的IP頭部固定長度為20個字節(jié)(不包含IP選項字段)。
IP報文頭主要由以下字段組成:報文長度是指頭部占32比特字的個數(shù),包括任何選項。由于它是一個4比特字段,24=16,除掉全0項共有15個有效值比特字段,其中最大值也為15,表示頭部占15個32比特。因此32*15/8=60字節(jié),頭部最長為60字節(jié)。
版本號(Version)字段標明了IP協(xié)議的版本號,目前的協(xié)議版本號為4。下一代IP協(xié)議的版本號為6。8比特的服務(wù)類型(TOS,Type of Service)字段包括一個3比特的優(yōu)先權(quán)字段(COS,Class of Service),4比特TOS字段和1比特未用位。4比特TOS分別代表最小時延、最大吞吐量、最高可靠性和最小費用。總長度(Total length)是整個IP數(shù)據(jù)報長度,包括數(shù)據(jù)部分。由于該字段長16比特,所以IP數(shù)據(jù)報最長可達65535字節(jié)。盡管可以傳送一個長達65535字節(jié)的IP數(shù)據(jù)報,但是大多數(shù)的鏈路層都會對它進行分片。而且,主機也要求不能接收超過576字節(jié)的數(shù)據(jù)報。UDP限制用戶數(shù)據(jù)報長度為512字節(jié),小于576字節(jié)。而事實上現(xiàn)在大多數(shù)的實現(xiàn)(特別是那些支持網(wǎng)絡(luò)文件系統(tǒng)NFS的實現(xiàn))允許超過8192字節(jié)的IP數(shù)據(jù)報。標識符(Identification)字段唯一地標識主機發(fā)送的每一份數(shù)據(jù)包。通常每發(fā)送一份報文它的值就會加1。生存時間(TTL,Time to Live)字段設(shè)置了數(shù)據(jù)包可以經(jīng)過的路由器數(shù)目。一旦經(jīng)過一個路由器,TTL值就會減1,當該字段值為0時,數(shù)據(jù)包將被丟棄。協(xié)議字段確定在數(shù)據(jù)包內(nèi)傳送的上層協(xié)議,和端口號類似,IP協(xié)議用協(xié)議號區(qū)分上層協(xié)議。TCP協(xié)議的協(xié)議號為6,UDP協(xié)議的協(xié)議號為17。報頭校驗和(Head checksum)字段計算IP頭部的校驗和,檢查報文頭部的完整性。源IP地址和目的IP地址字段標識數(shù)據(jù)包的源端設(shè)備和目的端設(shè)備IP地址信息。
Ethernet frame
以太網(wǎng)頭部由三個字段組成:
DMAC:表示目的終端MAC地址。
SMAC:表示源端MAC地址。
LENGTH/TYPE字段:根據(jù)值的不同有不同的含義:
當LENGHT/TYPE > 1500時,代表該數(shù)據(jù)幀的類型(比如上層協(xié)議類型)常見的協(xié)議類型有:
- 0X0800 IP數(shù)據(jù)包
- 0X0806 ARP請求/應(yīng)答報文
- 0X8035 RARP請求/應(yīng)答報文。
當LENGTH/TYPE < 1500時,代表該數(shù)據(jù)幀的長度。
案例分析
如上圖所示,通過例舉出的TELNET協(xié)議的抓包實例,進一步加深對報文封裝的理解。
上圖為AR1使用TELNET協(xié)議遠程登錄AR2進行的TCP三次握手過程。
上圖為數(shù)據(jù)鏈路層封裝。如圖可知使用的是Ethernet II格式封裝。
DMAC為:00e0:fc3b:6792
SMAC為:00e0:fc80:64f3
type:字段為0×0800表明數(shù)據(jù)字段封裝是IP報文。
上圖為網(wǎng)絡(luò)層報文封裝。一個網(wǎng)絡(luò)層IP包是由IP頭部和IP數(shù)據(jù)組成。
上圖表明是一個IPv4的報文
報文頭為20字節(jié)
協(xié)議字段為0×06,表明數(shù)據(jù)封裝的是一個TCP報文。
數(shù)據(jù)的源IP地址為12.12.12.1,目的IP地址為12.12.12.2
上圖為傳輸層數(shù)據(jù)封裝。如圖所示的傳輸層使用的是TCP協(xié)議
源端口號為隨機端口號49895,目的端口號為公認TELNET協(xié)議端口號23
附:
常用默認端口號 網(wǎng)絡(luò)層—數(shù)據(jù)包的包格式里面有個很重要的字段叫做協(xié)議號。比如在傳輸層如果是TCP連接那么在網(wǎng)絡(luò)層IP包里面的協(xié)議號就將會有個值是6如果是UDP的話那個值就是17—傳輸層。
傳輸層—通過接口關(guān)聯(lián)(端口的字段叫做端口)—應(yīng)用層。
用netstat –an 可以查看本機開放的端口號。
代理服務(wù)器常用以下端口:
- HTTP協(xié)議代理服務(wù)器常用端口號80/8080/3128/8081/9080
- SOCKS代理協(xié)議服務(wù)器常用端口號1080
- FTP文件傳輸協(xié)議代理服務(wù)器常用端口號21
- Telnet遠程登錄協(xié)議代理服務(wù)器常用端口23
- HTTP服務(wù)器默認的端口號為80/tcp木馬Executor開放此端口
- HTTPSsecurely transferring web pages服務(wù)器默認的端口號為443/tcp 443/udp
- Telnet不安全的文本傳送默認端口號為23/tcp木馬Tiny Telnet Server所開放的端口
- FTP默認的端口號為21/tcp木馬Doly Trojan、Fore、InvisibleFTP、WebEx、WinCrash和Blade Runner所開放的端口
- TFTPTrivial File Transfer Protocol 默認的端口號為69/udp
- SSH安全登錄、SCP文件傳輸、端口重定向默認的端口號為22/tcp
- SMTP Simple Mail Transfer Protocol (E-mail)默認的端口號為25/tcp木馬Antigen、EmailPassword Sender、Haebu Coceda、ShtrilitzStealth、WinPC、WinSpy都開放這個端口
- POP3 Post Office Protocol (E-mail) 默認的端口號為110/tcp
- WebLogic默認的端口號為7001
- Webshpere應(yīng)用程序默認的端口號為9080
- webshpere管理工具默認的端口號為9090
- JBOSS默認的端口號為8080
- TOMCAT默認的端口號為8080
- WIN2003遠程登陸默認的端口號為3389
- Symantec AV/Filter for MSE ,默認端口號為8081 Oracle 數(shù)據(jù)庫默認的端口號為1521
- ORACLE EMCTL默認的端口號為1158
- Oracle XDB XML 數(shù)據(jù)庫默認的端口號為8080
- Oracle XDB FTP服務(wù)默認的端口號為2100
- MS SQL*SERVER數(shù)據(jù)庫server默認的端口號為1433/tcp 1433/udp
- MS SQL*SERVER數(shù)據(jù)庫monitor默認的端口號為1434/tcp 1434/udp
- QQ默認的端口號為1080/udp
總結(jié)
以上是生活随笔為你收集整理的TCP/IP 协议栈及 OSI 参考模型详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Twig模板语言入门
- 下一篇: 提升Web用户体验的71个设计要点