分層數據庫
分層是一種很通用的架構模式。經過分層,能夠把一個系統分解成多個層,每一個層專一於各自的功能,並提供接口給上面的層調用。上面的層不須要了解調用層的詳細實現,只依賴於其接口,這就給維護帶來了很大的好處,好比能夠很方便的替換某一層。編程
網絡協議也是分層實現的。好比TCP/IP協議,是一組不一樣層次上的多個協議的組合。通常分爲四層。服務器
1)鏈路層:也稱爲數據鏈路層或網絡接口層,一般包括操做系統中的設備驅動程序和對應的網絡接口卡。有ARP和RARP協議。網絡
2)網絡層:處理分組在網絡中的活動,包括IP協議,ICMP協議及IGMP協議。架構
3) 運輸層:主要爲兩臺主機上的應用程序提供端到端的通訊。主要有TCP和UDP兩個傳輸協議。TCP爲兩臺主機提供高可靠性的數據通訊。UDP只是發送數據包,不保證是否到達另外一端,所以可靠性由應用層來提供。併發
4)應用層:負責處理特定的應用程序細節。socket
通常來講,應用層運行在用戶進程,其他三層運行於內核中,但這不是必須的。操作系統
網絡接口層處理通訊媒介的細節,應用層處理某個特定的應用程序,運輸層和網絡層區別不太明顯,那爲何要分兩層?簡單的說,從分層的角度看,仍是由於兩層的功能不同。網絡層提供的是一種不可靠的服務,它只是儘量快地把分組從源發送到目的地。TCP在不可靠的IP層上提供了可靠的運輸層,它提供了超時重傳,發送和接收端到端的確認分組機制等。那UDP呢?線程
互聯網的地址blog
每一個接口必須有一個惟一的地址。下圖是五類互聯網地址。
網絡地址有三類,單播地址(目的爲單個主機),廣播地址(目的爲給定網絡上的全部主機)以及多播地址(同一組內的全部主機)。
域名系統
在TCP/IP領域中,域名系統(DNS)是一個分佈的數據庫,由它來提供IP地址和主機名之間的映射信息。
封裝
當應用程序使用TCP發送數據時,數據被送入協議棧,而後逐層經過各層直到被看成比特流送入網絡,每一層對收到的數據都要增長首部信息。詳細以下圖:
以太網數據幀的物理特性是其長度必須在46-1500之間。
分用
一張圖足矣。
惟一要指出的是ICMP和IGMP雖然在同一層,由於它們是IP的附屬協議,但它們的報文是封裝在IP數據報中,所以這裏放在IP的上方。
ARP和RARP同理。
客戶-服務器模型
這裏將服務分爲了兩種類型:重複型和併發型。重複型有排他性,同時只能爲一個客戶端訪問。併發型在客戶請求來時生成一個進程或線程進行服務。
通常來講,TCP服務器是併發的,UDP服務器是重複的,有例外但目前還不清楚。
端口號
客戶端不在意端口號,由於這是臨時端口號,只要在本機上惟一便可,大多數TCP/IP採用1024-5000之間的端口號。
有一些衆所周知的端口號,好比1-1023之間的端口號,提供咱們很熟悉的服務。好比,21端口號提供的是FTP服務。
應用編程接口
使用TCP/IP協議的應用程序一般採用兩種應用編程接口:socket和TLI(運輸層接口,有時稱做XTI)。