網絡數據傳送原理與機制
阿新 • • 發佈:2017-10-04
輪詢 找到 tcp http byte 發出 通過 註冊 編程
端口:
80 端口 http 協議使用的, 443 端口 https 使用的
1: 網絡傳送數據的時,按照端口來進行數據包分類;
只要某端口不被使用 就能使用它,如果有在使用,會造成沖突,用不了!
1):端口的取值範圍在[1, 65535];
2):[1, 1023]系統保留端口;
3):[1024,5000] BSD 臨時端口; 用戶使用
4):[5001-65535], BSD 服務器(非特權)端口; 用戶使用
2: 哪個數據包屬於哪個端口的,根據端口分類;
1)所以應用程序通過網絡收發數據的時候,一定會對應一個端口; (根據 IP + Port 來收發數據包)
Socket 套接字:
每個 socket 都有自己的 IP 與 Port 和 對方的 IP 與 Port
1: 對於建立起的網絡連接,操作系統給一個唯一的標識這個連接的句柄----我們叫做 Socket 與 套接字
2: Socket兩種類型:
(1) TCP Socket, 每發一個數據包,收方會向發送方返回一個 ACK。這樣發方會再發下一個數據包,
如果沒有返回ACK,又沒有收到斷掉鏈接的事件,會繼續發送剛才的包,直到對方返回ACK;
TCP 精準、可靠、速度慢
千萬不要懷疑 TCP
(2) UDP Socket 每發送一個數據包,只要發出去了,就不管,繼續發下一個,不管對方有沒有收到這個包;
UDP 不精準、不可靠、速度快
千萬不要相信 UDP
TCP 與 UDP 的比較:
1: TCP 是可靠的網絡傳送協議;
2: UDP 是快速的網絡傳送協議;
3: 遊戲中一般采用 TCP。
4: UDP 可以在特殊的時候使用;
基於 TCP 的網絡數據傳輸:
建立連接:
1: 服務器會有個監聽端口
2: 客服端向服務器(IP 地址 + 端口)發送連接請求數據包;
3: 網卡會將這個連接請求的數據包,分發給這個監聽端口;
4: 根據連接請求裏面客服端的 IP 地址與端口,服務器程序會為它創建一個新的端口,
5: 端口被指定為和客服端這個 IP 地址 + 端口來進行數據通訊。
6: 連接成功後,就會把客戶端創建的 Socket 與服務器創建的 Socket 形成我們的數據通道;
收數據:
Poll 輪詢 模型;(客戶端一般用 Poll 模型)
每隔一段時間去輪詢,直到找到一個完整的包(應用層的包), 就能做相應的動作
Event 事件通知模型; (服務器 一般用 Event 模型)
在 Socket 註冊一個回調函數, 等有事件發生時調用處理
發數據:
應用層直接發送數據,協議棧底層會將我們的數據包拆分成合適的小包,然後打上 TCP 協議的
數據頭,使用 TCP 協議傳送給目的地, 對於目的地而言,它可能不是一次性的收到應用層這麽多
數據, 而是分批次的收到,(用戶編程的時候一定要特別的小心);
初識網絡數據傳送原理與機制,做了點小小筆記,記錄每一天!
-------------------------------------------
網卡: 每一個網卡都有一個最大的傳輸速率 1: 接入互聯網數據的物理設備,註意網卡的帶寬。每秒傳送的數據; 2: 互聯網數據的最小單位是 bit,而不是 Byte; 3: 數據傳輸與網線等有關系,需要同級別網線配合; 4: 交換機最好使用一個牌子, 不要混合使用; 帶寬: 1: 局域網帶寬: 局域網鏈路內最大可以傳輸數據的速度; 2: 公網帶寬: 廣域網內最大可以傳輸的數據的速度;到此結束咯!
方便他人,亦是方便自己!
網絡數據傳送原理與機制