1. 程式人生 > >網路協議學習

網路協議學習

計算機網路學習的核心內容就是網路協議的學習。網路協議是為計算機網路中進行資料交換而建立的規則、標準或者說是約定的集合。因為不同使用者的資料終端可能採取的字符集是不同的,兩者需要進行通訊,必須要在一定的標準上進行。一個很形象地比喻就是我們的語言,我們大天朝地廣人多,地方性語言也非常豐富,而且方言之間差距巨大。A地區的方言可能B地區的人根本無法接受,所以我們要為全國人名進行溝通建立一個語言標準,這就是我們的普通話的作用。同樣,放眼全球,我們與外國友人溝通的標準語言是英語,所以我們才要苦逼的學習英語。

計算機網路協議同我們的語言一樣,多種多樣。而ARPA公司與1977年到1979年推出了一種名為ARPANET的網路協議受到了廣泛的熱捧,其中最主要的原因就是它推出了人盡皆知的TCP/IP標準網路協議。目前TCP/IP協議已經成為Internet中的“通用語言”,下圖為不同計算機群之間利用TCP/IP進行通訊的示意圖。
在這裡插入圖片描述

  1. 網路層次劃分
      為了使不同計算機廠家生產的計算機能夠相互通訊,以便在更大的範圍內建立計算機網路,國際標準化組織(ISO)在1978年提出了“開放系統互聯參考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它將計算機網路體系結構的通訊協議劃分為七層,自下而上依次為:物理層(Physics Layer)、資料鏈路層(Data Link Layer)、網路層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成資料傳送服務,上面三層面向用戶。
      除了標準的OSI七層模型以外,常見的網路層次劃分還有TCP/IP四層協議以及TCP/IP五層協議,它們之間的對應關係如下圖所示:

在這裡插入圖片描述

  1. OSI七層網路模型
      TCP/IP協議毫無疑問是網際網路的基礎協議,沒有它就根本不可能上網,任何和網際網路有關的操作都離不開TCP/IP協議。不管是OSI七層模型還是TCP/IP的四層、五層模型,每一層中都要自己的專屬協議,完成自己相應的工作以及與上下層級之間進行溝通。由於OSI七層模型為網路的標準層次劃分,所以我們以OSI七層模型為例從下向上進行一一介紹。

在這裡插入圖片描述
  1)物理層(Physical Layer)
  啟用、維持、關閉通訊端點之間的機械特性、電氣特性、功能特性以及過程特性。該層為上層協議提供了一個傳輸資料的可靠的物理媒體。簡單的說,物理層確保原始的資料可在各種物理媒體上傳輸。物理層記住兩個重要的裝置名稱,中繼器(Repeater,也叫放大器)和集線器。

2)資料鏈路層(Data Link Layer)

資料鏈路層在物理層提供的服務的基礎上向網路層提供服務,其最基本的服務是將源自網路層來的資料可靠地傳輸到相鄰節點的目標機網路層。為達到這一目的,資料鏈路必須具備一系列相應的功能,主要有:如何將資料組合成資料塊,在資料鏈路層中稱這種資料塊為幀(frame),幀是資料鏈路層的傳送單位;如何控制幀在物理通道上的傳輸,包括如何處理傳輸差錯,如何調節傳送速率以使與接收方相匹配;以及在兩個網路實體之間提供資料鏈路通路的建立、維持和釋放的管理。資料鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:實體地址定址、資料的成幀、流量控制、資料的檢錯、重發等。

有關資料鏈路層的重要知識點:

  • 資料鏈路層為網路層提供可靠的資料傳輸;

  • 基本資料單位為幀;

  • 主要的協議:乙太網協議;

  • 兩個重要裝置名稱:網橋和交換機。

  • 網路層(Network Layer)

網路層的目的是實現兩個端系統之間的資料透明傳送,具體功能包括定址和路由選擇、連線的建立、保持和終止等。它提供的服務使傳輸層不需要了解網路中的資料傳輸和交換技術。如果您想用盡量少的詞來記住網路層,那就是“路徑選擇、路由及邏輯定址”。

網路層中涉及眾多的協議,其中包括最重要的協議,也是TCP/IP的核心協議——IP協議。IP協議非常簡單,僅僅提供不可靠、無連線的傳送服務。IP協議的主要功能有:無連線資料報傳輸、資料報路由選擇和差錯控制。與IP協議配套使用實現其功能的還有地址解析協議ARP、逆地址解析協議RARP、因特網報文協議ICMP、因特網組管理協議IGMP。具體的協議我們會在接下來的部分進行總結,有關網路層的重點為:

  • 網路層負責對子網間的資料包進行路由選擇。此外,網路層還可以實現擁塞控制、網際互連等功能;

  • 基本資料單位為IP資料報;

  • 包含的主要協議:

IP協議(Internet Protocol,因特網互聯協議);

ICMP協議(Internet Control Message Protocol,因特網控制報文協議);

ARP協議(Address Resolution Protocol,地址解析協議);

RARP協議(Reverse Address Resolution Protocol,逆地址解析協議)。

4> 重要的裝置:路由器。

4)傳輸層(Transport Layer)

第一個端到端,即主機到主機的層次。傳輸層負責將上層資料分段並提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。

傳輸層的任務是根據通訊子網的特性,最佳的利用網路資源,為兩個端系統的會話層之間,提供建立、維護和取消傳輸連線的功能,負責端到端的可靠資料傳輸。在這一層,資訊傳送的協議資料單元稱為段或報文。
  網路層只是根據網路地址將源結點發出的資料包傳送到目的結點,而傳輸層則負責將資料可靠地傳送到相應的埠。
  有關網路層的重點:
  1> 傳輸層負責將上層資料分段並提供端到端的、可靠的或不可靠的傳輸以及端到端的差錯控制和流量控制問題;
  2> 包含的主要協議:TCP協議(Transmission Control Protocol,傳輸控制協議)、UDP協議(User Datagram Protocol,使用者資料報協議);
  3> 重要裝置:閘道器。
  5)會話層

會話層管理主機之間的會話程序,即負責建立、管理、終止程序之間的會話。會話層還利用在資料中插入校驗點來實現資料的同步。

6)表示層

表示層對上層資料或資訊進行變換以保證一個主機應用層資訊可以被另一個主機的應用程式理解。表示層的資料轉換包括資料的加密、壓縮、格式轉換等。

7)應用層

為作業系統或網路應用程式提供訪問網路服務的介面。

會話層、表示層和應用層重點:

1> 資料傳輸基本單位為報文;

2> 包含的主要協議:FTP(檔案傳送協議)、Telnet(遠端登入協議)、DNS(域名解析協議)、SMTP(郵件傳送協議),POP3協議(郵局協議),HTTP協議(Hyper Text Transfer Protocol)。

回到頂部
3. IP地址
  1)網路地址

IP地址由網路號(包括子網號)和主機號組成,網路地址的主機號為全0,網路地址代表著整個網路。

2)廣播地址

廣播地址通常稱為直接廣播地址,是為了區分受限廣播地址。

廣播地址與網路地址的主機號正好相反,廣播地址中,主機號為全1。當向某個網路的廣播地址傳送訊息時,該網路內的所有主機都能收到該廣播訊息。

3)組播地址

D類地址就是組播地址。

先回憶下A,B,C,D類地址吧:

A類地址以00開頭,第一個位元組作為網路號,地址範圍為:0.0.0.0~127.255.255.255;

B類地址以10開頭,前兩個位元組作為網路號,地址範圍是:128.0.0.0~191.255.255.255;

C類地址以110開頭,前三個位元組作為網路號,地址範圍是:192.0.0.0~223.255.255.255。

D類地址以1110開頭,地址範圍是224.0.0.0~239.255.255.255,D類地址作為組播地址(一對多的通訊);

E類地址以1111開頭,地址範圍是240.0.0.0~255.255.255.255,E類地址為保留地址,供以後使用。

注:只有A,B,C有網路號和主機號之分,D類地址和E類地址沒有劃分網路號和主機號。

4)255.255.255.255

該IP地址指的是受限的廣播地址。受限廣播地址與一般廣播地址(直接廣播地址)的區別在於,受限廣播地址只能用於本地網路,路由器不會轉發以受限廣播地址為目的地址的分組;一般廣播地址既可在本地廣播,也可跨網段廣播。例如:主機192.168.1.1/30上的直接廣播資料包後,另外一個網段192.168.1.5/30也能收到該資料報;若傳送受限廣播資料報,則不能收到。

注:一般的廣播地址(直接廣播地址)能夠通過某些路由器(當然不是所有的路由器),而受限的廣播地址不能通過路由器。

5)0.0.0.0

常用於尋找自己的IP地址,例如在我們的RARP,BOOTP和DHCP協議中,若某個未知IP地址的無盤機想要知道自己的IP地址,它就以255.255.255.255為目的地址,向本地範圍(具體而言是被各個路由器遮蔽的範圍內)的伺服器傳送IP請求分組。

6)迴環地址

127.0.0.0/8被用作迴環地址,迴環地址表示本機的地址,常用於對本機的測試,用的最多的是127.0.0.1。

7)A、B、C類私有地址

私有地址(private address)也叫專用地址,它們不會在全球使用,只具有本地意義。

A類私有地址:10.0.0.0/8,範圍是:10.0.0.0~10.255.255.255

B類私有地址:172.16.0.0/12,範圍是:172.16.0.0~172.31.255.255

C類私有地址:192.168.0.0/16,範圍是:192.168.0.0~192.168.255.255

回到頂部
4. 子網掩碼及網路劃分
  隨著互連網應用的不斷擴大,原先的IPv4的弊端也逐漸暴露出來,即網路號佔位太多,而主機號位太少,所以其能提供的主機地址也越來越稀缺,目前除了使用NAT在企業內部利用保留地址自行分配以外,通常都對一個高類別的IP地址進行再劃分,以形成多個子網,提供給不同規模的使用者群使用。

這裡主要是為了在網路分段情況下有效地利用IP地址,通過對主機號的高位部分取作為子網號,從通常的網路位界限中擴充套件或壓縮子網掩碼,用來建立某類地址的更多子網。但建立更多的子網時,在每個子網上的可用主機地址數目會比原先減少。

什麼是子網掩碼?

子網掩碼是標誌兩個IP地址是否同屬於一個子網的,也是32位二進位制地址,其每一個為1代表該位是網路位,為0代表主機位。它和IP地址一樣也是使用點式十進位制來表示的。如果兩個IP地址在子網掩碼的按位與的計算下所得結果相同,即表明它們共屬於同一子網中。

在計運算元網掩碼時,我們要注意IP地址中的保留地址,即“ 0”地址和廣播地址,它們是指主機地址或網路地址全為“ 0”或“ 1”時的IP地址,它們代表著本網路地址和廣播地址,一般是不能被計算在內的。

子網掩碼的計算:

對於無須再劃分成子網的IP地址來說,其子網掩碼非常簡單,即按照其定義即可寫出:如某B類IP地址為 10.12.3.0,無須再分割子網,則該IP地址的子網掩碼255.255.0.0。如果它是一個C類地址,則其子網掩碼為 255.255.255.0。其它類推,不再詳述。下面我們關鍵要介紹的是一個IP地址,還需要將其高位主機位再作為劃分出的子網網路號,剩下的是每個子網的主機號,這時該如何進行每個子網的掩碼計算。

下面總結一下有關子網掩碼和網路劃分常見的面試考題:

1)利用子網數來計算

在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。

(1) 將子網數目轉化為二進位制來表示;

如欲將B類IP地址168.195.0.0劃分成27個子網:27=11011;

(2) 取得該二進位制的位數,為N;

該二進位制為五位數,N = 5

(3) 取得該IP地址的類子網掩碼,將其主機地址部分的的前N位置1即得出該IP地址劃分子網的子網掩碼。

將B類地址的子網掩碼255.255.0.0的主機地址前5位置 1,得到 255.255.248.0

2)利用主機數來計算

如欲將B類IP地址168.195.0.0劃分成若干子網,每個子網內有主機700臺:

(1) 將主機數目轉化為二進位制來表示;

700=1010111100;

(2) 如果主機數小於或等於254(注意去掉保留的兩個IP地址),則取得該主機的二進位制位數,為N,這裡肯定 N<8。如果大於254,則 N>8,這就是說主機地址將佔據不止8位;

該二進位制為十位數,N=10;

(3) 使用255.255.255.255來將該類IP地址的主機地址位數全部置1,然後從後向前的將N位全部置為 0,即為子網掩碼值。

將該B類地址的子網掩碼255.255.0.0的主機地址全部置1,得到255.255.255.255,然後再從後向前將後 10位置0,即為:11111111.11111111.11111100.00000000,即255.255.252.0。這就是該欲劃分成主機為700臺的B類IP地址 168.195.0.0的子網掩碼。

3)還有一種題型,要你根據每個網路的主機數量進行子網地址的規劃和計運算元網掩碼。這也可按上述原則進行計算。

比如一個子網有10臺主機,那麼對於這個子網需要的IP地址是:

10+1+1+1=13

注意:加的第一個1是指這個網路連線時所需的閘道器地址,接著的兩個1分別是指網路地址和廣播地址。

因為13小於16(16等於2的4次方),所以主機位為4位。而256-16=240,所以該子網掩碼為255.255.255.240。

如果一個子網有14臺主機,不少人常犯的錯誤是:依然分配具有16個地址空間的子網,而忘記了給閘道器分配地址。這樣就錯誤了,因為14+1+1+1=17,17大於16,所以我們只能分配具有32個地址(32等於2的5次方)空間的子網。這時子網掩碼為:255.255.255.224。

回到頂部
5. ARP/RARP協議
  地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取實體地址的一個TCP/IP協議。主機發送資訊時將包含目標IP地址的ARP請求廣播到網路上的所有主機,並接收返回訊息,以此確定目標的實體地址;收到返回訊息後將該IP地址和實體地址存入本機ARP快取中並保留一定時間,下次請求時直接查詢ARP快取以節約資源。地址解析協議是建立在網路中各個主機互相信任的基礎上的,網路上的主機可以自主傳送ARP應答訊息,其他主機收到應答報文時不會檢測該報文的真實性就會將其記入本機ARP快取;由此攻擊者就可以向某一主機發送偽ARP應答報文,使其傳送的資訊無法到達預期的主機或到達錯誤的主機,這就構成了一個ARP欺騙。ARP命令可用於查詢本機ARP快取中IP地址和MAC地址的對應關係、新增或刪除靜態對應關係等。

ARP工作流程舉例:

主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;
  主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;
  當主機A要與主機B通訊時,地址解析協議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:
  (1)根據主機A上的路由表內容,IP確定用於訪問主機B的轉發IP地址是192.168.1.2。然後A主機在自己的本地ARP快取中檢查主機B的匹配MAC地址。
  (2)如果主機A在ARP快取中沒有找到對映,它將詢問192.168.1.2的硬體地址,從而將ARP請求幀廣播到本地網路上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網路上的每臺主機都接收到ARP請求並且檢查是否與自己的IP地址匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。
  (3)主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址對映新增到本地ARP快取中。
  (4)主機B將包含其MAC地址的ARP回覆訊息直接傳送回主機A。
  (5)當主機A收到從主機B發來的ARP回覆訊息時,會用主機B的IP和MAC地址對映更新ARP快取。本機快取是有生存期的,生存期結束後,將再次重複上面的過程。主機B的MAC地址一旦確定,主機A就能向主機B傳送IP通訊了。
  逆地址解析協議,即RARP,功能和ARP協議相對,其將區域網中某個主機的實體地址轉換為IP地址,比如區域網中有一臺主機只知道實體地址而不知道IP地址,那麼可以通過RARP協議發出徵求自身IP地址的廣播請求,然後由RARP伺服器負責回答。

RARP協議工作流程:

(1)給主機發送一個本地的RARP廣播,在此廣播包中,宣告自己的MAC地址並且請求任何收到此請求的RARP伺服器分配一個IP地址;

(2)本地網段上的RARP伺服器收到此請求後,檢查其RARP列表,查詢該MAC地址對應的IP地址;

(3)如果存在,RARP伺服器就給源主機發送一個響應資料包並將此IP地址提供給對方主機使用;
  (4)如果不存在,RARP伺服器對此不做任何的響應;
  (5)源主機收到從RARP伺服器的響應資訊,就利用得到的IP地址進行通訊;如果一直沒有收到RARP伺服器的響應資訊,表示初始化失敗。
回到頂部
6. 路由選擇協議
  常見的路由選擇協議有:RIP協議、OSPF協議。

RIP協議 :底層是貝爾曼福特演算法,它選擇路由的度量標準(metric)是跳數,最大跳數是15跳,如果大於15跳,它就會丟棄資料包。

OSPF協議 :Open Shortest Path First開放式最短路徑優先,底層是迪傑斯特拉演算法,是鏈路狀態路由選擇協議,它選擇路由的度量標準是頻寬,延遲。
回到頂部
7. TCP/IP協議
  TCP/IP協議是Internet最基本的協議、Internet國際網際網路絡的基礎,由網路層的IP協議和傳輸層的TCP協議組成。通俗而言:TCP負責發現傳輸的問題,一有問題就發出訊號,要求重新傳輸,直到所有資料安全正確地傳輸到目的地。而IP是給因特網的每一臺聯網裝置規定一個地址。
  IP層接收由更低層(網路介面層例如乙太網裝置驅動程式)發來的資料包,並把該資料包傳送到更高層—TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的資料包傳送到更低層。IP資料包是不可靠的,因為IP並沒有做任何事情來確認資料包是否按順序傳送的或者有沒有被破壞,IP資料包中含有傳送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。
  TCP是面向連線的通訊協議,通過三次握手建立連線,通訊完成時要拆除連線,由於TCP是面向連線的所以只能用於端到端的通訊。TCP提供的是一種可靠的資料流服務,採用“帶重傳的肯定確認”技術來實現傳輸的可靠性。TCP還採用一種稱為“滑動視窗”的方式進行流量控制,所謂視窗實際表示接收能力,用以限制傳送方的傳送速度。

TCP報文首部格式:

在這裡插入圖片描述

TCP協議的三次握手和四次揮手:

在這裡插入圖片描述

注:seq:"sequance"序列號;ack:"acknowledge"確認號;SYN:"synchronize"請求同步標誌;;ACK:“acknowledge"確認標誌”;FIN:"Finally"結束標誌。

TCP連線建立過程:首先Client端傳送連線請求報文,Server段接受連線後回覆ACK報文,併為這次連線分配資源。Client端接收到ACK報文後也向Server段發生ACK報文,並分配資源,這樣TCP連線就建立了。

TCP連線斷開過程:假設Client端發起中斷連線請求,也就是傳送FIN報文。Server端接到FIN報文後,意思是說"我Client端沒有資料要發給你了",但是如果你還有資料沒有傳送完成,則不必急著關閉Socket,可以繼續傳送資料。所以你先發送ACK,“告訴Client端,你的請求我收到了,但是我還沒準備好,請繼續你等我的訊息”。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定資料已傳送完成,則向Client端傳送FIN報文,“告訴Client端,好了,我這邊資料發完了,準備好關閉連線了”。Client端收到FIN報文後,"就知道可以關閉連線了,但是他還是不相信網路,怕Server端不知道要關閉,所以傳送ACK後進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳。“,Server端收到ACK後,“就知道可以斷開連線了”。Client端等待了2MSL後依然沒有收到回覆,則證明Server端已正常關閉,那好,我Client端也可以關閉連線了。Ok,TCP連線就這樣關閉了!

為什麼要三次揮手?

在只有兩次“握手”的情形下,假設Client想跟Server建立連線,但是卻因為中途連線請求的資料報丟失了,故Client端不得不重新發送一遍;這個時候Server端僅收到一個連線請求,因此可以正常的建立連線。但是,有時候Client端重新發送請求不是因為資料報丟失了,而是有可能資料傳輸過程因為網路併發量很大在某結點被阻塞了,這種情形下Server端將先後收到2次請求,並持續等待兩個Client請求向他傳送資料…問題就在這裡,Cient端實際上只有一次請求,而Server端卻有2個響應,極端的情況可能由於Client端多次重新發送請求資料而導致Server端最後建立了N多個響應在等待,因而造成極大的資源浪費!所以,“三次握手”很有必要!

為什麼要四次揮手?

試想一下,假如現在你是客戶端你想斷開跟Server的所有連線該怎麼做?第一步,你自己先停止向Server端傳送資料,並等待Server的回覆。但事情還沒有完,雖然你自身不往Server傳送資料了,但是因為你們之前已經建立好平等的連線了,所以此時他也有主動權向你傳送資料;故Server端還得終止主動向你傳送資料,並等待你的確認。其實,說白了就是保證雙方的一個合約的完整執行!

使用TCP的協議:FTP(檔案傳輸協議)、Telnet(遠端登入協議)、SMTP(簡單郵件傳輸協議)、POP3(和SMTP相對,用於接收郵件)、HTTP協議等。

回到頂部
8. UDP協議 
  UDP使用者資料報協議,是面向無連線的通訊協議,UDP資料包括目的埠號和源埠號資訊,由於通訊不需要連線,所以可以實現廣播發送。UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程式設計師程式設計驗證。
  UDP與TCP位於同一層,但它不管資料包的順序、錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連線的服務,UDP主要用於那些面向查詢—應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的資訊量較小。
  每個UDP報文分UDP報頭和UDP資料區兩部分。報頭由四個16位長(2位元組)欄位組成,分別說明該報文的源埠、目的埠、報文長度以及校驗值。UDP報頭由4個域組成,其中每個域各佔用2個位元組,具體如下:   (1)源埠號;
  (2)目標埠號;
  (3)資料報長度;
  (4)校驗值。
  使用UDP協議包括:TFTP(簡單檔案傳輸協議)、SNMP(簡單網路管理協議)、DNS(域名解析協議)、NFS、BOOTP。
  TCP 與 UDP 的區別:TCP是面向連線的,可靠的位元組流服務;UDP是面向無連線的,不可靠的資料報服務。
回到頂部
9. DNS協議
  DNS是域名系統(DomainNameSystem)的縮寫,該系統用於命名組織到域層次結構中的計算機和網路服務,可以簡單地理解為將URL轉換為IP地址。域名是由圓點分開一串單詞或縮寫組成的,每一個域名都對應一個惟一的IP地址,在Internet上域名與IP地址之間是一一對應的,DNS就是進行域名解析的伺服器。DNS命名用於Internet等TCP/IP網路中,通過使用者友好的名稱查詢計算機和服務。
回到頂部
10. NAT協議
  NAT網路地址轉換(Network Address Translation)屬接入廣域網(WAN)技術,是一種將私有(保留)地址轉化為合法IP地址的轉換技術,它被廣泛應用於各種型別Internet接入方式和各種型別的網路中。原因很簡單,NAT不僅完美地解決了lP地址不足的問題,而且還能夠有效地避免來自網路外部的攻擊,隱藏並保護網路內部的計算機。

回到頂部
11. DHCP協議
  DHCP動態主機設定協議(Dynamic Host Configuration Protocol)是一個區域網的網路協議,使用UDP協議工作,主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手段。

回到頂部
12. HTTP協議
  超文字傳輸協議(HTTP,HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網路協議。所有的WWW檔案都必須遵守這個標準。
  HTTP 協議包括哪些請求?

GET:請求讀取由URL所標誌的資訊。

POST:給伺服器新增資訊(如註釋)。

PUT:在給定的URL下儲存一個文件。

DELETE:刪除給定的URL所標誌的資源。

HTTP 中, POST 與 GET 的區別

1)Get是從伺服器上獲取資料,Post是向伺服器傳送資料。

2)Get是把引數資料佇列加到提交表單的Action屬性所指向的URL中,值和表單內各個欄位一一對應,在URL中可以看到。

3)Get傳送的資料量小,不能大於2KB;Post傳送的資料量較大,一般被預設為不受限制。

4)根據HTTP規範,GET用於資訊獲取,而且應該是安全的和冪等的。

I. 所謂 安全的 意味著該操作用於獲取資訊而非修改資訊。換句話說,GET請求一般不應產生副作用。就是說,它僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改,增加資料,不會影響資源的狀態。

II. 冪等 的意味著對同一URL的多個請求應該返回同樣的結果。

回到頂部
13. 一個舉例
  在瀏覽器中輸入 www.baidu.com 後執行的全部過程

現在假設如果我們在客戶端(客戶端)瀏覽器中輸入http://www.baidu.com,而baidu.com為要訪問的伺服器(伺服器),下面詳細分析客戶端為了訪問伺服器而執行的一系列關於協議的操作:

1)客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到伺服器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然後通過TCP進行封裝資料包,輸入到網路層。

2)在客戶端的傳輸層,把HTTP會話請求分成報文段,新增源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇一個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用IP層的IP地址查詢目的端。

3)客戶端的網路層不用關係應用層或者傳輸層的東西,主要做的是通過查詢路由表確定如何到達伺服器,期間可能經過多個路由器,這些都是由路由器來完成的工作,不作過多的描述,無非就是通過查詢路由表決定通過那個路徑到達伺服器。

4)客戶端的鏈路層,包通過鏈路層傳送到路由器,通過鄰居協議查詢給定IP地址的MAC地址,然後傳送ARP請求查詢目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP資料包現在就可以傳輸了,然後傳送IP資料包到達伺服器的地址。
  閱讀原文
  我們來看下報文的結構,從應用層到鏈路層,每一層對自己的資料進行一個打包,交給下一層進行處理。最終形成一個乙太網幀。

在這裡插入圖片描述
到了目的地後,對端也是從鏈路層解析到應用層,然後解析出來的資料交給各層進行處理,如下圖。
在這裡插入圖片描述