《c語言從入門到精通》看書筆記——第16章 網絡套接字編程(上)——網絡

1、IP地址
     每臺計算機都需要一個IP地址以識別自己,IP地址由IP協議規定的32位的二進制表示,最新的IPV6協議將IP地址提升爲128位,但還不能廣泛應用。
     32位的IP地址主要分爲前綴和後最兩部分。前綴表示計算機所屬的物理網絡(網絡號),後綴是主機號。根據網絡號的不同,可以將IP地址分爲A、B、C、D、E五類。其中ABC爲基本類,D用於多播發送,E屬於保留位。
                       表16.1  各類IP地址的範圍
類型 範圍
A(7位網絡號,24位主機號),2^7=128=(1000 0000) 0.0.0.0~127.255.255.255
B(14位網絡號,16位主機號),128+64=192=(1100 0000) 128.0.0.0~191.255.255.255
C(21位網絡號,8位主機號),192+32=224=(1110 0000) 192.0.0.0~223.255.255.255
D,224+16=240=(11110 0000) 224.0.0.0~239.255.255.255
E 240.0.0.0~247.255.255.255
     特殊地址:
          (1)網絡地址:網絡號不變,主機號全0
          (2)廣播地址:網絡號不變,主機號全1
          (3)回送地址:127.0.0.0表示回送地址,用於測試。
          (4)本地地址:即私有地址,10.0.0.0/8;172.16.0.0/12;192.168.0.0/16
2、OSI七層參考模型
     開放系統互聯(Open System Interconnection,OSI),是國際標準化組織(ISO)頒佈的網絡標準化參考模型。

層次 名稱 功能
7 應用層(Application) 負責網絡中應用與網絡操作系統的聯繫
6 表示層(Presentation) 用於確定數據交換的格式,解決運用程序之間的數據格式上的差異
5 會話層(session) 是用戶應用程序與網絡層的接口,他能夠建立與其他設備的連接,即會話,並進行管理
4 傳輸層(Transport) 提供會話層和網絡層之間的傳輸協議
3 網絡層(Network) 將傳輸的數據封包,然後由路由選擇、分段組合等控制將信息傳送到目標設備
2 數據鏈路層(Data Link) 修正傳輸過程中的錯誤信號,提供可靠的通過物理介質傳輸數據的方法
1 物理層(Physical) 利用傳輸介質爲數據鏈路層提供物理連接,它規範了網絡硬件的特性、規格和傳輸速度

3、地址解析
     所謂地址解析是指將計算機的協議地址解析爲物理地址,即MAC(Medium Access Control)地址,又稱爲媒體訪問控制地址。通常在網絡上由地址解析協議(ARP)來實現地址解析。
     解析過程如下:主機A,B要進行通信,A的ip爲192.168.1.21,B的ip爲192.168.1.23,主機B的IP地址被解析過程:
          (1)主機A從本地ARP緩存中查找IP爲192.168.1.23對應的物理地址。
          (2)主機A在ARP緩存中沒有發現192.168.1.23映射的物理地址,將發送ARP請求幀(請求幀中包含A的物理地址和ip地址)
          (3)本地網絡上的其他主機接收到請求幀後,檢查是否與資金及的IP地址匹配,若果不匹配則丟棄。B發現與自己的匹配則將主機A的物理地址和IP地址添加到自己的ARP緩存中,然後B將自己的物理地址和IP地址發送到主機A,當A接收到主機B發來的信息,將以這些信息更新ARP緩存。
          (4)當主機B的物理地址確定後,主機A就可以和主機B進行通信了。
4、域名系統
     Internet管理機構採用在主機名後加上後綴名的方法標識一臺主機,其後綴名被稱爲域名。例如COM爲一級域名,表示商業組織。
5、TCP/IP協議
     TCP/IP(Transmission Control Protocal/Internet Protocal,傳輸控制協議/網絡協議)是互聯網上最流行的協議。他能實現互聯網上不同類型操作系統的計算機相互通信。TCP/IP協議將網絡分爲4層。
     表16.2 RCP/IP協議結構層次

TCP/IP協議 OSI參考模型
應用層(包含Telnet、FTP、SNTP協議) 會話層、表示層、應用層
傳輸層(包含TCP、UDP協議) 傳輸層
網絡層(包含ICMP、IP、ARP等協議) 網絡層
數據鏈路層 物理層和數據鏈路層
      (1)TCP協議:傳輸協議(TCP)是一種提供克勞數據傳送的通用協議,他是TCP/IP體系結構中傳輸層上的協議。在發送數據時,應用層的數據傳輸到傳輸層,傢伙是哪個TCP首部,數據就構成了報文。報文就是網絡層IP的數據,如果再加上IP首部,就構成了IP數據報。TCP協議的C語言數據描述如下:
           typedef struct HeadTCP
 {
     WORD SourcePort;     //16位源端口號
     WORD DePort;     //16位目的端口
     DWORD SequenceNo;     //32位序號
     DWORD ConfirmNo;     //32位確認系列號
     BYTE HeadLen     //與Flag爲一個組成部分,首部長度,佔4位,保留6位,6位標識符,共16位
     BYTE Flag;
     WORD WndSize;     //16位窗口大小
     WORD CheckSum;     //16位校驗和
     WORD UrgPtr;     //16位緊急指針
 }HEADTCP;
     (2)IP協議
           IP協議又稱爲網際協議。它工作在網絡層,主要提供無鏈接數據報傳輸。IP協議不保證數據報的發送,但可以最大限度地發送數據。IP協議C語言的數據描述如下:
typedef struct HeadIP
{
      unsigned char headerlen:4;     //首部長度,佔4位
      unsigned char version:4     //版本,佔4位
      unsigned char servertype;     //服務類型,佔8位,即一個字節
      unsigned short totallen;     //總長度,佔16位
      unsigned short id;     //與idoff構成標識,共佔16位,前3位是標識,後13位是片偏移
      unsigned short idoff;
      unsigned char ttl;     //生存時間
      unsigned char proto;     //協議,佔8位
      unsigned short checksum;     //首部檢驗和。佔16位
      unsigned int sourceIP;     //源IP地址,佔32位
      unsigned int destIP;     //目的IP地址,佔32位
} HEADIP;
     (3)ICMP協議
          ICMP協議又稱爲網絡控制報文協議。他負責網絡上設備狀態的發送和報文檢查,可以將設備的故障信息發送到其他設備上。ICMP協議的C語言數據描述如下:
typedef struct HeadICMP
{
     BYTE Type;     //8位類型
     BYTE Code;     //8位代碼
     WORD ChkSum;     //16位校驗和
}HEADICMP;
     (4)UDP協議
          用戶數據報協議(UDP)是一個面向無連接的協議,採用該協議,米昂個應用程序不需要先建立連接,它爲應用程序提供一次性的數據傳輸協議。UDP協議不提供差錯恢復,不能提供數據重傳,因此該協議傳輸數據安全性略差。UDP協議C語言數據描述如下:
typedef struct HeadUDP
{
     WORD SourcePort;     //16位源端口號
     WORD DePort;     //16位目的端口
     WORD Len;     //16位UDP長度
     WORD ChkSum;     //16位UDP校驗和
}HEADUDP;
6、端口
     TCP/IP協議提出l端口的概念,用於標識通信的應用程序。當應用程序(進程)與某個端口綁定後,系統會將收到的給該端口的數據送往該應用程序。端口是用一個16位的無符號整數值來表示的,範圍爲0~65535,低於256的端口被作爲系統的保留端口,用於系統進程的通信,不在這一範圍的端口號被稱爲自由端口,可以由進程自由使用。
7、嵌套字的引入
     嵌套字(socket)存在於通信區域中,通信區域也稱爲地址族,主要用於將通過套接字通信的進程的共有特性綜合起來。套接字通常只與同一區域的套接字交換數據。Windows Sockets只支持一個通信區域——AF-INET網際域,使用網際域協議族通信的進程使用該域。
8、網絡字節順序
     基於Intel CPU的PC機採用低位先存的方式。爲了保證數據的正確性,在網絡協議中需要指定網絡字節順序,TCP/IP協議使用16位整數和32位整數的高位先存格式。由於不同的計算機存放數據字節的順序不同,這樣發送數據後當接收到該數據時,也可能無法查看所接收到的數據。因此,在網絡中不同的主機間進行通信時,要統一採用網絡字節順序。

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