計算機網絡簡單總結

計算機網絡總結:

1.OSI七層模型

1.應用層

2.表示層

3.會話層

4.傳輸層

5.網絡層

6.數據鏈路層

7.物理層

有的模型則分爲5層,前三層統一稱爲應用層。

1.2 層於協議

 

每一層之間之間,爲了完成相應的功能,都遵守一定的協議,

這些協議統稱爲互聯網協議。

 

 

  1. 物理層
    1.  物理層就是通過光纜,電纜將電腦連接起來。
    2. 規定了網絡的電氣特性,主要負責傳輸0和1

 

  1. 數據鏈路層
    1.  單純的0和1並沒有意義,我們必須需要知道多要個信號爲一組,每個信號爲所代表的意義。
    2. 所以,爲了給電信號分組,便有了以太網協議(Ethernet),以太網協議規定了一組數據包稱爲幀。每一幀包含標頭(head) 和數據(Data)
    3. 標頭包含數據的發送者和接收者等信息,Data則包含了具體的數據
    4. 標頭固定18個字節,數據最短46個字節,最長1500個字節。如果數據超過1500則必須分成多個幀發送。
    5. mac地址,標頭所包含的發送者和接收者的信息,正是發送者和接收者的mac的字,以太網規定,連入網絡的設備必須具有網卡。而數據包的發送,就是從一塊網卡到另一塊網卡。而網卡的地址,就是mac地址。
    6. 世界上每一塊網卡的地址都是獨一無二的。
    7. 廣播
      •  一個網卡如何直到另一個網卡的mac地址?(ARP協議)
      • 即便知道了另一塊網卡的地址,如何將數據發送給它。

以太網的解決方式是向子網內的所有計算機發送數據包,標頭包含接收機的mac地址,每一臺接受到數據包的計算機都會根據自己的mac地址判斷自己是不是接收者,如果不是,就會自動忽略這條信息。

 

這樣,有了數據包,網卡,以及廣播,計算機就能夠在鏈路層通信了。

 

 

  1. 網絡層
    1. 網絡層的由來

以上廣播的方式解決了子網內的通信,但我如果我們想要與世界上的一臺計算機通信,我們肯定不能給世界上每一臺計算機都發送一個數據包,讓他去確認是不是我們的目的主機。於是就有了網絡層。

因此我們要解決的是如果判斷兩臺主機是否在同一個子網內,如果在同一個子網內的話我們就通過廣播的方式發送,不是的話我們就通過路由轉發。

 

判斷子網的方法,也很簡單,就是用ip地址and上子網掩碼看得到的結果是否一致。

有了ip地址之後,我們將數據包送到目的子網,然後再通過mac地址送到目的主機。

 

    1. ip協議

簡單的總結:ip協議的作用就是爲每一臺計算機分配ip地址,確定那些地址在同一個子網。

 

    1. ip數據包

ip數據包包含head 和data兩部分,頭部主要包含ip地址等信息,data就是要傳輸的數據。 ip 數據包被包裹在 以太數據包的data字段。

 

    1. ARP協議

 

通常情況下目的主機的ip地址是已知的,因爲通過域名,DNS服務器可以解析出目的主機的ip地址。

那麼我們的問題就轉化爲,如何由ip地址得到mac地址?

 

  1. 首先判斷於目的主機是否在同一子網,如果是我們可以通過ARP協議得到目的主機的mac地址。(通過廣播的方式)
  2. 如果不是,就交由子網連接處的網關(gateway)去處理。
  1. 傳輸層
    1. 爲什麼要有傳輸層?

還記得之前總是記不住,網絡層實現了主機到主機的通信,傳輸層實現了端口到端口的通信。

 

當我們的數據包發送到目的主機,我們必須要知道發送給那個端口,即發送給哪個應用程序。總不能發送的QQ消息被微信收到了吧。所以說傳輸層實現了端口到端口的通信。

 

端口是0-65535之間的整數,0-1023被系統佔用,其他可以使用。

 

    1. UDP協議

有了端口之後就需要在數據包中加入端口信息,於是就有了傳輸層的協議,UDP和TCP,這樣個協議已經見過很多次了,但我還是感覺到陌生,如果想要真正的理解還是去讀一下TCP/IP協議詳解吧。目前準備寒假的時候讀一下。

 

同樣UDP協議也包含head和Data兩部分,頭部包含了發送端口和接收端口。data包含數據信息。UDP數據包被放在ip數據包的數據字段。而ip數據包又被放在以太網的數據包中。發送信息的時候就是這樣一層一層的嵌套,而接收信息的時候也是一層一層的剝開。 哈哈。

 

    1. TCP協議

TCP協議太重要了,也不可能用一段話來總結清楚,所以就放在下面總結吧。

 

TCP協議是面向連接的,UDP是無連接的,所以UDP無法保證數據的安全,也無法保證數據能夠送達。而TCP是保證數據不會丟失的(即使丟了也會重傳)。

 

  1.  應用層協議

常見的有

HTTP 超文本傳輸協議

SMTP 簡單郵件傳輸服務

FTP 文件傳輸服務

 

每一種應用層協議都有自己的端口號但是不太好記。

好吧 最近記住了 MySQL的端口號是3306

 

 

  1. 後記

曾經面試官問我,當我們在瀏覽器中輸入百度的網址後所經歷的過程。當時,是我第一次電話面,距離學完計網已經1年QAQ。但憑藉着當時的理解,還是大致說出來了。但是,說的太籠統了。

 

 

  1. 當我們在瀏覽器中輸入域名時,我們就像DNS服務器發送了一個數據包,來得到目的主機的ip地址。
  2. 瀏覽器與服務器之間建立TCP鏈接。
  3. 然後瀏覽器發送一個http請求報文,經過傳輸層,網絡層,數據鏈路層,每通過一層都加上相應的首部,然後送達目的主機。
  4. 然後目的主機就一層一層的扒,這裏是逆過程,把信息傳送到應用層。
  5. 然後服務器返回信息。
  6. 瀏覽器將拿到的信息渲染。

 

至於http請求報文的格式

大致分爲

 

請求行,請求頭,和請求體

響應報文的格式

響應狀態行

 

響應頭

響應體

 

其中請求頭會包含:

  1. 本機可接受的信息格式 Accept:
  2. 優先接受的編碼  Accept-Encoding
  3. cookie
  4. host:目的主機
  5. user-agent:客戶端程序信息(瀏覽器版本)

    當然需要知道的還有很多,當真正的理解了他的作用,不用記也就知道了。

 

8 .  TCP和UDP的差異

 

  1. TCP是面向鏈接的,UDP無連接
  2. TCP提供可靠的數據傳輸服務,UDP是進最大努力交付
  3. TCP面向字節流,UDP面向報文
  4. TCP保證數據的傳輸是有序的,UDP是無序的。

 

TCP建立鏈接的三次握手

  1. 客戶端發出鏈接請求
  2. 服務器端接受鏈接,並向客戶端發出鏈接請求
  3. 客戶端接收鏈接。

 

斷開連接的四次揮手

  1. 客戶端發送一個FIN,用來關閉數據傳輸,進入終止等待狀態
  2. 服務器端收到FIN後,回覆一個ACK報文應答
  3. 服務器端發送一個FIN
  4. 客戶端收到請求後,發送一個確認數據,關閉連接。

 

TCP內部的很多算法機制保證了TCP的可靠傳輸:

    擁塞控制,超時重傳,錯誤重傳等。。。。

 

 

應用場景:

實時會議,如果使用TCP,當網絡不好會發生重傳,畫面會有延遲。udp允許丟包,

即使一些數據丟失,整體上也不會有什麼影響。

 

 

當然計算機網絡一本書也總結不完,暫時就先總結這麼多吧。

總結參考了jackjiang的網絡編程入門TP​​​​​​​

發佈了332 篇原創文章 · 獲贊 69 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章