day28 網絡編程

 

一,客戶端/服務端架構瀏覽器

C/S        B/S網絡

1,硬件c/s架構(打印機)架構

2,軟件c/s架構:tcp

互聯網中到處是c/s架構網站

(B/S架構也是C/S架構的一種) 如你的瀏覽器是客戶端,博客園網站是服務端。url

好比,騰訊做爲服務端爲你提供視頻,你得下個騰訊視頻客戶端才能看到它的視頻。操作系統

 

client《-------基於網絡通訊----------》server3d

browser<--------基於網絡通訊---------->server視頻

3.server端必須知足的條件:server

    1.穩定運行(網絡,硬件,操做系統,服務端應用軟件),對外一直提供服務。

     2.服務端必須綁定一個固定的地址。

二,什麼是互聯網?

   互聯網的核心就是由一堆協議組成,協議就是標準,好比全世界人通訊的標準是英語。

   若是把計算機比做人,互聯網協議就是計算機界的英語。全部的計算機都學會了互聯網協議,那全部的計算機都

   就能夠按照統一的標準去收發信息從而完成通訊了。

互聯網兩大要素:

1.底層的物理鏈接介質,是爲通訊鋪好道路的。

2.一套統一的通訊標準------》互聯網通訊協議

三,網絡通訊原理

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

   一臺硬設有了操做系統,而後裝上軟件就能夠正常使用了,然而你也只能本身使用。像這樣,每一個人都擁有一臺本身    的機器,然而彼此孤立。

 

結論:

英語稱爲世界上全部人通訊的統一標準,若是把計算機當作分佈於世界各地的人,那麼鏈接兩臺計算機之間的internet實際上就是一系列統一的標準,這些標準稱爲互聯網協議。互聯網的本質就是一系列的協議。

 

3.2 自定義協議:

任何一種協議都包含兩部分:

1,報頭:必須是固定長度。

2,數據

 

 

3.3  osi七層協議

 互聯網協議按照功能不一樣分爲tcp/ip五層:

 

首先,用戶感知到的只是最上面的一層應用層,自上而下每層都依賴於下一層。

每層都運行特定的協議,越往上越靠近用戶,越往下越靠近硬件。

1.物理層:

孤立的計算機想要一塊兒玩,必須接入internet,言外之意是計算機必須完成組網。

 

 物理層功能:

主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0.

 

2.數據鏈路層

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

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

以太網協議:

早期的時候各個公司都有本身的分組方式,後來造成了統一的標準,即以太網協議ethernet

ethernet規定:

一組電信號組成一個數據報,叫作‘幀’

每個數據報分紅:報頭和數據兩部分。

把數據報比做咱們平時寄信的話,報頭至關於信封,能夠看到是給誰的,數據至關於裏面的信件。

總結:

任何一種通訊協議都必須包含兩部分:

一部分:報頭(必須是固定的長度)

二部分:數據

 

mac地址:

報頭中包含的源地址和目標地址由來:以太網規定接入inernet的設備都必須具有網卡,發送端和接收端的地址即是指網卡的地址,即mac地址。

廣播:

有了mac地址,同一網絡內的兩臺主機就能夠通訊了(一臺主機經過arp協議獲取另一臺主機的mac地址)

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

 

3.網絡層

網絡層由來:有了ethernet、mac地址、廣播的發送方式,世界上的計算機就能夠彼此通訊了,問題是世界範圍的互聯網是由

一個個彼此隔離的小的局域網組成的,那麼若是全部的通訊都採用以太網的廣播方式,那麼一臺機器發送的包全世界都會收到,

這就不只僅是效率低的問題了,這會是一種災難

上圖結論:必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,若是是就採用廣播的方式發送,若是不是,

就採用路由的方式(向不一樣廣播域/子網分發數據包),mac地址是沒法區分的,它只跟廠商有關

網絡層功能:引入一套新的地址用來區分不一樣的廣播域/子網,這套地址即網絡地址

 

ip地址:

規定的網絡地址的協議叫作ip協議,它定義的地址稱之爲ip地址;普遍採用的ipv4.

子網掩碼:

所謂」子網掩碼」,就是表示子網絡特徵的一個參數。再形式上等同於ip地址。

 

算出子網地址:

知道」子網掩碼」,咱們就能判斷,任意兩個IP地址是否處在同一個子網絡。方法是將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都爲1,運算結果爲1,不然爲0),而後比較結果是否相同,若是是的話,就代表它們在同一個子網絡中,不然就不是。

 

總結:標識地址的方式:

     ip+mac地址就能標識全世界範圍內獨一無二的一臺計算機。

     ip+mac+port就能標識全世界範圍內獨一無二的一個基於網絡通訊的應用軟件。

     url地址:標識全世界範圍內獨一無二的一個資源。

  注意:

 url地址=應用層協議部分(http://)+域名部分和端口部分(即對應對方的網站)+路徑。

 

ARP協議:

ARP協議由來:

計算機通訊基本靠吼,即廣播的方式,全部上層的包到最後都要封裝上以太網頭,而後經過以太網協議發送,在談及以太網協議時候,我門瞭解到

通訊是基於mac的廣播方式實現,計算機在發包時,獲取自身的mac是容易的,如何獲取目標主機的mac,就須要經過arp協議

 

ARP協議功能:廣播的方式發送數據包,獲取目標主機的mac地址。

1.若是處在同一子網中時:

 

 上圖中:pc1做爲源mac,向同一子網裏的主機以廣播的方式發送數據包,在廣播的時候有幾個主機就複製幾份進行發送。而後各個主機接收後拆開包,若是發現裏面的ip是本身的,就返回本身的mac地址,上圖中pc2發現是本身的,就返回了本身的mac.

2.若是處於不一樣的子網中時:

源mac--網管的mac---目標網管的mac----目標ip(解析出目標mac)

 

4.傳輸層:

傳輸層的由來:網絡層的ip幫咱們區分子網,以太網層的mac幫咱們找到主機,而後你們使用的都是應用程序,你的電腦上可能同時開啓qq,暴風影音,等多個應用程序,

那麼咱們經過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。

 

傳輸層的功能:

創建端口到端口的通訊。

 

重點:

   tcp協議。(三次握手,四次揮手)

           三次握手創建鏈接:

 

 以上是三次握手鍊接:syn是創建鏈接的意思。

第一步:客戶端發送 請求包(syn=1)和序列號(seq=x)到服務端。

第二步:服務端經過序列號和請求包 確認請求(ack=1+x),同時向客戶端發出請求包(syn=1)和序列號(seq=y)

第三步:客戶端確認請求包(ack=1+y)

以上 syn_sent是發完,listen是等待。syn_rcvd是接受,established已經創建一個單項鍊接,established已經創建一個單項鍊接

 

四次揮手(斷開鏈接):

 

爲何有四次揮手,是由於中間關係到數據傳輸的問題,當數據沒有傳完的時候,須要等待一下,確認對方收到數據後,才能釋放掉鏈接

斷開鏈接的時候,通常是服務端發起的。由於服務端要接其餘的客戶端。

第一步:服務端先發起斷開請求(fin)和序列號(seq)

第二步:客戶端確認請求(ack)

第三步:客戶端發起斷開請求(fin)

第四部:服務端確認斷開請求(ack)

 

udp協議:

又稱爲‘不可靠傳輸’

udp協議不用建鏈接

優勢:效率高,不用等待

缺點:是不等待就直接釋放掉數據內存,若是對方數據還沒接收完,容易丟失數據

 

五,半鏈接池:

半鏈接池佔的是內存空間,裏面存的是創建鏈接請求數。先進先出。

假如半鏈接池最大爲5,若是有6個主機同一時間進行訪問請求,那麼裏面先一塊兒放5個,一個一個的創建鏈接,出來一個再進去一個。

注意:

半鏈接池限制的是同一時間的請求數,而非鏈接數。

相關文章
相關標籤/搜索