計算機與網絡裝備要相互通訊,雙方就必須基于相同的方法。比如:如何探測到通訊目標、由哪1邊先發起通訊、使用哪一種語言進行通訊、怎樣結束通訊等規則都需要事前肯定。不同的硬件、操作系統之間的通訊,所有的1切都需要1種規則。而我們就把這類規則稱之為協議(protocol)
協議中存在各式各樣的內容。從電纜的規格到IP地址的選定方法、尋覓異地用戶的方法、雙方建立通訊的順序,和web頁面顯示需要的處理步驟,等等。
像這樣把與互聯網相干的協議集合起來總成為TCP/IP。
TCP/IP協議族里重要的1點就是分層。TCP/IP協議族按層次分別分為以下4層:利用層、傳輸層、網絡層和數據鏈路層。
把TCP/IP層次化是有好處的。加入互聯網只由1個協議兼顧,某個地方需要改變設計時,就必須把所有部份整體替換掉。而分層以后只需要把變動的層替換掉便可。把各層之間的接口部份計劃好以后,每一個層次內部設計就可以夠自由改動了。
值得1提的是,層次化以后,設計也變得相當簡單了。處于利用層上的利用可以只斟酌分派給自己的任務,而不用弄清對方在地球上的哪一個地方、對方的傳輸線路是怎樣的、能否確保傳輸投遞等問題。
TCP/IP協議族各層的作用以下:
利用層
利用層決定了向用戶提供應當服務時通訊的活動。
TCP/IP協議族內預存了各類通用的利用服務。比如,FTP(File Transfer Protocol,文件傳輸協議)和DNS(Domain Name System,域名系統)服務就是其中的兩類。HTTP協議也處于該層。
傳輸層
傳輸層對上層利用層,提供處于網絡連接中兩臺計算機之間的數據傳輸。
在傳輸層有兩個性質不同的協議:TCP(Transmission Control Protocol,傳輸控制協議)和UDP(User Data Protocol,用戶數據報協議)。
網絡層(又名網絡互連層)
網絡層用來處理在網絡上活動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑(所謂的傳輸線路)到達對方計算機,并把數據包傳送給對方。
與對方計算機之間通過量臺計算機或網絡裝備進行傳輸時,網絡層所起的所用就是在眾多的選項內選擇1條傳輸線路。
鏈路層(又名數據鏈路層,網絡接口層)
用來處理連接網絡的硬件部份。包括控制操作系統、硬件的裝備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部份(還包括連接器等1切傳輸媒介)。硬件上的范疇均在鏈路層的作用范圍以內。
利用TCP/IP協議族進行網絡通訊時,會通過分層順序與對方進行通訊。發送端從利用層往下走,接收端則往利用層上走。
我們利用HTTP舉例來講明,首先作為發送真個客戶端在利用層(HTTP協議)發出1個想看某個Web頁面要求的HTTP要求。
接著,為了傳輸方便,在傳輸層(TCP協議)把從利用層處接收到的數據(HTTP要求報文)進行分割,并在各個報文上打上標記序號及端口號后轉發給網絡層。
在網絡層(IP協議),增加作為通訊目的的MAC地址后轉發給鏈路層。這樣1來,發往網絡的通訊要求就準備齊全了。
在接收真個服務器在鏈路層接收到數據,按序往上層發送,1直到利用層。當傳輸到利用層,才算真正接收到由客戶端發送過來的HTTP要求。
發送端在層與層之間傳輸數據時,每經過1層時一定會被打上1個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每經過1層時匯報對應的首部消去。
這類把數據信息包裝起來的做法成為封裝。
先我們分別針對在TCP/IP協議族中與HTTP密不可分的3個洗衣(IP、TCP和DNS)進行說明。
按層次分,IP(Internet Protocol)網際協議位于網絡層。Internet Protocol這個名詞可能聽起來有點夸大,但事實正是如此,由于幾近所有使用網絡的系統都會用到IP協議。TCP/IP協議族中的IP指的就是網際協議。可能會有人把“IP”和“IP地址”弄混,“IP”實際上是1種協議的名稱。
IP協議的作用是把各種數據包傳送給對方。而要保證確切傳送到對方那里,則需要滿足各類條件。其中兩個重要的條件是IP地址和MAC地址(Media Access Control Address)。
IP地址指明了節點被分配到的地址,MAC地址是指網卡所屬的固定地址。IP地址可以和MAC地址進行配對。IP地址可變換,但MAC地址基本上不會改變。
使用ARP協議憑仗MAC地址進行通訊
IP間的通訊依賴MAC地址。在網絡上,通訊的雙發在同1局域網(LAN)內的情況是很少的,通常是經過臺計算機和網絡裝備中轉才能連接到對方。而在進行中轉時,會利用下1站中轉裝備的MAC地址來搜索下1個中轉目標。這是,會采取ARP協議(Address Resolution Protocol)。ARP是1種用以解析地址的協議,根據通訊方的IP地址就能夠反查出對應的MAC地址。
沒有人能全面掌握互聯網中的傳輸狀態
在到達通訊目標前的中轉進程中,那些計算機和路由器等網絡裝備只能得悉很粗略的傳輸線路。
這類機制成為路由選擇(routing),有點像快遞公司的送貨進程。想要寄快遞的人,只要將自己的貨物送到集散中心,就能夠知道快遞公司是不是肯收件發貨,該快遞公司的集散中間檢查貨物的投遞地址,明確下閘該送往那個區域的集散中心。接著,那個區域的集散中心自然會判斷能否送到對方的家中。
我們想通過這個比喻說明,不管哪臺計算機,哪臺網絡裝備,它們都沒法全面掌握互聯網中的細節。
按層次分,TCP位于傳輸層,提供可靠的字節流服務。
所謂的字節流服務(Byte Stream Service)是指,為了方便傳輸,將大塊數據分割成以報文段(segment)為單位的數據包進行管理。而可靠的傳輸服務是指,能夠把數據準確可靠的傳送給對方。1言以蔽之,TCP協議為了更容易傳輸大數據才把數據分割,而且TCP協議能夠確認數據終究是不是投遞對方。
為確保能到達目標
為了準確無誤的將數據投遞目標處,TCP協議采取了3次握手(three-way handshaking)策略。用TCP協議把數據包送出去后,TCP不會對傳送后的情況置之不理,它1定會向對方確認是不是成功投遞。握手進程中使用了TCP的標志(flag)–SYN(synchronize)和ACK(acknowledgement).
發送端首先發送1個帶SYN標志的數據包給對方。接收端收到后,回傳1個帶有SYN/ACK標志的數據包以轉達確認信息。最后,發送端再回傳1個帶ACK標志的數據包,代表“握手”結束。
若在握手進程中某個階段莫名中斷,TCP協議會再次以相同的順序發送相同的數據包。
DNS(Domain Name System)服務是和HTTP協議1樣位于利用層的協議。它提供域名到IP地址之間的解析服務。
計算機既可以被賦予IP地址,也能夠被賦予主機名和域名。比如www.baidu.com。
用戶通常使用主機名或域名來訪問對方的計算機,而不是通過IP地址來訪問。由于與IP地址的1組純數字相比,用字母配合數字的表示情勢來指定計算機名更符合人類的記憶習慣。
但要讓計算機去理解名稱,相對而言就變得困難了。由于計算機更善于處理1長串數字。
為了解決上述的問題,DNS服務應運而生。DNS協議通過提供域名查找IP地址,或逆向從IP地址反查域名的服務。
了解了HTTP協議密不可分的TCP/IP協議族中的各種協議后,我們再通過下面這張圖來了解下IP協議、TCP協議和DNS服務在使用HTTP協議的通訊進程中各自發揮了哪些作用。