1。地址解析
地址解析(Address Resolution)就是將計(jì)算機(jī)中的協(xié)議地址翻譯成物理地址(或稱MAC地址)。地址解析只能在本地網(wǎng)進(jìn)行。
地址解析技術(shù)分為如下幾種:
(1)表查詢(Table-Lookup)。該方法適合廣域網(wǎng)(WAN),通過建立映射數(shù)組(協(xié)議地址--物理地址)的方法查詢。
(2)相近形式計(jì)算(Close Form-Compute)。該方法適用于可以自行配置的網(wǎng)絡(luò),IP地址和物理地址相互對(duì)應(yīng),例如: 220.123.5.1 –>xxx1
220.123.5.2->xxx2
可通過這種方法得到物理地址:物理地址=協(xié)議地址&0xFF。
(3)信息交換(Message-Exchange)。該方法適用于局域網(wǎng)(LAN),是基于分布式的處理方式,即主機(jī)發(fā)送一個(gè)解析請(qǐng)求,一廣播的形式發(fā)出,并等待網(wǎng)絡(luò)各個(gè)主機(jī)的響應(yīng)。
2。數(shù)據(jù)包的封裝和分用
當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時(shí),數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個(gè)通過每一層,直到當(dāng)作一串比特流傳送如網(wǎng)絡(luò)。其中每一層收到數(shù)據(jù)都要增加一些首部信息(有時(shí)還要增加尾部信息)。
以太網(wǎng)的幀的長度必須在46~1518字節(jié)之間。
IP在首部中存入一個(gè)長度為8bit的數(shù)據(jù),稱作協(xié)議域。1表示ICMP,2表示IGMP,6表示TCP,17表示UDP。
3。以太網(wǎng)數(shù)據(jù)鏈路層幀結(jié)構(gòu)
|前導(dǎo)符 |起始幀分界符 |目標(biāo)地址 |源地址 |長度/類型 |數(shù)據(jù) | CRC
|7byte |1byte |6byte |6byte |2byte |46--1500byte | 4byte
IEEE802.3MAC幀結(jié)構(gòu)
前導(dǎo)符(Preamble):其中1和0交替出現(xiàn),警告接收系統(tǒng)即將有數(shù)據(jù)幀到來,同時(shí)同步系統(tǒng)時(shí)序。
起始幀分界符(SFD):一個(gè)字節(jié),為10101011,標(biāo)志幀的開始。SFD通知接收方后面所有的內(nèi)容都是數(shù)據(jù)。
目標(biāo)地址(Destination Address):包含數(shù)據(jù)幀的目的物理地址。
源地址(Source Address):包含轉(zhuǎn)發(fā)數(shù)據(jù)幀的最后一個(gè)設(shè)備的物理地址。
PDU的長度/類型(Length/Type):該字段指出PDU的長度或封裝的數(shù)據(jù)類型。當(dāng)PDU的長度固定式,這個(gè)字段用來表示數(shù)據(jù)類型,如IP(0x0800)、ARP(0x0806)、RARP(0x8035)等。
數(shù)據(jù):保存高層協(xié)議的數(shù)據(jù)(PDU)。
CRC:IEEE802.3MAC幀的最后一個(gè)字段是檢錯(cuò)信息,通常為CRC-32。
4。IP
IP復(fù)雜在TCP/IP提供數(shù)據(jù)報(bào)服務(wù),進(jìn)行數(shù)據(jù)的封裝及產(chǎn)生協(xié)議頭。由于以太網(wǎng)幀的大小要受限制,并且不同的幀可能由不同的網(wǎng)絡(luò)路徑傳送,因此IP協(xié)議需要將較大的數(shù)據(jù)報(bào)文分割開來,并且在目的主機(jī)處按正確的順序組合。但是,IP協(xié)議不負(fù)責(zé)包的校驗(yàn),它是一種無連接,不可靠的服務(wù)。如果發(fā)生錯(cuò)誤,IP協(xié)議則丟棄該數(shù)據(jù)報(bào),然后發(fā)送ICMP消息報(bào)給信源端。此外,IP協(xié)議還有負(fù)責(zé)尋找路由,因此還需要配套一個(gè)確定的IP地址。
IP數(shù)據(jù)報(bào)時(shí)Internet上數(shù)據(jù)的通信的基本單元,這些數(shù)據(jù)不超過1000字節(jié)才。
IP數(shù)據(jù)報(bào)格式
*版本(VERS):指定IP協(xié)議的版本號(hào),對(duì)于IPv4來說,版本為4。
*報(bào)頭長度(HLENS):指定IP報(bào)頭的長度,以字為單位,范圍5-15個(gè)word。
*服務(wù)類型(ToS):表示數(shù)據(jù)報(bào)的服務(wù)類型,即處理的優(yōu)先級(jí),包括延時(shí),吞吐量,可靠性或代價(jià)。
*報(bào)文總長度(Total Length):IP數(shù)據(jù)報(bào)最大為65535字節(jié),網(wǎng)絡(luò)主機(jī)可以使用數(shù)據(jù)報(bào)長度來確定一個(gè)數(shù)據(jù)報(bào)的結(jié)束和下一個(gè)數(shù)據(jù)報(bào)的開始;當(dāng)傳送長度超過65535字節(jié)的IP數(shù)據(jù)報(bào)時(shí),大多數(shù)的鏈路層都會(huì)分片。主機(jī)一般要求接收的數(shù)據(jù)報(bào)不超過576字節(jié)。
*標(biāo)識(shí)符(ID):該16位標(biāo)識(shí)符由產(chǎn)生它的主機(jī)唯一指定給數(shù)據(jù)報(bào),分段后的數(shù)據(jù)報(bào)享同一個(gè)數(shù)據(jù)報(bào)共享一個(gè)數(shù)據(jù)報(bào)ID。
*標(biāo)識(shí)(FLG):包括3個(gè)1位標(biāo)志,標(biāo)識(shí)報(bào)文是否允許被分段和是否可以被分段。
第一位保留并設(shè)為0。
第二位0表示報(bào)文可以被分段,1表示報(bào)文不能被分段。
第三位只有在第一位為0時(shí)才有意義,這一位標(biāo)識(shí)次報(bào)文是否是這一系列分段的最后一個(gè),0表示報(bào)文時(shí)最后一個(gè)。
*分段偏移量(Fragment Offset):指定分段在整個(gè)數(shù)據(jù)報(bào)中的位置。
*生命周期(TTL):代表數(shù)據(jù)報(bào)被丟棄前能夠穿越的最大主機(jī)跳數(shù)。TTL的初始值由源主機(jī)設(shè)置,其理論最大值為255,每經(jīng)過一個(gè)處理節(jié)點(diǎn)減1。當(dāng)該字段為0時(shí),報(bào)文就被認(rèn)為是不可轉(zhuǎn)發(fā),之后產(chǎn)生一個(gè)ICMP報(bào)文發(fā)回源主機(jī),并丟棄不可轉(zhuǎn)發(fā)的報(bào)文。
*協(xié)議(Protocol):主要標(biāo)識(shí)上層協(xié)議的類型,一般是指TCP協(xié)議、UDP協(xié)議、ICMP協(xié)議和IGMP協(xié)議。
*頭校驗(yàn)和(Header Checksum):目的是保證頭的正確性,目的機(jī)和網(wǎng)絡(luò)中每個(gè)網(wǎng)關(guān)都要重新計(jì)算報(bào)頭的校驗(yàn)和,如果計(jì)算出校驗(yàn)和與報(bào)文所含的校驗(yàn)和不同,則丟棄該報(bào)文。
*源IP地址(Source IP Address):指明數(shù)據(jù)報(bào)的發(fā)送地址。
*目的IP地址(Destination IP Address):指明數(shù)據(jù)報(bào)接收方的地址。
*選項(xiàng)(Options):在IPv4中,主要用于網(wǎng)絡(luò)測(cè)試和調(diào)試。
*填充區(qū)(Padding):為了保證IP頭長度是32為整數(shù)倍,要填充額外的0。
IP協(xié)議時(shí)TCP和UDP的基礎(chǔ)。ICMP和IGMP是IP層協(xié)議的附屬協(xié)議。
5。TCP(Transmission Control Protocol)
TCP提供一個(gè)完全可靠地、面向連接的、全雙工的流傳輸服務(wù)。
TCP段格式
*源端口:16bit源端口指的是發(fā)起通信的端口號(hào)。
*目的端口:16bit目的端口指的是傳輸目的地的端口號(hào)。
*序號(hào):該序號(hào)是32bit的無符號(hào)數(shù),到達(dá)2^32-1后又從0開始,表示在這個(gè)報(bào)文段中的第一個(gè)數(shù)據(jù)字節(jié)的編號(hào)。利用序號(hào)段可以糾正傳輸導(dǎo)致的亂序,從而重組分段報(bào)文。
*確認(rèn)序號(hào):TCP使用32確認(rèn)號(hào)標(biāo)識(shí)下一個(gè)希望收到的報(bào)文的第一個(gè)字節(jié)的編號(hào)。因此,確認(rèn)號(hào)應(yīng)當(dāng)是上一次成功接收到的數(shù)據(jù)字節(jié)序號(hào)加1。
*首部長度:4bit,該字段以字為單位計(jì)量TCP頭長度。
*保留:6bit恒為0,將來定義新的用途。
*URG:緊急指針有效。
*ACK:確認(rèn)序號(hào)有效。
*PSH:接收方應(yīng)該盡快將這個(gè)報(bào)文交給應(yīng)用層。
*RST:重置連接。
*SYN:同步序號(hào),用來發(fā)起一個(gè)連接。
*FIN:發(fā)送端完成發(fā)送任務(wù)。
*窗口:該16bit字段表明接收端聲明可以接收的TCP數(shù)據(jù)段大小,最大為65535字節(jié)。
*校驗(yàn)和:該16bit由發(fā)送端計(jì)算存儲(chǔ),由接收端進(jìn)行驗(yàn)證。驗(yàn)證整個(gè)TCP,包括首部和數(shù)據(jù)。
*緊急指針:只有當(dāng)URG置1時(shí)才有效。緊急指針是一個(gè)正的偏移量,和序號(hào)字段中的值相加表示緊急數(shù)據(jù)最后一個(gè)字節(jié)的序號(hào)。用于發(fā)送緊急數(shù)據(jù)、
*選項(xiàng):常見可選字段是最長報(bào)文大小。
*數(shù)據(jù):TCP數(shù)據(jù)部分是可選的。在建立和釋放連接時(shí),雙方交換的只有TCP首部。
6。TCP建立連接的3次握手
(1)請(qǐng)求端(客戶)發(fā)送一個(gè)SYN段,指明客戶打算連接的服務(wù)器的端口以及SEQ(初始序號(hào))。
(2)服務(wù)器發(fā)回包含服務(wù)器的SEQ(初始序號(hào))的SYN報(bào)文段作為應(yīng)答。同時(shí)序號(hào)(ISN)加1,用以對(duì)客戶的SYN報(bào)文段進(jìn)行確認(rèn)。
(3)客戶將確認(rèn)服務(wù)器的ISN加1,用以對(duì)服務(wù)器的SYN報(bào)文段進(jìn)行確認(rèn)。

7。UDP
UDP數(shù)據(jù)報(bào)首部
8。ARP/RARP
ARP(Address Resolution Protocol,地址解析協(xié)議) ARP中規(guī)定了兩種信息的基本類型: 請(qǐng)求(Request)和應(yīng)答(Response)。
*操作類型:該16bit字段用以區(qū)分協(xié)議的四種操作類型,即ARP請(qǐng)求(值為1),ARP應(yīng)答(值為2),
RARP請(qǐng)求(值為3),RARP請(qǐng)求(值為4)。
9。ICMP
ICMP全稱為Internet Control Protocol,即Internet控制報(bào)文協(xié)議。ICMP是IP的附屬協(xié)議,IP用它來與其他主機(jī)或路由器交換錯(cuò)誤報(bào)文和其他一些網(wǎng)絡(luò)情況。
在ICMP包中攜帶了控制信息和故障恢復(fù)信息,這些信息有以下幾個(gè)方面:
*源抑制:這是一個(gè)流控制信息,由接收方向源主機(jī)發(fā)送該消息來請(qǐng)求源主機(jī)停止發(fā)送數(shù)據(jù)。當(dāng)接收主機(jī)在其緩沖區(qū)快滿時(shí)發(fā)送該信息。
*路徑重定向:由網(wǎng)關(guān)向請(qǐng)求其提供服務(wù)的主機(jī)發(fā)送,用于通知該主機(jī)在網(wǎng)絡(luò)中還有其他距離目的主機(jī)更近的網(wǎng)關(guān)。
*主機(jī)不可達(dá):在網(wǎng)絡(luò)狀況不佳的網(wǎng)絡(luò)中傳送數(shù)據(jù)報(bào)時(shí),發(fā)生故障的網(wǎng)關(guān)或者系統(tǒng)會(huì)發(fā)送此信息。
*應(yīng)答請(qǐng)求與回復(fù):用Ping來檢測(cè)目標(biāo)是否可達(dá)。