本章節(jié)主要介紹linxu網(wǎng)絡(luò)模型、以及常用的網(wǎng)絡(luò)協(xié)議分析以太網(wǎng)協(xié)議、IP協(xié)議、TCP協(xié)議、UDP協(xié)議
一、網(wǎng)絡(luò)模型
TCP/IP分層模型的四個(gè)協(xié)議層分別完成以下的功能:
第一層網(wǎng)絡(luò)接口層
網(wǎng)絡(luò)接口層包括用于協(xié)作IP數(shù)據(jù)在已有網(wǎng)絡(luò)介質(zhì)上傳輸?shù)膮f(xié)議。實(shí)際上TCP/IP標(biāo)準(zhǔn)并不定義與ISO數(shù)據(jù)鏈路層和物理層相對應(yīng)的功能。相反,它定義像地址解析協(xié)議(Address Resolution Protocol,ARP)這樣的協(xié)議,提供TCP/IP協(xié)議的數(shù)據(jù)結(jié)構(gòu)和實(shí)際物理硬件之間的接口。
第二層網(wǎng)間層
網(wǎng)間層對應(yīng)于OSI七層參考模型的網(wǎng)絡(luò)層。本層包含IP協(xié)議、RIP協(xié)議(Routing Information Protocol,路由信息協(xié)議),負(fù)責(zé)數(shù)據(jù)的包裝、尋址和路由。同時(shí)還包含網(wǎng)間控制報(bào)文協(xié)議(Internet Control Message Protocol,ICMP)用來提供網(wǎng)絡(luò)診斷信息。
第三層傳輸層
傳輸層對應(yīng)于OSI七層參考模型的傳輸層,它提供兩種端到端的通信服務(wù)。其中TCP協(xié)議(Transmission Control Protocol)提供可靠的數(shù)據(jù)流運(yùn)輸服務(wù),UDP協(xié)議(Use Datagram Protocol)提供不可靠的用戶數(shù)據(jù)報(bào)服務(wù)。
第四層應(yīng)用層
應(yīng)用層對應(yīng)于OSI七層參考模型的應(yīng)用層和表達(dá)層。因特網(wǎng)的應(yīng)用層協(xié)議包括Finger、Whois、FTP(文件傳輸協(xié)議)、Gopher、HTTP(超文本傳輸協(xié)議)、Telent(遠(yuǎn)程終端協(xié)議)、SMTP(簡單郵件傳送協(xié)議)、IRC(因特網(wǎng)中繼會(huì)話)、NNTP(網(wǎng)絡(luò)新聞傳輸協(xié)議)等。
OSI以及TCP/IP協(xié)議對應(yīng)關(guān)系表:
二、協(xié)議分析
網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)上所有設(shè)備(網(wǎng)絡(luò)服務(wù)器、計(jì)算機(jī)及交換機(jī)、路由器、防火墻等)之間通信規(guī)則的集合,它規(guī)定了通信時(shí)信息必須采用的格式和這些格式的意義。大多數(shù)網(wǎng)絡(luò)都采用分層的體系結(jié)構(gòu),每一層都建立在它的下層之上,向它的上一層提供一定的服務(wù),而把如何實(shí)現(xiàn)這一服務(wù)的細(xì)節(jié)對上一層加以屏蔽。
一臺(tái)設(shè)備上的第n層與另一臺(tái)設(shè)備上的第n層進(jìn)行通信的規(guī)則就是第n層協(xié)議。在網(wǎng)絡(luò)的各層中存在著許多協(xié)議,接收方和發(fā)送方同層的協(xié)議必須一致,否則一方將無法識(shí)別另一方發(fā)出的信息。網(wǎng)絡(luò)協(xié)議使網(wǎng)絡(luò)上各種設(shè)備能夠相互交換信息。常見的協(xié)議有:TCP/IP協(xié)議、以太網(wǎng)、UDP協(xié)議等。
2.1協(xié)議架構(gòu)
不同的協(xié)議層對數(shù)據(jù)包有不同的稱謂,在傳輸層叫做段(segment),在網(wǎng)絡(luò)層叫做數(shù)據(jù)報(bào)(datagram),在鏈路層叫做幀(frame)。數(shù)據(jù)封裝成幀后發(fā)到傳輸介質(zhì)上,到達(dá)目的主機(jī)后每層協(xié)議再剝掉相應(yīng)的首部,最后將應(yīng)用層數(shù)據(jù)交給應(yīng)用程序處理。
其實(shí)在鏈路層之下還有物理層,指的是電信號(hào)的傳遞方式,比如現(xiàn)在以太網(wǎng)通用的網(wǎng)線(雙絞線)、早期以太網(wǎng)采用的的同軸電纜(現(xiàn)在主要用于有線電視)、光纖等都屬于物理層的概念。
2.2以太網(wǎng)協(xié)議格式
(1)其中的源地址和目的地址是指網(wǎng)卡的硬件地址(也叫MAC 地址),長度是48 位,是在網(wǎng)卡出廠時(shí)固化的。
(2)注意網(wǎng)卡芯片(例如DM9000A)收到的數(shù)據(jù)就是如上所示的一長串?dāng)?shù)據(jù);其中包括以太網(wǎng)幀頭、IP報(bào)報(bào)頭、傳輸層協(xié)議段頭、應(yīng)用層所需數(shù)據(jù)。
(3)以太網(wǎng)幀中的數(shù)據(jù)長度規(guī)定最小46 字節(jié),最大1500 字節(jié),ARP 和RARP 數(shù)據(jù)包的長度不夠46 字節(jié),要在后面補(bǔ)填充位。最大值1500 稱為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類型有不同的MTU,如果一個(gè)數(shù)據(jù)包從以太網(wǎng)路由到撥號(hào)鏈路上,數(shù)據(jù)包度大于撥號(hào)鏈路的MTU了,則需要對數(shù)據(jù)包進(jìn)行分片fragmentation)。ifconfig 命令的輸出中也有“MTU:1500”。注意,MTU 個(gè)概念指數(shù)據(jù)幀中有效載荷的最大長度,不包括幀首部的長度。
2.3IP協(xié)議格式
版本:
占 4 位,指 IP 協(xié)議的版本目前的 IP 協(xié)議版本號(hào)為 4 (即 IPv4)
首部長度:
占4位,可表示的最大數(shù)值是15個(gè)單位(一個(gè)單位為 4 字節(jié))因此IP 的首部長度的最大值是 60 字節(jié)
區(qū)分服務(wù):
占8位,用來獲得更好的服務(wù),在舊標(biāo)準(zhǔn)中叫做服務(wù)類型,但實(shí)際上一直未被使用過.1998 年這個(gè)字段改名為區(qū)分服務(wù)。只有在使用區(qū)分服務(wù)(DiffServ)時(shí),這個(gè)字段才起作用。一般的情況下都不使用這個(gè)字段
總長度:
占16位,指首部和數(shù)據(jù)之和的長度,單位為字節(jié),因此數(shù)據(jù)報(bào)的最大長度為 65535 字節(jié)??傞L度必須不超過最大傳送單元 MTU
標(biāo)識(shí):
占16位,它是一個(gè)計(jì)數(shù)器,用來產(chǎn)生數(shù)據(jù)報(bào)的標(biāo)識(shí)
標(biāo)志(flag):
占3位,目前只有前兩位有意義
MF
標(biāo)志字段的最低位是 MF (More Fragment)
MF=1 表示后面“還有分片”。MF=0 表示最后一個(gè)分片
DF
標(biāo)志字段中間的一位是 DF (Don‘t Fragment)
只有當(dāng) DF=0 時(shí)才允許分片
片偏移:
占12位,指較長的分組在分片后某片在原分組中的相對位置。片偏移以 8 個(gè)字節(jié)為偏移單位
生存時(shí)間:
占8位,記為TTL (Time To Live) 數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中可通過的路由器數(shù)的最大值,TTL 字段是由發(fā)送端初始設(shè)置一個(gè) 8 bit字段。推薦的初始值由分配數(shù)字 RFC 指定,當(dāng)前值為 64.發(fā)送 ICMP 回顯應(yīng)答時(shí)經(jīng)常把 TTL 設(shè)為最大值 255
協(xié)議:
占8位,指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)使用何種協(xié)議以便目的主機(jī)的IP層將數(shù)據(jù)部分上交給哪個(gè)處理過程, 1表示為 ICMP 協(xié)議, 2表示為 IGMP 協(xié)議, 6表示為 TCP 協(xié)議, 17表示為 UDP 協(xié)議
首部檢驗(yàn)和:
占16位,只檢驗(yàn)數(shù)據(jù)報(bào)的首部不檢驗(yàn)數(shù)據(jù)部分。這里不采用 CRC 檢驗(yàn)碼而采用簡單的計(jì)算方法
源地址和目的地址:
都各占 4 字節(jié),分別記錄源地址和目的地址
2.4TCP協(xié)議格式
1. 源端口和目的端口
各占2字節(jié),端口號(hào)加上IP地址,共同構(gòu)成socket。互相通信的進(jìn)程使用一對socket,包括協(xié)議、源IP、源端口、目的IP、目的端口,這五個(gè)元素唯一確定一個(gè)TCP連接。
2. 序號(hào)
占4字節(jié),是TCP段所發(fā)送的數(shù)據(jù)部分第一個(gè)字節(jié)的序號(hào)。在TCP傳送的數(shù)據(jù)流中,每一個(gè)字節(jié)都有一個(gè)序號(hào)。建立連接時(shí),發(fā)送方將初始序號(hào)(Initial Sequence Number, ISN)填寫到第一個(gè)發(fā)送的TCP段序號(hào)中。
3. 確認(rèn)號(hào)
占4字節(jié),是期望收到對方下次發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào),也就是期望收到的下一個(gè)TCP段的首部中的序號(hào),等于已經(jīng)成功收到的TCP段的最后一個(gè)字節(jié)序號(hào)加1。確認(rèn)號(hào)在ACK標(biāo)志為1時(shí)有意義,除了主動(dòng)發(fā)起連接的第一個(gè)TCP段不設(shè)置ACK標(biāo)志外,其后發(fā)送的TCP段都會(huì)設(shè)置ACK標(biāo)志。
4. 數(shù)據(jù)偏移
占4比特,表示數(shù)據(jù)開始的地方離TCP段的起始處有多遠(yuǎn)。實(shí)際上就是TCP段首部的長度。由于首部長度不固定,因此數(shù)據(jù)偏移字段是必要的。數(shù)據(jù)偏移以32位為長度單位,因此TCP首部的最大長度是60(15*4)個(gè)字節(jié)。
5. 控制位
一共6個(gè),占6比特,設(shè)置為1時(shí)有效。按順序依次為:URG、ACK、PSH、RST、SYN、FIN。
6. 窗口
占2字節(jié),表示報(bào)文段發(fā)送方期望接收的字節(jié)數(shù),可接收的序號(hào)范圍是從接收方的確認(rèn)號(hào)開始到確認(rèn)號(hào)加上窗口大小之間的數(shù)據(jù)。
7. 校驗(yàn)和
校驗(yàn)和包含了偽首部、TCP首部和數(shù)據(jù),校驗(yàn)和是TCP強(qiáng)制要求的,由發(fā)送方計(jì)算,接收方驗(yàn)證。
8. 緊急指針
URG標(biāo)志為1時(shí),緊急指針有效,表示數(shù)據(jù)需要優(yōu)先處理。緊急指針指出在TCP段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào),使接收方可以知道緊急數(shù)據(jù)共有多長。
9. 選項(xiàng)
最常用的選項(xiàng)是最大段大?。?a target="_blank">Maximum Segment Size,MSS),向?qū)Ψ酵ㄖ緳C(jī)可以接收的最大TCP段長度。MSS選項(xiàng)只在建立連接的請求中發(fā)送。
2.5UDP協(xié)議格式
UDP是一種無連接的、不可靠的傳輸層協(xié)議;
在完成進(jìn)程到進(jìn)程的通信中提供了有限的差錯(cuò)檢驗(yàn)功能;
設(shè)計(jì)比較簡單的UDP協(xié)議的目的是希望以最小的開銷來達(dá)到網(wǎng)絡(luò)環(huán)境中的進(jìn)程通信目的;
進(jìn)程發(fā)送的報(bào)文較短,同時(shí)對報(bào)文的可靠性要求不高,那么可以使用UDP協(xié)議。
編輯:hfy
-
IP協(xié)議
+關(guān)注
關(guān)注
3文章
85瀏覽量
22117 -
網(wǎng)絡(luò)協(xié)議
+關(guān)注
關(guān)注
3文章
273瀏覽量
22109 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
70瀏覽量
13142 -
TCP協(xié)議
+關(guān)注
關(guān)注
1文章
101瀏覽量
12463 -
linxu
+關(guān)注
關(guān)注
0文章
7瀏覽量
2678
發(fā)布評論請先 登錄
TCP/IP協(xié)議不止是兩個(gè)協(xié)議

TCP協(xié)議和UDP協(xié)議的區(qū)別有哪些
基于UDP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序
tcp ip協(xié)議_什么是tcp ip協(xié)議

TCP/IP協(xié)議典型的優(yōu)化原則和方法

tcp ip 協(xié)議講座:介紹IP協(xié)議與UDP協(xié)議
tcp和udp協(xié)議的異同

TCP協(xié)議與UDP協(xié)議的區(qū)別和相同點(diǎn)有哪些 一文看懂TCP協(xié)議與UDP協(xié)議的優(yōu)缺點(diǎn)

TCP協(xié)議和UDP協(xié)議的區(qū)別
網(wǎng)絡(luò)通信OSI協(xié)議和TCP/IP協(xié)議
你真的了解TCP/IP協(xié)議嗎?

TCP/IP協(xié)議進(jìn)階課程:5、UDP協(xié)議

評論