計算機網絡筆記整理

網絡的七層結構:

  • 應用層[Application layer](應用協議數據單元APDU): 經過應用進程間的交互來完成特定的網絡應用,爲操做系統或網絡應用程序提供訪問網絡服務的接口
    • 包含的協議: DNS協議(域名系統,映射域名和IP地址) HTTP協議 SMTP協議(支持電子郵件)
    • 應用層交互的數據單元: 報文
  • 表示層[Session layer]: 信息的語法語義以及它們的關聯, 如加密解密、轉換翻譯、壓縮解壓縮。
  • 會話層(不一樣機器上的用戶之間創建以及管理會話。
  • 運輸層Transport layer: 負責兩臺主機進程之間須要的通用的數據傳輸服務
    • 包含的協議:
      • TCP協議(Transmission Control Protocol 傳輸控制協議): 面向鏈接的,可靠的數據傳輸服務
      • UDP協議(User Datagram Protocol 用戶數據協議): 無鏈接的數據傳輸服務
      • TCP 和 UDP的區別:
        1. UDP是面向報文的,無鏈接的。TCP是面向鏈接的(相似打電話)。UDP在傳送數據以前不須要先創建鏈接,遠程主機在收到UDP報文後,不須要給出任何確認。
        2. UDP支持一對1、一對多、多對一和多對多的交互通訊。每一條TCP鏈接只能有兩個端點,每一條TCP鏈接只能是點對點的(一對一)
        3. UDP盡最大努力交付,但不保證可靠交付,也不須要維持複雜的連接狀態。 TCP提供可靠交付服務。經過TCP連接傳送的的數據能夠保證無差錯,不丟失,不重複,而且按照序列送達。
        4. UDP的頭部開銷小, 只有8個字節, TCP有20個字節
        5. UDP沒有擁塞控制,網絡出現擁堵不會使源主機發送率下降
        6. TCP面向字節流, Stream指的是流入進程或從進程流出的字節序列。面向字節流表示雖然應用程序和TCP的交互是一次一個數據塊, 但TCP把應用程序交下來的數據僅看作是一連串無結構的字節流。
        7. 應用場景不一樣: UDP多應用於實時應用遊戲,直播,QQ語音 TCP用於精確場景, 例如文件傳輸、發送和接收郵件、遠程登陸等場景。
  • 網絡層(Packet): 負責爲分組交換網上的不一樣主機提供通訊服務
  • 數據鏈路層(Frame): 兩臺主機之間的數據傳輸,將比特組裝成幀和點到點的傳遞,完成物理地址尋址、數據的成幀、流量控制、數據的檢錯+重發。每一幀包括數據和必要的控制信息(同步信息, 地址信息, 差錯控制)。控制信息可以使得接收端知道一個幀從哪一個比特開始到哪一個比特結束。保證可以正確提取數據,同時還能檢測到所在的幀當中是否有差錯。同時還要糾正鏈路層傳輸時出現的差錯,須要可靠性傳輸協議來糾正差錯。
  • 物理層(Bit): 經過媒介傳輸比特,肯定機械及電氣規範

網絡的三次握手和四次揮手

三次握手:須要確認 發送端和接收端要分別確認 發送端和接收端 發送 接收正常 + 接收端 發送 接收正常 4個確認 * 2 = 8個確認 ABCD A'B'C'D'
A: 發送端確認本方發送正常
B: 發送端確認本方接收正常
C: 發送端確認對方發送正常
D: 發送端確認對方接收正常算法

A':接收端確認本方發送正常
B':接收端確認本方接收正常
C':接收端確認對方發送正常
D':接收端確認對方接收正常
發包:本方發送正常
收包 + 發回應包: 對方發送正常 + 本方接收正常 + 本方發送正常
誰收包誰確認
1.發送端 -> 接收端:發送標有SYN的數據包 -> 握手錶示: 發送端的包接收端收到 -> 接收端確認對方發送正常(C') + 接收端接收本方接收正常(B')
2.接收端 -> 發送端:接收端收到了你發給個人數據包 + 發送標有SYN/ACK的數據包 -> 握手錶示: 接送端的包發送端收到 -> 發送端確認本方接收正常(B) + 發送端確認本方發送正常(A) + 發送端確認對方發送正常(C) + 發送端確認對方接收正常(D)
3.發送端 -> 接收端:發送標有ACK的數據包 -> 握手錶示:發送端的包接收端收到 -> 接收端確認本方發送正常(A') + 接收端確認對方接收正常(D')瀏覽器

三次握手的目的: 確認本身與對方的發送與接收都是正常的服務器

四次揮手: 任何一方均可以在數據傳輸結束後發送鏈接釋放的通知, 待對方確認後進入半關閉狀態。當另外一方也沒有數據再發送的時候,則發出鏈接釋放通知,對方確認後就徹底關閉TCP鏈接。網絡

  1. 主動關閉方 -> 被動關閉方: FIN
  2. 被動關閉方 -> 主動關閉方: ACK
  3. 主動關閉方 -> 被動關閉方: FIN
  4. 被動關閉方 -> 主動關閉方: ACK

爲何須要三次握手?

爲了防止「已失效的鏈接請求報文段」忽然又傳送到了B。假設A向B發送了鏈接請求,但這個鏈接請求報文沒有及時到達B,則A由於沒有收到B的確認而從新發送一個鏈接請求報文,B確認後鏈接創建,而後進行一系列數據交換後關閉的鏈接。但此時以前A發送的鏈接請求報文忽然到達了B,則B會對此發送確認,若是採用兩次握手,那麼此時AB又創建了鏈接,而A並無數據向B發送,白白浪費B的資源。採用三次握手則不會出現這種狀況,由於B向A發送確認時,A不會再給B發送確認,鏈接不會創建。
tcp

TCP如何保證可靠傳輸

  1. 應用數據被分割爲TCP所認爲的什麼時候大小的數據塊
  2. TCP給發送的每個包進行編號, 接收方對數據包進行排序, 把有序數據傳送給應用層
  3. 校驗和(checkSum) TCP將保持首部和數據的校驗和。 這是一個端到端的檢驗和, 檢測數據在傳輸過程當中的任何變化
  4. TCP的接收端會丟棄重複的數據
  5. 流量控制: TCP連接的每一方都有固定大小的緩衝空間, 減低發送速率能夠防止包丟失
  6. 擁塞控制: 網絡擁塞時,減小數據的發送
  7. 中止等待協議: 每發完一個分組就中止發送, 等待對方確認,在確認後再發送下一個分組。超時重傳: 當TCP發出一個段後,啓動一個定時器, 等待目的端確認收到這個報文段。若是不能及時收到確認,會重發這個報文。

IP協議

  1. 不可靠: 並不保證IP數據報文能成功到達目的地。若是發生錯誤,直接丟棄該數據報文,而後發送ICMP消息報給信源端,任何可靠性必須由上層提供
  2. 無鏈接:IP並不維護任何關於後序數據報文的狀態消息,每一個鏈接都是獨立的。因此IP數據報文能夠不按照發送順序接收。

應用層協議與傳輸層協議


TCP對應的協議:post

(1) FTP:定義了文件傳輸協議,使用21端口。
(2) Telnet:一種用於遠程登錄的端口,使用23端口,用戶能夠以本身的身份遠程鏈接到計算機上,可提供基於DOS模式下的通訊服務。
(3) SMTP:郵件傳送協議,用於發送郵件。服務器開放的是25號端口。
(4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110端口。
(5)HTTP:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。性能

UDP對應的協議:加密

(1) DNS:用於域名解析服務,將域名地址轉換爲IP地址。DNS用的是53號端口。
(2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。因爲網絡設備不少,無鏈接的服務就體現出其優點。
(3) TFTP(Trival File Transfer Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。操作系統

傳輸層協議和應用層協議的區別


傳輸層協議主要用於主機的進程與進程之間的相互通訊,而網絡層協議主要應用於主機與主機之間的相互通訊。.net

在瀏覽器輸入一個網址後執行的所有過程

  1. DNS解析IP地址。客戶端瀏覽器發起一個HTTP會話到IP地址,而後經過TCP進行封裝數據包,輸入到網絡層
  2. 在客戶端的傳輸層,把HTTP會話請求分紅報文段,添加源和目的端口,入服務器使用80端口監聽客戶端請求,客戶端由系統隨機選擇一個端口(6000)與服務器交換,服務器把輕盈的請求返回給客戶端的6000端口,而後使用IP層的IP地址查找目的端。
  3. 網絡端的網絡層不關心應用層和傳輸層的東西,主要作的是經過查找路由表肯定如何到達服務器, 期間可能通過多個路由器。
  4. 鏈路層: 跑經過鏈路層發送到路由器,查找IP地址的MAC地址,而後發送ARP請求查找目的地址,若是獲得迴應後就可使用ARP的請求應答交換IP數據包能夠傳輸,而後發送IP數據包到達服務器的地址

字節號和序號

字節號:TCP是面向字節流的,所以TCP會對字節數據進行編號,即每個字節數據都會有一個編號,這個編號就叫字節號,編號的範圍是:0 ~ 2^32-1,須要注意的是TCP對字節數據編號不是從0和1開始的,而是根據系統內核機制來隨機編號的。

序號:前面咱們說過序號是針對數據段的,由主機發送的這6000字節數據以數據段爲單位,封裝成多個大小不一樣的tcp數據段報文在網絡中傳輸。由於序號是基於字節號的,因此tcp協議會給每一個tcp數據段報文分配一個序號,而這個序號就是tcp數據段報文的第一個字節的編號(字節號)。

TCP對於數據的封裝

假如第一個字節的編號爲110
那麼第一個報文的字節號範圍:110 ~ 1109
第二個報文的字節號範圍:1110 ~ 2109
第三個報文的字節號範圍:2110 ~ 3109
第四個報文的字節號範圍:3110 ~ 4109
第五個報文的字節號範圍:4110 - 6109

HTTP狀態碼

1XX Informational
2XX Success
3XX Redirection
4XX Client Error
5XX Server Error

擁塞控制

擁塞: 某段時間內,網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能就要變差, 這種狀況叫作擁塞。

擁塞控制是一個全局性的過程,涉及全部的主機 + 路由器 + 下降網絡傳輸性能有關的因素。而流量控制是點對點通訊量的控制,是端到端的問題。流量控制要作的就是一直髮送端發送數據的速率。

TCP控制擁塞的方法,使用擁塞窗口(cwnd)狀態變量。
四種擁塞控制算法:

  1. 慢開始: 以×2的速度逐漸增大cwnd取值
  2. 擁塞避免: 沒通過一個往返時間RTT就把cwnd+1
  3. 快重傳 + 快恢復(FRR fast retransmit and recovery): 快速回復丟失的數據包 沒有FRR的狀況下,若是數據包丟失,TCP將會使用定時器來要求傳輸暫停。在暫停的時間段內,沒有新的數據包被髮送,有了FRR, 若是接收器接收到一個不按順序的數據段,它會當即給發送端發送一個重複確認,若是有收到三個重複確認,發送端就假定確認信息提到的包丟失了,當即重傳這些丟失的數據段。有了FRR, 就不會由於重傳時要求的暫停被耽誤。 優勢: 當有單獨的數據包丟失時

網絡層也可讓路由器採用適當的分組丟棄策略(如主動隊列管理)

待整理的題目:

HTTPS的握手, HTTPS的請求

參考文章

搞定計算機網絡

相關文章
相關標籤/搜索