




已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Linux網(wǎng)絡編程,TCP/IP協(xié)議概述 網(wǎng)絡編程基礎(chǔ) 網(wǎng)絡高級編程,1、TCP/IP協(xié)議概述,1.1 OSI參考模型與TCP/IP參考模型,圖1 OSI參考模型與TCP/IP參考模型對應關(guān)系,圖2 OSI參考模型與TCP/IP參考模型對應關(guān)系,1.2 TCP/IP協(xié)議族,TCP/IP 實際上一個一起工作的通信家族,為網(wǎng)際數(shù)據(jù)通信提供通路。為討論方便可將 TCP/IP 協(xié)議組大體上分為三部分: 1Internet 協(xié)議(IP) 2傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報文協(xié)議(UDP) 3處于TCP 和UDP 之上的一組協(xié)議專門開發(fā)的應用程序。它們包括:TELNET,文件傳送協(xié)議(FTP),域名服務(DNS)和簡單的郵件傳送程序(SMTP)等許多協(xié)議。,1.2.1 網(wǎng)絡層,第一部分也稱為網(wǎng)絡層。包括Internet 協(xié)議(IP)、網(wǎng)際控制報文協(xié)議(ICMP)和地址識別協(xié)議(ARP). Internet 協(xié)議(IP)。 該協(xié)議被設計成互聯(lián)分組交換通信網(wǎng),以形成一個網(wǎng)際通信環(huán)境。它負責在源主機和目的地主機之間傳輸來自其較高層軟件的稱為數(shù)據(jù)報文的數(shù)據(jù)塊,它在源和目的地之間提供非連接型傳遞服務。 網(wǎng)際控制報文協(xié)議(ICMP)。 它實際上不是IP層部分,但直接同IP層一起工作,報告網(wǎng)絡上的某些出錯情況。允許網(wǎng)際路由器傳輸差錯信息或測試報文。 地址識別協(xié)議(ARP)。 ARP 實際上不是網(wǎng)絡層部分,它處于IP和數(shù)據(jù)鏈路層之間,它是在32位IP地址和48位局域網(wǎng)物理地址之間執(zhí)行翻譯的協(xié)議。,1.2.2 傳輸層協(xié)議,第二部分是傳輸層協(xié)議。包括傳輸控制協(xié)議和用戶數(shù)據(jù)報文協(xié)議。 傳輸控制協(xié)議(TCP)。 由于IP 提供非連接型傳遞服務,因此TCP應為應用程序存取網(wǎng)絡創(chuàng)造了條件,使用可靠的面向連接的傳輸層服務。該協(xié)議為建立網(wǎng)際上用戶進程之間的對話負責。此外,還確保兩個以上進程之間的可靠通信。它所提供的功能如下。 1監(jiān)聽輸入對話建立請求。 2請求另一網(wǎng)絡站點對話。 3可靠的發(fā)送和接收數(shù)據(jù)。 4適度的關(guān)閉對話。,1.2.3 應用程序部分,用戶數(shù)據(jù)報文協(xié)議(UDP)。UDP 提供不可靠的非連接型傳輸層服務,它允許在源和目的地站點之間傳送數(shù)據(jù),而不必在傳送數(shù)據(jù)之前建立對話。此外,該協(xié)議還不使用TCP使用的端對端差錯校驗。當使用UDP時,傳輸層功能全都發(fā)揮,而開銷卻比較低。它主要用于那些不要求TCP協(xié)議的非連接型的應用程序。例如,名字服務、網(wǎng)絡管理、視頻點播和網(wǎng)絡會議等。,最后是應用程序部分。這部分包括Telnet,文件傳送協(xié)議(FTP 和TFTP),簡單的文件傳送協(xié)議(SMTP)和域名服務(DNS)等協(xié)議。 TCP/IP 使用了主干網(wǎng)絡,能連接各種主機和LAN 的多級分層結(jié)構(gòu),局部用戶能方便的聯(lián)網(wǎng),不致影響到整個網(wǎng)絡系統(tǒng)。此外這種結(jié)構(gòu)還有利于局部用戶控制操作和管理。 TCP/IP 具有兩個主要功能。第一是IP在網(wǎng)絡之間(有時在個別網(wǎng)絡內(nèi)部)提供路由選擇。第二是TCP將TP傳遞的數(shù)據(jù)傳送的接收主機那的適當?shù)奶幚聿考?1.3 Internet 協(xié)議(IP),IP主要有以下四個主要功能: (1)數(shù)據(jù)傳送 (2)尋址 (3)路由選擇 (4)數(shù)據(jù)報文的分段,1.3.1 IP功能,IP的主要目的是為數(shù)據(jù)輸入/輸出網(wǎng)絡提供基本算法,為高層協(xié)議提供無連接的傳送服務。這意味著在IP將數(shù)據(jù)遞交給接收站點以前不在傳輸站點和接收站點之間建立對話(虛擬鏈路)。它只是封裝和傳遞數(shù)據(jù),但不向發(fā)送者或接收者報告包的狀態(tài),不處理所遇到的故障。,IP協(xié)議不注意包內(nèi)的數(shù)據(jù)類型,它所知道的一切是必須將某些稱為IP 幀頭的控制協(xié)議加到高層協(xié)議(TCP 或者UDP)所接受的數(shù)據(jù)上。,圖3 封裝在Ethernet 幀中的IP 頭,1.3.2 IP 地址,在TCP/IP網(wǎng)絡中,每個主機都有唯一的地址,它是通過IP協(xié)議來實現(xiàn)的。IP協(xié)議要求在每次與TCP/IP網(wǎng)絡建立連接時,每臺主機都必須為這個連接分配一個唯一的32位地址,因為在這個32位IP地址中,不但可以用來識別某一臺主機,而且還隱含著網(wǎng)際間的路徑信息。需要強調(diào)指出的,這里的主機是指網(wǎng)絡上的一個節(jié)點,不能簡單地理解為一臺計算機,實際上IP地址是分配給計算機的網(wǎng)絡適配器(即網(wǎng)卡)的,一臺計算機可以有多個網(wǎng)絡適配器,就可以有多個IP地址,一個網(wǎng)絡適配器就是一個節(jié)點。,IP地址為32位地址,一般以4個字節(jié)表示。每個字節(jié)的數(shù)字又用十進制表示,即每個字節(jié)的數(shù)的范圍是0255,且每個數(shù)字之間用點隔開,例如:12,這種記錄方法稱為“點-分”十進制記號法。IP地址的結(jié)構(gòu)如下所示:,1.3.3 IP地址的分類,Internet地址可分成5類: A、B、C三類由InterNIC(Internet網(wǎng)絡信息中心)在全球范圍內(nèi)統(tǒng)一分配,D、E類為特殊地址。,B類IP地址,1110,廣播地址ID,0 1 2 3 4 31,D類IP地址,11110,保留用于將來和試驗使用,0 1 2 3 4 5 31,E類IP地址,A 類網(wǎng)絡地址有128 個(支持127)個網(wǎng)絡,占有最左邊的一個字節(jié)(8 位)。高位(0)表示識別這種地址的類型。 B 類地址使用左邊兩個8 位用來網(wǎng)絡尋址。兩個高位(10)用于識別這種地址的類型,其余的14 位用作網(wǎng)絡地址,右邊的兩個字節(jié)(16 位)用作網(wǎng)絡節(jié)點。 C 類地址是最常見的Internet 地址。三個高位(110)用于地址類型識別,左邊三個字節(jié)的其余21 位用于尋址。C 類地址支持1046個網(wǎng)絡,每個網(wǎng)絡可多達256 端點。 D 類地址是相當新的。它的識別頭是1110,用于組播,例如用于路由器修改。 E 類地址為時延保留,其識別頭是11110。,1.4 傳輸控制協(xié)議(TCP),TCP(傳輸控制協(xié)議Transmission Control Protocol)是重要的傳輸層協(xié)議,傳輸層軟件TCP的目的是允許數(shù)據(jù)同網(wǎng)絡上的另外站點進行可靠的交換。它能提供端口編號的譯碼,以識別主機的應用程序,而且完成數(shù)據(jù)的可靠傳輸。 TCP 協(xié)議具有嚴格的內(nèi)裝差錯檢驗算法確保數(shù)據(jù)的完整性。 TCP 是面向字節(jié)的順序協(xié)議,這意味著包內(nèi)的每個字節(jié)被分配一個順序編號,并分配給每包一個順序編號。,圖4 TCP 頭信息,1.5 用戶數(shù)據(jù)報文協(xié)議,UDP(用戶數(shù)據(jù)報協(xié)議User Datagram Protocol)也是TCP/IP 的傳輸層協(xié)議,它是無連接的,不可靠的傳輸服務。當接收數(shù)據(jù)時它不向發(fā)送方提供確認信息,它不提供輸入包的順序,如果出現(xiàn)丟失包或重份包的情況,也不會向發(fā)送方發(fā)出差錯報文。 UDP 的主要作用是分配和管理端口編號,以正確無誤的識別運行在網(wǎng)絡站點上的個別應用程序。由于它執(zhí)行功能時具有較低的開銷,因而執(zhí)行速度比TCP快。它多半用于不需要可靠傳輸?shù)膽贸绦?,例如網(wǎng)絡視頻點播和視頻會議等。,圖5 UDP 頭信息,1.6 TCP/IP 協(xié)議分組服務,控制數(shù)據(jù)的協(xié)議 TCP以連接為基礎(chǔ),即兩臺電腦必須先建立一個連接,然后才能傳輸數(shù)據(jù)。事實上,發(fā)送和接受的電腦必須一直互相通訊和聯(lián)系。 UDP是一個無連接服務,數(shù)據(jù)可以直接發(fā)送而不必在兩臺電腦之間建立一個網(wǎng)絡連接。它和有連接的TCP相比,占用帶寬少,但是無法確認數(shù)據(jù)是否真正到達了客戶端,而客戶端收到的數(shù)據(jù)也不知道是否還是原來的發(fā)送順序。,數(shù)據(jù)路由協(xié)議 路由協(xié)議分析數(shù)據(jù)包的地址并且決定傳輸數(shù)據(jù)到目的電腦最佳路線。他們也可以把大的數(shù)據(jù)分成幾部分,并且在目的地再把他們組合起來。IP處理實際上傳輸數(shù)據(jù)。 ICMP(網(wǎng)絡控制信息協(xié)議Internet Control Message Protocol)處理IP的狀態(tài)信息,比如能影響路由決策的數(shù)據(jù)錯誤或改變。 RIP(路由信息協(xié)議Routing Information Protocol)它是幾個決定信息傳輸?shù)淖罴崖酚陕肪€協(xié)議中的一個。 OSPF(Open Shortest Path First)一個用來決定路由的協(xié)議。 ARP(地址解析協(xié)議Address Resolution Protocol)確定網(wǎng)絡上一臺電腦的數(shù)字地址。 DNS(域名系統(tǒng)Domain Name System)從機器的名字確定一個機器的數(shù)字地址。 RARP(反向地址解析協(xié)議Reverse Address Resolution Protocol)確定網(wǎng)絡上一臺計算機的地址,和ARP正好相反。,用戶服務 BOOTP(啟動協(xié)議Boot Protocol) 由網(wǎng)絡服務器上取得啟動信息,然后將本地的網(wǎng)絡計算機啟動。 FTP(文件傳輸協(xié)議File Transfer Protocol)通過國際互連網(wǎng)從一臺計算機上傳輸一個或多個文件到另外一臺計算機。 TELNET(遠程登陸)允許一個遠程登陸,使用者可以從網(wǎng)絡上的一臺機器通過TELNET連線到另一臺機器,就像使用者直接在本地操作一樣。 EGP(外部網(wǎng)關(guān)協(xié)議Exterior Gateway Protocol)為外部網(wǎng)絡傳輸路由信息。 GGP(網(wǎng)關(guān)到網(wǎng)關(guān)協(xié)議Gateway-to-Gateway Protocol)在網(wǎng)關(guān)和網(wǎng)關(guān)之間傳輸路由協(xié)議。 IGP(內(nèi)部網(wǎng)關(guān)協(xié)議Interior Gateway Protocol)在內(nèi)部網(wǎng)絡傳輸路由信息。,其他協(xié)議(也為網(wǎng)絡提供了重要的服務) NFS(網(wǎng)絡文件系統(tǒng)Network File System)允許將一臺機器的目錄被另一臺機器上的用戶安裝(Mount)到自己的機器上,就像是對本地文件系統(tǒng)進行操作一樣進行各式各樣的操作。 NIS(網(wǎng)絡信息服務Network Information Service)對整個網(wǎng)絡用戶的用戶名、密碼進行統(tǒng)一管理,簡化在NIS 服務下整個網(wǎng)絡登陸的用戶名密碼檢查。 RPC(遠程過程調(diào)用Remote Procedure Call)通過它可以允許遠程的應用程序通過簡單的、有效的手段聯(lián)系本地的應用程序,反之也是。 SMTP(簡單郵件傳輸協(xié)議Simple Mail Transfer Protocol)一個專門為電子郵件在多臺機器中傳輸?shù)膮f(xié)議,平時發(fā)郵件的SMTP 服務器提供的必然服務。 SNMP(簡單網(wǎng)絡管理協(xié)議Simple Network Management Protocol)這是一項為超級用戶準備的服務,超級用戶可以通過它來進行簡單的網(wǎng)絡管理。,2、網(wǎng)絡編程基礎(chǔ),2.1 socket概述 linux中的網(wǎng)絡編程通過socket接口實現(xiàn)。Socket既是一種特殊的IO,它也是一種文件描述符。一個完整的Socket 都有一個相關(guān)描述協(xié)議,本地地址,本地端口,遠程地址,遠程端口;每一個Socket 有一個本地的唯一Socket 號,由操作系統(tǒng)分配。,套接字有三種類型: 流式套接字(SOCK_STREAM) 流式的套接字可以提供可靠的、面向連接的通訊流。它使用了TCP協(xié)議。TCP 保證了數(shù)據(jù)傳輸?shù)恼_性和順序性。 數(shù)據(jù)報套接字(SOCK_DGRAM) 數(shù)據(jù)報套接字定義了一種無連接的服務,數(shù)據(jù)通過相互獨立的報文進行傳輸,是無序的,并且不保證可靠,無差錯。使用數(shù)據(jù)報協(xié)議UDP協(xié)議。 原始套接字。 原始套接字允許對低層協(xié)議如IP或ICMP直接訪問,主要用于新的網(wǎng)絡協(xié)議實現(xiàn)的測試等。,2.2 套接字地址結(jié)構(gòu),struct sockaddr unsigned short sa_family; /* address族, AF_xxx */ char sa_data14; /* 14 bytes的協(xié)議地址 */ ; sa_family 一般來說, IPV4使用“AF_INET”。 sa_data 包含了一些遠程電腦的地址、端口和套接字的數(shù)目,它里面的數(shù)據(jù)是雜溶在一起的。,struct sockaddr_in short int sin_family; /* Internet地址族 */ unsigned short int sin_port; /* 端口號 */ struct in_addr sin_addr; /* Internet地址 */ unsigned char sin_zero8; /* 添0(和struct sockaddr一樣大?。?/ ; 這兩個數(shù)據(jù)類型是等效的,可以相互轉(zhuǎn)換,通常使用sockaddr_in更為方便,2.3 字節(jié)序列轉(zhuǎn)換,因為每一個機器內(nèi)部對變量的字節(jié)存儲順序不同(有的系統(tǒng)是高位在前,底位在后,而有的系統(tǒng)是底位在前,高位在后 ),而網(wǎng)絡傳輸?shù)臄?shù)據(jù)大家是一定要統(tǒng)一順序的。所以對與內(nèi)部字節(jié)表示順序和網(wǎng)絡字節(jié)順序不同的機器,就一定要對數(shù)據(jù)進行轉(zhuǎn)換。,下面給出套接字字節(jié)轉(zhuǎn)換程序的列表: htons()“Host to Network Short” 主機字節(jié)順序轉(zhuǎn)換為網(wǎng)絡字節(jié)順序(對無符號短型進行操作2bytes) htonl()“Host to Network Long” 主機字節(jié)順序轉(zhuǎn)換為網(wǎng)絡字節(jié)順序(對無符號長型進行操作4bytes) ntohs()“Network to Host Short” 網(wǎng)絡字節(jié)順序轉(zhuǎn)換為主機字節(jié)順序(對無符號短型進行操作2bytes) ntohl()“Network to Host Long ” 網(wǎng)絡字節(jié)順序轉(zhuǎn)換為主機字節(jié)順序(對無符號長型進行操作4bytes),2.4 地址格式轉(zhuǎn)換,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信用額度管理制度
- 信貸中介管理制度
- 修改研發(fā)管理制度
- 公司圖書室管理制度
- 公司止回閥管理制度
- 公司門禁鎖管理制度
- 動車停車場管理制度
- 廠礦隔離室管理制度
- 商場地下室管理制度
- 天然氣公司管理制度
- 2025年房地產(chǎn)開發(fā)經(jīng)營服務項目投資風險評估報告
- EPC項目全流程咨詢管理的核心要點與優(yōu)化策略
- 鐵路施工高空作業(yè)安全教育
- 2025年管道工(技師)職業(yè)技能鑒定理論考試題庫(含答案)
- 一體化污水處理設備采購安裝及運維 投標方案(技術(shù)方案)
- 晉升品質(zhì)主管述職報告
- 雷火灸技術(shù)操作流程圖及考核標準
- 北師大版三年級下冊數(shù)學全冊教案(完整版)教學設計含教學反思
- 電力安全生產(chǎn)十大禁令
- 醫(yī)學分子生物學習題集
- 2025年山東水發(fā)集團有限公司總部及權(quán)屬一級公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論