1. 程式人生 > >計算機網絡知識

計算機網絡知識

互聯網 無法 狀態 本地 核心 解決 計算 spa 活性

計算機網絡英語:computer network),通常也簡稱網絡,是利用通信設備和線路將地理位置不同的、功能獨立的多個計算機系統連接起來,以功能完善的網絡軟件實現網絡的硬件、軟件及資源共享和信息傳遞的系統。簡單的說即連接兩臺或多臺計算機進行通信的系統。

網絡應用是計算機網絡存在的理由,如果我們不使用任何應用,也就沒有任何必要去設計它們的網絡協議了。

開放系統互連基本參考模型, 只要遵守這個OSI標準, 任何兩個系統都能進行通信. OSI是七層協議體系結構, 而TCP/IP是一個四層協議體系結構, 於是我們采取折中的方法, 學習計算機網絡原理的時候往往用的是五層協議的體系結構 : 物理層, 數據鏈路層, 網絡層, 傳輸層和應用層。

技術分享圖片

物理層

計算機的世界裏只有0和1, 正如你現在所看這篇文章的文字, 存儲在計算機中也是一大串0和1的組合. 但是這些數字不能在真實的物理介質中傳輸的, 而需要把它轉換為光信號或者電信號, 所以這一層負責將這些比特流(0101)與光電信號進行轉換.

如果沒有物理層, 那麽也就不存在互聯網, 不存在數據的共享, 因為數據無法在網絡中流動.


數據鏈路層

數據在這一層不再是以比特流的形式傳輸, 而是分割成一個一個的幀再進行傳輸.

網絡層

如果只有數據鏈路層沒有網絡層, 數據就只能在同一條鏈路上傳輸, 不能跨鏈路傳輸. 有了網絡層, 數據便能跨域不同的數據鏈路傳輸.

IP地址

IP地址又稱為軟件地址, 存儲在計算機的存儲器上, IPv4地址為32位, IPv6地址為128位

IP地址和MAC地址
  • 網絡層以上使用IP地址, 數據鏈路層以下使用MAC地址
  • IP地址是邏輯地址, MAC地址是物理地址
  • IP分組中首部的源地址和目的地址在傳輸中不會改變, MAC幀中首部的源地址和目的地址每到一個路由器會改變一次

IP地址分類

IP地址 = {<網絡號>, <主機號>}

A類地址 : 0.0.0.0 ~ 127.0.0.0
B類地址 : 128.0.0.0 ~ 191.255.0.0
C類地址 : 192.0.0.0 ~ 223.255.255.0

劃分子網之後的IP地址

IP地址 = {<網絡號>, <子網號>, <主機號>}

例如某單位擁有一個B類IP地址, 145.13.0.0, 但凡目的地址為145.13.x.x的數據報都會被送到這個網絡上的路由器R. 內部劃分子網後變成 : 145.13.3.0

, 145.13.7.0, 145.13.21.0. 但是對外仍表現為一個網絡, 即145.13.0.0. 這樣路由器R收到報文後, 再根據目的地址發到對應的子網上.

子網掩碼

一般由一串1和一串0組成, 不管網絡有沒有劃分子網, 將子網掩碼和IP地址做按位與運算即可得出網絡地址.

所有的網絡都必須使用子網掩碼, 同時在路由表中必須有子網掩碼這一欄. 如果一個網絡不劃分子網, 那麽該網絡的子網掩碼就是默認的子網掩碼.
A類地址的默認子網掩碼為255.0.0.0
B類地址的默認子網掩碼為255.255.0.0
C類地址的默認子網掩碼為255.255.255.0

盡管劃分子網增加了靈活性, 但是卻減少了能夠連接在網絡上的主機總數.

傳輸層

這一層是重中之重, 因為數據鏈路層, 網絡層這兩層的數據傳輸都是不可靠的, 盡最大能力交付的. 什麽意思的? 就是它們不負責提交給你的就是正確的數據. 然而這一層的TCP協議將要提供可靠傳輸

這一層主要重點是兩個協議 : 因特網(TCP/IP網絡)上的應用使用了兩個運輸層協議:UDP和TCP。

為什麽Tcp協議需要三次握手建立連接?

TCP作為一種可靠傳輸控制協議,其核心思想:既要保證數據可靠傳輸,又要提高傳輸的效率,而用三次恰恰可以滿足以上兩方面的需求!

TCP可靠傳輸的精髓:TCP連接的一方A,由操作系統動態隨機選取一個32位長的序列號(Initial Sequence Number),假設A的初始序列號為1000,以該序列號為原點,對自己將要發送的每個字節的數據進行編號,1001,1002,1003…,並把自己的初始序列號ISN告訴B,讓B有一個思想準備,什麽樣編號的數據是合法的,什麽編號是非法的,比如編號900就是非法的,同時B還可以對A每一個編號的字節數據進行確認。如果A收到B確認編號為2001,則意味著字節編號為1001-2000,共1000個字節已經安全到達。

同理B也是類似的操作,假設B的初始序列號ISN為2000,以該序列號為原點,對自己將要發送的每個字節的數據進行編號,2001,2002,2003…,並把自己的初始序列號ISN告訴A,以便A可以確認B發送的每一個字節。如果B收到A確認編號為4001,則意味著字節編號為2001-4000,共2000個字節已經安全到達。

一句話總結就是:雙方都需要確認對方收到了自己的序列號。也就是為了檢測雙方的發送和接收能力是否正常。

為什麽Tcp協議需要四次揮手斷開連接?

首先, 由於TCP的全雙工通信, 雙方都能作為數據發送方. A想要關閉連接, 必須要等數據都發送完畢, 才發送FIN給B. (此時A處於半關閉狀態)
然後, B發送確認ACK, 並且B此時如果要發送數據, 就發送(例如做一些釋放前的處理)
再者, B發送完數據之後, 發送FIN給A. (此時B處於半關閉狀態)
然後, A發送ACK, 進入TIME-WAIT狀態
最後, 經過2MSL時間後沒有收到B傳來的報文, 則確定B收到了ACK了. (此時A, B才算是處於完全關閉狀態)

應用層

應用層協議最著名的就是HTTP, FTP了, 還有一個重要的DNS

域名系統(DNS, Domain Name System)

DNS 能將域名(例如, www.jianshu.com)解析成IP地址.

域名服務器分類

  • 根域名服務器 : 最高層次的域名服務器
  • 頂級域名服務器 : 如其名
  • 權限域名服務器 : 負責一個區的應服務器
  • 本地域名服務器 : 主機發送DNS查詢請求就是發給它

URL

URL的格式 : <協議>://<主機>:<端口>/<路徑>, 端口和路徑有時可省略.

使用HTTP協議的URL : http://<主機>:<端口>/<路徑>, HTTP默認端口號是80

HTTP協議

HTTP是面向事務的, 即它傳輸的數據是一個整體, 要麽全部收到, 要麽全部收不到.


HTTPS協議


HTTPS協議在HTTP協議的基礎上, 在HTTP和TCP中間加入了一層SSL/TLS加密層, 解決了HTTP不安全的問題: 冒充, 篡改, 竊聽三大風險.

計算機網絡知識