天天看點

TCP/IP詳解——概述

為什麼會有TCP/IP協定

在世界上各地,各種各樣的電腦運作着各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬别。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機隻是單兵作戰并不會發揮太大的作用。隻有把它們聯合起來,電腦才會發揮出它最大的潛力。于是人們就想方設法的用電線把電腦連接配接到了一起。

但是簡單的連到一起是遠遠不夠的,就好像語言不同的兩個人互相見了面,完全不能交流資訊。因而他們需要定義一些共通的東西來進行交流,TCP/IP就是為此而生。TCP/IP不是一個協定,而是一個協定族的統稱。裡面包括了IP協定,IMCP協定,TCP協定,以及我們更加熟悉的http、ftp、pop3協定等等。電腦有了這些,就好像學會了外語一樣,就可以和其他的計算機終端做自由的交流了。

TCP/IP協定分層

提到協定分層,我們很容易聯想到ISO-OSI的七層協定經典架構,但是TCP/IP協定族的結構則稍有不同。如圖所示

TCP/IP詳解——概述

TCP/IP協定族按照層次由上到下,層層包裝。最上面的就是應用層了,這裡面有http,ftp,等等我們熟悉的協定。而第二層則是傳輸層,著名的TCP和UDP協定就在這個層次(不要告訴我你沒用過udp玩星際)。第三層是網絡層,IP協定就在這裡,它負責對資料加上IP位址和其他的資料(後面會講到)以确定傳輸的目标。第四層是叫資料鍊路層,這個層次為待傳送的資料加入一個以太網協定頭,并進行CRC編碼,為最後的資料傳輸做準備。再往下則是硬體層次了,負責網絡的傳輸,這個層次的定義包括網線的制式,網卡的定義等等(這些我們就不用關心了,我們也不做網卡),是以有些書并不把這個層次放在tcp/ip協定族裡面,因為它幾乎和tcp/ip協定的編寫者沒有任何的關系。發送協定的主機從上自下将資料按照協定封裝,而接收資料的主機則按照協定從得到的資料包解開,最後拿到需要的資料。這種結構非常有棧的味道,是以某些文章也把tcp/ip協定族稱為tcp/ip協定棧。

1.TCP/IP的分層結構

     網絡協定通常分不同層次進行開發,每一層分别負責不同的同信功能。TCP/IP通常被認為是一個四層協定系統。      如圖所示。      

TCP/IP詳解——概述

1)鍊路層(資料鍊路層或網絡接口層),通常包括作業系統中的裝置驅動程式和計算機中對應的網絡接口卡。 2)網絡層(網際網路層),處理分組在網絡中的活動。 3)運輸層,主要負責兩台主機上的應用程式提供端到端的同信。(TCP(傳輸控制協定)UDP(使用者資料包協定)。 4)應用層,主要負責處理特定的應用程式細節。大部分TCP/IP實作都會提供以下通用程式:

  • Telnet遠端登陸
  • FTP檔案傳輸協定
  • SMTP簡單郵件傳送協定
  • SNMP簡單網絡管理協定

  

TCP/IP詳解——概述

如上圖所示,TCP/IP分層結構中,展示了主要協定的分布(TCP/IP協定遠不止以上協定)

  • TCP和UDP是兩種最為著名的運輸層協定,二者都使用IP作為網絡層協定
    • TCP使用不可靠的IP服務,但是卻提供一種可靠的運輸層服務
    • UDP為應用程式發送和接收資料報。UDP是不可靠的,它不能保證資料報能安全無誤的達到目的地。
  • IP(網際協定)是網絡層上的主要協定,同時被TCP和UDP使用。TCP和UDP的每組資料都通過端系統和每個中間路由器中的IP層在網際網路中進行傳輸。
  • ICMP(internet控制封包協定)是IP協定的附屬協定。IP層用它來與其他主機或路由器交換錯誤封包和其他重要資訊。
  • IGMP(internet組管理協定)。它用來把一個UDP資料多點傳播到多個主機。
  • ARP(位址解析協定)和RARP(逆位址解析協定)是網絡接口使用的特殊協定,用來轉換IP層和網絡接口層使用的位址。

2.網際網路的位址      網際網路上的每個接口必須有一個唯一的internet位址(IP位址)。IPv4位址長32位。IP位址具有一定的結構。五類不同的網際網路位址格式如下:

TCP/IP詳解——概述

這些32位的位址通常寫成四個十進制的數,其中每個整數對應一個位元組。這種表示法稱作“點分十進制數表示法”例如,常見的路由器的IP位址:192.168.1.1 (username:admin       password:admin) 3.域名系統     DNS 是域名系統 (Domain Name System) 的縮寫,是網際網路的一項核心服務,它作為可以将域名和IP位址互相映射的一個分布式資料庫,能夠使人更友善的通路網際網路,而不用去記住能夠被機器直接讀取的IP數串。它是由解析器以及域名伺服器組成的。域名伺服器是指儲存有該網絡中所有主機的域名和對應IP位址,并具有将域名轉換為IP位址功能的伺服器。 4.封裝      當應用程式用TCP傳送資料時,資料被送入協定棧中,然後逐個通過每一層,直接到當作一串比特流送入網絡。其中每一層對收到的資料都要加一些首部資訊(有時還要增加尾部資訊),如圖所示:

TCP/IP詳解——概述
  • TCP傳給IP的資料單元稱作TCP封包段(segment。
  • IP傳給鍊路層的資料單元稱作IP資料報(IP datagram)
  • 通過以太網傳輸的比特流稱作幀(Frame)

一些基本的常識

在學習協定之前,我們應該具備一些基本知識。

  • 網際網路位址(ip位址)

    網絡上每一個節點都必須有一個獨立的Internet位址(也叫做IP位址)。現在,通常使用的IP位址是一個32bit的數字,也就是我們常說的IPv4标準,這32bit的數字分成四組,也就是常見的255.255.255.255的樣式。IPv4标準上,位址被分為五類,我們常用的是B類位址。具體的分類請參考其他文檔。需要注意的是IP位址是網絡号+主機号的組合,這非常重要。
  • 域名系統

    域名系統是一個分布的資料庫,它提供将主機名(就是網址啦)轉換成IP位址的服務。
  • RFC

    RFC是什麼?RFC就是tcp/ip協定的标準文檔,在這裡我們可以看到RFC那長長的定義清單,現在它一共有4000多個協定的定義,當然,我們所要學習的,也就是那麼十幾個協定而已。
  • 端口号(port)

    注意,這個号碼是用在TCP,UDP上的一個邏輯号碼,并不是一個硬體端口,我們平時說把某某端口封掉了,也隻是在IP層次把帶有這個号碼的IP包給過濾掉了而已。
  • 應用程式設計接口

    現在常用的程式設計接口有socket和TLI。而前面的有時候也叫做“Berkeley socket”,可見Berkeley對于網絡的發展有多大的貢獻。

一些基本的常識

在學習協定之前,我們應該具備一些基本知識。

  • 網際網路位址(ip位址)

    網絡上每一個節點都必須有一個獨立的Internet位址(也叫做IP位址)。現在,通常使用的IP位址是一個32bit的數字,也就是我們常說的IPv4标準,這32bit的數字分成四組,也就是常見的255.255.255.255的樣式。IPv4标準上,位址被分為五類,我們常用的是B類位址。具體的分類請參考其他文檔。需要注意的是IP位址是網絡号+主機号的組合,這非常重要。
  • 域名系統

    域名系統是一個分布的資料庫,它提供将主機名(就是網址啦)轉換成IP位址的服務。
  • RFC

    RFC是什麼?RFC就是tcp/ip協定的标準文檔,在這裡我們可以看到RFC那長長的定義清單,現在它一共有4000多個協定的定義,當然,我們所要學習的,也就是那麼十幾個協定而已。
  • 端口号(port)

    注意,這個号碼是用在TCP,UDP上的一個邏輯号碼,并不是一個硬體端口,我們平時說把某某端口封掉了,也隻是在IP層次把帶有這個号碼的IP包給過濾掉了而已。
  • 應用程式設計接口

    現在常用的程式設計接口有socket和TLI。而前面的有時候也叫做“Berkeley socket”,可見Berkeley對于網絡的發展有多大的貢獻。

繼續閱讀