電腦網路基礎 1. 什麼是互聯網協議 一系列統一的標準,這些標準稱之為互聯網協議,互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite)。 互聯網協議的功能:定義電腦如何接入internet,以及接入internet的電腦通信的標準。 2. osi ...
電腦網路基礎
什麼是互聯網協議
一系列統一的標準,這些標準稱之為互聯網協議,互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite)。
互聯網協議的功能:定義電腦如何接入internet,以及接入internet的電腦通信的標準。
osi七層協議
互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層
我們將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議,就理解了整個互聯網通信的原理。
物理層
物理層的由來:孤立的電腦之間要想一起玩,就必須接入internet,言外之意就是電腦之間必須完成組網。
物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0
數據鏈路層
數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什麼意思
數據鏈路層的功能:定義了電信號的分組方式
乙太網協議
早期的時候各個公司都有自己的分組方式,後來形成了統一的標準,即乙太網協議ethernet
ethernet規定:一組電信號構成一個數據包,叫做‘幀。每一數據幀分成報頭head和數據data兩部分
head包含:① 發送者/源地址 ② 接受者/目標地址 ③ 數據類型
data包含:數據包的具體內容
mac地址
head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡,發送端和接收端的地址便是指網卡的地址,即mac地址
mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進位,通常由12位16進位數表示
arp協議
arp協議:通過目標IP地址獲取目標mac地址的一個協議
arp協議由來:電腦通信基本靠吼,即廣播的方式,所有上層的包到最後都要封裝上乙太網頭,然後通過乙太網協議發送,而通信是基於mac的廣播方式實現,電腦在發包時,獲取自身的mac是容易的,如何獲取目標主機的mac,就需要通過arp協議
arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址
協議工作方式:每台主機ip都是已知的
例如:主機172.16.10.10/24訪問172.16.10.11/24
一:首先通過IP地址和子網掩碼區分出自己所處的子網
將子網掩碼和IP地址進行與(&)運算即可得出IP地址所處的網段
二:分析172.16.10.10/24與172.16.10.11/24是否處於同一網路
場景:同一子網 數據包地址:目標主機mac,目標主機IP
場景:不同子網 數據包地址:網管mac,目標主機IP
(如果不是同一網路,那麼目標IP為172.16.10.11,通過arp獲取的是網關的mac)
三:這個包會以廣播的方式在發送端所處的自網內傳輸,所有主機接收後拆開包,發現目標IP為自己的,就響應,返回自己的mac地址
廣播
有了mac地址,同一網路內的兩台主機就可以通信了(一臺主機通過arp協議獲取另外一臺主機的mac地址)
ethernet採用最原始的方式,廣播的方式進行通信,即電腦通信基本靠吼
伺服器1按照上圖的格式以廣播的方式給伺服器4發送乙太網包,然而伺服器234都會收到伺服器1發來的包,拆開後發現目標mac地址不是自己的,就會將其丟棄,若是發現目標mac是自己的,就會做出響應。
網路層
網路層由來:有了ethernet、mac地址、廣播的發送方式,世界上的電腦就可以彼此通信了,問題是世界範圍的互聯網是由一個個彼此隔離的小的區域網組成的,那麼如果所有的通信都採用乙太網的廣播方式,那麼一臺機器發送的包全世界都會收到,這就不僅僅是效率低的問題了,這會是一種災難。
上圖結論:必須找出一種方法來區分哪些電腦屬於同一廣播域,哪些不是,如果是就採用廣播的方式發送,如果不是,就採用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關。
網路層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網路地址
IP協議
規定網路地址的協議叫IP協議,它定義的地址稱之為IP地址,廣泛採用的v4版本即ipv4,它規定網路地址由32位2進位表示,範圍0.0.0.0-255.255.255.255,一個IP地址通常寫成四段十進位數,例:192.168.1.1
IP地址
IP地址分成兩部分
- 網路部分:標識子網
- 主機部分:標識主機
註意:單純的IP地址段只是標識了IP地址的種類,從網路部分或主機部分都無法辨識一個IP所處的子網
例:172.16.10.1與172.16.10.2並不能確定二者處於同一子網
子網掩碼
所謂”子網掩碼”,就是表示子網路特征的一個參數。它在形式上等同於IP地址,也是一個32位二進位數字,它的網路部分全部為1,主機部分全部為0。比如,IP地址172.16.10.1,如果已知網路部分是前24位,主機部分是後8位,那麼子網路掩碼就是11111111.11111111.11111111.00000000,寫成十進位就是255.255.255.0。
知道”子網掩碼”,我們就能判斷,任意兩個IP地址是否處在同一個子網路。方法是將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都為1,運算結果為1,否則為0),然後比較結果是否相同,如果是的話,就表明它們在同一個子網路中,否則就不是。
傳輸層
傳輸層的由來:網路層的IP幫我們區分子網,乙太網層的mac幫我們找到主機,然後大家使用的都是應用程式,你的電腦上可能同時開啟QQ,暴風影音,等多個應用程式,
那麼我們通過IP和mac找到了一臺特定的主機,如何標識這台主機上的應用程式,答案就是埠,埠即應用程式與網卡關聯的編號。
傳輸層功能:建立埠到埠的通信
補充:埠範圍0-65535,0-1023為系統占用埠
TCP協議
可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網路的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。
UDP協議
不可靠傳輸,”報頭”部分一共只有8個位元組,總長度不超過65,535位元組,正好放進一個IP數據包。
TCP與UDP的對比
TCP:傳輸控制協議,提供的是面向連接、可靠的位元組流服務。當客戶和伺服器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重覆數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
UDP:用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和伺服器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快TCP的三次握手和四次揮手
三次握手
TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接:
位碼即tcp標誌位,有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)
Sequence number(順序號碼) Acknowledge number(確認號碼)
第一次握手:主機A發送位碼為syn=1,隨機產生seq number=1234567的數據包到伺服器,主機B由SYN=1知道,A要求建立聯機;
第二次握手:主機B收到請求後要確認聯機信息,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包
第三次握手:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則連接建立成功。
完成三次握手,主機A與主機B開始傳送數據。
一個完整的三次握手也就是 請求---應答---再次確認
四次揮手:
由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。
(1)客戶端A發送一個FIN,用來關閉客戶A到伺服器B的數據傳送。
(2)伺服器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。
(3)伺服器B關閉與客戶端A的連接,發送一個FIN給客戶端A。
(4)客戶端A發回ACK報文確認,並將確認序號設置為收到序號加1。
應用層
應用層由來:用戶使用的都是應用程式,均工作於應用層,互聯網是開放的,大家都可以開發自己的應用程式,數據多種多樣,必須規定好數據的組織形式
應用層功能:規定應用程式的數據格式。
例:TCP協議可以為各種各樣的程式傳遞數據,比如Email、WWW、FTP等等。那麼,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程式協議就構成了”應用層”。
每層運行的常見物理設備
每層運行的常見的協議
............