一.網路協議 如果要理解Socket,要熟悉TCP/IP即傳輸控制協議/網間協議,定義了主機如何連入網際網路,數據如何在它們之間傳輸的標準。 TCP/IP協議參考模型,把所有的TCP/IP系列協議歸類到四個抽象層中:應用層,傳輸層,網路層,數據鏈路層,每一抽象層建立在低一層提供的服務上,並且為高一層提 ...
一.網路協議
如果要理解Socket,要熟悉TCP/IP即傳輸控制協議/網間協議,定義了主機如何連入網際網路,數據如何在它們之間傳輸的標準。
TCP/IP協議參考模型,把所有的TCP/IP系列協議歸類到四個抽象層中:應用層,傳輸層,網路層,數據鏈路層,每一抽象層建立在低一層提供的服務上,並且為高一層提供服務。
互聯網為什麼分層?
層與層之間定好規則(就是介面),每一層做好自己的事,層可以內部演化。
協議:規範,遵守的規則
一共分為幾層?5層,下麵具體分析一下這5層
實體層
物理連接,光纖/電纜等。傳遞的是0和1
鏈接層
規定一下0和1的解讀方式。
乙太網
- 大概是一組信號當做數據包,成為幀-Head-data
- Head:描述信息(發送者---接收者)
- Data:真實數據
- 數據必須是網卡到網卡的(每個網卡有Mac地址)
- 廣播一下,對著區域網的全部網卡都發一遍
互聯網是多個區域網組成的。區域網是子網路。
網路層
- 解決不同的電腦,在不同的區域網通訊問題。
- IPV4確定屬於哪個子網,獨立的IP比較貴的。每個電腦都有一個IP地址:192.168.1.1一共32位的
- 把幀裡面data分成2塊(Head包括IP地址+長度,data真實數據)
- 幀長度是有限制的,如果超過,會拆成不同的包,每個包都有head和包序號
傳輸層
- 問題:電腦裡面多個程式都使用網路,幀過來,到底給那個程式?得有個東西,告訴去給那個程式。(埠改閃亮登場了....)
- 保證:電腦上的某程式的信息,發送到某個電腦上的某個程式。
- 埠:0~65535,其中0到1023系統用的。保證程式和程式進行交流
- 主機+埠=套件字(Socket),socket其實就是保證分佈在不同電腦的程式交互,可以做網路應用程式開發
- UDP協議,把data拆分成head+data(head只放埠)。不保證數據一定會被收到。特點:簡單,可靠
- TCP協議,數據的可達性,確保數據不丟失,確認過程。複雜版本的UDP。特點:負載低效,抵消更多資源,可靠。
應用層
http協議舉例,說明data數據裡面的含義。指定data裡面什麼格式,什麼意義。
二.網路通訊
推薦一個框架,跨平臺的
中文網站
Supersocket有三大對象:Session,AppServer,Commands
- Session:每個用戶的連接,就是一個Session
- AppServer:Socket伺服器的實例
- Commands:客戶端回發數據的命令
客戶端發的信息格式:CommandName+空格-+參數0+空格+參數1+空格+參數N+\r\n
服務端的處理:CommandName命令類來處理
心跳檢測機制:
- 用來檢測客戶端是否掉線,客戶端線上,間隔時間內伺服器發送一個心跳包,伺服器返回應答。
- 如果心跳周期內,沒收到,伺服器就認為你下線了