1. 程式人生 > >osi7層模型tcp/ip 五層模型

osi7層模型tcp/ip 五層模型

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

網路通訊的整個流程

本篇部落格是對網路通訊整個流程的大致介紹,是給剛想步入IT的這一行的同學來看的,如果你對網路比較熟悉了,那麼就不要看啦,直接去看我的網路協議的部落格https://www.cnblogs.com/clschao/articles/9578922.html,其中一些細節部分沒有深入去展開,其中如果有不對或者不妥的地方,希望大家批評指正,因為博主也不是專門學習網路的,所有望大家見諒。話不多少了,我們直接進入正題!

本節目錄

一 客戶端\服務端架構(哪裡用到了網路通訊)
二 網路通訊的整個流程
三 DNS伺服器
五 交換機、路由器和閘道器(含DHCP)
六 總結及其他一些內容簡介
一 客戶端\服務端架構(哪裡用到了網路通訊)
  
  我們使用qq、微信和別人聊天,通過瀏覽器來瀏覽頁面、看京東的網站,通過優酷、快播(此處只是懷念一下它)看片片啥的等等,通過無線印表機來列印一個word文件等,只要有無線、有網、有4G,我們就能好好的聊天,好好的看片片、好好的購物什麼的,對吧,那麼這些操作都叫做網路通訊,確切來說都需要使用網路通訊,前提是你要有網(大家記著這個’網’,我下面會給大家詳解),原來生活中處處使用了網路通訊,我們通過網路通訊的不同形式:比如說qq是我們下載到電腦或者手機上的應用程式(qq應用程式就是人家騰訊開發的軟體,放到你的電腦或者手機上供你使用的,大概明白應用程式意思就行,不用深究~~),瀏覽器也是我們下載的應用程式,但是瀏覽器是通過頁面來訪問別人的網站的,而印表機我是通過我電腦上的word來操作使用的。根據這些不同的場景或者說不用的溝通方式,在業內劃分了下面幾個架構(架構:就是不同的結構,例子1:每個公司的部門組成不同。例子2:每個建築的鋼筋結構不同。)。在看下面的幾個架構之前,我們需要知道什麼是客戶端,什麼是服務端。客戶端:安裝在你電腦上的qq,瀏覽器(360瀏覽器、chrome瀏覽器、IE瀏覽器等),當我們使用qq傳送訊息的時候,訊息先發送到了騰訊,然後騰訊在轉發到你朋友的qq上,此時你的qq就是客戶端,騰訊就是服務端。當我們使用瀏覽器來看京東的網站的時候,我們電腦上的瀏覽器就叫做客戶端,京東就叫做服務端。okok


  客戶端英文名稱:Client,服務端英文名稱:Server,下面所說的C\S架構就是說的Client\Server架構。

a.硬體C\S架構:印表機。

b.軟體C\S架構:QQ、微信、優酷、暴風影音、瀏覽器(IE、火狐,360瀏覽器等)。其中瀏覽器又比較特殊,很多網站是基於瀏覽器來進行訪問的,瀏覽器和各個網站服務端進行的通訊方式又常被成為B\S架構(瀏覽器英文名稱:Browser)

二 網路通訊的整個流程
明白了上面的C\S架構之後,我們就以自己本地的電腦上的瀏覽器去訪問的京東網站的整個流程這種B\S架構來舉例,有同學可能會問:你怎麼不用qq或者微信來舉例啊,是這樣,因為qq和微信這種P2P的通訊方式還是比較特殊的,也比較繁瑣,具體為什麼說它繁瑣,我在部落格的最後給大家說一下,然後有興趣的同學可以去研究一番~~~

網絡卡和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地址可以設定成靜態的、也可以自動獲取(動態分配的),下面是網路配置的大致方法:

1、

2、

3、

配置好自己電腦的網路資訊之後,我們就有了身份證(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伺服器
當我們請求https:\www.JD.com的時候,首先電腦會在本地的DNS快取中找是否有這個DNS快取(DNS(Domain Name Server,域名伺服器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的伺服器。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查詢過程

步驟

本地查詢順序:

瀏覽器快取: 瀏覽器會按照一定的頻率快取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調出來。

遞迴查詢

第一步:在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再原路返回給請求查詢的主機

迭代查詢:

第一步:在hosts靜態檔案、DNS解析器快取中查詢某主機的IP地址

第二步:上一步無法找到,在DNS本地伺服器(即域伺服器)查詢所有本層次的區域伺服器

第三步:本地DNS伺服器查不到就向ISP是網際網路服務提供商(Internet Service Provider)的簡稱,ISP有專門的DNS伺服器應對DNS查詢請求。再找不到就查詢上一層次的所有區域伺服器,以此類推直至根域名DNS伺服器‘.’

第四步:到達根域名伺服器後又向下查詢,直至查到結果為止。

迭代查詢與遞迴查詢結合

遞迴查詢需要經過逐層查詢才能獲得查詢結果,當查詢具有許多層次的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轉發資料包的過程也是如此。

通俗的講閘道器的作用

京東的路由器幹了什麼呢:京東的路由器拿到請求訊息之後,需要發給內網(區域網)中的對應的伺服器上,這裡在路由器上做了一個對映關係也就是說只要訪問我這個192.168.3.0:443埠的請求,都去找京東的伺服器A,就類似這麼個對映關係,具體情況看到時候路由器交換機怎麼設定

路由器對外部網路的通訊都是通過外網介面(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
  詳細一些的交換機和路由器的工作原理,大家可以去看我這篇部落格:https://www.cnblogs.com/clschao/articles/9612944.html

細說二層交換機、三層交換機、四層交換機。百科:

二層三層四層交換機

廣域網和路由器:(廣域網是個相對的概念,是相對於區域網來說的)

為了避免廣播風暴(以前通過mac地址就可以通訊,mac地址通訊是廣播的形式,如果世界上所有的電腦都通過這種形式通訊,就會形成廣播風暴,堵塞網路不說,全部資訊都變得不安全了,因為所有人都可以收到你發的資訊):分了多個區域網,然後通過路由器連起來了。

五 總結及其他一些內容簡介
最後,至於路由是如何進行轉發的、內部路由表是如何儲存的、閘道器是如何計算最後傳輸路線的、路由的內網是如何劃分的、DHCP和靜態IP是如何設定的,DHCP又是如何分配IP地址的,交換機內部工作原理、路由和交換機如何進行配置等等,我們在本篇部落格上就不進行深入研究了,本篇部落格是為了讓小白同學熟悉一下網路相關知識。謝謝大家諒解,如何大家想了解其他的內容,請給我留言,我就會把相關內容整理出來,分享給大家。你的問題是我們共同進步的動力。

為什麼說qq這種p2p的網路通訊方式比較特殊呢,因為它是兩個區域網的電腦或者手機進行通訊,雙方不能確定對方的IP地址,因為你的qq也不知道在哪裡登陸,用什麼網路,對吧,也就是說雙方不知道對方的IP地址,怎麼辦,需要藉助第三方承接,就是騰訊,那麼這裡面就涉及到了udp打洞,net穿透等技術,有興趣的可以去了解一下,騰訊為什麼nb,也是因為它基本上是國內第一家實現了這些技術的公司,讓我們的qq溝通更加方便。

  1. 路由器,交換機的作用?
    路由器和交換機的分別:交換機主要是實現大家通過一根網線上網,但是大家上網是分別撥號的,各自運用自己的寬頻,大家各自上網沒有影響,哪怕其他人在下載,對自己上網也沒有影響,並且所有運用同一條交換機的電腦都是在同一個區域網內。路由器比交換機多了一個虛擬撥號功能,通過同一臺路由器上網的電腦是共用一個寬頻賬號,大家之間上網是相互影響的,比如一臺電腦在下載,那麼同一個路由器上的其他電腦會很顯著的感覺到網速很慢。同一臺路由器上的電腦也是在一個區域網內的。
    將網路互相連線起來要運用一些中間裝置(或中間系統),ISO的術語稱之為中繼(relay)系統。根據中繼系統所在的層次,可以有以下五種中繼系統:

物理層(即常說的第一層、層L1)中繼系統,即轉發器(repeater)。

資料鏈路層(即第二層,層L2),即網橋或橋接器(bridge)。

網路層(第三層,層L3)中繼系統,即路由器(router)。

網橋和路由器的混合物橋路器(brouter)兼有網橋和路由器的功能。

在網路層以上的中繼系統,即閘道器(gateway)。

當中繼系統是轉發器時,一般不稱之為網路互聯,因為這僅僅是把一個網路擴大了,而這依舊是一個網路。高層閘道器由於比較複雜,現在運用得較少。因此一般討論網路互連時都是指用交換機和路由器進行互聯的網路。

交換機(Switch) 是一種基於MAC(網絡卡的硬體地址)識別,能完成封裝轉發資料包功能的網路裝置。交換機可以“學習”MAC地址,並把其存放在內部地址表中,通過在資料幀的始發者和目標接收者之間建立臨時的交換路徑,使資料幀直接由源地址到達目的地址。現在的交換機分為:二層交換機,三層交換機或是更高層的交換機。三層交換機同樣可以有路由的功能,而且比低端路由器的轉發速率更快。它的主要特點是:一次路由,多次轉發。

路由器(Router)亦稱選徑器,是在網路層實現互連的裝置。它比網橋更加複雜,也具有更大的靈活性。路由器有更強的異種網互連能力,連線物件包括區域網和廣域網。過去路由器多用於廣域網,近年來,由於路由器效能有了很大提升,價格下降到與網橋接近,因此在區域網互連中也越來越多地運用路由器。路由器是一種連線多個網路或網段的網路裝置,它能將不一樣網路或網段之間的資料資訊進行"翻譯",以使它們能夠相互"讀"懂對方的資料,從而構成一個更大的網路。路由器有兩大典型功能,即資料通道功能和控制功能。資料通道功能包括轉發決定、背板轉發以及輸出鏈路排程等,一般由特定的硬體來完成;控制功能一般用軟體來實現,包括與相鄰路由器之間的資訊交換、系統配置、系統管理等。

OSI 七層協議。
應用層:
表示層:
會話層:
傳輸層:
網路層:
資料鏈路層:
物理層:

mac地址:廠商燒寫在網絡卡的唯一識別符號,
ip地址、用來區分網段
DHCP服務、自動獲取ip地址
路由器、用來獲取公網(外網ip)ip,管理區域網
交換機、集線器升級版,實現多臺電腦一根網線上網
子網掩碼:用來計算是否是同一網段
閘道器:前三位ip相同則在同一網段
DNS、域名解析的伺服器 儲存的類似於{域名:ip}
廣播,交換機發訊息給客戶端
BS和CS架構:Bs是伺服器和瀏覽器 CS是客戶端和服務端的架構

三次握手、四次揮手的流程: