TCP/IP網路協議基礎

weixin_33797791發表於2016-10-18

TCP/IP 背景和介紹

上世紀 70 年代,隨著計算機技術的發展,計算機使用者意識到:要想發揮計算機更大的作用,就要將世界各地的計算機連線起來。但是簡單的連線是遠遠不夠的,因為計算機之間無法溝通。因此設計一種通用的“語言”來交流是必要可少的,這時 TCP/IP 協議就應運而生了。

TCP/IP(Transmission Control Protocol/Internet Protocol)是傳輸控制協議和網路協議的簡稱,它定義了電子裝置如何連入因特網,以及資料如何在它們之間傳輸的標準。

TCP/IP 不是一個協議,而是一個協議族的統稱,裡面包括了 IP 協議、ICMP 協議、TCP 協議、以及 http、ftp、pop3 協議等。網路中的計算機都採用這套協議族進行互聯。

網路協議棧架構

提到網路協議棧結構,最著名的當屬 OSI 七層模型,但是 TCP/IP 協議族的結構則稍有不同,它們之間的層次結構有如圖對應關係:

01

可見 TCP/IP 被分為 4 層,每層承擔的任務不一樣,各層的協議的工作方式也不一樣,每層封裝上層資料的方式也不一樣:

  • (1)應用層:應用程式通過這一層訪問網路,常見 FTP、HTTP、DNS 和 TELNET 協議;
  • (2)傳輸層:TCP 協議和 UDP 協議;
  • (3)網路層:IP 協議,ARP、RARP 協議,ICMP 協議等;
  • (4)網路介面層:是 TCP/IP 協議的基層,負責資料幀的傳送和接收。
226662-c3875ed70b910d56.png
02

基礎概念

1、IP 地址

網路上每一個節點都必須有一個獨立的 IP 地址,通常使用的 IP 地址是一個 32bit 的數字,被 . 分成 4 組,例如,255.255.255.255 就是一個 IP 地址。有了 IP 地址,使用者的計算機就可以發現並連線網際網路中的另外一臺計算機。

在 Linux 系統中,可以用這樣一條命令檢視自己的 IP 地址:

ifconfig -a
226662-423d29600354c7bd.png
03

2、域名

用 12 位數字組成的 IP 地址很難記憶,在實際應用時,使用者一般不需要記住 IP 地址,網際網路給每個 IP 地址起了一個別名,習慣上稱作域名。

域名與計算機的 IP 地址相對應,並把這種對應關係儲存在域名服務系統 DNS(Domain Name System)中,這樣使用者只需記住域名就可以與指定的計算機進行通訊了。

常見的域名包括 com、net 和 org 三種頂級域名字尾,除此之外每個國家還有自己國家專屬的域名字尾(比如我國的域名字尾為 cn)。目前經常使用的域名諸如百度(www.baidu.com)、Linux 組織(www.lwn.net)等等。

我們可以使用命令”nslookup”或者“ping”來檢視與域名相對應的 IP 地址,由於實驗樓網路限制,我們可以使用ping git.shiyanlou.com檢視。

例如:

04

關於域名與 IP 地址的對映關係,以及 IP 地址的路由和發現機制,將在後續章節進行詳細的說明。

3、MAC 地址

MAC(Media Access Control)地址,或稱為實體地址、硬體地址,用來定義網際網路中裝置的位置。

在 TCP/IP 層次模型中,網路層管理 IP 地址,鏈路層則負責 MAC 地址。因此每個網路位置會有一個專屬於它的 IP 地址,而每個主機會有一個專屬於它 MAC 地址。

4、埠號

IP 地址是用來發現和查詢網路中的地址的,但是不同程式如何互相通訊呢,這就需要埠號來識別了。如果把 IP 地址比作一間房子 ,埠就是出入這間房子的門。真正的房子只有幾個門,但是埠採用 16 位元的埠號標識,一個 IP 地址的埠可以有 65536(即:2^16)個之多!

伺服器的預設程式一般都是通過人們所熟知的埠號來識別的。例如,對於每個 TCP/IP 實現來說,SMTP(簡單郵件傳輸協議)伺服器的 TCP 埠號都是 25,FTP(檔案傳輸協議)伺服器的 TCP 埠號都是 21,TFTP(簡單檔案傳輸協議)伺服器的 UDP 埠號都是 69。任何 TCP/IP 實現所提供的服務都用眾所周知的 1-1023 之間的埠號。這些人們所熟知的埠號由 Internet 埠號分配機構(Internet Assigned Numbers Authority, IANA)來管理。

5、封裝和分用

封裝:當應用程式傳送資料的時候,資料在協議層次當中從頂向下通過每一層,每一層都會對資料增加一些首部或尾部資訊,這樣的資訊稱之為協議資料單元(Protocol Data Unit,縮寫為PDU),在分層協議系統裡,在指定的協議層上傳送的資料單元,包含了該層的協議控制資訊和使用者資訊。如下圖所示:

  • 物理層(一層)PDU指資料位(Bit)
  • 資料鏈路層(二層)PDU指資料幀(Frame)
  • 網路層(三層)PDU指資料包(Packet)
  • 傳輸層(四層)PDU指資料段(Segment)
  • 第五層以上為資料(data)
226662-b0667005f1f86a9d.png
05

分用:當主機收到一個資料幀時,資料就從協議層底向上升,通過每一層時,檢查並去掉對應層次的報文首部或尾部,與封裝過程正好相反。

6、RFC

RFC(Request for Comment)文件是所有乙太網協議的正式標準,並在其官網上面公佈,由 IETF 標準協會制定。大量的 RFC 並不是正式的標準,出版的目的只是為了提供資訊。RFC 的篇幅不一,從幾頁到幾百頁不等。每一種協議都用一個數字來標識,如 RFC 3720 是 iSCSI 協議的標準,數字越大說是 RFC 的內容越新或者是對應的協議(標準)出現的比較晚。

所有的 RFC 文件都可以從網路上找到,其官網為IETF。在網站上面可以通過分類以及搜尋快速找到目標協議的 RFC 文件。目前在 IETF 網站上面的 RFC 文件有數千個,但是我們不需要全部掌握,在工作或學習中如果遇到可以找到對應的解釋,理論與實際結合會有更好地效果,單純閱讀 RFC 的效果一般。


以上內容截選自實驗樓課程【TCP/IP網路協議基礎】第一節,更多TCP/IP網路協議基礎介紹,可以點選這裡,進行檢視,課程自頂向下分層介紹了TCP/IP網路協議基礎,非常適合對TCP/IP不太熟悉的小夥伴~

相關文章