HTTP請求

當我們輸入http://www.baidu.com類似這種網址的時候我們經歷了什麼?

 

 

dns服務,請求得到www.baidu.com的ip地址,請求的流程:

本地的緩存中=》上一級的dns服務器=》更上一級的dns服務器=》。。。=》得到ip地址

 

應用層協議:http

 

存在:www.baidu.com

需要做的事情:

2。按照http協議封裝成相應格式的應用層的數據包

 

Http協議所使用的傳輸層的協議是TCP協議,

傳輸層協議:Tcp

傳輸層需要做的事情:

加上源端口,目的端口(注意沒有ip等)等tcp的首部,構造成爲TCP數據包進行發送

 

當封裝好了TCP的數據包之後進入網絡層的封包

網絡層的協議:ip協議

 

需要進行的處理是:加上網絡層的首部,即ip首部,包含的內容有ip v4地址即其他必要的首部信息,包括數據長度,有一定的長度限制,涉及到報文分組。

 

封裝好了TCP數據包以後,進入數據鏈路層的協議封裝,即以太網幀

設計的協議:MAC地址和數據鏈路層的相關協議,ARP,ppp,HDLC等協議

從網絡層得到的數據包是帶有ip地址的,根據目的ip地址廣播arp請求得到物理地址,根據物理地址進行封裝得到數據幀,在鏈路層發送該數據幀。

 

絕大部分的用戶的數據幀處在某一個局域網當中,比如說我們公司所有的人用了一個局域網,當我們需要向公網發送一些數據,我們用的是本地的ip,例如各種局域網ip地址,這種ip地址沒有辦法在公網進行路由,這時候我們使用到的路由器上面會運行NAT協議,我們的本地ip地址將被轉化爲我們公司所有人共同使用的一個公網的IP地址。最終能夠將以太網幀發送到公網上。

 

物理層指的是相關的物理傳輸介質等共同作用,實現數字或者模擬信號的傳輸

進入網絡的數據包可能會經歷的流程

調製器(將數字信號轉成模擬信號能夠進行線路傳輸)

集線器,交換機(也叫交換式集線器):集線器將來自不同的端口的信號進行中繼重整,採用廣播的方式進行發送,不需要該信息的主機會丟棄掉報文,而需要的會拿到報文。交換機的功能更爲強大一些,能夠根據端口進行轉發報文,降低局域網中的衝突,其實通過網橋分發以後和交換機相連的線路不存在衝突域,就不需要CSMA、CD協議在這條線路上

(交換機和路由器的區別:二者都提供轉發功能,但是交換機是鏈路層上的,而路由器是網絡層的,第一次因爲交換機和路由器分不清還弄了一個笑話。路由器上連接的是不同的網絡,而交換機上面連接的是同一個網絡的不同主機,所以在某一個公司或者局域網中,當我們需要的僅僅是轉發的功能,而不是希望重新去建一個子網的話,應該使用的是交換機,雖然二者在日常使用當中沒感覺出差別來,但是差別巨大)

解調器(將模擬信號轉爲數字信號)

 

網絡的核心====》路由器

路由器的作用是根據網絡號(注意是網絡號)轉發相應的ip報文,其實質就是一個看成一個負責鏈路交換和網絡層的大型的主機(也可以是小型的)。根據PDU,SDU的內容而言,他會根據鏈路層解幀到ip數據包,ip數據包根據網絡號找到相應的鏈路發送ip數據包,發送時同樣需要進行MAC地址的封裝成幀。經過複雜的線路最終達到目的地。

 

路由器是一個重要的網絡組建,需要轉發數據包,維持路由表,需要特定的協議進行路由,OSPF及RIP分別爲開放鏈路協議,及距離向量協議,這二者屬於一個自治區域內的內部網關協議。涉及到不同的自治區域內的網絡的路由,需要用到的區域網關協議,外部網關協議,BGP等。這些協議維持的是一個路由表,轉發是某個路由器的工作,而路由表的維持是多個路由協同的結果。

 

經過複雜的網絡傳輸最終,我們的數據幀到達了百度主機所在的網絡中,這時候會進行之前等的鏈路層到網絡層等的處理。

 

百度是一個很複雜的機構,有很龐大的網絡,當我們的數據幀到達了百度的主機之後,可能會進行相應的轉發等的處理,如負載均衡等等之類的。百度的某一太主機又將報文發送到不同的主機負載均衡處理。

 

當我們到達了某臺主機時,被滿足CGI標準的服務器所接受,就成爲了我們正常使用的Java Web,中的servlet,request,response等中所操作的各種數據和對象。

 

分析TCP和UDP二者的不同

==被誤導TCP是面向連接的,其實TCP和UDP都不是面向連接的。原因ip分組不是面向連接的,當我們講到建立可靠的連接的時候,鏈路層的差錯控制機制,以及TCP需要進行的相關的保證二者協同才能夠可靠連接。鏈路層差錯控制能夠把保證當前幀不錯,無法保證丟幀,等的出現,tcp對於每一個收到的數據進行確認(這是udp不具備的),所以tcp和udp的區別就體現在這個確認的機制裏面。tcp能夠保證不丟包,不失序,而udp得到數據包不能夠保證這一點。所以tcp的描述是面向無連接的可靠的傳輸層協議,udp是面向無連接的不可靠的盡最大可能的交付的傳輸層協議。

 

所以對於不同的功能而言,尤其是現在的網絡技術這麼發達的情況下,基於不同的應用需求採用tcp和udp不同的協議是需要的。文件傳輸ftp等仍舊使用tcp協議,而對於類似於視頻傳輸,直播技術,用到udp協議是正常的。直播和視頻是無法忍受tcp這種延時和相關丟幀丟包需要確認而無法繼續向前播放的問題的。rtp等協議就是基於udp協議的實時數據協議。

 

關於PDU,SDU系統概念的圖像

網絡封包的過程如下

 

當然我們有可能在某些VPN軟件的控制下對一些網站進行訪問,如用一些VPN訪問谷歌等國外網站

這時候我們輸入 ipconfig的時候發現機器的ip地址發生了變化,其實實際的過程是我們封裝的傳輸層協議中使用了一些隧道協議,而ipconfig查詢出來的ip地址被封裝到了傳輸層的數據中,而我們在到達相應的VPN路由器或者主機的時候,我們在網絡上流通的報文還是我們自己的設備,如運行了NAT的路由器的公網IP,和對應的vpn路由器或主機的ip地址爲目的地址,這一點和正常的網絡通信沒有區別。

但是,當到達vpn路由器或主機的時候,解析下一層協議發現爲ip協議這時候,我們就知道該報文爲一個vpn報文,裏面有隧道協議的成分在裏面,於是把到達的報文的內容部分取出來,得到真正的目的ip地址和路由的時候就能夠根據這個真正的目的ip,根據這個ip訪問我們所需要的數據,VPN節點相當於做了一箇中轉站的作用,而我們自己主機的IP地址的變化,實際上是將我們自己主機的IP變化爲了vpn路由器所連接的網絡的某臺可用主機的ip。至於具體是怎麼訪問的請自行查閱資料。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章