1. 程式人生 > >PPP和PDP啟用是什麼區別

PPP和PDP啟用是什麼區別

ppp相當於鏈路層協議 socket套接字,對tcp/ip協議的封裝、應用 gprs上網首先要設定pdp,接著建立ppp連線,ppp連線建立後,就可以進行tcp/ip傳輸了, 要進行tcp/ip資料傳輸,很多時候都採用socket.

PDP:是GPRS連線的軟硬體環境,指定GPRS連線的接入點APN,連線型別IP或PPP,還有其他一些可選項;

PPP:終端和MODEM之間點對點的協議,包括終端於MODEM之間的鏈路層協商(LCP),伺服器對終端的認證(PAP或CHAP,這一步非強制), 以及終端與伺服器的網路層協商(基本都是IPCP);

SOCKET:程序之間的通訊方式,手機上的應用程式(客戶程序)要和伺服器的某個服務程序通訊,就用socket通過邦定的TCP或UDP埠基於IP 進行資料傳輸

再補充一下: PPP協商過程中的IPCP配置中,終端通過MODEM請求啟用PDP上下文獲得IP地址完成網路連線,PDP中設定的APN就是終端所在的這個網路的網 關,終端訪問internet時就得通過這個閘道器; 而終端的客戶程序與伺服器的服務程序進行socket通訊時,就基於這個IP地址。

以GPRS模組做個例子,為什麼使用PPP連線,就可以同連線多個伺服器呢?而SOCKET連線每次只能連線一個伺服器呢? 據我所知道的:從網路側來看,PPP連線最重要的一步是獲取IP地址,這個IP由GGSN分配,GGSN是GPRS網到internet的閘道器,GSM和 WCDMA協議規定一個MODEM可以和多個GGSN建立PDP上下文,不知道你所說的伺服器是否指GGSN。

而socket連線的伺服器和GGSN完全 是兩碼事,socket連線的是internet網路中的伺服器,socket是用於程序間通訊的,它將程序與TCP/UDP埠進行綁頂,一個 client端的socket只能連線一個server socket。也就決定了它只能連線一臺伺服器。 如果你要寫應用程式,你只需要關心socket的函式族就可以了。不需要去考慮GPRS如何如何。它對你是透明的。

當然,寫應用的時候必須注意兩件 事:

1、GPRS是否可用。如果當前GPRS根本就無法連線,你開socket是毫無意義的;

2、擁塞控制。GPRS速度其實並不高,用慣了寬頻網的小朋 友很喜歡在上面一秒一千個迴圈每個迴圈1000位元組的傳送內容,網路堵死了都不知道怎麼死的。

從理論上來說,如果你的平臺上的TCP/IP足夠完整,你根 本不需要考慮GPRS的內容,只需要根據TCP/IP協議棧上的介面就完全可以控制應用程式的排程和流控了。通常的平臺上,TCP/IP協議棧都是“賽 揚”版的,所以應用程式經常還需要去讀取GPRS狀態。 如果你寫的是GPRS協議棧,關心到PDP就可以為止了。

上面一段描述的時候有意“忽略”了一個“很重要的問題”——手機漫遊的時候IP地址會不會變化? 如果手機的GPRS沒有長時間掉線,就不會變化。PDP就是處理這件事的。PDP的作用相當於維持一根看不見的網線,不管你走到哪兒都保證你IP地址不 變。或者你可以認為PDP的上下文標誌就是手機這張“網絡卡”的“MAC地址”。至於PDP怎麼實現,應該是你去看GPRS資料的事情了。

PPP是發生在PDP和TCP/IP之間的。這裡引入PPP基於兩個歷史淵源:

1、GPRS提供PDP之後,在其上到底如何移植TCP/IP?TCP /IP當然可以覆蓋在PDP之上,但這幾乎就是重寫TCP/IP了。而更早的時候已經有以PPP為底層的TCP/IP了。PPP的移植又比TCP/IP的 移植要簡單得多。於是就有人先把PPP移植到PDP上,然後再在上面蓋一層TCP/IP。PPP其實就是一個DL(資料鏈路層)的變異體;

2、(實際上這 個才是真正的最主要的淵源),最開始的處理器能力都不夠,跑GPRS之後,根本不可能再跑TCP/IP協議棧和應用,GPRS充當modem,TCP /IP和應用程式在PC一端。GPRS的資料怎麼弄進PC呢?這就是PPP的用武之地了。PC和GPRS modem用串列埠進行物理連結,串列埠之上覆蓋PPP協議,PPP的一端是GPRS modem的PDP,另一端就是TCP/IP的資料鏈路層介面。