網絡編程(網絡基礎、套接字編程、高級IO)

網絡基礎1

網絡的劃分

  • 局域網(覆蓋範圍在1000m內)
  • 城域網(覆蓋範圍在20㎞內)
  • 廣域網(覆蓋範圍大於20km),(互聯網 / 因特網是更大的國際性的廣域網- - - 容災性更強,以太網 / 令牌環網 是組網方式)

IP地址

uint32_t - - - 無符號4個字節的整數

1、在網絡中作爲主機的唯一標識,網絡中主機之間的定位(哪個主機與哪個主機之間進行通信),通過IP地址進行標識。
2、網絡中每條數據中都會包含:源端的IP地址 / 對端的IP地址;
3、ipv4 : uint32_t - - -DHCP/NAT
ipv6 : uint8_t addr[16] - - - 推廣度還很低

端口號

uint16_t - - -無符號2個字節的整數

在一臺主機上唯一標識一個進程 - - - - 編寫通信程序的時候,必須告訴計算機,發往哪個端口的數據應該交給我處理;

一個端口只能被一個進程佔用,然而一個進程可以使用多個端口

在網絡通信的每條數據中,都會包含有 源端端口 / 對端端口 - - - 標識了這個數據從哪個進程發送出來,要交給哪個進程處理。

網絡通信協議

網絡通信證的數據格式約定,遵循統一通信協議標準,才能實現實質通信,實現網絡互聯

協議分層

根據通信場景的不同,提供的服務不同,使用的協議不同進行的層次劃分

典型協議分層
OSI七層參考模型:應用層、表示層、會話層、傳輸層、網絡層、鏈路層、物理層。
TCP/IP五層模型:應用層、傳輸層、網絡層、鏈路層、物理層。

  • 應用層:負責應用程序之間如何溝通;HTTP / FTP / DNS / DHCP…
  • 傳輸層:負責進程之間的數據傳輸; TCP / UDP
  • 網絡層:負責地址管理與路由選擇; IP / 路由器
  • 鏈路層:負責相鄰設備之間的數據傳輸; 以太網協議 / 交換機
  • 物理層:負責物理光電信號的傳輸; 以太網協議 / 集線器

網絡通信數據的封裝與分用流程

在這裏插入圖片描述
**主機字節序:一個主機字節序的大小端取決於cpu架構 - - - X86 / MIPS **
int a =0x 01 02 03 04 -> 高位 000000001 00000010 00000011 00000100 低位
uchar *b = (uchar *)&a 內存低地址 b[0] b[1] b[2] b[3] 內存高地址
大端字節序:低地址存高位 b[0]=01、 b[1]=02、 b[2]=03、 b[3]=04
小端字節序:低地址存低位 b[0] =04、 b[1]=03、 b[2]=02、 b[3]=01

主機字節序跟網絡通信的關係:不同主機字節序的主機進行通信容易造成數據二義性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章