《c語言從入門到精通》看書筆記——第16章 網路套接字程式設計(上)——網路
阿新 • • 發佈:2019-02-04
(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位整數的高位先存格式。由於不同的計算機存放資料位元組的順序不同,這樣傳送資料後當接收到該資料時,也可能無法檢視所接收到的資料。因此,在網路中不同的主機間進行通訊時,要統一採用網路位元組順序。