網絡通訊的整個流程
1. 客戶端\服務端架構(哪裏用到了網絡通訊)
客戶端英文名稱:Client,服務端英文名稱:Server,下面所說的C\S架構就是說的Client\Server架構。html
a.硬件C\S架構:打印機。chrome
b.軟件C\S架構:QQ、微信、優酷、暴風影音、瀏覽器(IE、火狐,360瀏覽器等)。windows
其中瀏覽器又比較特殊,不少網站是基於瀏覽器來進行訪問的,瀏覽器和各個網站服務端進行的通信方式又常被成爲B\S架構(瀏覽器英文名稱:Browser)瀏覽器
2. 網絡通訊的整個流程
網卡和mac地址緩存
你的電腦想要聯網,首先要有一個網卡,並且電腦要作好相關的網路配置(如何配置,在下面有介紹)安全
電腦插網線的地方就作網卡,網卡提供了網絡的接口,這是硬件上面的,你們都是到網口是吧,我怎麼找到電腦的網卡呢,有人說用IP地址,IP地址並非,而是全球惟一的mac地址,專門給網絡設備設定的,是出廠的時候就給定好的,一個設備的mac地址號碼是全球惟一的。 head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具有網卡,發送端和接收端的地址即是指網卡的地址,即mac地址。 服務器
mac地址:每塊網卡出廠時都被燒製上一個世界惟一的mac地址,長度爲48位2進制,一般由12位16進制數表示(前六位是廠商編號,後六位是流水線號)微信
查看mac地址的方法:windows下在cmd窗口輸入ipconfig -all指令:下面顯示的這個物理地址就是mac地址。網絡
因爲mac地址很難記憶,因此又出現了IP地址,在說IP地址以前,咱們先說一下編碼,咱們都是到一個字節等於8位對吧,8個2進制的數,那麼8位是否是能夠表示256個字節啊,因爲全球有太多的機器須要聯網,那麼網絡設備的編號應該長一些,對不對,由4個點分十進制組成,由點分割的四個十進制的數,而十進制的數是否是在計算機中也是由二進制表示的啊,那麼就成了這個樣子:00000000.00000000.00000000.00000000 -- 11111111.11111111.11111111.11111111,0.0.0.0--255.255.255.255,也就是由4個8位的二進制數表示,這個表示就是咱們的IP地址的形式。架構
若是你用網線連網的,查看本身網絡的屬性,而且能夠將ipv4版本的ip地址能夠設置成靜態的、也能夠自動獲取(動態分配的),配置好本身電腦的網絡信息以後,咱們就有了身份證(mac地址)和名字(IP地址),經過他們,咱們就在網絡中有了本身的身份,只要有網,咱們就和別人進行通訊了。
arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址
下面是網絡通訊流程:
流程描述:
第一步:打開瀏覽器,如請求訪問京東,欄輸入了網址:www.jd.com。(www.jd.com是域名就是一個IP地址的名稱,IP地址很差記,全部有了域名。)
第二步:先將請求信息發給了交換機,而後交給了路由器,路由發給DNS服務器,經過DNS協議去找咱們要訪問的京東的IP地址:
第三步:查到的京東服務器對應的IP地址以後,路由器經過路由協議找到一個路由轉發的最優路徑,將你的請求信息還送給這個IP地址的京東的路由器
第四步:京東的路由器發給了京東網站的服務器上
第五步:京東網站服務器按照來的時候的路徑,在返回給你他本身的網站
第六步:當你打開瀏覽器的時候,你的電腦給你的瀏覽器這個運行起來的程序給了一個編號,叫作端口號,當你的電腦收到京東發送過來的消息的時候,你的電腦經過端口號找到你的瀏覽器,你的瀏覽器拿到了京東的網站信息,而後將網站呈如今了本身的瀏覽器上
內網和外網:
所謂內網就是咱們日常說的局域網。局域網就是在固定的一個地理區域內由2臺以上的電腦用網線和其餘網絡設備搭建而成的一個封閉的計算機組。它能夠是鄰居之間的2臺電腦,也能夠是一幢100層大樓裏的1000臺電腦。局域網能夠是獨立封閉運行的,也能夠是和外網相鏈接的。
所謂外網,也就是廣域網。是一種地域跨度很是大的網絡集合。它是由無數個局域網+獨立服務器構成的。注意,此處所說的局域網既能夠是小型的廣域網,也能夠是局域網。
實際上,從規模上來看咱們很難分辨局域網與廣域網,由於大小都是相對的。因此。真正局域網與廣域網的分別是經過IP地址來實現的。
任何一臺電腦要上網,都必須在網絡上有一個惟一的IP地址。在局域網內,這個IP地址是惟一的。可是在另一個局域網,這個IP地址仍然可以使用。
網絡A裏有一臺IP地址爲192.168.1.231的客戶端,網絡B裏也能夠有一臺一樣IP的電腦。那麼。咱們就說這2臺機器分別在2個局域網裏。可是在廣域網內,全部的IP地址都是惟一的。山西電信的DNS服務器IP地址是61.134.1.4.那麼,這個地址在全世界都是惟一的,不可重複的。這就是廣域網和局域網的區別。
若是隻有內網的ip地址你是不能上網的,你上網確定要經過一個外網地址,這個外網地址又稱爲公網地址,這個公網地址是全球惟一的,他在你的對外出口的路由器上,也就是你的外網網關地址。
三 DNS服務器
DNS中保存了一張域名(domain name)和與之相對應的IP地址 (IP address)的表,以解析消息的域名。
域名是Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位(有時也指地理位置)。域名是由一串用點分隔的名字組成的,一般包含組織名,並且始終包括兩到三個字母的後綴,以指明組織的類型或該域所在的國家或地區。
DNS是計算機域名系統 (Domain Name System 或Domain Name Service) 的縮寫,它是由域名解析器和域名服務器組成的。域名服務器是指保存有該網絡中全部主機的域名和對應IP地址,並具備將域名轉換爲IP地址功能的服務器。其中域名必須對應一個IP地址,一個IP地址能夠有多個域名,而IP地址不必定有域名。域名系統採用相似目錄樹的等級結構。
域名服務器一般爲客戶機/服務器模式中的服務器方,它主要有兩種形式:
主服務器和轉發服務器。將域名映射爲IP地址的過程就稱爲「域名解析」。本地的DNS緩存是在咱們訪問過一個網站以後,例如京東,那麼本地會保存一個京東域名和京東服務器IP地址的映射關係,未來再次請求的時候,就不用再到外部的DNS上查詢這個域名對應的IP地址了,提升了效率,若是是第一次請求,請看上面的DNS查詢過程
查詢步驟:
1.本地查詢順序:
瀏覽器緩存: 瀏覽器會按照必定的頻率緩存DNS記錄。chrome://net-internals/#dns 查看chormeDNS緩存。
操做系統緩存: 若是瀏覽器緩存中找不到須要的DNS記錄,那就去操做系統中找。cmd命令ipconfig /displaydns 用於查看操做系統dns緩存。
路由緩存: 路由器也有DNS緩存。 找本機的hosts文件 Windows host文件路徑: C:\WINDOWS\system32\drivers\etc\hosts (因爲直接修改以後不能保存,能夠copy一份到桌面,修改以後,在替換掉原路徑下的文件就能夠了),hosts文件以靜態映射的方式提供IP地址與主機名的對照表。
ISP(網絡服務提供商):若是仍是沒有,那麼就去檢查ISP有沒有吧~,每個ISP(網絡服務提供商),或一個大學,甚至是一個大學裏的系都會有一個本身的本地域名服務器,他會在url第一次訪問時緩存該域名的指向。下次再訪問時,他會從緩存裏把這個url曾經指向的IP調出來。
2.遞歸查詢
第一步:在hosts靜態文件、DNS解析器緩存中查找某主機的IP地址
第二步:上一步沒法找到,去DNS本地服務器(即域服務器)查找,其本質是去區域服務器、服務器緩存中查找
第三步:本地DNS服務器查不到就向ISP(ISP是互聯網服務提供商(Internet Service Provider))的簡稱,ISP有專門的DNS服務器應對DNS查詢請求。再找不到就根據‘根提示文件’向負責頂級域‘.com’的DNS服務器查詢
第四步:'根DNS服務器'根據查詢域名中的'xyz.com',再向xyz.com的區域服務器查詢
第五步:www.xyz.abc.com的DNS服務器直接解析該域名,將查詢到的ip再原路返回給請求查詢的主機
3.迭代查詢:
第一步:在hosts靜態文件、DNS解析器緩存中查找某主機的IP地址
第二步:上一步沒法找到,在DNS本地服務器(即域服務器)查找全部本層次的區域服務器
第三步:本地DNS服務器查不到就向ISP是互聯網服務提供商(Internet Service Provider)的簡稱,ISP有專門的DNS服務器應對DNS查詢請求。再找不到就查詢上一層次的全部區域服務器,以此類推直至根域名DNS服務器‘.’
第四步:到達根域名服務器後又向下查詢,直至查到結果爲止。
4.迭代查詢與遞歸查詢結合
遞歸查詢須要通過逐層查詢才能得到查詢結果,當查詢具備許多層次的DNS結構時效率很低,因此通常採用二者相結合的查詢方式。
第一步:在hosts靜態文件、DNS解析器緩存中查找某主機的ip地址
第二步:上一步沒法找到,去DNS本地服務器(即域服務器)查找,其本質是去區域服務器、服務器緩存中查找
第三步:本地DNS服務器查不到就向ISP是互聯網服務提供商(Internet Service Provider)的簡稱,ISP有專門的DNS服務器應對DNS查詢請求。再找不到就根據‘根提示文件’向負責頂級域‘.com’的根DNS服務器查詢
第四步:根DNS服務器直接將其區域DNS服務器的ip地址返回給本地服務器,而不用再向xyz.com的區域服務器查詢。
第五步:(京東有本身DNS服務器)本地DNS服務器將結果返回給請求的主機
四 交換機、路由器和網關(含DHCP)
經過路由A轉發將消息發出去,消息中包含目標路由D的網關的IP地址,網關分不少的類型:傳輸網關、應用網關、協議網關等等,
咱們常常說的網關是指的傳輸網關,簡稱網關,咱們主要就看它,網關在路由器這裏,當請求信息發送到了網關這裏的時候,咱們先到路由表裏面看看有沒有這個請求的目標地址的IP,若是沒有說明不是咱們本身網絡內部的IP地址,須要路由轉發出去,到internet網絡中,可是網絡這麼大,怎麼辦,那麼經過網關計算出一個最佳的傳輸路徑去找到對應的目標網關地址,在路由轉發的過程當中(當請求被路由B接收到了以後,路由B打開以後發現不是找本身的,就會把請求信息包繼續轉發)而後傳輸到這個網關地址的路由器上,目標網關路由器上設置了一些IP地址+端口和各個服務器上的映射關係,即使是全部的交換機都接收到了這個請求,可是仍是可以找到對應的服務器。在經過交換機發送到對應的服務器上
那麼網關究竟是什麼呢?網關實質上是一個網絡通向其餘網絡的IP地址。好比有網絡A和網絡B,網絡A的IP地址範圍爲 「192.168.1.1~192. 168.1.254」,子網掩碼爲255.255.255.0;網絡B的IP地址範圍爲「192.168.2.1~192.168.2.254」,子網掩碼爲255.255.255.0。在沒有路由器的狀況下,兩個網絡之間是不能進行TCP/IP通訊的,即便是兩個網絡鏈接在同一臺交換機(或集線器)上, TCP/IP協議也會根據子網掩碼(255.255.255.0)斷定兩個網絡中的主機處在不一樣的網絡裏。而要實現這兩個網絡之間的通訊,則必須經過網關。若是網絡A中的主機發現數據包的目的主機不在本地網絡中,就把數據包轉發給它本身的網關,再由網關轉發給網絡B的網關,網絡B的網關再轉發給網絡B的某個主機。網絡B向網絡A轉發數據包的過程也是如此。
例子解釋:
假設你的名字叫小不點,你住在一個大院子裏,你的鄰居有不少小夥伴,在門口傳達室還有個看大門的李大爺,李大爺就是你的網關。當你想跟院子裏的某個小夥伴玩,只要你在院子裏大喊一聲他的名字,他聽到了就會迴應你,而且跑出來跟你玩。 可是你不被容許走出大門,你想與外界發生的一切聯繫,都必須由門口的李大爺(網關)用電話幫助你聯繫。假如你想找你的同窗小明聊天,小明家住在很遠的另一個院子裏,他家的院子裏也有一個看門的王大爺(小明的網關)。可是你不知道小明家的電話號碼,不過你的班主任老師有一份大家班全體同窗的名單和電話號碼對照表,你的老師就是你的DNS服務器。因而你在家裏撥通了門口李大爺的電話,有了下面的對話: 小不點:李大爺,我想找班主任查一下小明的電話號碼行嗎? 李大爺:好,你等着。(接着李大爺給你的班主任掛了一個電話,問清楚了小明的電話)問到了,他家的號碼是211.99.99.99 小不點:太好了!李大爺,我想找小明,你再幫我聯繫一下小明吧。 李大爺:沒問題。(接着李大爺向電話局發出了請求接通小明家電話的請求,最後一關固然是被轉接到了小明家那個院子的王大爺那裏,而後王大爺把電話給轉到小明家) 就這樣你和小明取得了聯繫。
路由器對外部網絡的通訊都是經過外網接口(wan口)去轉發出去的,也就是無論你是內網中的哪一個電腦,你的請求都要經過路由的外網接口發送出去,別人對你的請求都是經過外網接口接收進來的,至於路由器上對內的lan口是怎麼分配IP地址給內網的,要看路由器怎麼設置劃分vlan也就是子網(內部局域網),每一個lan口的IP地址能夠是靜態的,也能夠是動態分配的(DHCP協議),並且能夠劃分網段,
例如:個人1號lan口對接的網段是192.168.1.0-192.168.1.255,那麼全部這個網段的電腦的信息進出都走這個lan口到路由器上,對於鏈接路由器的交換機來說,主要的做用就是搭橋用的,搭橋的意思就是讓鏈接該交換機的全部電腦都可以鏈接起來,只要是同一個網段的互相均可以進行通訊,固然這個也要看交換機怎麼配置。
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,使用UDP協議工做, 主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員做爲對全部計算機做中央管理的手段 交換機又分二層交換機和三層交換機,二層交換機主要就是個搭橋的做用,三層交換機還兼有路由的做用,通常如今的交換機都有DHCP功能,也就是說交換機下面鏈接的這些電腦的子網IP或者說是局域網IP也能夠由交換機來動態生成和分配,路由器和交換機所生成的子網IP都是本身在路由器和交換機上設置的,和路由器上的外網IP沒有關係,具體的劃分又分爲24位的16位的等等,舉例:24位的就是10.11.1.0-10.11.1.255這256個IP地址,0表示後面的8bit是00000000,255表示後面的8bit是11111111
交換機和路由器的基本工做原理:
路由器---所謂路由就是指經過相互鏈接的網絡把信息從源地點移動到目標地點的活動。通常來講,在路由過程當中,信息至少會通過一個或多箇中間節點。一般,人們會把路由和交換進行對比,這主要是由於在普通用戶看來二者所實現的功能是徹底同樣的。其實,路由和交換之間的主要區別就是交換髮生在OSI參考模型的第二層(數據鏈路層),而路由發生在第三層,即網絡層。這一區別決定了路由和交換在移動信息的過程當中須要使用不一樣的控制信息,因此二者實現各自功能的方式是不一樣的。
交換機---交換(switching)是按照通訊兩端傳輸信息的須要,用人工或設備自動完成的方法,把要傳輸的信息送到符合要求的相應路由上的技術統稱。廣義的交換機(switch)就是一種在通訊系統中完成信息交換功能的設備。
詳細工做原理,可參考博客:https://www.cnblogs.com/clschao/articles/9612944.html
爲了不廣播風暴(之前經過mac地址就能夠通訊,mac地址通訊是廣播的形式,若是世界上全部的電腦都經過這種形式通訊,就會造成廣播風暴,堵塞網絡不說,所有信息都變得不安全了,由於全部人均可以收到你發的信息):分了多個局域網,而後經過路由器連起來了。