計算機(jī)網(wǎng)絡(luò) -- 基礎(chǔ)知識

近期把計算機(jī)網(wǎng)絡(luò)的主要章節(jié)看了一下,整理出的知識點(diǎn)主要是TCP/IP四層模型每一層的具體細(xì)節(jié)等。
應(yīng)用層,運(yùn)輸層,網(wǎng)絡(luò)層,數(shù)據(jù)鏈路層等進(jìn)行詳解

OSI七層模型 & TCP/IP 四層模型
  • 應(yīng)用層:通過應(yīng)用程序間的交互來完成特定網(wǎng)絡(luò)應(yīng)用。應(yīng)用層的協(xié)議定義是應(yīng)用層序之間通信和交互的規(guī)則。
  • 傳輸層:負(fù)責(zé)兩臺主機(jī)的進(jìn)程之間通信提供通用的數(shù)據(jù)傳輸服務(wù)。(報文段(TCP)/用戶數(shù)據(jù)報(UDP))
  • 網(wǎng)絡(luò)層:負(fù)責(zé)為分組交換網(wǎng)上的不同主機(jī)提供通信服務(wù)。分組也叫IP數(shù)據(jù)報。
  • 數(shù)據(jù)鏈路層:兩臺主機(jī)之間的數(shù)據(jù)在鏈路上進(jìn)行傳輸,就需要專門的鏈路層協(xié)議。在兩個相鄰節(jié)點(diǎn)之間傳送數(shù)據(jù)時,數(shù)據(jù)鏈路將網(wǎng)絡(luò)層交下來的IP數(shù)據(jù)報(簡稱為數(shù)據(jù)報,分組或包)封裝成幀。每一幀包括數(shù)據(jù)和必要的控制信息(同步信息,地址信息,差錯控制)
  • 物理層:物理層傳輸?shù)臄?shù)據(jù)單位是比特。

一、物理層

在各種計算機(jī)的傳輸媒體上傳輸數(shù)據(jù)比特流。

二、數(shù)據(jù)鏈路層

1、點(diǎn)對點(diǎn)信道的數(shù)據(jù)鏈路

點(diǎn)對點(diǎn)信道的數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元 — 幀。

數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層交下來的 IP 數(shù)據(jù)報構(gòu)成幀發(fā)送到鏈路上,以及把接收到的幀中的數(shù)據(jù)取出并交給網(wǎng)絡(luò)層。

點(diǎn)對點(diǎn)信道的數(shù)據(jù)鏈路進(jìn)行通信時主要步驟:

  1. 結(jié)點(diǎn)A的數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層交下來的 IP 數(shù)據(jù)報添加首部和尾部封裝成幀。
  2. 結(jié)點(diǎn)A把封裝好的幀發(fā)給結(jié)點(diǎn)B的數(shù)據(jù)鏈路層
  3. 若結(jié)點(diǎn)B數(shù)據(jù)鏈路層收到的幀無差錯,則從收到的幀中取出 IP 數(shù)據(jù)報交給上面的網(wǎng)絡(luò)層,否則丟棄幀。

數(shù)據(jù)鏈路層協(xié)議的三個基本問題

  • 封裝成幀:在一段數(shù)據(jù)的前后添加首部和尾部,這樣就構(gòu)成了一個幀,接收端收到物理層上交的比特流后,就根據(jù)首部和尾部的標(biāo)記,從收到的比特流中識別幀的開始和結(jié)束。首部和尾部的作用就是進(jìn)行幀定界。并且首部和尾部還會包含一些重要的控制信息。

  • 透明傳輸:表示無論什么樣的比特組合的數(shù)據(jù),都能按照原樣沒有差錯的通過這個數(shù)據(jù)鏈路層。

    幀的開始和結(jié)束標(biāo)記使用專門指明的控制字符,任何 8 比特的組合一定不允許作為幀定界控制字符。

    為解決透明傳輸問題,必須設(shè)法使數(shù)據(jù)中可能出現(xiàn)的控制字符【SOH】【EOT】在接收端不被解釋為控制字符,具體辦法(字節(jié)/符填充法):發(fā)送端的數(shù)據(jù)鏈路層在數(shù)據(jù)中出現(xiàn)控制字符【SOH】【EOT】的前面插入轉(zhuǎn)義字符【ESC】,而在接收端的數(shù)據(jù)鏈路層把數(shù)據(jù)送往網(wǎng)絡(luò)層之前刪除插入的轉(zhuǎn)義字符。

  • 差錯檢測:比特差錯是比特在數(shù)據(jù)傳輸過程中常見的差錯,只是傳輸差錯中的一種。具體解決辦法(循環(huán)冗余檢查CRC):每組 k 個比特,待傳送的數(shù)據(jù)是 M,CRC 運(yùn)算就是在數(shù)據(jù) M 后面添加供差錯檢測用的 n 位冗余碼。構(gòu)成新的比特 (k+n)位,在所要發(fā)送的數(shù)據(jù)上添加 n 位冗余碼,雖增大了傳輸開銷,卻可以進(jìn)行差錯檢測。

2、廣播信息的數(shù)據(jù)鏈路層

局域網(wǎng)最主要的特點(diǎn):網(wǎng)絡(luò)為一個單位所擁有,且地理范圍和站點(diǎn)數(shù)目均有限。

局域網(wǎng)的優(yōu)點(diǎn)

  • 具有廣播功能,從一個站點(diǎn)可很方便的訪問全網(wǎng),局域網(wǎng)上的主機(jī)可以共享連接在局域網(wǎng)上的各種硬件和軟件資源。
  • 便于系統(tǒng)的擴(kuò)展和逐漸演變,各設(shè)備的位置可靈活調(diào)整和改變。
  • 提高系統(tǒng)的可靠性,可用性,生存性。

局域網(wǎng)可按照網(wǎng)絡(luò)拓?fù)溥M(jìn)行分類:星形網(wǎng),環(huán)形網(wǎng),總線網(wǎng)。

三、網(wǎng)絡(luò)層

網(wǎng)絡(luò)層提供的兩種服務(wù)

  • 虛電路服務(wù)(適用于電話業(yè)務(wù)等非智能,無差錯處理能力的傳輸)

    1. 兩臺計算機(jī)進(jìn)行通信,首先建立連接(在分組交換中是建立的需電路)
    2. 為雙方預(yù)留通信所需的一切網(wǎng)絡(luò)資源
    3. 雙方沿著已建立的虛擬電路發(fā)送分組(這樣分組首部不需要添加完整的目的主機(jī)地址,只需要填寫虛擬電路的編號,而減少分組的開銷。)

    虛電路服務(wù)使用 可靠傳輸?shù)木W(wǎng)絡(luò)協(xié)議,可以使得所發(fā)送的分組無差錯的按序列到達(dá)終點(diǎn),當(dāng)然也不丟失,不重復(fù)。 通信結(jié)束時釋放建立的連接。

  • 數(shù)據(jù)報服務(wù)(適用于計算機(jī)網(wǎng)絡(luò)的端系統(tǒng)等智能的計算機(jī))

    網(wǎng)絡(luò)層向上只提供簡單靈活的,無連接的,盡最大努力交付的數(shù)據(jù)報服務(wù)。

    網(wǎng)絡(luò)層發(fā)送分組時不需要建立連接,每一個分組(IP 數(shù)據(jù)報)獨(dú)立發(fā)送,其前后的分組無關(guān)(不編號),網(wǎng)絡(luò)層不提供任何服務(wù)質(zhì)量的承諾,鎖傳輸?shù)姆纸M可能出錯,丟失,重復(fù)和失序(不按序列到達(dá)終點(diǎn)),也不保證分組交付的時限。

    好處:

    網(wǎng)絡(luò)造價大大降低,運(yùn)行方式靈活,能適應(yīng)多種應(yīng)用。

對比的方面 虛電路服務(wù) 數(shù)據(jù)報服務(wù)
思路 可靠通信應(yīng)當(dāng)由網(wǎng)絡(luò)來保證 可靠通信應(yīng)當(dāng)由用戶主機(jī)來保證
連接的建立 必須有 不需要
終點(diǎn)地址 僅在連接建立階段使用,每個分組使用短的虛電路號 每個分組都有終點(diǎn)的完整地址
分組的轉(zhuǎn)發(fā) 屬于同一條虛電路的分組均按照同一路由進(jìn)行轉(zhuǎn)發(fā) 每個分組獨(dú)立選擇路由進(jìn)行轉(zhuǎn)發(fā)
當(dāng)結(jié)點(diǎn)出故障時 所有通過出故障的結(jié)點(diǎn)的虛電路均不能工作 出故障的結(jié)點(diǎn)可能丟失分組,一些路由器可能發(fā)生變化
分組的順序 總是按照順序到達(dá)終點(diǎn) 到達(dá)終點(diǎn)的時間不按照發(fā)送順序
端到端的差錯處理和流量控制 可以由網(wǎng)絡(luò)負(fù)責(zé),也可以由用戶主機(jī)負(fù)責(zé) 由用戶主機(jī)負(fù)責(zé)

IP

IP 協(xié)議配套使用的還有三個協(xié)議

  1. 地址解析協(xié)議ARP(Address Resolution Protocol)

    當(dāng)主機(jī)A向本局域網(wǎng)上某臺主機(jī)B發(fā)送 IP 數(shù)據(jù)報時,先在其ARP高速緩存中查找是否存在主機(jī)B的IP地址,如有,則在ARP高速緩存中查出對應(yīng)的硬件地址,再把這個硬件地址寫入MAC幀,然后通過局域網(wǎng)把該MAC幀發(fā)往此硬件地址。ARP高速緩存里存放著IP地址到硬件地址的映射表,這個表會經(jīng)常動態(tài)更新(添加或刪除)

  2. 網(wǎng)際控制報文協(xié)議ICMP(Internet Control Message Protocol)

  3. 網(wǎng)際組管理協(xié)議IGMP(Internet Group Management Protocol)

IP地址的編址方法共3個階段。

  1. 分類的IP地址
  2. 劃分子網(wǎng)
  3. 構(gòu)成超網(wǎng)

分類的IP地址

IP地址.jpg

兩級的 IP 地址可記為: IP 地址 ::= {<網(wǎng)絡(luò)號>,<主機(jī)號>}

IP 地址分為 5 類。

  • A 類,B 類,C 類為單播地址(一對一通信),

    網(wǎng)絡(luò)號字段分別為 1個,2個,3個字節(jié)長,在網(wǎng)絡(luò)號字段最前面有1~3位類別位,數(shù)值分別規(guī)定為 0,10,110。

    主機(jī)號字段分別為 3個,2個,1個字節(jié)長

  • D 類地址(前4位是1110)用于多播(一對多通信)。

  • E 類地址(前4位是1111)保留為今后使用。

IP 地址都是32位的二進(jìn)制碼,為提高可讀性,將32位Ip地址每8位進(jìn)行分段,中間用點(diǎn)隔開,并用點(diǎn)分十進(jìn)制記法進(jìn)行表示(如:128.11.3.31,表示B類地址)。

IP 地址具有的重要特點(diǎn)

  1. 每個 Ip 地址由網(wǎng)絡(luò)號和主機(jī)號組成。
    • IP 地址管理機(jī)構(gòu)在分配 IP 地址時只分配網(wǎng)絡(luò)號,剩下的主機(jī)號由得到網(wǎng)絡(luò)號的單位自行分配。方便IP地址的管理。
    • 路由器僅根據(jù)目的主機(jī)所連接的網(wǎng)絡(luò)號來轉(zhuǎn)發(fā)分組而不考慮主機(jī)號,使得路由器數(shù)目減少,從而減少路由表存儲空間和查找路由表的時間。
  2. Ip 地址是標(biāo)記一臺主機(jī)(或路由器)和一條鏈路的接口。
  3. 網(wǎng)絡(luò)是指具有相同網(wǎng)絡(luò)號的主機(jī)集合。

劃分子網(wǎng)

  1. 從兩級IP地址升級到三級Ip地址

    原因:

    • 每個Ip地址利用率很低(1、一個B類地址本可以連接的主機(jī)數(shù)超過6萬,某些單位申請到B類地址,但是連接的主機(jī)不多,造成浪費(fèi)。2、給每個物理網(wǎng)絡(luò)分配一個網(wǎng)絡(luò)號會使路由表變得太大而使網(wǎng)絡(luò)性能變差)
    • 兩級IP不夠靈活。(若一個單位在新地方申請了新的網(wǎng)絡(luò),在沒有申請到一個新的IP地址之前是不可使用的,希望有一種方法能使單位能靈活增加的網(wǎng)絡(luò),而不用向互聯(lián)網(wǎng)管理機(jī)構(gòu)去申請新的網(wǎng)絡(luò)號,兩級IP無法辦到)

    劃分子網(wǎng)基本思路

    • 劃分子網(wǎng)屬于單位內(nèi)部的事情,本單位以外仍是一個網(wǎng)絡(luò)。

    • 劃分子網(wǎng)是從網(wǎng)絡(luò)的主機(jī)號借用若干位作為子網(wǎng)。

      IP 地址 ::= {<網(wǎng)絡(luò)號>,<子網(wǎng)號>,<主機(jī)號>}

    • 從其他網(wǎng)絡(luò)發(fā)送給單位的某主機(jī)的IP數(shù)據(jù)報,仍然是根據(jù)IP數(shù)據(jù)報的目的網(wǎng)絡(luò)號找到連接在本單位網(wǎng)絡(luò)上的路由器,但此路由器在收到IP數(shù)據(jù)報以后,再按照目的網(wǎng)絡(luò)號和子網(wǎng)號找到目的子網(wǎng),把IP數(shù)據(jù)報交給目的主機(jī)。

  2. 子網(wǎng)掩碼

    為使路由器(目的網(wǎng)絡(luò)地址,子網(wǎng)掩碼,下一跳地址)R能很方便的從數(shù)據(jù)報的目的IP地址提取出所要找的子網(wǎng)的網(wǎng)絡(luò)地址,路由器R就要使用三級IP地址的子網(wǎng)掩碼,子網(wǎng)掩碼也是32位,有一串24位1和8位0組成,子網(wǎng)掩碼中的1對應(yīng)于IP地址原來二級地址的16位網(wǎng)絡(luò)號新增加的8位子網(wǎng)號,而子網(wǎng)掩碼中的8個0對應(yīng)二級地址中的主機(jī)號。

    子網(wǎng)的網(wǎng)絡(luò)地址:三級地址的子網(wǎng)掩碼和數(shù)據(jù)報的IP地址逐位相【與】運(yùn)算可得。

    子網(wǎng)掩碼好處:不管網(wǎng)絡(luò)有沒有劃分子網(wǎng),只要把子網(wǎng)掩碼和IP地址逐位相【與】就可以算出子網(wǎng)地址,便于查找路由表。

    現(xiàn)在互聯(lián)網(wǎng)規(guī)定:所有網(wǎng)絡(luò)必須使用子網(wǎng)掩碼,同時在路由器的路由表中也必須有子網(wǎng)掩碼這一欄,如果不劃分子網(wǎng)掩碼,就使用默認(rèn)的子網(wǎng)掩碼。

    • A類地址默認(rèn)子網(wǎng)掩碼:255.0.0.0
    • B類地址默認(rèn)子網(wǎng)掩碼:255.255.0.0
    • C類地址默認(rèn)子網(wǎng)掩碼:255.255.255.0

    劃分子網(wǎng)增加了網(wǎng)絡(luò)靈活性,減少了能來連接到網(wǎng)絡(luò)的主機(jī)數(shù)。

  3. 無分類編址CIDR(構(gòu)造超網(wǎng))

    原因:

    • B類地址在1992年已分配近一半,眼看很快就會分配完畢。
    • 互聯(lián)網(wǎng)主干網(wǎng)上的路由表中的項(xiàng)目急劇增長(從幾千增長到幾萬個)
    • 整個Ipv4地址空間最終將全部耗盡。(2011年2月3日,IANA宣布Ipv4地址已經(jīng)耗盡)

    特點(diǎn):

    • CIDR消除了傳統(tǒng)A類,B類和C類地址以及劃分的子網(wǎng)概念。

      IP 地址 ::= {<網(wǎng)絡(luò)前綴>,<主機(jī)號>}

      CIDR還使用 / 來標(biāo)記,即 斜線記法/CIDR記法 — 在IP地址后面加 / ,然后寫上網(wǎng)絡(luò)前綴所占的位數(shù)。

    • CIDR把網(wǎng)絡(luò)前綴都相同的連續(xù)IP地址組成一個CIDR地址塊。

      ? 前20位是網(wǎng)絡(luò)前綴 后12位是主機(jī)號

      128.14.35.7/20 = 10000000 00001110 00100011 00000111

四、運(yùn)輸層

運(yùn)輸層向它的上層應(yīng)用層提供通信服務(wù)。

從 網(wǎng)絡(luò)層(IP 層)來說,通信的兩端是兩臺主機(jī),IP 數(shù)據(jù)報的首部明確標(biāo)志了兩臺主機(jī)的 IP 地址,而真正進(jìn)行通信的實(shí)體是主機(jī)中的進(jìn)程,兩臺主機(jī)之間的通信實(shí)質(zhì)上是主機(jī)中的進(jìn)程間的通信。IP 協(xié)議雖然能把分組送到目的主機(jī),但是這個分組還停留在網(wǎng)絡(luò)層,并沒有交付到主機(jī)中的應(yīng)用進(jìn)程。從運(yùn)輸層角度來看,通信的真正端點(diǎn)并不是主機(jī)而是主機(jī)中的進(jìn)程,也就是說端到端的通信是應(yīng)用進(jìn)程間的通信。

運(yùn)輸層的一個很重要的功能:復(fù)用和分用

  • 復(fù)用:發(fā)送方不同的應(yīng)用進(jìn)程都可以使用同一個運(yùn)輸層協(xié)議傳送數(shù)據(jù)(需加上適當(dāng)?shù)氖撞浚?/li>
  • 分用:接收方的運(yùn)輸層在剝?nèi)笪氖撞亢竽軌虬堰@些數(shù)據(jù)正確交付到目的應(yīng)用進(jìn)程。

網(wǎng)絡(luò)層和運(yùn)輸層有明顯的區(qū)別:

網(wǎng)絡(luò)層為主機(jī)之間提供邏輯通信。

運(yùn)輸層為主機(jī)中的應(yīng)用進(jìn)程提供端到端的邏輯通信。

運(yùn)輸層的端口

  • 服務(wù)器使用的端口號分為兩種

    • 熟知端口(系統(tǒng)端口):數(shù)值為0~1023

      應(yīng)用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP SNMP(trap) HTTPS
      熟知端口 21 23 25 53 69 80 161 162 443
    • 登記端口:數(shù)值為1024~49151,這類端口為沒有熟知端口的應(yīng)用程序使用,這類端口必須在IANA按照規(guī)定手續(xù)登記,以防重復(fù)。

  • 客戶端使用的端口號:數(shù)值為49152~65535,這類端口僅在客戶進(jìn)程運(yùn)行時才動態(tài)選擇,因此也叫短暫端口號。

運(yùn)輸層的兩種傳輸協(xié)議

傳輸控制協(xié)議 TCP(Transmission Control Protocol)— 面向連接

  • TCP 是面向連接的運(yùn)輸層協(xié)議。
  • 每一條TCP連接只能有兩個端點(diǎn),每一條TCP連接只能是點(diǎn)對點(diǎn)的(一對一)
  • TCP 提供可靠的交付服務(wù)。通過TCP連接傳輸數(shù)據(jù),無差錯,不丟失,不重復(fù)。
  • TCP 提供全雙工通信。TCP 允許通信雙方的應(yīng)用程序在任何時候都能發(fā)送數(shù)據(jù)。TCP連接兩端都設(shè)有發(fā)送緩存和接收緩存,用來臨時存放雙向通信的數(shù)據(jù)。在發(fā)送時,應(yīng)用程序在把數(shù)據(jù)傳遞給TCP的緩存后,就可以做自己的事情,而TCP在合適的時候把數(shù)據(jù)發(fā)送出去。在接收時,TCP把收到的數(shù)據(jù)放入緩存,上層應(yīng)用進(jìn)程在合適的時候讀取緩存中的數(shù)據(jù)。
  • 面向字節(jié)流。
TCP的連接

每條TCP有兩個端點(diǎn),那么TCP的端點(diǎn)叫套接字(Socket)或插口。

每條TCP連接唯一的被通信兩端的兩個端點(diǎn)(套接字)所確定。

套接字 socket = (IP地址:端口號)

TCP連接 ::= {socket1,socket2} = {(IP1:port1), (IP2:port2)}

可靠傳輸原理

一、停止等待協(xié)議

  1. 無差錯情況:A發(fā)送分組M1,發(fā)送完暫停發(fā)送,等待B的確認(rèn),B收到了M1就向A發(fā)送確認(rèn),A收到M1的確認(rèn)后,再發(fā)送下一個分組M2.

  2. 出現(xiàn)差錯:出現(xiàn)差錯使用超時重傳機(jī)制。

    超時重傳:A發(fā)送M1以后暫停發(fā)送,等待B的確認(rèn),此時出現(xiàn)差錯,B丟棄M1,什么也不做,A在等待一段時間之后還未收到確認(rèn),則認(rèn)為發(fā)送的M1已經(jīng)丟失,將剛發(fā)送的M1再次發(fā)送。

    實(shí)現(xiàn)超時重傳:在發(fā)送完一個分組時設(shè)置一個超時計時器,如果在超時計時器之前收到了對方的確認(rèn),就撤銷已設(shè)置的超時計時器。否則重傳發(fā)送的分組。

    注意:

    • A發(fā)送完一個分組后,必須暫時保留已發(fā)送的分組副本(在超時重傳時使用),只有在收到確認(rèn)后才能清除暫時保留的副本分組。
    • 分組和確認(rèn)分組都必須進(jìn)行編號,這樣才能明確是哪一個發(fā)送出去的分組收到了確認(rèn),哪一個沒有收到確認(rèn)。
    • 超時計時器設(shè)置的重傳時間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r間要長。
  3. 確認(rèn)丟失和確認(rèn)遲到
    若B所發(fā)送的對M1的確認(rèn)丟失了,那么A進(jìn)行重傳之后,B又收到了重傳的M1。

    • 丟棄這個重復(fù)的M1,不向上層交付。
    • 向A發(fā)送確認(rèn)。不能因?yàn)橐呀?jīng)發(fā)過就不發(fā),A超時重發(fā)就表明A并未收到確認(rèn)。

    通過確認(rèn)和重試機(jī)制,就可以在不可靠的穿傳輸網(wǎng)絡(luò)上實(shí)現(xiàn)可靠的通信。

    上述這種傳輸協(xié)議稱為【自動重傳請求ARQ(Automic Repeat Request)】

  4. 信道利用率

    停止等待協(xié)議的優(yōu)點(diǎn)是簡單,但缺點(diǎn)是信道利用率太低。

    停止等待協(xié)議的信道利用率 U = Td/(Td + RTT + Ta)

    Td:A發(fā)送分組需要的時間 Ta:B發(fā)送確認(rèn)分組時間 RTT:往返時間

    停止等待協(xié)議中往返時間RTT遠(yuǎn)大于Td和Ta,因此利用率極低。

    考慮采用流水線傳輸來提高信道利用率。流水線傳輸就是發(fā)送方可連續(xù)發(fā)送多個分組不必每發(fā)送一個分組就等到確認(rèn)。當(dāng)使用流水線傳輸時,就是連續(xù)的ARQ和滑動窗口協(xié)議。

二、連續(xù)ARO協(xié)議

滑動窗口協(xié)議比較復(fù)雜,是TCP協(xié)議的精髓所在。發(fā)送方維持發(fā)送窗口,它的意義在于:位于發(fā)送窗口的5個分組都可以連續(xù)發(fā)送而不用等待對方確認(rèn),這樣信道利用率就提高了。對方每收到一個確認(rèn),發(fā)送窗口就向前滑動一個分組。

接受方采用累積確認(rèn)方式,不必對收到的分組逐個發(fā)送確認(rèn),而是在收到幾個分組后,對按序列到達(dá)的最后一個分組發(fā)送確認(rèn),這就表示:到這個分組位置的所有分組都已經(jīng)正確收到。

TCP報文首部格式
  • 首部字段

    1. 源端口和目的端口:2字節(jié),分別寫入源端口號和目的端口號
    2. 序號:4字節(jié),TCP連接中傳送的字節(jié)流中的每一個字節(jié)都按順序編號。
    3. 確認(rèn)號:4字節(jié),是期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號。如確認(rèn)號 = N,表明序號 N-1 為止所有數(shù)據(jù)都已經(jīng)正確收到。
    4. 數(shù)據(jù)偏移:4位,指出TCP報文段的數(shù)據(jù)起始處距離TCP報文段的起始處有多遠(yuǎn)。這個字段實(shí)際是指出TCP報文段首部長度。
    5. 保留:6位,保留為今后使用,目前置為0。
    6. 緊急URG:當(dāng)URG=1時,表明緊急指針字段有效。
    7. 確認(rèn)ACK:當(dāng)ACK=1時確認(rèn)號字段才有效。ACK=0時,確認(rèn)號無效。
    8. 推送PSH:當(dāng)兩個應(yīng)用進(jìn)程進(jìn)行交互式的通信時,有時在一端的應(yīng)用程序希望在鍵入一個命令后立即就能夠收到對方的相應(yīng)。這時TCP就可以使用推送操作。
    9. 復(fù)位RST:當(dāng)RST=1時,表明TCP連接中出現(xiàn)嚴(yán)重差錯,必須釋放連接。
    10. 同步SYN:在連接建立時用來同步序號。當(dāng)SYN=1而ACK=0時,表明這是一個連接請求報文段。對方同意連接,則應(yīng)在響應(yīng)報文段中使SYN=1和ACK=1。
    11. 終止FIN:釋放連接。當(dāng)FIN=1時,表示此報文段已經(jīng)發(fā)送完畢,并要求釋放運(yùn)輸連接。
    12. 窗口:指發(fā)送本報文段的一方的接收窗口,窗口字段明確指出了現(xiàn)在允許對方發(fā)送的數(shù)據(jù)量,窗口值經(jīng)常在動態(tài)變化。
    13. 檢驗(yàn)和:2字節(jié),檢驗(yàn)的范圍包括首部和數(shù)據(jù)兩部分。
    14. 緊急指針:2字節(jié),緊急指針僅在URG=1時有意義,指出本報文段中的緊急數(shù)據(jù)的字節(jié)數(shù)。
    15. 選項(xiàng):長度可變,最長可達(dá)40字節(jié),當(dāng)沒使用選項(xiàng)時,TCP首部長度是20字節(jié)。
  • 數(shù)據(jù)字段

    IP 數(shù)據(jù)報的數(shù)據(jù)部分

TCP流量控制

利用滑動窗口實(shí)現(xiàn)流量控制。發(fā)送方的發(fā)送窗口不能超過接收方給出的接收窗口的數(shù)值。

用戶數(shù)據(jù)報協(xié)議 UDP(User Datagram Protocol)— 無連接

  • DUP是面向無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接(當(dāng)然發(fā)送結(jié)束也不需要釋放),因此減少了開銷和發(fā)送數(shù)據(jù)之前的時延。
  • UDP使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。
  • UDP是面向報文的。發(fā)送方的UDP對應(yīng)用程序交下來的報文,在添加首部后就向下交付 IP 層。UDP 對應(yīng)用層交付下來的報文既不合并也不拆分,而是保留這些報文邊界。即UDP將報文原樣發(fā)送,因此需要考慮報文的大小,報文太長,IP 層傳輸可能要進(jìn)行分片,會降低IP 層效率,報文太短,UDP 把它交給 IP 層后,會使 IP 數(shù)據(jù)報的首部的相對長度太大,也會降低 IP 層的效率。
  • UDP 沒有擁塞控制。因此網(wǎng)絡(luò)上出現(xiàn)擁塞不會使源主機(jī)的發(fā)送頻率速率降低。某些實(shí)時應(yīng)用(IP 電話,實(shí)時視頻會議)要求源主機(jī)以恒定的速率發(fā)送數(shù)據(jù),并且允許在網(wǎng)絡(luò)發(fā)生擁塞的時丟失一些數(shù)據(jù),但不允許數(shù)據(jù)有太大的時延。
  • UDP 支持一對一,一對多,多對一和多對多交互通信。
  • UDP首部開銷小,只有8個字節(jié),比TCP的20個字節(jié)首部要短。

UDP 首部格式

  • 首部字段
    • 源端口:源端口號,在需要對方回信時選用,不需要時可以用0。
    • 目的端口:目的端口號,這在終點(diǎn)交付報文時必須使用。
    • 長度:UDP用戶數(shù)據(jù)報的長度,其最小值是8(僅有首部)。
    • 檢驗(yàn)和:檢測UDP用戶數(shù)據(jù)報在傳輸中是否有差錯,有錯就丟棄。
  • 數(shù)據(jù)字段:IP 數(shù)據(jù)報的數(shù)據(jù)部分

五、應(yīng)用層

域名系統(tǒng)DNS

域名系統(tǒng)DNS能夠把互聯(lián)網(wǎng)上的主機(jī)名字轉(zhuǎn)換成IP地址。

域名到IP地址的解析是由分布在互聯(lián)網(wǎng)上的許多域名服務(wù)器程序共同完成,域名服務(wù)器程序在專設(shè)的節(jié)點(diǎn)上運(yùn)行,人們常把運(yùn)行域名服務(wù)器上次的機(jī)器稱為域名服務(wù)器。

域名到IP地址解析過程要點(diǎn):

當(dāng)某個應(yīng)用程序需要把主機(jī)名解析為IP地址時,該應(yīng)用進(jìn)程就調(diào)用解析程序,并稱為DNS的一個客戶,把待解析的域名放在DNS請求報文中,以UDP用戶數(shù)據(jù)報方式發(fā)給本地域名服務(wù)器(使用UDP是為了減少開銷),本地域名服務(wù)器在查找到域名后,把對應(yīng)的IP地址放在回答報文中返回,應(yīng)用進(jìn)程獲取到目的主機(jī)的IP地址后即可進(jìn)行通信。

域名結(jié)構(gòu)

三級域名 . 二級域名 . 頂級域名

頂級域名

  1. 國家頂級域名

    cn:中國 us:美國 uk:英國

  2. 通用頂級域名

    com:公司企業(yè) net:網(wǎng)絡(luò)服務(wù)機(jī)構(gòu) org:非營利性組織 int:國際組織

    edu:美國專用教育機(jī)構(gòu) gov:美國政府部門 mil:美國軍事部門

  3. 基礎(chǔ)結(jié)構(gòu)域名

    這種定義域名只有一個 — arpa。用于反向域名解析,又稱為反向域名。

域名樹可以清晰的表示互聯(lián)網(wǎng)的域名系統(tǒng)。

域名服務(wù)器

域名服務(wù)器的實(shí)際管轄范圍是區(qū),區(qū)可能小于或等于域,但一定不大于域。

域名服務(wù)器被劃分為4種不同類型

  1. 根域名服務(wù)器
  2. 頂級域名服務(wù)器
  3. 權(quán)限域名服務(wù)器
  4. 本地域名服務(wù)器

超文本傳輸協(xié)議 HTTP

HTTP協(xié)議定義了瀏覽器怎樣向萬維網(wǎng)服務(wù)器請求萬維網(wǎng)文檔以及服務(wù)器怎樣把文檔傳送給瀏覽器。從層次角度來看,HTTP是面向事務(wù)的應(yīng)用層協(xié)議。它是萬維網(wǎng)上能夠可靠交換文件(文本,聲音,圖像等各種多媒體文件)的重要基礎(chǔ)。

HTTP報文結(jié)構(gòu)

HTTP報文.jpg

由于HTTP是面向文本的,因此在報文中的每一個字段都是一些ASCII碼串。因而各個字段的長度是不確定的。

HTTP請求報文

  • 請求行:請求方法,URL,HTTP版本,字段由空格分開,最后有回車換行

    方法 意義
    OPTIONS 請求一些選項(xiàng)信息
    GET 請求讀取由URL所標(biāo)志的信息
    HEAD 請求讀取由URL所標(biāo)志的信息的首部
    POST 給服務(wù)器添加信息
    PUT 在指明的URL下存儲一個文檔
    DELETE 刪除指定的URL所標(biāo)志的資源
    TRANCE 用來進(jìn)行環(huán)回測試的請求報文
    CONNECT 用于代理服務(wù)器

    請求行格式

    GET http://www.xyz.edu.cn/dir/index.html HTTP/1.1
    
  • 首部行:用來說明瀏覽器、服務(wù)器或報文主體的一些信息。首部可以有好幾行,也可以不是呀。每個首部行中都有首部字段名和值,每行結(jié)束地方都要有回車換行,還有一行空格用于區(qū)分請求實(shí)體和首部行。

  • 請求實(shí)體:在請求行中一般不用這個字段

    完整的HTTP請求報文
    GET /dir/index/html HTTP/1.1      請求航使用了相對URL(首部行給出了主機(jī)域名,這里可以省略)
    Host:www.xyz.edu.cn                   慈航是首部行的開始,這行給出主機(jī)的域名
    Connection:close                  告訴服務(wù)器發(fā)送完請求的文檔后就可釋放連接(不使用持續(xù)連接)
    User-Agent:Mozilla/5.0                表名用戶代理是使用火狐瀏覽器 Firefox
    Accept-Language:cn                    表示用戶希望優(yōu)先得到中文版本的文檔
                                      請求報文的最后還要一個空行
    

HTTP響應(yīng)報文

  • 狀態(tài)行:HTTP版本,狀態(tài)碼,狀態(tài)碼描述信息,字段中有空格,結(jié)束有回車換行

    狀態(tài)碼 描述
    1xx 指示信息 — 表示請求已接收,繼續(xù)處理
    2xx 成功 — 表示請求已被接收,理解,接受
    3xx 重定向 — 要完成請求必須進(jìn)行進(jìn)一步的操作
    4xx 客戶端錯誤 — 請求有語法錯誤或請求無法實(shí)現(xiàn)
    5xx 服務(wù)端錯誤 — 服務(wù)器未能實(shí)現(xiàn)合法的請求
    HTTP/1.1 202 Accepted     接受
    HTTP/1.1 400 Bad Request  錯誤請求
    HTTP/1.1 404 Not Found        找不到
    
    //若請求網(wǎng)頁轉(zhuǎn)移到新地址,狀態(tài)行和首部行為
    HTTP/1.1 301 Moved Permsnently                    永久地轉(zhuǎn)移了
    Location: http://www.xyz.edu.cn/ee.index.html 新的URL
    
  • 首部行

  • 響應(yīng)實(shí)體

在服務(wù)器上存放用戶信息

由于HTTP是無狀態(tài)的,而當(dāng)同一個用戶想要保存其用戶信息,就需要服務(wù)器記住該用戶的信息,可以在HTTP中使用Cookie。Cookie表示在HTTP服務(wù)器和客戶之間傳遞的狀態(tài)信息。

Cookie是這樣工作的。當(dāng)用戶A瀏覽某個使用Cookie的網(wǎng)站時,該網(wǎng)站的服務(wù)器就為A產(chǎn)生一個唯一的識別碼,并以此作為索引在服務(wù)器的后端數(shù)據(jù)庫中產(chǎn)生一個項(xiàng)目,接著在給A的HTTP響應(yīng)報文中添加一個叫做Set-Cookie的首部行,這里的首部字段名就是 ‘Set-Cookie’,而后面的值就是賦予該用戶的識別碼。

Set-Cookie:44598a438y43b375

當(dāng)A收到這個響應(yīng)時,其瀏覽器就在它管理的特定Cookie文件中添加一行,其中包括這個服務(wù)器的主機(jī)名和Set-Cookie后面給出的識別碼。當(dāng)A繼續(xù)瀏覽這個網(wǎng)站時,每發(fā)送一個HTTP請求報文,其瀏覽器就會從其Cookie文件中取出這個網(wǎng)站的識別碼,并放到HTTP請求報文的Cookie首部航。

Cookie:44598a438y43b375

于是,這個網(wǎng)站就能跟蹤用戶 44598a438y43b375 在該網(wǎng)站的活動。需要注意,服務(wù)器并不需要知道這個用戶的真實(shí)姓名以及其他信息,但服務(wù)器能知道用戶44598a438y43b375在什么時候訪問了哪些頁面,以及訪問這些頁面的順序。如果A是在網(wǎng)上購物,那么這個服務(wù)器可以為A維護(hù)一個所購物品的列表,使A結(jié)束這次購物時可以一起付賬。

  • Cookie可以收集用戶在互聯(lián)網(wǎng)上的行為。如果A在幾天后再次訪問這個網(wǎng)站,那么瀏覽器就會在其HTTP請求報文中繼續(xù)用首部Cookie:44598a438y43b375,而這個網(wǎng)站服務(wù)器根據(jù)A的過去訪問記錄可以給A推薦商品。
  • Cookie可以記錄用戶的基本信息。如果A在該網(wǎng)站上登記過和使用過信用卡消費(fèi),這個網(wǎng)站就已經(jīng)保存了A的姓名,電子郵件,信用卡號碼等信息,當(dāng)A繼續(xù)購物時,只要還使用同一臺電腦,由于瀏覽器產(chǎn)生的HTTP請求報文中都攜帶了同樣的Cookie首部行,服務(wù)器就可利用Cookie來驗(yàn)證出這是A,此后A在這個網(wǎng)站購物就不需要鍵入姓名,信用卡等信息。
  • Cookie只是文本文件,并不是計算機(jī)可執(zhí)行文件,因此不可能攜帶和傳播計算機(jī)病毒,也不可能來獲取用戶計算機(jī)的硬盤中的信息。
  • 可以設(shè)置是否使用Cookie,用于保護(hù)用戶隱私。關(guān)于用戶隱私保護(hù)問題,網(wǎng)站上保存的Cookie文件可以在瀏覽器中設(shè)置是否關(guān)閉。還有很多第三方明確聲明會保護(hù)用戶隱私,不會把用戶的識別碼或個人信息轉(zhuǎn)移或出售給其他廠商。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容