網路協議分析
- ARP協議
- 協議格式
- 作業原理
- TCP/IP協議簇的層次及OSI/RM模型的網路層次及各層的主要作用及各層的主要協議
- TCP/IP協議簇的層次
- 物理層:
- 資料鏈路層
- 網路層
- 傳輸層
- 應用層
- OSI七層參考模型
- ISO/OSI參考模型與TCP/IP協議模型中各層的對應關系
- 面向連接、無連接的最主要區別;哪些協議是面向連接的?哪些協議是無連接的?
- TCP協議首部各欄位含義及作用
- TCP的特點及作業原理
- 作業原理
- TCP的流量控制機制
- IP報文首部資訊各欄位及各欄位的作用
- OSI參考模型中,各層的資料傳輸單元
- ICMP的兩大應用Ping 和 tracert
- ping
- tracert
- UDP協議首部格式及各欄位的位置及作用
- PPP協議包括哪兩個協議
- IPv4特點
- TCP和UDP常用的熟知埠號及常見埠號及對應的協議
- 網路分流器的分類
- 交換式網路中捕獲網路流量的基本方法
- 1.埠鏡像
- 2.集線器接出
- 3.分流器
- 4.ARP快取污染
- 傳輸層可靠性的保障機制
- 以太網幀的最大幀長最大傳輸單元
- 三個私有地址塊
- A類地址
- B類地址
- C類地址
- 什么是網路協議及網路協議在“網路地圖”中的作用
- DHCP協議格式首部,用圖表表示
- 通過在Wireshark的Packet Details面板中對捕獲的IP協議頭資料包進行分析
- 通過在Wireshark的Packet Details面板中對捕獲的ICMP請求與回應資料包進行分析
- 通過在Wireshark的Packet Details面板中對捕獲的HTTP協議資料包進行分析
- 通過在Wireshark的Packet Details面板中對捕獲的DHCP協議各階段資料包進行分析
- DHCP發現階段
- DHCP提供階段
- DHCP的選擇階段
- DHCP確認階段
- 通過在Wireshark的Packet Details面板中對捕獲的DNS協議各階段資料包進行分析
ARP協議
協議格式

作業原理
ARP地址決議協議用于將計算機的網路IP地址轉化為物理MAC地址,ARP協議的基本功能
就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行,
在每臺安裝有TCP/IP協議的電腦里都有一個ARP快取表,表里的IP地址與MAC地址是一一對應的
程序

TCP/IP協議簇的層次及OSI/RM模型的網路層次及各層的主要作用及各層的主要協議
TCP/IP協議簇的層次
物理層:
為傳輸資料所需要的物理鏈路創建、維持、拆除,提供物理條件保證傳輸程序資料的安全性
資料鏈路層
主要提供鏈路控制(同步,異步,二進制,HDLC),差錯控制(重發機制),流量控制(視窗機制)
網路層
提供阻塞控制,路由選擇(靜態路由,動態路由)等
主要協議
IP:IP協議提供不可靠、無連接的傳送服務
ARP:地址決議協議,基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行,以太網中的資料幀從一個主機到達網內的另一臺主機是根據48位的以太網地址(硬體地址)來確定介面的,而不是根據32位的IP地址,內核必須知道目的端的硬體地址才能發送資料,P2P的連接是不需要ARP的,
RARP:反向地址轉換協議,允許局域網的物理機器從網關服務器的 ARP 表或者快取上請求其 IP 地址,局域網網關路由器中存有一個表以映射MAC和與其對應的 IP 地址,當設定一臺新的機器時,其 RARP 客戶機程式需要向路由器上的 RARP 服務器請求相應的 IP 地址,假設在路由表中已經設定了一個記錄,RARP 服務器將會回傳 IP 地址給機器,
IGMP:組播協議包括組成員管理協議和組播路由協議,組成員管理協議用于管理組播組成員的加入和離開,組播路由協議負責在路由器之間互動資訊來建立組播樹,IGMP屬于前者,是組播路由器用來維護組播組成員資訊的協議,運行于主機和和組播路由器之間,IGMP 資訊封裝在IP報文中,其IP的協議號為2,
ICMP:Internet控制報文協議,用于在IP主機、路由器之間傳遞控制訊息,控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息,這些控制訊息雖然并不傳輸用戶資料,但是對于用戶資料的傳遞起著重要的作用,
BGP :邊界網關協議,處理像因特網大小的網路和不相關路由域間的多路連接,
RIP:路由資訊協議,是一種分布式的基于距離矢量的路由選擇協議,
傳輸層
提供分割與重組資料,按埠號尋址,連接管理差錯控制和流量控制,糾錯的功能,傳輸層要向會話層提供通信服務的可靠性,避免報文的出錯、丟失、延遲時間紊亂、重復、亂序等差錯,
協議
TCP: 一種面向連接的、可靠的、基于位元組流的傳輸層通信協議,
UDP: 用戶資料報協議,一種無連接的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務,
RTP: 實時傳輸協議,為資料提供了具有實時特征的端對端傳送服務,如在組播或單播網路服務下的互動式視頻音頻或模擬資料,
SCTP: 一個面向連接的流控制傳輸協議,它可以在兩個端點之間提供穩定、有序的資料傳遞服務,SCTP可以看做是TCP協議的改進,它繼承了TCP較為完善的擁塞控制并改進TCP的一些不足:
. SCTP是多宿主連接,而TCP是單地址連接,
.一個TCP連接只能支持一個流,一個SCTP連接可以支持多個流,
.SCTP有更好的安全性,
應用層
HTTP:超文本傳輸協議,基于TCP,是用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少,
SMTP:簡單郵件傳輸協議,是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式,
SNMP:簡單網路管理協議,由一組網路管理的標準組成,包含一個應用層協議、資料庫模型和一組資源物件,
FTP:檔案傳輸協議,用于Internet上的控制檔案的雙向傳輸,同時也是一個應用程式,
Telnet:是Internet遠程登陸服務的標準協議和主要方式,為用戶提供了在本地計算機上完成遠程主機作業的能力,在終端使用者的電腦上使用telnet程式,用它連接到服務器,
SSH:安全外殼協議,為建立在應用層和傳輸層基礎上的安全協議,SSH 是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議,
NFS:網路檔案系統,是FreeBSD支持的檔案系統中的一種,允許網路中的計算機之間通過TCP/IP網路共享資源,
OSI七層參考模型
物理層:在物理媒體上傳輸原始的資料位元流,
資料鏈路層:將資料分成一個個資料幀,以資料幀為單位傳輸,有應有答,遇錯重發,
網路層:將資料分成一定長度的分組,將分組穿過通信子網,從信源選擇路徑后傳到信宿,
傳輸層:提供不具體網路的高效、經濟、透明的端到端資料傳輸服務,
會話層:行程間的對話也稱為會話,會話層管理不同主機上各行程間的對話,
表示層: 為應用層行程提供格式化的表示和轉換資料服務,
應用層:提供應用程式訪問OSI環境的手段
ISO/OSI參考模型與TCP/IP協議模型中各層的對應關系


面向連接、無連接的最主要區別;哪些協議是面向連接的?哪些協議是無連接的?
面向連接和無連接指的都是協議,兩者的區別與承載資料的物理介質無關
它們的本質區別在于,對無連接協議來說,每個分組的處理都獨立于所有其他分組,而對面向連接的協議來說,協議實作則維護了與后繼分組有關的狀態資訊,
如TCP就是面向連接的協議而UDP則是無連接TCP中的IP協議又是無連接的
TCP協議首部各欄位含義及作用


32位序號
序號用來標識從TCP發端向TCP收端發送的資料位元組流,它表示在這個報文段中的第一個資料位元組,如果將位元組流看作在兩個應用程式間的單向流動,則TCP用序號對每個位元組進行計數,序號是32bit的無符號數,序號到達2^32-1后又從0開始,
32位確認序號
確認序號包含發送確認的一端所期望收到的下一個序號,因此,確認序號應當是上次已成功收到資料位元組序號加1,只有ACK標志為1時確認序號欄位才有效,
4位首部長度
首部長度給出首部中32bit字的數目,需要這個值是因為任選欄位的長度是可變的,
例如首部長度4位位元是0011,則表示該TCP首部長度為3*8=24位元組,
6個標志位元
URG緊急指標(urgentpointer)有效
ACK確認序號有效,
PSH接收方應該盡快將這個報文段交給應用層,
RST重建連接,
SYN同步序號用來發起一個連接,這個標志和下一個標志將在第18章介紹,
FIN發端完成發送任務,
16位視窗大小
TCP的流量控制由連接的每一端通過宣告的視窗大小來提供,視窗大小為位元組數,起始于確認序號欄位指明的值,這個值是接收端正期望接收的位元組,視窗大小是一個16bit欄位,因而視窗大小最大為65535位元組,在24.4節我們將看到新的視窗刻度選項,它允許這個值按比例變化以提供更大的視窗,
16位檢驗和
接收端根據此檢驗和再計算判斷該TCP包是否正確(傳輸程序中是否出錯),
TCP的特點及作業原理
特點
有連接
可靠的
面向位元組流
具有接受和發送緩沖區
作業原理
tcp的三次握手
在第一步中,客戶端向服務端提出連接請求,這時TCP SYN標志置位,客戶端告訴服務端序列號區域合法,需要檢查,客戶端在TCP報頭的序列號區中插入自己的ISN,服務端收到該TCP分段后,在第二步以自己的ISN回應(SYN標志置位),同時確認收到客戶端的第一個TCP分段(ACK標志置位),在第三步中,客戶端確認收到服務端的ISN(ACK標志置位),到此為止建立完整的TCP連接,開始全雙工模式的資料傳輸程序,

TCP的流量控制機制
接受端處理資料的速度是有限的,如果發送端法的太快,導致接受端的緩沖區被打滿,這個時候若發送端繼續向接受端發送資料,接受端這時已經沒有能力接受這些資料了,繼而引起丟包和丟包重傳等一系列連鎖反應,
這時TCP就引入了一種機制:流量控制機制(流控制)-----根據接受端的處理能力,來決定發送端的發送速度,
具體操作:
接收端知己向發送端主機通知自己可以接收資料的大小,于是發送端會發送不超過這個限度的資料,該大小限度被稱作視窗大小,
在TCP首部,有個欄位專門用來通知視窗大小,接收端主機將自己緩沖區可以接受的資料大小放入這個欄位中通知發給發送端,這個欄位值越大,說明網路的吞吐量越高,
接受端的這個緩沖區一旦面臨資料溢位時,視窗大小的值也會隨之被設定為一個更小的值通知給發送端,從而控制資料發送量,也就是說,發送端主機會根據接收端主機的指示,對發送資料的量進行控制,這就形成了一個完整的TCP流控制
如圖:當接收端收到從3001號開始的書記段后接識訓沖區變滿,不得不暫停接收資料,之后,在收到發送視窗更新通知后通信才得以繼續進行,如果這個視窗的更新通知在傳送途中丟失,可能會導致無法繼續通信,為避免此類問題的發生,發送端主機會時不時的發送一個叫做視窗探測的資料段,此資料僅含一個位元組以獲取最新的視窗大小資訊,
TCP首部40位元組選項中還包含了一個視窗擴大因子M, 實際視窗大小是 視窗欄位的值左移 M 位;
IP報文首部資訊各欄位及各欄位的作用
1)目前的協議版本號是4,因此IP有時也稱作IPv4
2)首部長度指的是首部占32 bit字的數目,包括任何選項,由于它是一個4位元欄位,因此首部最長為60個位元組,
3)服務型別(TOS)欄位包括一個3bit的優先權子欄位(現在已被忽略),4bit的TOS子欄位和1bit未用位但必須置0,4bit的TO S分別代表:最小時延、最大吞吐量、最高可靠性和最小費用,4bit中只能置其中1bit,如果所有4bit均為0,那么就意味著是一般服務,
下圖列出了對不同應用建議的TO S值,
4)總長度欄位是指整個IP資料報的長度,以位元組為單位,利用首部長度欄位和總長度欄位,就可以知道IP資料報中資料內容的起始位置和長度,由于該欄位長16位元,所以IP資料報最長可達65535位元組,但是一般不會這么長,
5)標識欄位唯一地標識主機發送的每一份資料報,通常每發送一份報文它的值就會加1,
6)3位標志和13位偏移欄位用于分片程序,對于發送端發送的每份IP資料報來說,其標識欄位都包含一個唯一值,該值在資料報分片時被復制到每個片中(我們現在已經看到這個欄位的用途),標志欄位用其中一個位元來表示“更多的片”,除了最后一片外,其他每個組成資料報的片都要把該位元置1,片偏移欄位指的是該片偏移原始資料報開始處的位置,另外,當資料報被分片后,每個片的總長度值要改為該片的長度值,
標識欄位代表劃分每個分組屬于的同一個資料報,等待重新組裝,
偏于欄位代表該分組位于總ip資料報偏移的長度(獲取位置)
分片:物理網路層一般要限制每次發送資料幀的最大長度,任何時候IP層接收到一份要發送的IP資料報時,它要判斷向本地哪個介面發送資料(選路),并查詢該介面獲得其MTU,IP把MTU與資料報長度進行比較,如果需要則進行分片,分片可以發生在原始發送端主機上,也可以發生在中間路由器上,
當IP資料報被分片后,每一片都成為一個分組,具有自己的IP首部,并在選擇路由時與其他分組獨立,這樣,當資料報的這些片到達目的端時有可能會失序,但是在IP首部中有足夠的資訊讓接收端能正確組裝這些資料報片,
IP資料報 是指IP層端到端的傳輸單元(在分片之前和重新組裝之后),
分組 是指在IP層和鏈路層之間傳送的資料單元,一個分組可以是一個完整的IP資料報,也可以是IP資料報的一個分片,

7)TTL(time-to-live)生存時間欄位設定了資料報可以經過的最多路由器數,它指定了資料報的生存時間,TTL的初始值由源主機設定(通常為32或64),一旦經過一個處理它的路由器,它的值就減去1,當該欄位的值為0時,資料報就被丟棄,并發送ICMP報文通知源主機,
8)協議欄位 表達了它如何被IP用來對資料報進行分用,根據它可以識別是哪個協議向IP傳送資料,
比如:
ICMP:1
IGMP:2
TCP:6
UDP:17
EIGRP:88
OSPF:89
9)首部檢驗和欄位是根據IP首部計算的檢驗和碼,它不對首部后面的資料進行計算,ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆寫首部和資料檢驗和碼,
10)每一份IP資料報都包含源IP地址和目的IP地址,
11)最后一個欄位是任選項,是資料報中的一個可變長的可選資訊,目前,這些任選項定義如下:
? 安全和處理限制(用于軍事領域,詳細內容參見RFC 1108[Kent 1991])
? 記錄路徑(讓每個路由器都記下它的IP地址,見7.3節)
? 時間戳(讓每個路由器都記下它的IP地址和時間,見7.4節)
? 寬松的源站選路(為資料報指定一系列必須經過的IP地址,見8.5節)
? 嚴格的源站選路(與寬松的源站選路類似,但是要求只能經過指定的這些地址,不能經過其他的地址),
這些選項很少被使用,并非所有的主機和路由器都支持這些選項,
選項欄位一直都是以32 bit作為界限,在必要的時候插入值為0的填充位元組,這樣就保證IP首部始終是32 bit的整數倍(這是首部長度欄位所要求的),
OSI參考模型中,各層的資料傳輸單元
1、物理bai層 位元(bit)
2、資料du鏈路層zhi: 幀(frame)
3、網路層: 資料報(packet)
4、運輸層: 資料段(segment)
5、會話層、表示層、應用層:一般就稱呼為訊息
ICMP的兩大應用Ping 和 tracert
ping
ICMP的一個典型應用是Ping, Ping是檢測網路連通性的常用工具,同時也能夠收集其他相關資訊,用戶可以在Ping命令中指定丌同引數,如ICMP報文長度、 發送的ICMP報文個數、 等待回復回應的超時時間等,設備根據配置的引數來構造并發送ICMP報文,迚行Ping測驗,
tracert
ICMP的另一個典型應用是Tracert,Tracert基于報文頭中的TTL值來逐跳跟蹤報文的轉發路徑, 為了跟蹤到達某特定目的地址的路徑,源端首先將報文的TTL值設定為1, 該報文到達***個節點后,TTL超時,于是該節點向源端發送TTL超時訊息,訊息中攜帶時間戳, 然后源端將報文的TTL值設定為2,報文到達第二個節點后超時,該節點同樣回傳TTL超時訊息,以此類推,直到報文到達目的地, 這樣,源端根據回傳的報文中的資訊可以跟蹤到報文經過的每一個節點,并根據時間戳資訊計算往返時間, Tracert是檢測網路丟包及時延的有效手段,同時可以幫助管理員發現網路中的路由環路,
UDP協議首部格式及各欄位的位置及作用
16為源埠號
埠號,大家應該要了解,埠號是傳輸層中比較重要的概念,我們來結合UDP頭部來解釋一下,
埠號:在傳輸層中,是負責知道訊息發送到某臺主機上的某個行程重要的標記,知道埠號,才知道發送給哪個行程,一個行程可以系結多個埠號,但是一個埠號只能有一個行程(一般情況,fork),埠總共65536個埠號,為什么是這么多呢?還是因為UDP或者TCP頭部中給埠號的位元組數為兩個位元組,那么兩個位元組表示的最大范圍就是2的16次方65536,在這些埠號中,其中0 ~ 1023是知名埠號,是專門為http、ftp、ssh等知名的應用層協議使用的埠號,1024 ~ 65535是自己可以使用的,但是嚴格的來說,埠號可以隨意用,但是定義知名埠號主要是為了大家同一的標準,可以更為方便,
列舉一些常見的知名協議服務器使用的埠號:
ssh 22
ftp 21
telnet 23
http 80
https 443
SMTP 25
源埠號就是發送方主機上的埠號,為什么要寫上自己的埠號呢?只寫個對方埠號也好啊!其實是在通信程序中,往往是雙方都要發送訊息,所以要寫上自己的埠號,讓對方能知道自己的發送的行程,
16位目的埠號
目的埠號,是標識著要發送給對方的那個行程,沒什么可說的
16位UDP長度
這個比較重要,UDP的長度為分配了16個位元位,那么這樣說,每次發送的最大長度為65536個位元組,既64K,而這64K中包含了頭部協議資訊,在今天互聯網飛速發展中,64K對我們來說是非常小的,那么我們在發送資料的時候,要是發送的資料超過64K,就得手動進行分包,進行發送,
16位UDP校驗和
在資料的發送程序中有可能會收到電磁等外界因素適原有的信號發生變化,所以采用了校驗和的方式來進行資料的校驗,發生丟包不可怕,可怕的是傳過來的是錯誤資訊,這樣要是在銀行系統中,那么就很恐怖了,在16為校驗中采用的CRC校驗,想了解,自行百度
PPP協議包括哪兩個協議
LCP 鏈路控制協議
NCP 網路控制協議
IPv4特點
1)IPv4地址bai空間少于40億個,du實際可以使zhi用的更少,
(2)IPv4不區分網路終端dao主機和終端設備,每臺電腦都可以作為主機和路由器,路由協議管理路由表記錄,常用的路由協議有路由資訊協議、開放最短路徑協議、邊界網關協議等,
(3)IPv4獨立于特定的網路硬體,可以運行在局域網、廣域網、互聯網中,網路地址分配方案唯一,設備有唯一的地址,
(4)IPv4缺乏對安全性的支持,無法實作網路實名制,網路中節點配置很復雜,不能滿足用戶“即插即用”的需求
TCP和UDP常用的熟知埠號及常見埠號及對應的協議
20、21/FTP(檔案傳輸協議)
22/SSH(安全shell協議)
23/Telent(遠程登錄協議,明文傳遞)
53/DNS(域名系統)
25/SMTP(簡單郵件傳輸協議)
110/POP3(郵局協議3代)
79/tcp finger Finger
69/udp TFTP Trivial File Transfer Protocol
80/tcp HTTP 超文本傳送協議 (WWW)
88/tcp Kerberos Authenticating agent
113/tcp ident old identification server system
119/tcp NNTP used for usenet newsgroups
220/tcp IMAP3協議
443/tcp HTTPS協議
網路分流器的分類
網路分流器的型別主要有四種,一種是千兆的網路分流器,還有一種是10G的網路分流器,一種40G的網路分流器,最后一種就是100G的網路分流器
交換式網路中捕獲網路流量的基本方法
1.埠鏡像
埠鏡像是交換式網路中捕獲一個目標設備所有網路通信的最簡單的方法,翻譯成白話文就是埠鏡像就是在一個局域網中,捕獲別人電腦上接收和發送資料包的最簡單的方法,為了使用埠鏡像,你必須能夠通過命令列或者web管理界面來訪問你局域網的交換機,并且,該交換機必須支持埠鏡像這個功能,并且,還有一個空閑埠,方便你的嗅探器連接這個埠
要啟用埠鏡像,你需要發出一個命令,來強制交換機將一個埠(假設是埠B)上的所有通信,都額外復制一份到另一個埠(假設是埠A)上,然后你的嗅探器連接到A埠上,這樣,B電腦的所有通信,都可以被嗅探到,設定埠鏡像的具體方法,取決于不同的交換機廠商,需要我們閱讀交換機說明書
啟用埠鏡像的時候,還需要注意流量,假設交換機有100個埠,我把99個全雙工埠,都鏡像到1個埠上,那么這一個埠上的物理承受能力應該是扛不住這么多流量沖擊的,這會導致資料報丟失,如果資料包丟失,那么嗅探的準確性也就降低了,得不償失
在有持續網路流量安全監控需求的常經理,埠鏡像雖然簡單,但是很不穩定,所以,一會我會介紹分流器
2.集線器接出
這個方式,因為集線器很少見了,并且這個方式,當我第一次見到這個方式的時候,心中第一反應就是:“這種方式也叫方式???”,那么這種方式是什么呢,我大概闡述一下吧
(1)找到目標設備所連接的交換機,并將目標設備的網線從交換機上拔掉
(2)將目標設備插到我自己的集線器上
(3)將我的嗅探器插到我自己的集線器上
(4)將我自己的集線器插到交換機上
此處一萬只動物
3.分流器
分流器也是個硬體設備,分兩種,一種是聚集的,一種是非聚集的,不想過多介紹了,網上很多
4.ARP快取污染
傳輸層可靠性的保障機制
TCP保證可靠性:
(1)校驗和
(2)面向連接
(3)序號和確認序號
(4)確認應答機制
(5)超時重傳機制
(6)流量控制
(7)擁塞避免
TCP提高效率:
(1)滑動視窗
(2)快重傳
(3)延遲應答
(4)捎帶應答
以太網幀的最大幀長最大傳輸單元
最小幀長64
最大1500
最大傳輸單元(MTU)1500個位元組
三個私有地址塊
A類地址的第一組數bai字為1~126,注意,數字0和 127不作為A類地址,數字127保留給內部回送函式,而數字0則表示該地址是本地宿主機,不能傳送,
B類地址的第一組數字為128~191,
C類地址的第一組數字為192~223,
A類地址
A類地址的表示范圍為:0.0.0.0~126.255.255.255,默認網路掩碼為:255.0.0.0;A類地址分配給規模特別大的網路使用,A類網路用第一組數字表示網路本身的地址,后面三組數字作為連接于網路上的主機的地址,分配給具有大量主機(直接個人用戶)而局域網路個數較少的大型網路,例如IBM公司的網路,
B類地址
B類地址的表示范圍為:128.0.0.0~191.255.255.255,默認網路掩碼為:255.255.0.0;B類地址分配給一般的中型網路,B類網路用第一、二組數字表示網路的地址,后面兩組數字代表網路上的主機地址,
C類地址
C類地址的表示范圍為:192.0.0.0~223.255.255.255,默認網路掩碼為:255.255.255.0;C類地址分配給小型網路,如一般的局域網和校園網,它可連接的主機數量是最少的,采用把所屬的用戶分為若干的網段進行管理,C類網路用前三組數字表示網路的地址,最后一組數字作為網路上的主機地址,
什么是網路協議及網路協議在“網路地圖”中的作用
為了進行網路中的資料交換而建立的規則、標準或約定稱為網路協議,主要由語法、語意和同步(指事件實作中順序的詳細說明),通信協議有層次特性,大多數 的網路組織都按層或級的方式來組織,在下一層的基礎上建立上一層,每一層的目的都是向其上一層提供一定的服務,而把如何實作這一服務的細節對上一層加以屏 蔽,網路協議確定交換資料格式以及有關的同步問題,
DHCP協議格式首部,用圖表表示

op: 報文的操作型別,分為請求報文和回應報文,1:為請求報文,2為回應報文
htype: DHCP客戶端的硬體地址型別,1代表以太網
hlen: DHCP客戶端的硬體地址長度,Ethernet為6
hops: DHCP報文經過的DHCP中繼的數目,默認為0.報文每次經過一個DHCP中繼,該欄位就會加1
xid: 客戶端發起一次請求的亂數,
secs: DHCP客戶端開始DHCP請求后所經過的時間,目前尚未使用,固定為0
flags: DHCP服務器回應報文是采用單播還是廣播方式發送,只使用第0位元位,0表示單播,1表示廣播,其余位元為保留
ciaddr: DHCP客戶端的IP地址
yiaddr: DHCP服務端分配給客戶端的IP地址
siaddr: DHCP服務端的IP地址
giaddr: DHCP客戶端發出請求報文后經過的第一個DHCP中繼的IP地址,也就是網管IP地址
chaddr: DHCP客戶端的硬體地址,也就是MAC地址
sname: 服務器的名稱
file: DHCP服務器為DHCP客戶端指定的啟動組態檔名稱及路徑資訊
options: 可選變長選項欄位,包含報文的型別,有效租期,DNS服務器的IP地址等
通過在Wireshark的Packet Details面板中對捕獲的IP協議頭資料包進行分析

通過在Wireshark的Packet Details面板中對捕獲的ICMP請求與回應資料包進行分析
請求
應答

這兩個報文的type不一樣,8代表請求,0代表應答;code都為0,表示為回顯應答;標示符和序列號都是一樣的,表示這兩個報文是配對的
通過在Wireshark的Packet Details面板中對捕獲的HTTP協議資料包進行分析
1、Host:gitlab.hudoumiao.com
說明了服務器主機名是gitlab.hudoumiao.com
2、Connection:keep-alive
說明了客戶端與服務器之間的TCP通信連接是持久鏈接
3、Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, * / *; q=0.8
說明了客戶端所能接收的媒體型別,且q值代表了優先級
4、User-Agent:…………
指明了發起請求的應用程式名稱
5、Accept-Encoding:gzip,deflate,sdch
說明了客戶端所能接收的編碼型別有gzip,deflate和sdch
6、Accept-Language:zh-CN,zh;q=0.8
說明了客戶端所能接收的語言,q值說明了語言型別的優先級
7、Cookie:…………………
用戶的標簽,用來服務器識別請求的用戶,在這里有名值
回應報文分析:
該回應報文由起始行、首部和主體三部分組成,起始行中的版本號是HTTP/1.1,狀態碼是200,原因短語是OK,接下來是十五個首部
1、Server:nginx
標識了服務器軟體是ngix
2、Date:Sat,15 Aug 2015 02:31:08 GMT
說明了回應報文產生的時間
3、Content-Type: text/html; charset=utf-8
說明了主體的媒體型別是text/html,字符集是utf-8
4、Transfer-Encoding: chunked
說明了回應報文采用了分塊編碼的傳輸編碼,這也是首部中沒有Content-Length首部的原因
5、Connection: keep-alive
說明了客戶端與服務器之間通信是持久連接
6、Status: 200 OK
說明了對請求報文的回應狀態
7、X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: IE=edge
上面的四個首部是擴展首部
8、Cache-Control: max-age=0, private, must-revalidate
該首部說明了快取狀態,max-age=0說明了服務器請求快取不要快取檔案,即每次訪問的時候都進行重繪,must-revalidate進一步說明了快取沒有跟服務器進行驗證的情況下,不能提供這個物件的陳舊副本
9、Set-Cookie:………………………
服務器貼到客戶端的標簽,該首部中有強制的名值組合,還有path屬性,還有該cookie的生存周期
10、X-Request-Id: 76494f45-4f41-4222-be4e-db9dfa0828b5
X-Runtime: 0.470905
這兩個首部也是擴展首部
11、Content-Encoding: gzip
說明了主體的編碼型別為gzip
通過在Wireshark的Packet Details面板中對捕獲的DHCP協議各階段資料包進行分析
DHCP發現階段
對應的是94幀,可以明顯的看到Info資訊中顯示的是: DHCP Discove
客戶端目前是沒有IP地址的,發現階段是以廣播包的形式發送的,也就是網路上的DHCP服務器都是可以收到此資料包的,

DHCP提供階段
對應的是99幀可以明顯的看到Info資訊中顯示的是: offer
在發現階段分析了Option的詳細請求資訊,那當然在提供階段就需要分析對應的服務器分配給DHCP客戶端的配置資訊

這時候DHCP客戶端已經收到DHCP服務器的資料包了,當然如果有多臺DHCP服務器,就必須回復DHCP服務器確認用那臺DHCP服務器,
DHCP的選擇階段
DHCP服務器需要對提供的給自己IP的DHCP服務器做出相應的回應,對應的資料幀是100幀

DHCP確認階段
(對應的是分析101幀)

從上圖可以看出服務器分配客戶端的IP地址為192.168.1.100. 關于服務器分配給客戶端的IP的詳細資訊,需要詳細分析option欄位

通過在Wireshark的Packet Details面板中對捕獲的DNS協議各階段資料包進行分析
① 實際上發送和回傳的可并不只一次,客戶端每發送一條查詢訊息,都會得到DNS服務器的回應,我們可以看到有個十六進制的號,使得發送和回應一一對應,

② 我們首先來查看0x54d1發送包,和其它包一樣,最前面是14個位元組為以太網幀頭,然后是20位元組的IP幀頭,這里就不再描述了, 這里看到的是8個位元組的用戶資料報文協議(指定了源和目標埠),30位元組的域名決議查詢,
Transaction ID(交易口):這個數值的作用是將一個域名查詢訊息和對應的回應訊息對應起來,
query/response(查詢/回應):每個DNS資料包都會被標記為查詢訊息或者回應訊息,具體哪一類取決于訊息中包含的內容,
Flags(標記):每個查詢和回應訊息都有不同的標記位置位,
Response(回應):標識該訊息為查詢訊息還是回應訊息,
Opcode(操作碼):這個標記決定了查詢訊息的型別,Opcode范圍是0~15,
Opcode 值 描 述
0 標準查詢
1 逆向查詢
2 服務器狀態請求
3 未分配
4 通告
5 更新
6~15 未分配
Truncated(截斷):這個標記決定了如果資料包過大(大于512位元組)時,是否對資料包進行截斷,
Recursion desired(期望遞回):如果要所查的記錄不存在,那么客戶端發送的訊息就會從一臺DNS服務器到另一臺DNS服務器這樣執行一個遞回的搜索流程,
Type(型別):這個欄位顯示的是查詢的型別,
類 型 描 述
A 主機地址
NS 域名服務器
MX 郵件互動
SOA 起始授權機構
PTR 指標記錄
AAAA IPv6 地址
AXFR 全量傳輸
IXFR 增量傳輸

③ 再看0x54d1回應包,8個位元組的用戶資料報文協議,46位元組的域名決議回應,比查詢包多16位元組,也就是查詢反饋內容,
Reply code(應答碼):這個欄位的值用來表示是否出現了錯誤,以及錯誤的型別,
Code (代碼) 描 述
0 沒有錯誤
1 格式錯誤
2 服務器故障
3 域名錯誤
4 未使用
5 拒絕
Questions(問題):表示資料包中包含的查詢數量,
Answers RRs(回答):表示對查詢訊息所作回應的數量,
Authority RRs(授權):表示回應訊息中授權資源記錄的數量,
Additional RRs(額外):表示回應訊息中額外資源記錄的數量,
Answer(回答):對查詢訊息所作的回應,回應訊息也可以有很多個,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230995.html
標籤:其他
上一篇:編程路上的忙忙碌碌
