生活随笔
收集整理的這篇文章主要介紹了
《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位整數的高位先存格式。由于不同的計算機存放數據字節的順序不同,這樣發送數據后當接收到該數據時,也可能無法查看所接收到的數據。因此,在網絡中不同的主機間進行通信時,要統一采用網絡字節順序。
總結
以上是生活随笔為你收集整理的《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。