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

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