亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                計算機網(wǎng)絡(luò)-TCP/IP協(xié)議簡述

                計算機網(wǎng)絡(luò)-TCP/IP協(xié)議簡述

                1.1.TCP/IP協(xié)議簡介

                tcp/ip協(xié)議運行在各種操作系統(tǒng)上的一種網(wǎng)絡(luò)通信協(xié)議,各個系統(tǒng)通過實現(xiàn)tcp/ip的相關(guān)協(xié)議,來達到相互之間通信的目的。

                1.2.TCP/IP協(xié)議分層細節(jié)

                網(wǎng)絡(luò)協(xié)議通常都是分層開發(fā),各個層負責其相對應(yīng)的任務(wù),TCP/IP協(xié)議也不例外。例如,TCP/IP協(xié)議的鏈路層負責保證局域網(wǎng)內(nèi)的通信,網(wǎng)絡(luò)層負責保證跨局域網(wǎng)之間的通信。

                具體的分層細節(jié)如下:

                鏈路層:有時也稱作數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機中對應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節(jié)。

                網(wǎng)絡(luò)層:有時也稱作互聯(lián)網(wǎng)層,處理分組在網(wǎng)絡(luò)中的活動,例如分組(分組可以理解為一條在網(wǎng)絡(luò)中傳輸?shù)?span id="v8fpw3y" class="wpcom_tag_link">報文)的選路。在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(常用的ping程序便是通過這個協(xié)議實現(xiàn)),以及IGMP協(xié)議(負責組播選路轉(zhuǎn)發(fā)的相關(guān)協(xié)議)。

                傳輸層:有時也稱作運輸層,運輸層主要為兩臺主機上的應(yīng)用程序提供端到端的通信(注意運輸層負責的是應(yīng)用程序之間的通信,而主機到主機之間的通信由鏈路層與網(wǎng)絡(luò)層負責)。

                在TCP/IP協(xié)議族中,有兩個互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。

                TCP為兩臺主機提供高可靠性的數(shù)據(jù)通信(TCP提供的服務(wù)是可靠的,即只要是TCP承載的協(xié)議報文,除非網(wǎng)絡(luò)不通,否則網(wǎng)絡(luò)報文必定能正常送達目的主機,這是由于網(wǎng)絡(luò)層的IP服務(wù)時不可靠的)。它所做的工作包括把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認接收到的分組,設(shè)置發(fā)送最后確認分組的超時時鐘等。由于運輸層提供了高可靠性的端到端的通信,因此應(yīng)用層可以忽略所有這些細節(jié)。而另一方面,UDP則為應(yīng)用層提供一種非常簡單的服務(wù)。它只是把稱作數(shù)據(jù)報的分組從一臺主機發(fā)送到另一臺主機,但并不保證該數(shù)據(jù)報能到達另一端(不具備可靠性,需要通過上層協(xié)議來保證)。任何必需的可靠性必須由應(yīng)用層來提供。這兩種運輸層協(xié)議分別在不同的應(yīng)用程序中有不同的用途,這一點將在后面看到。

                應(yīng)用層:應(yīng)用層負責處理特定的應(yīng)用程序細節(jié)。幾乎各種不同的TCP/IP實現(xiàn)都會提供下面這些通用的應(yīng)用程序:

                ? Telnet 遠程登錄。

                ? FTP 文件傳輸協(xié)議。

                ? SMTP 簡單郵件傳送協(xié)議。

                ? SNMP 簡單網(wǎng)絡(luò)管理協(xié)議。

                我們可以簡單地將鏈路層、網(wǎng)絡(luò)層與傳輸層這三層的協(xié)議的作用,統(tǒng)一理解成為了將報文成功送達目標主機對應(yīng)的目的程序。而應(yīng)用層的數(shù)據(jù)才是報文中真正承載的用戶數(shù)據(jù),即我們應(yīng)用程序之間通信的真正數(shù)據(jù)。例如我們微信、QQ這些聊天軟件發(fā)出去的聊天信息就是承載在應(yīng)用層的數(shù)據(jù)包中。

                1.3.TCP/IP協(xié)議分層圖

                1-1

                TCP與UDP是最為著名的運輸層協(xié)議,這兩種協(xié)議都以IP協(xié)議作為其網(wǎng)絡(luò)層協(xié)議。當前互聯(lián)網(wǎng)中的絕大多數(shù)應(yīng)用層協(xié)議都是承載在這兩種運輸層協(xié)議之上。

                TCP協(xié)議是可靠的,雖然使用的是不可靠的IP服務(wù),但其特殊的機制使得其提供的服務(wù)時可靠的,如報文確認機制、超時重傳機制等。TELNET、FTP、SMTP等著名協(xié)議所使用的運輸層協(xié)議就是TCP協(xié)議。

                UDP協(xié)議是不可靠的,僅為應(yīng)用程序提供發(fā)送和接收數(shù)據(jù)包的服務(wù)。其可靠性需要通過應(yīng)用層協(xié)議來保證。DNS、TFTP、SNMP等著名協(xié)議所使用的的運輸層協(xié)議就是UDP協(xié)議。

                IP 是網(wǎng)絡(luò)層上的主要協(xié)議,也是為TCP、UDP協(xié)議提供網(wǎng)絡(luò)層服務(wù)的協(xié)議。在數(shù)據(jù)包到達目的主機之前,跨局域網(wǎng)之間的網(wǎng)絡(luò)選路都由IP協(xié)議來提供。

                ICMP是IP 協(xié)議的附屬協(xié)議,其也是屬于網(wǎng)絡(luò)層協(xié)議。從報文上觀察時,很容易將其誤認為是運輸層協(xié)議,但實際上是屬于網(wǎng)絡(luò)層協(xié)議。主要作用是在各個網(wǎng)絡(luò)主機與路由器之間交換網(wǎng)絡(luò)錯誤消息和其他的一些狀態(tài)信息。

                IGMP是負責組播轉(zhuǎn)發(fā)的網(wǎng)絡(luò)層協(xié)議。主要負責組播報文(報文有單播、組播與廣播三種)在路由器上的選路轉(zhuǎn)發(fā)。

                ARP與RARP是屬于鏈路層協(xié)議,有時也認為是2.5層協(xié)議。其主要負責的是鏈路層的地址(以太網(wǎng)即MAC地址)與網(wǎng)絡(luò)層地址(TCP/IP協(xié)議即IP地址)之間的相互轉(zhuǎn)換。

                1.4.互聯(lián)網(wǎng)的IP地址

                互聯(lián)網(wǎng)上每個接口都具備一個或多個ip地址來標識該網(wǎng)絡(luò)接口。IP地址具有一定的結(jié)構(gòu),5類不同的ip地址格式如圖1-2:

                1-2

                如上所述,有3類報文,分別是單播報文、組播報文與廣播報文,對應(yīng)的有3類ip地址,即單播地址,組播地址和廣播地址。這32位地址通常用點分十進制的格式來描述,如C類地址 192.168.225.2。各類地址的IP范圍如圖1-3:

                1-3

                1.5.域名系統(tǒng)

                雖然通過IP地址唯一標識一個接口可以順利的找到該網(wǎng)絡(luò)接口,進而訪問該主機,但是網(wǎng)絡(luò)接口的32位ip地址(甚至ipv6的128位地址)實在不好記。我們更希望一個主機能直接用一個主機名來描述,這樣才能讓使用者更加方便。因此,在TCP/IP領(lǐng)域中,存在一個域名系統(tǒng),提供主機名與ip地址之間的相互查詢服務(wù),即大名鼎鼎的DNS。

                1.6.報文封裝

                當我們數(shù)據(jù)要通過TCP協(xié)議來傳輸時,系統(tǒng)會將我們的數(shù)據(jù)做一層層的封裝,先加上運輸層TCP/UDP協(xié)議的頭部信息,再加上網(wǎng)絡(luò)層IP協(xié)議的頭部,接著加上鏈路層協(xié)議的頭部,最后從指定的端口發(fā)出。其中TCP傳給IP的數(shù)據(jù)單元稱作TCP報文段或簡稱為TCP段(TCP segment)。IP傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作IP數(shù)據(jù)報(IP datagram)。通過以太網(wǎng)傳輸?shù)谋忍亓鞣Q作幀(Frame)。

                報文若是通過以太網(wǎng)數(shù)據(jù)幀傳輸,那么其數(shù)據(jù)幀大小是有限制的,即其幀長必須在46-1500字節(jié)(數(shù)據(jù)由相關(guān)計算得來,主要與傳輸延時相關(guān))之間。

                TCP報文封裝示意圖如圖1-4,UDP報文封裝與TCP報文封裝幾乎一致,UDP報文封裝將TCP首部換成UDP首部即可,且UDP首部長為8字節(jié):

                1-4

                各個層的協(xié)議都有多種,因此承載各個協(xié)議的分層負責標識下一層所承載的相關(guān)協(xié)議。具體來說,以太網(wǎng)首部后面可能跟ARP/RARP/VXLAN/MPLS/IP等協(xié)議,因此以太網(wǎng)首部包含一個16位的幀類型字段,用來標識后面分層所承載的協(xié)議;相似的有IP層包含一個8位的協(xié)議域字段,用來標識后面分層所承載的是ICMP/IGMP/TCP/UDP等協(xié)議;相似的還有TCP/UDP首部包含16位端口號,來標識該報文所屬的應(yīng)用程序。

                1.7.分用

                當目的主機收到一個報文時,程序就開始一層層的解析,一層層地剝?nèi)ジ鱾€首部,然后找到最終的應(yīng)用程序,將真正的用戶數(shù)據(jù)傳給相對應(yīng)的程序處理。具體如圖1-5:

                1-5

                從這個架構(gòu)圖上觀察,會發(fā)現(xiàn)ICMP與IGMP協(xié)議是在IP層上,貌似與TCP/UDP屬于同一層,但實際上如上文所述,其實是屬于IP協(xié)議的附屬協(xié)議。ARP與RARP有同樣的問題存在。這只能歸結(jié)為一個問題,即分層協(xié)議設(shè)計的并不完美。

                1.8.客戶-服務(wù)器模型

                絕大部分的應(yīng)用程序所使用的網(wǎng)絡(luò)模型都是客戶服務(wù)器模型,客戶通過向服務(wù)器發(fā)送請求,接著服務(wù)器應(yīng)答客戶請求的方式,來完成客戶與服務(wù)器之間的交互。

                這種交互模型實現(xiàn)又分為兩類,重復(fù)型與并發(fā)型。

                重復(fù)型通過以下步驟提供服務(wù):

              1. 等待一個客戶請求到來
              2. 處理客戶請求
              3. 發(fā)送響應(yīng)給客戶請求
              4. 返回第一步繼續(xù)等待客戶請求
              5. 并發(fā)型通過以下步驟提供服務(wù):

              6. 等待一個客戶請求到來
              7. 生成一個新的進程/線程來處理到來的客戶請求,處理結(jié)束后,終止相應(yīng)進程。
              8. 返回第一步繼續(xù)等待客戶請求
              9. 并發(fā)服務(wù)器相比于重復(fù)型服務(wù)器的優(yōu)勢在于,多任務(wù)系統(tǒng)上時可以支持同時處理多個用戶請求。

                1.9.常見的tcp/udp服務(wù)

                若想知道哪些服務(wù)是使用tcp/udp承載實現(xiàn)的,那么可以在linux系統(tǒng)下,運行g(shù)rep tcp/udp /etc/services,正常情況下就會羅列出相應(yīng)的服務(wù),可以發(fā)現(xiàn)有些服務(wù)在tcp和udp上都有實現(xiàn)。

                圖1-6是我在linux系統(tǒng)下運行查詢到的部分截圖:

                1-6

                可以看到snmp協(xié)議也有承載在tcp協(xié)議上的實現(xiàn),而上文曾提到snmp協(xié)議是屬于udp協(xié)議上的實現(xiàn),因此snmp協(xié)議在udp和tcp協(xié)議上都有實現(xiàn),可通過grep snmp /etc/services命令驗證,如圖1-7:

                1-7

                可以發(fā)現(xiàn)二者的端口號不同。

                1.10.應(yīng)用編程接口

                使用TCP/IP協(xié)議的應(yīng)用程序通常采用兩種網(wǎng)絡(luò)編程接口,分別是socket和TLI。目前我們更常用的接口是socket接口。網(wǎng)絡(luò)編程的socket接口,后續(xù)會另開章節(jié)補充。

                鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
                用戶投稿
                上一篇 2022年6月16日 12:18
                下一篇 2022年6月16日 12:19

                相關(guān)推薦

                聯(lián)系我們

                聯(lián)系郵箱:admin#wlmqw.com
                工作時間:周一至周五,10:30-18:30,節(jié)假日休息