系列之TCP/IP協議-概述(001)

林灣村龍貓發表於2019-04-10

一、引言

TCP/IP協議簇是目前internet網的事實上的協議簇,它相對於國際標準化組織制定的OSI參考模型的七層協議(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層)不同,它只有四層(鏈路層、網路層、運輸層、應用層)。分層的目的是將一個複雜的問題分解,每一層專注於一個功能點,單一職責。

二、分層

tcp/ip協議簇分層

1.四層協議如下:

  • 鏈路層,通常包括裝置驅動程式、網路介面卡、傳輸介質。處理物理介面細節。
  • 網路層,處理網路中分組的活動,點到點,點到多端。包括IP協議、ICMP協議、IGMP協議等。
  • 運輸層,提供兩臺主機上的兩個應用程式的端到端通訊。包括TCP協議、UDP協議。
  • 應用層,處理特定應用的細節。如HTTP協議,FTP協議,SSH協議等等。

2.常用協議概覽(由下至上)

  • ARP協議與RARP協議,用於轉換IP地址與MAC地址。
    • ARP協議:地址解析協議(Address Resolution Protocol),IP地址 ---> MAC地址;
    • RARP協議:反地址解析協議(Reverse Address Resolution Protocol),MAC地址 ---> IP地址;
  • IP協議是網路層主要協議,ICMP協議是IP協議的附屬協議。
    • IP協議:網際協議(Internet Protocol),控制點到點傳輸。IP傳給鏈路層的資料單元叫IP資料包(IP datagram)
    • ICMP協議:網路控制訊息協議(Internet Control Message Protocol),用於與其他機器交換錯誤報文資訊與其他重要資訊。
    • IGMP協議:網際組管理協議(Internet Group Management Protocol),用於把一個UDP資料包多播到多個主機上。
  • TCP協議與UDP協議,用於規定傳輸方式。都是IP協議的上層協議。
    • TCP協議:傳輸控制協議(Transmission Control Protocol),用於提供端到端的、面向連線的、可靠的、基於位元組流的通訊協議。他需要三次握手建立連線,四次握手關閉連線。TCP傳給IP的資料單元叫做TCP段(TCP segment)
    • UDP協議:使用者資料包協議(User Datagram Protocol),為應用程式傳送/接收資料包(一定位元組數的資訊單元)。與TCP不同,UDP不是可靠的傳輸協議。常用的基於UDP的應用協議有DNS協議、TFTP協議等等。UDP傳給IP的資料單元叫UDP資料包(UDP datagram)。UDP資料包首部長8位元組。
  • HTTP協議、DNS協議、FTP協議等,這些協議都有其具體的應用場景。
    • HTTP協議:超文字傳輸協議(HyperText Transfer Protocol),常用的網站協議。
    • DNS協議:域名解析協議(Domain Name System),只有一個用途,將常見的域名地址(如www.baidu.com)解析成IP地址(如127.0.0.1)。
    • FTP協議:檔案傳輸協議(File Transfer Protocol),正如其名,就是用來傳輸檔案用的。

三、網際網路的地址(IP地址)

五大類IP地址
  internet上的介面都有唯一的一個IP地址。常用的IP地址長度是32bit,這32bit常寫成4個十進位制數(如127.0.0.1,每一個數最大為255)。如果一臺主機有多個網路介面,那麼每一個介面對應一個IP地址。所有的IP地址又可以分為三類:單播地址(目的為單個主機)多播地址(目的為同一組的所有主機)廣播地址(目的為給定網路的所有主機)
各類IP地址對應的範圍

四、埠號

埠號,是用來區分一臺或多臺主機上的那些應用在通訊。你想啊,兩臺主機通訊,每臺主機上有n個應用程式在執行,鬼知道是哪個應用程式與哪個應用程式在通訊,所以有了埠號。傳輸層使用16bit來表示埠號。也就是說一臺機器最多有六萬多個埠號(0~65535)。埠號分類如下:

  • 0,為保留埠號,不使用(若傳送過程不準備接受回覆訊息,則可以作為源埠)。
  • 知名埠號(1~1023),由Internet號分配機構(Internet Assigned Numbers Authority,IANA)來管理。如 22-SSH、25-SMTP、80-HTTP等等。伺服器一般通過知名埠號來標識。檢視知名埠分配方式如下:
  • 零時埠號(1024~5000),系統自動分配的。客戶端一般不需要關心它使用的埠號,所以採用臨時埠號。
  • 其他服務埠號(5001~65535),其他服務埠號(internet上不常用的服務)。如xdebug(PHP程式碼除錯)預設埠號9000、Fiddler(http抓包工具)預設http代理埠號8888等等。

五、客戶與服務模型

大部分的網路應用都是使用的客戶端+伺服器模型。讓伺服器為客戶端提供一些特定服務。通常服務可以分為兩類:重複型併發型

典型客戶-服務模型

1.重複型服務

  a. 等待一個客戶端請求到來。
  b. 處理該客戶端請求。
  c. 傳送響應給該請求的客戶端。
  d. 返回a步驟。
複製程式碼

當出來一個客戶端請求的時候,無法為其他客戶端提供服務。

2.併發型服務

  a. 等待一個客戶端請求到來。
  b. 啟動一個新的服務(程式/執行緒/任務等)來處理該客戶端請求。
     新服務處理該請求返回響應給該請求客戶端。
  c. 返回a步驟。
複製程式碼

併發型服務優點在於可以同時處理多個請求。

都看到這裡了,要不要掃二維碼關注一下微信公眾號林灣村龍貓,會有意外驚喜喲。

微信公眾號rudy_tan_home

相關文章