分層:
TCPIP通常是一個4層的協議:鏈路,網絡,運輸,應用。
鏈路層:就是整個計算機偏向硬件的那一部分,像是操作系統的設備驅動程序,網絡接口卡之類的
網絡層:網絡層處理每個分組在網絡中的活動,比如分組的選路,在TCP/IP協議族中,網絡層協議包括IP協議(網際協議),ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)
傳輸層:主要為兩台主機上的應用程序提供端到端的通信。協議包括TCP和UDP
- TCP為兩台主機提供高可靠性的數據通信:把應用程序交給它的數據分成合適的小塊交給下面的網絡層,確認接收到的分組,設置發送最后確認分組的超時時鍾等
- UDP:只是把稱作數據報的分組從一台主機發送到另一台主機,但並不保證該數據報能到達另一端。任何必需的可靠性必須由應用層來提供。
應用層:負責處理特定的應用程序細節
一般來說:應用層通常是一個用戶進程,而下面三層都是運行在內核里面
ICMP是IP協議的附屬協議。I P層用它來與其他主機或路由器交換錯誤報文和其他重要信息,Ping和Traceroute都是用的ICMP協議
IGMP是Internet組管理協議。它用來把一個UDP數據報多播到多個主機
ARP(地址解析協議)和RARP(逆地址解析協議):用來轉換IP層和網絡接口層使用的地址
互聯網的地址
互聯網上的每個接口必須有一個唯一的IP地址。IP地址長 32 bit。
點分十進制表示法:這些32位的地址通常寫成四個十進制的數,其中每個整數對應一個字節
封裝(發送)
當應用程序用TCP傳送數據時,數據被送入協議棧中,然后逐個通過每一層直到被當作一串比特流送入網絡,其中每一層對收到的數據都要增加一些首部信息有時還要增加尾部信息
以太網數據幀的物理特性是其長度必須在46~1500字節之間
UDP數據與TCP數據基本一致唯一的不同是UDP傳給IP的信息單元稱作UDP數據報
(UDP datagram),而且UDP的首部長為8字節
由於TCP、UDP ICMP和IGMP都要向IP傳送數據,因此IP必須在生成的IP首部中加入某種標識,以表明數據屬於哪一層。為此,IP在首部中存入一個長度為8bit的數值,稱作協議域,1表示為ICMP協議,2表示為IGMP協議,6表示為TCP協議,17表示為UDP協議
許多應用程序都可以使用TCP或UDP來傳送數據。運輸層協議在生成報文首部時要存入一個應用程序的標識符:TCP和UDP都用一個16bit的端口號來表示不同的應用程序。TCP和 UDP把源端口號和目的端口號分別存入報文首部中
網絡接口分別要發送和接收IP、ARP和RARP數據,因此也必須在以太網的幀首部中加入某種形式的標識,以指明生成數據的網絡層協議。為此,以太網的幀首部也有一個 16 bit的幀類型域。
分用
分用:當目的主機收到一個以太網數據幀時,數據就開始從協議棧中由底向上升,同時去掉各層協議加上的報文首部。每層協議盒都要去檢查報文首部中的協議標識,以確定接收數據的上層協議
客戶-服務器模型
大部分網絡應用程序在編寫時都假設一端是客戶,另一端是服務器,其目的是為了讓服務器為客戶提供一些特定的服務
可以將這種服務分為兩種類型:重復型或並發型
重復型:
I1. 等待一個客戶請求的到來。
I2. 處理客戶請求。
I3. 發送響應給發送請求的客戶。
I4. 返回I 1步
重復型服務器主要的問題發生在 I 2狀態。在這個時候,它不能為其他客戶機提供服務
並發型:
C1. 等待一個客戶請求的到來。
C2. 啟動一個新的服務器來處理這個客戶的請求。在這期間可能生成一個新的進程、任務
或線程,並依賴底層操作系統的支持。這個步驟如何進行取決於操作系統。生成的新服務器
對客戶的全部請求進行處理。處理結束后,終止這個新服務器。
C3. 返回C 1步。
並發服務器的優點在於它是利用生成其他服務器的方法來處理客戶的請求。也就是說,
每個客戶都有它自己對應的服務器。如果操作系統允許多任務,那么就可以同時為多個客戶
服務。
一般來說,TCP服務器是並發的,而UDP服務器是重復的,但也存在一些例外
端口號
客戶端通常對它所使用的端口號並不關心,只需保證該端口號在本機上是唯一的就可以
了。客戶端口號又稱作臨時端口號(即存在時間很短暫)。這是因為它通常只是在用戶運行該
客戶程序時才存在,而服務器則只要主機開着的,其服務就運行
大多數TCP/IP實現給臨時端口分配1024~5000之間的端口號。大於5000的端口號是為其他服務器預留的上並不常用的服務。我們可以在后面看見許多這樣的給臨時端口分配端口號的例子
可以在etc/services中查看端口號
當使用TCP和UDP提供相同的服務時,一般選擇相同的端口號