網絡基礎知識-網絡協議


操作系統基礎

   操作系統:(Operating System,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必須在操作系統的支持下才能運行。

注:計算機(硬件)->操作系統->應用軟件

  具體鏈接如下:http://www.cnblogs.com/wj-1314/p/8302269.html

網絡通信原理

——互聯網的本質就是一系列的網絡協議

  一台硬設有了操作系統,然后裝上軟件你就可以正常使用了,然而你也只能自己使用,
每個人都擁有一台自己的機器,然而彼此孤立,那么如何把每個人都聯系在一起呢?
  如果把計算機看成分布於世界各地的人,那么連接兩台計算機之間的internet實際上
就是一系列統一的標准,這些標准稱之為互聯網協議,互聯網的本質就是一系列的協議,
總稱為‘互聯網協議’(Internet Protocol Suite).

    互聯網協議的功能:定義計算機如何接入internet,以及接入internet的計算機通信的標准。

  

——網絡層次划分

  為了使不同計算機廠家生產的計算機能夠相互通信,以便在更大的范圍內建立計算機網絡,
國際標准化組織(ISO)在1978年提出了“開放系統互聯參考模型”,即著名的OSI/RM模型
(Open System Interconnection/Reference Model)。它將計算機網絡體系結構的通信
協議划分為七層,自下而上依次為:物理層(Physics Layer)、數據鏈路層(Data Link Layer)、
網絡層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、
表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成數據傳送服務,
上面三層面向用戶。

  

  除了標准的OSI七層模型以外,常見的網絡層次划分還有TCP/IP四層協議以及TCP/IP五層協議,它們之間的對應關系如下圖所示:
 
 

——OSI七層協議

互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層

TCP/IP協議毫無疑問是互聯網的基礎協議,沒有它就根本不可能上網,任何和互聯網有關的操作都離不開TCP/IP協議。不管是OSI七層模型還是TCP/IP的四層、五層模型,每一層中都要自己的專屬協議,完成自己相應的工作以及與上下層級之間進行溝通。由於OSI七層模型為網絡的標准層次划分,所以我們以OSI七層模型為例從下向上進行一一介紹。

 

——tcp/ip五層模型

    我們將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,
搞清楚了每層的主要協議就理解了整個互聯網通信的原理。

    首先,用戶感知到的只是最上面一層應用層,自上而下每層都依賴於下一層,
所以我們從最下一層開始切入,比較好理解每層都運行特定的協議,越往上越靠近用戶,越往下越靠近硬件。    

  

(1)物理層

物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0

激活、維持、關閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。
該層為上層協議提供了一個傳輸數據的可靠的物理媒體。

簡單的說,物理層確保原始的數據可在各種物理媒體上傳輸。
物理層記住兩個重要的設備名稱,中繼器(Repeater,也叫放大器)和集線器。

  

(2)數據鏈路層

    數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什么意思

    數據鏈路層的功能:定義了電信號的分組方式

     數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層
來的數據可靠地傳輸到相鄰節點的目標機網絡層。為達到這一目的,數據鏈路必須具備一系列相應
的功能,主要有:如何將數據組合成數據塊,在數據鏈路層中稱這種數據塊為幀(frame),幀是
數據鏈路層的傳送單位;如何控制幀在物理信道上的傳輸,包括如何處理傳輸差錯,如何調節發送
速率以使與接收方相匹配;以及在兩個網絡實體之間提供數據鏈路通路的建立、維持和釋放的管理。
數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址尋址、數據的成幀
、流量控制、數據的檢錯、重發等。

  

  有關數據鏈路層的重要知識點:

  1> 數據鏈路層為網絡層提供可靠的數據傳輸;

  2> 基本數據單位為幀;

  3> 主要的協議:以太網協議;

  4> 兩個重要設備名稱:網橋和交換機。

  以太網協議:

早期的時候各個公司都有自己的分組方式,后來形成了同意的標准,即以太網協議ethernet

ethernet規定
    一組電信號構成一個數據包,叫做幀
    每一數據幀分成:報頭head和數據data兩部分

head包括(固定18個字節)

  • 發送者/源地址,6個字節
  • 接收者/目標地址,6個字節
  • 數據類型,6個字節

data包括(最短46字節,最長1500字節)

  • 數據包的具體內容

head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送

mac地址:

  head中包括的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡,發送端和接收端的地址便是指網卡的地址,即mac地址

  mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進制,通常由12位16進制數表示(前六位是廠商編號,后六位是流水線號)

廣播:

  有了mac地址,同一網絡內的兩台主機就可以通信了(一台主機通過arp協議獲取另外一台主機的mac地址)

  ethernet采用最原始的方式,廣播的方式進行通信,即計算機通信基本靠吼

 

(3)網絡層

網絡層的目的是實現兩個端系統之間的數據透明傳送,具體功能包括尋址和路由選擇、連接的建立、保持和終止等。它提供的服務使傳輸層不需要了解網絡中的數據傳輸和交換技術。如果您想用盡量少的詞來記住網絡層,那就是“路徑選擇、路由及邏輯尋址”。

  網絡層中涉及眾多的協議,其中包括最重要的協議,也是TCP/IP的核心協議——IP協議。IP協議非常簡單,僅僅提供不可靠、無連接的傳送服務。IP協議的主要功能有:無連接數據報傳輸、數據報路由選擇和差錯控制。與IP協議配套使用實現其功能的還有地址解析協議ARP、逆地址解析協議RARP、因特網報文協議ICMP、因特網組管理協議IGMP。具體的協議我們會在接下來的部分進行總結,有關網絡層的重點為:

 1> 網絡層負責對子網間的數據包進行路由選擇。此外,網絡層還可以實現擁塞控制、網際互連等功能;

 2> 基本數據單位為IP數據報;

 3> 包含的主要協議:
  IP協議(Internet Protocol,因特網互聯協議);
  ICMP協議(Internet Control Message Protocol,因特網控制報文協議);
  ARP協議(Address Resolution Protocol,地址解析協議);
  RARP協議(Reverse Address Resolution Protocol,逆地址解析協議)。

 4> 重要的設備:路由器。

  

4)傳輸層(Transport Layer)

  第一個端到端,即主機到主機的層次。傳輸層負責將上層數據分段並提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。

  傳輸層的任務是根據通信子網的特性,最佳的利用網絡資源,為兩個端系統的會話層之間,提供建立、維護和取消傳輸連接的功能,負責端到端的可靠數據傳輸。在這一層,信息傳送的協議數據單元稱為段或報文。
  網絡層只是根據網絡地址將源結點發出的數據包傳送到目的結點,而傳輸層則負責將數據可靠地傳送到相應的端口。
  有關網絡層的重點:
  1> 傳輸層負責將上層數據分段並提供端到端的、可靠的或不可靠的傳輸以及端到端的
差錯控制和流量控制問題;

  2> 包含的主要協議:TCP協議(Transmission Control Protocol,傳輸控制協議)、
UDP協議(User Datagram Protocol,用戶數據報協議);

  3> 重要設備:網關。

 

5)會話層

會話層管理主機之間的會話進程,即負責建立、管理、終止進程之間的會話。
會話層還利用在數據中插入校驗點來實現數據的同步。

  

(6)表示層

 表示層對上層數據或信息進行變換以保證一個主機應用層信息可以被另一個主機的應用程序理解。
表示層的數據轉換包括數據的加密、壓縮、格式轉換等。

  

(7)應用層

應用層由來:用戶使用的都是應用程序,均工作於應用層,互聯網是開發的,
大家都可以開發自己的應用程序,數據多種多樣,必須規定好數據的組織形式 
應用層功能:規定應用程序的數據格式。

  

例:TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那么,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了”應用層”。

會話層、表示層和應用層重點:

1> 數據傳輸基本單位為報文;

2> 包含的主要協議:FTP(文件傳送協議)、Telnet(遠程登錄協議)、DNS(域名解析協議)、
SMTP(郵件傳送協議),POP3協議(郵局協議),HTTP協議(Hyper Text Transfer Protocol)。

  

網絡通信實現

想實現網絡通信,每台主機需具備四要素

本機的IP地址

子網掩碼

網關的IP地址

DNS的IP地址

獲取這四要素分兩種方式

1.靜態獲取      即手動配置

2.動態獲取     通過dhcp獲取

  

以太網頭 ip頭 udp頭 dhcp數據包

 

 

  (1)最前面的”以太網標頭”,設置發出方(本機)的MAC地址和接收方(DHCP服務器)的MAC地址。前者就是本機網卡的MAC地址,后者這時不知道,就填入一個廣播地址:FF-FF-FF-FF-FF-FF。

 

  (2)后面的”IP標頭”,設置發出方的IP地址和接收方的IP地址。這時,對於這兩者,本機都不知道。於是,發出方的IP地址就設為0.0.0.0,接收方的IP地址設為255.255.255.255。

 

  (3)最后的”UDP標頭”,設置發出方的端口和接收方的端口。這一部分是DHCP協議規定好的,發出方是68端口,接收方是67端口。

 

  這個數據包構造完成后,就可以發出了。以太網是廣播發送,同一個子網絡的每台計算機都收到了這個包。因為接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是發給誰的,所以每台收到這個包的計算機,還必須分析這個包的IP地址,才能確定是不是發給自己的。當看到發出方IP地址是0.0.0.0,接收方是255.255.255.255,於是DHCP服務器知道”這個包是發給我的”,而其他計算機就可以丟棄這個包。

 

接下來,DHCP服務器讀出這個包的數據內容,分配好IP地址,發送回去一個”DHCP響應”數據包。這個響應包的結構也是類似的,以太網標頭的MAC地址是雙方的網卡地址,IP標頭的IP地址是DHCP服務器的IP地址(發出方)和255.255.255.255(接收方),UDP標頭的端口是67(發出方)和68(接收方),分配給請求端的IP地址和本網絡的具體參數則包含在Data部分。

 

新加入的計算機收到這個響應包,於是就知道了自己的IP地址、子網掩碼、網關地址、DNS服務器等等參數

網絡通信流程

1.本機獲取

本機的IP地址:192.168.1.100

子網掩碼:255.255.255.0

網關的IP地址:192.168.1.1

DNS的IP地址:8.8.8.8

  

2.NAT協議

NAT網絡地址轉換(Network Address Translation)屬接入廣域網(WAN)技術,是一種將私有(保留)地址轉化為合法IP地址的轉換技術,它被廣泛應用於各種類型Internet接入方式和各種類型的網絡中。原因很簡單,NAT不僅完美地解決了lP地址不足的問題,而且還能夠有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機。

3.dns協議(基於udp協議)

DNS是域名系統(DomainNameSystem)的縮寫,該系統用於命名組織到域層次結構中的計算機和網絡服務,可以簡單地理解為將URL轉換為IP地址。域名是由圓點分開一串單詞或縮寫組成的,每一個域名都對應一個惟一的IP地址,在Internet上域名與IP地址之間是一一對應的,DNS就是進行域名解析的服務器。DNS命名用於Internet等TCP/IP網絡中,通過用戶友好的名稱查找計算機和服務。

13台根dns:

A.root-servers.net198.41.0.4美國
B.root-servers.net192.228.79.201美國(另支持IPv6)
C.root-servers.net192.33.4.12法國
D.root-servers.net128.8.10.90美國
E.root-servers.net192.203.230.10美國
F.root-servers.net192.5.5.241美國(另支持IPv6)
G.root-servers.net192.112.36.4美國
H.root-servers.net128.63.2.53美國(另支持IPv6)
I.root-servers.net192.36.148.17瑞典
J.root-servers.net192.58.128.30美國
K.root-servers.net193.0.14.129英國(另支持IPv6)
L.root-servers.net198.32.64.12美國
M.root-servers.net202.12.27.33日本(另支持IPv6)

  

 

域名定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

  頂級域名:以.com,.net,.org,.cn等等屬於國際頂級域名,根據目前的國際互聯網域名體系,國際頂級域名分為兩類:類別頂級域名(gTLD)和地理頂級域名(ccTLD)兩種。類別頂級域名是                    以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等結尾的域名,均由國外公司負責管理。地理頂級域名是以國家或地區代碼為結尾的域名,如"CN"代表中國,"UK"代表英國。地理頂級域名一般由各個國家或地區負責管理。

  二級域名:二級域名是以頂級域名為基礎的地理域名,比喻中國的二級域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
  一般來說,二級域名是域名的一條記錄,比如alidiedie.com是一個域名,www.alidiedie.com是其中比較常用的記錄,一般默認是用這個,但是類似*.alidiedie.com的域名全部稱作是alidiedie.com的二級

4.HTTP協議

GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …

  

我們假定這個部分的長度為4960字節,它會被嵌在TCP數據包之中。

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標准。

  HTTP 協議包括哪些請求?

  GET:請求讀取由URL所標志的信息。
  POST:給服務器添加信息(如注釋)。
  PUT:在給定的URL下存儲一個文檔。
  DELETE:刪除給定的URL所標志的資源。

  

  HTTP 中, POST  GET 的區別

  1)Get是從服務器上獲取數據,Post是向服務器傳送數據。

  2)Get是把參數數據隊列加到提交表單的Action屬性所指向的URL中,
值和表單內各個字段一一對應,在URL中可以看到。

  3)Get傳送的數據量小,不能大於2KB;Post傳送的數據量較大,一般被默認為不受限制。

  4)根據HTTP規范,GET用於信息獲取,而且應該是安全的和冪等的。

  I. 所謂 安全的 意味着該操作用於獲取信息而非修改信息。換句話說,
GET請求一般不應產生副作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢一樣,
不會修改,增加數據,不會影響資源的狀態。
  II. 冪等 的意味着對同一URL的多個請求應該返回同樣的結果。

  

5 TCP協議

 

TCP數據包需要設置端口,接收方(Google)的HTTP端口默認是80,發送方(本機)的端口是一個隨機生成的1024-65535之間的整數,假定為51775。

TCP數據包的標頭長度為20字節,加上嵌入HTTP的數據包,總長度變為4980字節。

 TCP/IP協議是Internet最基本的協議、Internet國際互聯網絡的基礎,由網絡層的IP協議和傳輸層的TCP協議組成。通俗而言:TCP負責發現傳輸的問題,一有問題就發出信號,要求重新傳輸,直到所有數據安全正確地傳輸到目的地。而IP是給因特網的每一台聯網設備規定一個地址。

  IP層接收由更低層(網絡接口層例如以太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP並沒有做任何事情來確認數據包是否按順序發送的或者有沒有被破壞,IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。

   TCP是面向連接的通信協議,通過三次握手建立連接,通訊完成時要拆除連接,由於TCP是面向連接的所以只能用於端到端的通訊。TCP提供的是一種可靠的數據流服務,采用“帶重傳的肯定確認”技術來實現傳輸的可靠性。TCP還采用一種稱為“滑動窗口”的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。

  TCP報文首部格式:

  TCP協議的三次握手和四次揮手:

三次握手:
    client發送請求建立通道;
    server收到請求並同意,同時也發送請求建通道;
    client收到請求並同意,建立完成

四次揮手:
    client發送請求斷開通道;
    server收到請求並同意,同時還回復client上一條消息;
    server也發送請求斷開通道;
    client受到消息結束

  

 

  注:seq:"sequance"序列號;ack:"acknowledge"確認號;SYN:"synchronize"請求同步標志;;ACK:"acknowledge"確認標志"FIN:"Finally"結束標志。

  TCP連接建立過程:首先Client端發送連接請求報文,Server段接受連接后回復ACK報文,並為這次連接分配資源。Client端接收到ACK報文后也向Server段發生ACK報文,並分配資源,這樣TCP連接就建立了。

  TCP連接斷開過程:假設Client端發起中斷連接請求,也就是發送FIN報文。Server端接到FIN報文后,意思是說"我Client端沒有數據要發給你了",但是如果你還有數據沒有發送完成,則不必急着關閉Socket,可以繼續發送數據。所以你先發送ACK,"告訴Client端,你的請求我收到了,但是我還沒准備好,請繼續你等我的消息"。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定數據已發送完成,則向Client端發送FIN報文,"告訴Client端,好了,我這邊數據發完了,准備好關閉連接了"。Client端收到FIN報文后,"就知道可以關閉連接了,但是他還是不相信網絡,怕Server端不知道要關閉,所以發送ACK后進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳。“,Server端收到ACK后,"就知道可以斷開連接了"。Client端等待了2MSL后依然沒有收到回復,則證明Server端已正常關閉,那好,我Client端也可以關閉連接了。Ok,TCP連接就這樣關閉了!

  為什么要三次揮手?

舉個打電話的例子: 
A:你好,我是A,你能聽得見我說話嗎      A->SYN_SEND
B:聽到了,我是B,你能聽到我說話嗎?  應答與請求同時發出 B->SYN_RCVD | A->ESTABLISHED
A:嗯,聽到了                                      B->ESTABLISHED

建立連接就ok了,三次聯系

  

  

 

  在只有兩次“握手”的情形下,假設Client想跟Server建立連接,但是卻因為中途連接請求的數據報丟失了,故Client端不得不重新發送一遍;這個時候Server端僅收到一個連接請求,因此可以正常的建立連接。但是,有時候Client端重新發送請求不是因為數據報丟失了,而是有可能數據傳輸過程因為網絡並發量很大在某結點被阻塞了,這種情形下Server端將先后收到2次請求,並持續等待兩個Client請求向他發送數據...問題就在這里,Cient端實際上只有一次請求,而Server端卻有2個響應,極端的情況可能由於Client端多次重新發送請求數據而導致Server端最后建立了N多個響應在等待,因而造成極大的資源浪費!所以,“三次握手”很有必要!

  為什么要四次揮手?

A:“喂,我不說了。”A->FIN_WAIT1

B:“我知道了。等下,上一句還沒說完。Balabala…..”B->CLOSE_WAIT | A->FIN_WAIT2

B:”好了,說完了,我也不說了。”B->LAST_ACK

A:”我知道了。”A->TIME_WAIT | B->CLOSED

A等待2MSL,保證B收到了消息,否則重說一次”我知道了”,A->CLOSED

  

  試想一下,假如現在你是客戶端你想斷開跟Server的所有連接該怎么做?第一步,你自己先停止向Server端發送數據,並等待Server的回復。但事情還沒有完,雖然你自身不往Server發送數據了,但是因為你們之前已經建立好平等的連接了,所以此時他也有主動權向你發送數據;故Server端還得終止主動向你發送數據,並等待你的確認。其實,說白了就是保證雙方的一個合約的完整執行!

  使用TCP的協議:FTP(文件傳輸協議)、Telnet(遠程登錄協議)、SMTP(簡單郵件傳輸協議)、POP3(和SMTP相對,用於接收郵件)、HTTP協議等。

6 IP協議

然后,TCP數據包再嵌入IP數據包。IP數據包需要設置雙方的IP地址,這是已知的,發送方是192.168.1.100(本機),接收方是172.194.72.105(Google)。

IP數據包的標頭長度為20字節,加上嵌入的TCP數據包,總長度變為5000字節。

 

7 以太網協議

最后,IP數據包嵌入以太網數據包。以太網數據包需要設置雙方的MAC地址,發送方為本機的網卡MAC地址,接收方為網關192.168.1.1的MAC地址(通過ARP協議得到)。

以太網數據包的數據部分,最大長度為1500字節,而現在的IP數據包長度為5000字節。因此,IP數據包必須分割成四個包。因為每個包都有自己的IP標頭(20字節),所以四個包的IP數據包的長度分別為1500、1500、1500、560。

8.DHCP協議

DHCP動態主機設置協議(Dynamic Host Configuration Protocol)是一個局域網的網絡協議,使用UDP協議工作,主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作為對所有計算機作中央管理的手段。

9.UDP協議

UDP用戶數據報協議,是面向無連接的通訊協議,UDP數據包括目的端口號和源端口號信息,由於通訊不需要連接,所以可以實現廣播發送。UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程序員編程驗證。

  UDP與TCP位於同一層,但它不管數據包的順序、錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。
  每個UDP報文分UDP報頭和UDP數據區兩部分。報頭由四個16位長(2字節)字段組成,分別說明該報文的源端口、目的端口、報文長度以及校驗值。UDP報頭由4個域組成,其中每個域各占用2個字節,具體如下:
  (1)源端口號;
  (2)目標端口號;
  (3)數據報長度;
  (4)校驗值。
  使用UDP協議包括:TFTP(簡單文件傳輸協議)、SNMP(簡單網絡管理協議)、DNS(域名解析協議)、NFS、BOOTP。
  TCP  UDP 的區別:TCP是面向連接的,可靠的字節流服務;UDP是面向無連接的,不可靠的數據報服務。

10.路由選擇協議

常見的路由選擇協議有:RIP協議、OSPF協議。

  RIP協議 :底層是貝爾曼福特算法,它選擇路由的度量標准(metric)是跳數,最大跳數是15跳,如果大於15跳,它就會丟棄數據包。

   OSPF 協議 :Open Shortest Path First開放式最短路徑優先,底層是迪傑斯特拉算法,是鏈路狀態路由選擇協議,它選擇路由的度量標准是帶寬,延遲。

11.ARP/RARP協議

地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。主機發送信息時將包含目標IP地址的ARP請求廣播到網絡上的所有主機,並接收返回消息,以此確定目標的物理地址;收到返回消息后將該IP地址和物理地址存入本機ARP緩存中並保留一定時間,下次請求時直接查詢ARP緩存以節約資源。地址解析協議是建立在網絡中各個主機互相信任的基礎上的,網絡上的主機可以自主發送ARP應答消息,其他主機收到應答報文時不會檢測該報文的真實性就會將其記入本機ARP緩存;由此攻擊者就可以向某一主機發送偽ARP應答報文,使其發送的信息無法到達預期的主機或到達錯誤的主機,這就構成了一個ARP欺騙。 ARP命令可用於查詢本機ARP緩存中IP地址和MAC地址的對應關系、添加或刪除靜態對應關系等。

  ARP工作流程舉例:

  主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;
  主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;
  當主機A要與主機B通信時,地址解析協議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:
  (1)根據主機A上的路由表內容,IP確定用於訪問主機B的轉發IP地址是192.168.1.2。然后A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址。
  (2)如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每台主機都接收到ARP請求並且檢查是否與自己的IP地址匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。
  (3)主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中。
  (4)主機B將包含其MAC地址的ARP回復消息直接發送回主機A。
  (5)當主機A收到從主機B發來的ARP回復消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結束后,將再次重復上面的過程。主機B的MAC地址一旦確定,主機A就能向主機B發送IP通信了。

  逆地址解析協議,即RARP,功能和ARP協議相對,其將局域網中某個主機的物理地址轉換為IP地址,比如局域網中有一台主機只知道物理地址而不知道IP地址,那么可以通過RARP協議發出征求自身IP地址的廣播請求,然后由RARP服務器負責回答。

  RARP協議工作流程:

    (1)給主機發送一個本地的RARP廣播,在此廣播包中,聲明自己的MAC地址並且請求任何收到
此請求的RARP服務器分配一個IP地址;

  (2)本地網段上的RARP服務器收到此請求后,檢查其RARP列表,查找該MAC地址對應的IP地址;

  (3)如果存在,RARP服務器就給源主機發送一個響應數據包並將此IP地址提供給對方主機使用;

  (4)如果不存在,RARP服務器對此不做任何的響應;

  (5)源主機收到從RARP服務器的響應信息,就利用得到的IP地址進行通訊;如果一直沒有收到
RARP服務器的響應信息,表示初始化失敗。

  

 

12.服務器端響應 

經過多個網關的轉發,Google的服務器172.194.72.105,收到了這四個以太網數據包。

根據IP標頭的序號,Google將四個包拼起來,取出完整的TCP數據包,然后讀出里面的”HTTP請求”,接着做出”HTTP響應”,再用TCP協議發回來。

本機收到HTTP響應以后,就可以將網頁顯示出來,完成一次網絡通信。

      舉個例子

在瀏覽器中輸入 www.baidu.com  后執行的全部過程

  現在假設如果我們在客戶端(客戶端)瀏覽器中輸入http://www.baidu.com,而baidu.com為要訪問的服務器(服務器),下面詳細分析客戶端為了訪問服務器而執行的一系列關於協議的操作:

  1)客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然后通過TCP進行封裝數據包,輸入到網絡層。

  2)在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然后使用IP層的IP地址查找目的端。

  3)客戶端的網絡層不用關系應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,不作過多的描述,無非就是通過查找路由表決定通過那個路徑到達服務器。

  4)客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然后發送ARP請求查找目的地址,如果得到回應后就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然后發送IP數據包到達服務器的地址。

 

 

此處參考http://www.cnblogs.com/maybe2030/p/4781555.html#_labelTop

在這里只作為學習,復習的資料,謝謝

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM