linux網(wǎng)絡(luò)編程中嵌教育嵌入式linux開發(fā)講義_第1頁
linux網(wǎng)絡(luò)編程中嵌教育嵌入式linux開發(fā)講義_第2頁
linux網(wǎng)絡(luò)編程中嵌教育嵌入式linux開發(fā)講義_第3頁
linux網(wǎng)絡(luò)編程中嵌教育嵌入式linux開發(fā)講義_第4頁
linux網(wǎng)絡(luò)編程中嵌教育嵌入式linux開發(fā)講義_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、linux網(wǎng)絡(luò)編程中嵌教育嵌入式linux開發(fā)講義1、TCP/IP協(xié)議概述協(xié)議概述1.1 OSI參考模型與TCP/IP參考模型表示層會話層傳輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)接口層OSI參考模型TCP/IP參考模型圖1 OSI參考模型與TCP/IP參考模型對應(yīng)關(guān)系圖2 OSI參考模型與TCP/IP參考模型對應(yīng)關(guān)系1.2 TCP/IP協(xié)議族協(xié)議族TCP/IP 實際上一個一起工作的通信家族,為網(wǎng)際數(shù)據(jù)通信提供通路。為討論方便可將TCP/IP 協(xié)議組大體上分為三部分:1Internet 協(xié)議(IP)2傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報文協(xié)議(UDP)3處于TCP 和UDP 之上的一組協(xié)議專門

2、開發(fā)的應(yīng)用程序。它們包括:TELNET,文件傳送協(xié)議(FTP),域名服務(wù)(DNS)和簡單的郵件傳送程序(SMTP)等許多協(xié)議。 網(wǎng)絡(luò)層第一部分也稱為網(wǎng)絡(luò)層。包括Internet 協(xié)議(IP)、網(wǎng)際控制報文協(xié)議(ICMP)和地址識別協(xié)議(ARP).n Internet 協(xié)議(IP)。該協(xié)議被設(shè)計成互聯(lián)分組交換通信網(wǎng),以形成一個網(wǎng)際通信環(huán)境。它負責在源主機和目的地主機之間傳輸來自其較高層軟件的稱為數(shù)據(jù)報文的數(shù)據(jù)塊,它在源和目的地之間提供非連接型傳遞服務(wù)。n 網(wǎng)際控制報文協(xié)議(ICMP)。它實際上不是IP層部分,但直接同IP層一起工作,報告網(wǎng)絡(luò)上的某些出錯情況。允許網(wǎng)際路由器傳輸差錯信息或測試報文。

3、n 地址識別協(xié)議(ARP)。ARP 實際上不是網(wǎng)絡(luò)層部分,它處于IP和數(shù)據(jù)鏈路層之間,它是在32位IP地址和48位局域網(wǎng)物理地址之間執(zhí)行翻譯的協(xié)議。1.2.2 傳輸層協(xié)議第二部分是傳輸層協(xié)議。包括傳輸控制協(xié)議和用戶數(shù)據(jù)報文協(xié)議。n 傳輸控制協(xié)議(TCP)。由于IP 提供非連接型傳遞服務(wù),因此TCP應(yīng)為應(yīng)用程序存取網(wǎng)絡(luò)創(chuàng)造了條件,使用可靠的面向連接的傳輸層服務(wù)。該協(xié)議為建立網(wǎng)際上用戶進程之間的對話負責。此外,還確保兩個以上進程之間的可靠通信。它所提供的功能如下。1監(jiān)聽輸入對話建立請求。2請求另一網(wǎng)絡(luò)站點對話。3可靠的發(fā)送和接收數(shù)據(jù)。4適度的關(guān)閉對話。1.2.3 應(yīng)用程序部分n 用戶數(shù)據(jù)報文協(xié)議(

4、UDP)。UDP 提供不可靠的非連接型傳輸層服務(wù),它允許在源和目的地站點之間傳送數(shù)據(jù),而不必在傳送數(shù)據(jù)之前建立對話。此外,該協(xié)議還不使用TCP使用的端對端差錯校驗。當使用UDP時,傳輸層功能全都發(fā)揮,而開銷卻比較低。它主要用于那些不要求TCP協(xié)議的非連接型的應(yīng)用程序。例如,名字服務(wù)、網(wǎng)絡(luò)管理、視頻點播和網(wǎng)絡(luò)會議等。最后是應(yīng)用程序部分。這部分包括Telnet,文件傳送協(xié)議(FTP 和TFTP),簡單的文件傳送協(xié)議(SMTP)和域名服務(wù)(DNS)等協(xié)議。TCP/IP 使用了主干網(wǎng)絡(luò),能連接各種主機和LAN 的多級分層結(jié)構(gòu),局部用戶能方便的聯(lián)網(wǎng),不致影響到整個網(wǎng)絡(luò)系統(tǒng)。此外這種結(jié)構(gòu)還有利于局部用戶控

5、制操作和管理。TCP/IP 具有兩個主要功能。第一是IP在網(wǎng)絡(luò)之間(有時在個別網(wǎng)絡(luò)內(nèi)部)提供路由選擇。第二是TCP將TP傳遞的數(shù)據(jù)傳送的接收主機那的適當?shù)奶幚聿考?.3 Internet 協(xié)議(協(xié)議(IP)IP主要有以下四個主要功能: (1)數(shù)據(jù)傳送 (2)尋址 (3)路由選擇 (4)數(shù)據(jù)報文的分段1.3.1 IP功能功能IP的主要目的是為數(shù)據(jù)輸入/輸出網(wǎng)絡(luò)提供基本算法,為高層協(xié)議提供無連接的傳送服務(wù)。這意味著在IP將數(shù)據(jù)遞交給接收站點以前不在傳輸站點和接收站點之間建立對話(虛擬鏈路)。它只是封裝和傳遞數(shù)據(jù),但不向發(fā)送者或接收者報告包的狀態(tài),不處理所遇到的故障。IP協(xié)議不注意包內(nèi)的數(shù)據(jù)類型,

6、它所知道的一切是必須將某些稱為IP 幀頭的控制協(xié)議加到高層協(xié)議(TCP 或者UDP)所接受的數(shù)據(jù)上。圖3 封裝在Ethernet 幀中的IP 頭1.3.2 IP 地址在在TCP/IPTCP/IP網(wǎng)絡(luò)中,每個主機都有唯一的地址,它網(wǎng)絡(luò)中,每個主機都有唯一的地址,它是通過是通過IPIP協(xié)議來實現(xiàn)的。協(xié)議來實現(xiàn)的。IPIP協(xié)議要求在每次與協(xié)議要求在每次與TCP/IPTCP/IP網(wǎng)絡(luò)建立連接時,每臺主機都必須為這個連網(wǎng)絡(luò)建立連接時,每臺主機都必須為這個連接分配一個唯一的接分配一個唯一的3232位地址,因為在這個位地址,因為在這個3232位位IPIP地址地址中,不但可以用來識別某一臺主機,而且還隱含著網(wǎng)

7、際中,不但可以用來識別某一臺主機,而且還隱含著網(wǎng)際間的路徑信息。需要強調(diào)指出的,這里的主機是指網(wǎng)絡(luò)間的路徑信息。需要強調(diào)指出的,這里的主機是指網(wǎng)絡(luò)上的一個節(jié)點,不能簡單地理解為一臺計算機,實際上上的一個節(jié)點,不能簡單地理解為一臺計算機,實際上IPIP地址是分配給計算機的網(wǎng)絡(luò)適配器(即網(wǎng)卡)的,地址是分配給計算機的網(wǎng)絡(luò)適配器(即網(wǎng)卡)的,一臺計算機可以有多個網(wǎng)絡(luò)適配器,就可以有多個一臺計算機可以有多個網(wǎng)絡(luò)適配器,就可以有多個IPIP地址,一個網(wǎng)絡(luò)適配器就是一個節(jié)點。地址,一個網(wǎng)絡(luò)適配器就是一個節(jié)點。IPIP地址為地址為3232位地址,一般以位地址,一般以4 4個字節(jié)表示。個字節(jié)表示。每個字節(jié)的數(shù)

8、字又用十進制表示,即每個每個字節(jié)的數(shù)字又用十進制表示,即每個字節(jié)的數(shù)的范圍是字節(jié)的數(shù)的范圍是02550255,且每個數(shù)字之間,且每個數(shù)字之間用點隔開,例如:,這種記錄方法稱為用點隔開,例如:,這種記錄方法稱為“點點- -分分”十進制記號法。十進制記號法。IPIP地址的結(jié)構(gòu)如地址的結(jié)構(gòu)如下所示:下所示:網(wǎng)絡(luò)類型網(wǎng)絡(luò)ID主機ID1.3.3 IP地址的分類地址的分類Internet地址可分成5類: A、B、C三類由InterNIC(Internet網(wǎng)絡(luò)信息中心)在全球范圍內(nèi)統(tǒng)一分配,D、E類為特殊地址。 0 1 7 8 310網(wǎng)絡(luò)地址ID主機地址IDA類IP地址10網(wǎng)絡(luò)地址ID主機地址ID0 1 2

9、 15 16 31B類IP地址110網(wǎng)絡(luò)地址ID主機地址ID012 3 23 24 31C類IP地址1110廣播地址ID0 1 2 3 4 31D類IP地址11110保留用于將來和試驗使用 0 1 2 3 4 5 31E類IP地址A 類網(wǎng)絡(luò)地址有128 個(支持127)個網(wǎng)絡(luò),占有最左邊的一個字節(jié)(8 位)。高位(0)表示識別這種地址的類型。B 類地址使用左邊兩個8 位用來網(wǎng)絡(luò)尋址。兩個高位(10)用于識別這種地址的類型,其余的14 位用作網(wǎng)絡(luò)地址,右邊的兩個字節(jié)(16 位)用作網(wǎng)絡(luò)節(jié)點。C 類地址是最常見的Internet 地址。三個高位(110)用于地址類型識別,左邊三個字節(jié)的其余21 位

10、用于尋址。C 類地址支持1046個網(wǎng)絡(luò),每個網(wǎng)絡(luò)可多達256 端點。D 類地址是相當新的。它的識別頭是1110,用于組播,例如用于路由器修改。E 類地址為時延保留,其識別頭是11110。1.4 傳輸控制協(xié)議(傳輸控制協(xié)議(TCP)TCP(傳輸控制協(xié)議Transmission Control Protocol)是重要的傳輸層協(xié)議,傳輸層軟件TCP的目的是允許數(shù)據(jù)同網(wǎng)絡(luò)上的另外站點進行可靠的交換。它能提供端口編號的譯碼,以識別主機的應(yīng)用程序,而且完成數(shù)據(jù)的可靠傳輸。TCP 協(xié)議具有嚴格的內(nèi)裝差錯檢驗算法確保數(shù)據(jù)的完整性。TCP 是面向字節(jié)的順序協(xié)議,這意味著包內(nèi)的每個字節(jié)被分配一個順序編號,并分配

11、給每包一個順序編號。圖4 TCP 頭信息1.5 用戶數(shù)據(jù)報文協(xié)議用戶數(shù)據(jù)報文協(xié)議UDP(用戶數(shù)據(jù)報協(xié)議User Datagram Protocol)也是TCP/IP 的傳輸層協(xié)議,它是無連接的,不可靠的傳輸服務(wù)。當接收數(shù)據(jù)時它不向發(fā)送方提供確認信息,它不提供輸入包的順序,如果出現(xiàn)丟失包或重份包的情況,也不會向發(fā)送方發(fā)出差錯報文。UDP 的主要作用是分配和管理端口編號,以正確無誤的識別運行在網(wǎng)絡(luò)站點上的個別應(yīng)用程序。由于它執(zhí)行功能時具有較低的開銷,因而執(zhí)行速度比TCP快。它多半用于不需要可靠傳輸?shù)膽?yīng)用程序,例如網(wǎng)絡(luò)視頻點播和視頻會議等。圖5 UDP 頭信息1.6 TCP/IP 協(xié)議分組服務(wù)協(xié)議分

12、組服務(wù)控制數(shù)據(jù)的協(xié)議nTCP以連接為基礎(chǔ),即兩臺電腦必須先建立一個連接,然后才能傳輸數(shù)據(jù)。事實上,發(fā)送和接受的電腦必須一直互相通訊和聯(lián)系。nUDP是一個無連接服務(wù),數(shù)據(jù)可以直接發(fā)送而不必在兩臺電腦之間建立一個網(wǎng)絡(luò)連接。它和有連接的TCP相比,占用帶寬少,但是無法確認數(shù)據(jù)是否真正到達了客戶端,而客戶端收到的數(shù)據(jù)也不知道是否還是原來的發(fā)送順序。 數(shù)據(jù)路由協(xié)議路由協(xié)議分析數(shù)據(jù)包的地址并且決定傳輸數(shù)據(jù)到目的電腦最佳路線。他們也可以把大的數(shù)據(jù)分成幾部分,并且在目的地再把他們組合起來。IP處理實際上傳輸數(shù)據(jù)。nICMP(網(wǎng)絡(luò)控制信息協(xié)議Internet Control Message Protocol)處

13、理IP的狀態(tài)信息,比如能影響路由決策的數(shù)據(jù)錯誤或改變。nRIP(路由信息協(xié)議Routing Information Protocol)它是幾個決定信息傳輸?shù)淖罴崖酚陕肪€協(xié)議中的一個。nOSPF(Open Shortest Path First)一個用來決定路由的協(xié)議。nARP(地址解析協(xié)議Address Resolution Protocol)確定網(wǎng)絡(luò)上一臺電腦的數(shù)字地址。nDNS(域名系統(tǒng)Domain Name System)從機器的名字確定一個機器的數(shù)字地址。nRARP(反向地址解析協(xié)議Reverse Address Resolution Protocol)確定網(wǎng)絡(luò)上一臺計算機的地址,和A

14、RP正好相反。用戶服務(wù)nBOOTP(啟動協(xié)議Boot Protocol) 由網(wǎng)絡(luò)服務(wù)器上取得啟動信息,然后將本地的網(wǎng)絡(luò)計算機啟動。nFTP(文件傳輸協(xié)議File Transfer Protocol)通過國際互連網(wǎng)從一臺計算機上傳輸一個或多個文件到另外一臺計算機。nTELNET(遠程登陸)允許一個遠程登陸,使用者可以從網(wǎng)絡(luò)上的一臺機器通過TELNET連線到另一臺機器,就像使用者直接在本地操作一樣。nEGP(外部網(wǎng)關(guān)協(xié)議Exterior Gateway Protocol)為外部網(wǎng)絡(luò)傳輸路由信息。nGGP(網(wǎng)關(guān)到網(wǎng)關(guān)協(xié)議Gateway-to-Gateway Protocol)在網(wǎng)關(guān)和網(wǎng)關(guān)之間傳輸路由

15、協(xié)議。nIGP(內(nèi)部網(wǎng)關(guān)協(xié)議Interior Gateway Protocol)在內(nèi)部網(wǎng)絡(luò)傳輸路由信息。其他協(xié)議(也為網(wǎng)絡(luò)提供了重要的服務(wù))nNFS(網(wǎng)絡(luò)文件系統(tǒng)Network File System)允許將一臺機器的目錄被另一臺機器上的用戶安裝(Mount)到自己的機器上,就像是對本地文件系統(tǒng)進行操作一樣進行各式各樣的操作。nNIS(網(wǎng)絡(luò)信息服務(wù)Network Information Service)對整個網(wǎng)絡(luò)用戶的用戶名、密碼進行統(tǒng)一管理,簡化在NIS 服務(wù)下整個網(wǎng)絡(luò)登陸的用戶名密碼檢查。nRPC(遠程過程調(diào)用Remote Procedure Call)通過它可以允許遠程的應(yīng)用程序通過簡單

16、的、有效的手段聯(lián)系本地的應(yīng)用程序,反之也是。nSMTP(簡單郵件傳輸協(xié)議Simple Mail Transfer Protocol)一個專門為電子郵件在多臺機器中傳輸?shù)膮f(xié)議,平時發(fā)郵件的SMTP 服務(wù)器提供的必然服務(wù)。nSNMP(簡單網(wǎng)絡(luò)管理協(xié)議Simple Network Management Protocol)這是一項為超級用戶準備的服務(wù),超級用戶可以通過它來進行簡單的網(wǎng)絡(luò)管理。2、網(wǎng)絡(luò)編程基礎(chǔ)網(wǎng)絡(luò)編程基礎(chǔ)2.1 socket概述 linux中的網(wǎng)絡(luò)編程通過socket接口實現(xiàn)。Socket既是一種特殊的IO,它也是一種文件描述符。一個完整的Socket 都有一個相關(guān)描述協(xié)議,本地地址,本

17、地端口,遠程地址,遠程端口;每一個Socket 有一個本地的唯一Socket 號,由操作系統(tǒng)分配。套接字有三種類型:n 流式套接字(SOCK_STREAM) 流式的套接字可以提供可靠的、面向連接的通訊流。它使用了TCP協(xié)議。TCP 保證了數(shù)據(jù)傳輸?shù)恼_性和順序性。n 數(shù)據(jù)報套接字(SOCK_DGRAM) 數(shù)據(jù)報套接字定義了一種無連接的服務(wù),數(shù)據(jù)通過相互獨立的報文進行傳輸,是無序的,并且不保證可靠,無差錯。使用數(shù)據(jù)報協(xié)議UDP協(xié)議。n 原始套接字。 原始套接字允許對低層協(xié)議如IP或ICMP直接訪問,主要用于新的網(wǎng)絡(luò)協(xié)議實現(xiàn)的測試等。2.2 套接字套接字地址結(jié)構(gòu)地址結(jié)構(gòu)struct sockadd

18、r 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地址

19、*/unsigned char sin_zero8; /* 添0(和struct sockaddr一樣大?。?/;這兩個數(shù)據(jù)類型是等效的,可以相互轉(zhuǎn)換,通常使用sockaddr_in更為方便2.3 字節(jié)序列轉(zhuǎn)換字節(jié)序列轉(zhuǎn)換因為每一個機器內(nèi)部對變量的字節(jié)存儲順序不同(有的系統(tǒng)是高位在前,底位在后,而有的系統(tǒng)是底位在前,高位在后 ),而網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)大家是一定要統(tǒng)一順序的。所以對與內(nèi)部字節(jié)表示順序和網(wǎng)絡(luò)字節(jié)順序不同的機器,就一定要對數(shù)據(jù)進行轉(zhuǎn)換。下面給出套接字字節(jié)轉(zhuǎn)換程序的列表:n htons()“Host to Network Short” 主機字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序(對無符號短型進行操作2bytes)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論