一,客戶端/服務端架構瀏覽器
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個,一個一個的創建鏈接,出來一個再進去一個。
注意:
半鏈接池限制的是同一時間的請求數,而非鏈接數。