一.客戶端與服務端架構介紹程序員
客戶端與服務端實現通訊瀏覽器
客戶端將處理好的數據發給服務端,服務端把反饋好的數據再發回給客戶端(客戶端與服務端實現交互) 服務器
CS架構網絡
跟CS相對應的還有一個BS架構 (瀏覽器和服務端軟件)架構
爲何程序員要了解互聯網通訊協議?tcp
程序員要寫一個客戶端和服務端的軟件,二者實現基於網絡通訊,物理連接介質程序員不用管,可是協議須要管,學習
由於客戶端產生數據後,照着某種協議的標準組織數據,而後把數據交給操做系統,操做系統幫咱們調網絡協議網站
,而後組織數據,而後調網卡,對方把數據解出來就能夠了。url
=================================================================================操作系統
服務端必須知足的要求:
一、穩定運行(網絡、硬件、操做系統、服務端應用軟件)對外一直提供服務
二、服務端必須綁定一個地址
什麼是單點故障?
單點故障:某一個壞了另一個頂
二.互聯網協議
計算機與計算機之間必須有底層的物理鏈接介質,咱們才能將計算機與計算機鏈接到一塊兒進行網絡通訊
打電話(電話線鏈接,這是物理鏈接介質) 計算機(網線鏈接)
什麼是互聯網?
兩大要素
一、底層的物理鏈接介質,是爲通訊鋪好道路的
二、一套統一的通訊標準,互聯網通訊協議
互聯網協議就是計算機界的英語
網線(物理鏈接介質) 物理鏈接設備:光纜,電纜,雙絞線,無線電波
物理層:負責發送電信號 (高低電頻,人爲的將高電頻定爲1,低電頻定爲0)(調網卡往外發)
由網卡發給對方的物理層
====================================================================================
數據鏈路層:要想把電信號對應出意義(例如:電信號010101) 須要進行分組操做,要想分組物理層幹不了,要幹這件事須要數據鏈路層來幹這件事 一開始
各有各的標準,後來統一了標準,這套標準稱之爲以太網協議(ethernet)
一組電信號分爲一個數據幀,或者叫一個數據包
任何一個數據包分爲兩大部分,稱之爲報頭與數據部分(報頭至關於信封,信封裏麪包的數據至關於裏面的內容)
爲何要固定?
爲了將數字創建有意義,能跟人的意思創建好對應關係
自定義協議:
任何一種通訊協議必須包含兩部分:
一、報頭:必須是固定長度
二、數據
以太網協議規定但凡接入互聯網的主機都必須有一塊網卡稱之爲以太網卡
每一塊網卡上必須有一個網址,這個網址就稱之爲mac地址
mac地址的組成
mac地址 發送端和接受端的地址稱之爲mac地址即網卡地址
以太網協議通訊:採用最古老的方式,廣播
廣播風暴:交換機產生大量的廣播
兩臺機器在一個局域網內以太網 (mac地址出不了廣播域)
======================================================================================================
網絡層
網絡層有一個協議稱之爲IP協議
目前咱們使用IP的版本是第四版本 稱之爲IPV4 ,目前咱們正普及IPV6
IP這個協議規定 發送數據包分爲兩部分, 報頭和數據與以太網同樣。 IP協議的數據包用的是IP地址。以太網協議的數據包用的是以太網地址。
IP地址與子網掩碼
二者都同樣都是點分十進制
學IP地址的用處?
子網地址同樣的狀況下 子網地址(IP地址與子網掩碼匹配出子網地址)
當主機分散在不一樣的局域網內,沒法找到對方在哪,先要找到對方的局域網在哪裏,單純的IP地址標識不了還須要配套的子網掩碼。而後獲得子網地址
接着匹配子網地址。獲得對方的子網地址和本身的子網地址地址是否是同樣,若是同樣就在一個局域網內,而後再用mac地址
子網地址不同的狀況下
我本身有子網地址,對方也有子網地址IP與子網掩碼的按位與運算,找到對方在哪一個小圓圈,再根據mac地址,就能找到對方在哪一個小圓圈的地址
IP+mac地址就能標識世界上獨一無二的計算機(基於網絡通訊的前提必定要有標識地址的方式)
=======================================================================================================
光計算機通訊就完了嗎 是客戶端軟件與服務端軟件進行通訊,不光要找到計算機,還要找到計算機上面的應用軟件,IP地址搞定不了
每啓動一個互聯通訊的程序都會對應一個端口1024-65535是本身的程序 0-1024是給操做系統預留的
傳輸層(TCP/UDP)
IP+mac+端口號(port)就能標識全世界獨一無二的基於網絡通訊的應用軟件(服務端不準換端口號,客戶端能夠換端口號)
========================================================================================================
應用層(跟應用軟件有關)
http,ftp,mail (這些是通用的協議) 瀏覽器用的是http協議
如何用瀏覽器把對方主機上的內容下載到本地瀏覽的過程
上網的過程其實就是一個下載的過程。
應用層產生一個請求(數據),調本機的網卡,沿着網絡發給對方的網卡,再讓對方收到。應用程序交給操做系統,操做系統會包tcp的頭,操做系統再包IP 頭,再包以太網頭。再把包打散造成0101的二進制,沿着網卡接着經過物理鏈接介質送給對方。接着交給對方的操做系統,而後進行解包的過程。
如何解呢?一層層解,物理層拆以太網協議頭,再拆IP 頭而後拆TCP頭,露出應用層的數據而後交給服務端的應用軟件來接受數據。
發數據事不斷封包的過程,收數據事拆包的過程。
應用層如下的歸操做系統管
應用層實際上是發給操做系統,應用層只要把數據丟給操做系統就發完了,操做系統會照着協議本身運做就能夠了。應用層的send是發給本身的操做系統
應用層的send是給本身的操做系統發的
瀏覽器與服務端的交互經過url
URL稱之爲統一資源定位符 在視頻的 (1:23裏解釋) 用來標識全世界範圍內獨一無二的資源。再找到軟件的基礎上再加一層
URL地址創建在 IP地址mac地址及端口地址上的
http://應用層協議部分
www.cnblogs.com稱之爲域名
此處還省略了端口號:80 這是服務端的端口號 (全部瀏覽器自動填充的端口號是80)
/linhaifeng/article/62300稱之爲文件的路徑
網站的本質就是把一丟有價值的數據傳到機器之上,起了服務端軟件,管理這臺機器上的文件。
域名必定是對應ip地址的。可是經過瀏覽器訪問網站的時候沒有指定IP,如何經過域名拿到IP地址呢?
經過一臺機器來拿到DNS服務器
DNS稱之爲域名解析服務端。(經過他來拿到IP地址)
總的分析:瀏覽器如何從無到有訪問一個網頁的內容的
首先接受用戶的交互操做,產生一個URL地址,而後瀏覽器不着急發請求,把域名交給網卡上配的DNS,DNS會反饋一個IP地址,拿到IP地址訪問IP和端口
而後找到對方的機器。而後瀏覽器與對方軟件建好聯繫(兩條道),按照http協議去封裝。
互聯網協議的補充(瞭解)
網絡層和以太網協議 如何把包送給對方的
先要拿到對面的IP地址,接下來算本身的IP和本身的子網掩碼算一個網絡地址,別人的IP和別人的子網掩碼算一個網絡地址。發現這兩個同樣在一個局域網
交換機有一個mac地址學習的功能,能夠避免重複發廣播包的問題
ARP協議算對方IP和子網掩碼跟個人IP和子網掩碼同樣?
對方跟我在一個子網內基於mac地址的廣播
mac地址通訊只能在局域網內
網關與網關走的是路由協議
一個局域網網關都同樣
三次握手
客戶端發請求,服務端就立馬要求建鏈接
sy1=1這是一個請求包
ack=1表明確認的意思
seq=x 序列號,暗號
seq=x+1
通常都是寫ack=1+x這裏面有兩層意思 第一層是確認信息的意思,第二層1+x是基於上一個請求而來的
seq=y這個包的序列號 服務端受到這個包下個鏈接也建成功了
爲何三次握手建鏈接中間兩步能夠併成一步呢?由於此時只是爲了傳真正數據鋪路而已。鋪路是爲了客戶端給服務端發數據,服務端給客戶端回數據。
數據發完了喪失存在的意義。
四次揮手
數據發完了 客戶端會請求服務端斷掉上面的鏈接
fin=1表明斷開鏈接
ack=1+x這裏面有兩層意思