1 分層協議
層級 | 協議 | 功能 | 進程 | 補充 |
---|---|---|---|---|
應用層 | http、telent、ftp、e-mail | 負責處理特定的應用程序細節 | 用戶進程,處理應用程序細節 | |
傳輸層 | TCP和UDP | 為兩臺主機上的應用程序提供端到端的通信 | 內核進程,處理通信細節(下同) | TCP在IP層的基礎上,提供可靠的服務 |
網絡層 | IP、ICMP、ICMP | 處理分組在網絡中的活動 | ... | IP層盡可能快的把分組從源節點送到目的節點,而不提供任何可靠的保證 |
鏈路層 | 設備驅動程序以及接口卡(鏈路層協議例如ARP地址解析協議) | 處理與電纜等物理接口的細節 | ... |
應用程序關心的是應用程序的細節,而不是數據在網絡中的傳輸活動;下三層對應用層一無所知,但是它們要處理所有的通信細節。
2 封裝與分組
2.1封裝
當應用程序用TCP傳輸數據時,數據送入到協議棧中,然后逐個通過每一層,直到被當做一串比特流送入網絡。其中每一層都要增加一些首部信息(有時還要增加尾部信息)。TCP傳給IP層的叫做TCP段(segment),IP傳給鏈路層的叫IP數據報(datagram)。通過以太網傳輸的比特流成為幀(Frame)。
一下圖中標記的首部長度是典型的,實際中并不一定。
協議棧中下層接收數據時,需要在首部中標記是哪種協議發出的數據。IP首部中用一個8bit的數值,稱之為協議域,用1表示ICMP,用2表示ICMP,用6表示TCP,用17表示UDP。
類似的,TCP和UDP協議均會在首部中使用16個bit標記源端口號和目的端口號。
分用
目的主機收到以太網數據幀之后,從協議棧由低向上升,同時去掉各層協議上的報文首部。每層協議盒都要減產報文中的協議標志,以確定接收數據的上層協議。這個過程稱之為奮分用。
3客戶端服務端模型
大多數網絡應用程序編寫時都假設一段是客戶端,一段是服務端。
重復型服務器
1 等待客戶請求的到來
2 處理客戶請求
3 發送響應給發送請求的客戶
4 返回步驟1
處理客戶請求時,不能給其它其它客戶服務。
并發型服務器
1 等待……
2 啟動一個新的服務器開處理客戶的請求,可能生成新的進程、線程等
3 返回步驟1
可以同時為多個客戶服務。
一般來說,TCP服務器是并發的,UDP服務器是重復的。
4 端口號
使用16bit的端口號來識別應用程序。
服務器一般通過知名端口號來識別,FTP端口號21,http端口號80,https端口號443。
https:使用的是完全不同的連接方式,端口號不同。在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。https使用ssl和https構建,可進行加密傳輸,安全級別較高,需要證書,握手階段比較費時,頁面加載時間延長。