前言
在之前的專案開發過程中,遇到部署專案之外的伺服器問題就頭大,為什麼從我的位址呼不到目標位址,之前都是根據ip位址的 "前三位" 做個大致的區分,而且還要提交網路開通申請。
那麼今天,我們就來對這伺服器與伺服器之間的互動做做研究
要知道伺服器之間怎麼溝通,首先就要對伺服器交流的介質以及大前提做個了解
我們先簡單了解下osi七層模型
ois七層模型
tcp/ip四層模型
對應網路協議osi
對應網路協議tcp/ip
應用層應用層
表示層資料的表示、安全、壓縮(格式:gif,ascii,jpeg等)
會話層rpc,sql(建立、管理、終止會話)
傳輸層傳輸層
tcp/ip,udp(定義傳輸資料的協議埠號,以及流控和差錯校驗,資料報一旦離開網絡卡即進入網路傳輸層)
網路層網路層
icmp igmp ip(ipv4 ipv6)arp,rarp,(進行邏輯位址定址,實現不同網路之間的路徑選擇)
arp,rarp
資料鏈路層
網路介面層
arp,rarp(位址解析協議/逆向位址解析協議,)
物理層上面描述了計算機於通訊系統中互聯的標準體系,計算機要進行通訊,那麼我怎麼知道你是你呢!!換句話說,怎麼唯一的標識乙個計算機呢?沒錯,ip位址+mac位址。
ip位址
ip位址是網際網路為其上的網路和每台主機分配的邏輯位址,用來遮蔽實體地址的差異ip位址是網際網路協議位址,又稱網際協議位址,是ip協議提供的一種統一的位址格式。格式為32位二進位制數,通常使用點分十進位制表示,例:192.168.0.1。
mac位址
mac位址是media access contronl address的縮寫,直譯為**訪問控制位址,也成為乙太網位址,區域網位址,mac位址或實體地址。是網路裝置生產上燒錄在網絡卡上的一串串行碼。格式為48位二進位制數,通常使用 "-" 分十六進製制表示 ,例:00-16-ea-ae-3c-40, 前三個位元組00-16-ea代表網路製造商的標號,後三個位元組由生產商分配,代表某個產品的系列號。只要不更改自己的mac位址,那麼mac位址在世界上就是唯一的。
舉個通俗的例子,我們想看某部電影了,那麼當我們通過應用層的協議,比如http協議,產生乙個httpservletrequest請求準備發往目標位址,短短一句話其實已經把物理層到網路層走完了!
其實伺服器搭建完後,物理層,資料鏈路層就是連通的。
物理層,雙絞線 ,電纜連線電子裝置,在裝置之間通過電訊號(高低電平)傳輸,解析後就是我們經常說的位元流。
那麼物理鏈路層主要任務有哪些呢?
1.向網路層提供服務介面,將當前機器網路層接收到的資料報轉送到目標機器的網路層。【物理鏈路層從網路層獲取資料報,將獲取到的資料報封裝成幀(拆分位元流成幀)以便傳輸,每個幀包含幀頭,有效載荷,幀尾】
2.差錯控制,處理傳輸錯誤。
3.流量控制(限制傳送方)。調節資料流,確保接收方接收速度過慢時不會被快速的傳送方淹沒。
那麼當我們看電影的請求經過客戶端(瀏覽器)揉捏成乙個request,我們知道httpservletrequest是http協議的組成部分,http在應用層,到了傳輸層一般使用的是tcp虛擬連線,接下來是怎麼樣的呢,看過其他人解釋這裡是這麼說的,應用層將請求包上http協議頭,傳到傳輸層給其套上tcp協議頭,然後到資料鏈路層經過arp...
說的沒錯,但是我感覺少了一步,首先應用層封裝好http報文,然後要通過資料鏈路層拼上乙太網的協議頭,包括本伺服器的mac位址。之後我們到了網路層,此時判斷目標位址是網域名稱,則到本伺服器hosts檔案中尋找對應的ip, 如果沒有就會去路由器的快取中尋找,然後到運營商的快取,根dns伺服器中去尋找,找到後依次在各個層級做快取。這個時候我們拿到了目標位址的ip,那麼網路源節點和目標節點之間並不是只有一條路可選的,通訊子網為源節點和目標節點提供了多條傳輸路徑的可能性。當乙個節點收到資料報後,要確定向下乙個節點的路徑,就是路由選擇。定址,路由選擇,連線的保持、建立和中止都是網路層負責的。
言歸正傳,在網路層經過路由,定址後,我們找到了目標ip的閘道器,那麼怎麼定位到目標伺服器呢?arp協議就排上用場了,arp協議裡儲存了ip位址到mac位址的對映表,此時判斷目標ip與當前閘道器是否位於同乙個子網,如果是,就從對映表中尋找目標ip的mac位址,如果arp的關聯表中沒有目標伺服器的mac位址,那麼此時就會進行廣播,目標伺服器收到廣播就會把自己的mac位址返回了。
此時資料報中包含http協議,ip協議,同時源伺服器的ip、mac位址以及目標伺服器的ip、mac位址也都有了。
然後我們到了傳輸層,這裡提供端到端的資料互動,面向連線的tcp協議以及面向無連線的udp協議,這裡我們選的是可靠的tcp協議。
終於我們的瀏覽器端與目標伺服器完美的相遇了,進行激動的3次握手後,目標伺服器收到了我們想要看電影的請求。爽快的將資料流返回給我們。
電影看完,收拾好紙巾,嗯??對了,一定是電影太煽情都感動哭了才用的紙巾。
電影看完後,此時我們的瀏覽器正和目標伺服器進行深情告別,又握了4次手。連線關閉。
先寫到這裡,後續再完善補充。
以上便是我本次看電影時臆想出來請求位於osi7層模型的資料走向,如果有不正確的地方還請大神指出。
天行健,君子以自強不息。博學而約取,厚積而薄發。
一次請求中資料的傳遞流程
看過多篇文章後,決定總結一下,一以供將來複習 流程 1.應用層 提供各種服務的介面,如檔案傳輸,郵件收發,遠端通訊等等,應用層規定了傳輸的資料的格式 檔案,網頁,郵件.協議 2.格式化資料,三次握手,從而提供可靠的資料傳輸 協議 tcp transmission control protocol 傳...
分析一次ORACLE資料庫Session暴增的問題
今天中午接到同事求助,說是乙個應用裡面報出了乙個oracle錯誤,於是幫助他看了看,雖然最終沒有解決他的問題 問題不是出在oracle資料庫層面 還是把分析步驟發出來分享一下。問題情況 乙個應用程式執行失敗了,在問題日誌中,發現如下報錯。問題分析 問題細化分析 這篇文章說的情況,大概是這樣的,即pr...
資料分析第一次打卡
思考 知道資料載入的方法後,試試pd.read csv 和pd.read table 的不同,如果想讓他們效果一樣,需要怎麼做?了解一下 tsv 和 csv 的不同,如何載入這兩個資料集?答 tsv與csv的區別 從名稱上即可知道。tsv是用製表符 tab,t 作為字段值的分隔符 iana規定的標準...