国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Linux操作系統下的TCP/IP網絡通信研究與應用

發布時間:2010-8-1 13:05    發布者:lavida
1 引言

Linux是一種自由的Unix類多用戶,多任務的操作系統,可在運行在Intel 80386及更高檔次的PC機、ARMS、MIPS和PowerPC等多種計算機平臺,已成為應用廣泛、可靠性高、功能強大的計算機操作系統,Linux具有內核小、效率高、源代碼開放等優點,還內含了TCP/IP網絡協議,很適合在服務器領域使用,而服務器主要用途之一就是進行網絡通信,隨著計算機辦公自動化處理技術的應用與推廣,網絡的不斷普及,傳統的紙張式文件傳輸方式已經不再適合發展的需要,人們更期待一種便捷、高效、環保、安全的網絡傳輸方式。

本文就是考慮到這一現狀,結合基于Linux操作系統下的TCP/IP網絡通信原理,給出了一種基于TCP/IP編程實現文件傳輸的實例,因此,TCP/IP網絡通信研究具有十分重要的意義。  

2 TCP/IP協議概述  

TCP/IP即傳輸控制協議/網絡協議(Transmission Control Protocol/Internet Protocol),是一個由多種協議組成的協議族,他定義了計算機通過網絡互相通信及協議族各層次之間通信的規范,圖1描述了Linux對IP協議族的實現機制。  


  
Linux支持BSD的套接字和全部的TCP/IP協議,是通過網絡協議將其視為一組相連的軟件層來實現的,BSD套接字(BSD Socket)由通用的套接字管理軟件支持,該軟件是INET套接字層,用來管理基于IP的TCP與UDP端口到端口的互聯問題,從協議分層來看,IP是網絡層協議,TCP是一個可靠的端口到端口的傳輸層協議,他是利用IP層進行傳接報文的,同時也是面向連接的,通過建立一條虛擬電路在不同的網路間傳輸報文,保證所傳輸報文的無丟失性和無重復性。用戶數據報文協議(User Datagram Protocol,UDP)也是利用IP層傳輸報文,但他是一個非面向連接的傳輸層協議,利用IP層傳輸報文時,當目的方網際協議層收到IP報文后,必須識別出該報文所使用的上層協議(即傳輸層協議),因此,在IP報頭上中,設有一個"協議"域(Protocol)。通過該域的值,即可判明其上層協議類型,傳輸層與網絡層在功能說的最大區別是前者提供進程通信能力,而后者則不能,在進程通信的意義上,網絡通信的最終地址不僅僅是主機地址,還包括可以描述進程的某種標識符,為此,TCP/UDP提出了協議端口(Protocol Port)的概念,用于標識通信的進程,例如,Web服務器進程通常使用端口80,在/etc/services文件中有這些注冊了的端口地址。  

對于TCP傳輸,傳輸節點間先要建立連接,然后通過該連接傳輸已排好序的報文,以保證傳輸的正確性,IP層中的代碼用于實現網際協議,這些代碼將IP頭增加到傳輸數據中,同時也把收到的IP報文正確的傳送到TCP層或UDP層。TCP是一個面向連接協議,而UDP則是一個非面向連接協議,當一個UDP報文發送出去后,Linux并不知道也不去關心他是否成功地到達了目的的主機,IP層之下,是支持所有Linux網絡應用的網絡設備層,例如點到點協議(Point to Point Protocol,PPP)和以太網層。網絡設備并非總代表物理設備,其中有一些(例如回送設備)則是純粹的軟件設備,網絡設備與標準的Linux設備不同,他們不是通過Mknod命令創建的,必須是底層軟件找到并進行了初始化之后,這些設備才被創建并可用。因此只有當啟動了正確設置的以太網設備驅動程序的內核后,才會有/dev/eth0文件,ARP協議位于IP層和支持地址解析的協議層之間。  

3 網絡通信原理  

所有的網絡通信就其實現技術可以分為兩種,線路交換和包交換,計算機網絡一般采用包交換,TCP使用了包交換通信技術,計算機網絡中所傳輸的數據,全部都以包(Packet)這個單位來發送,包由"報頭"和"報文"組成,結構如圖2所示,在"報頭"中記載有發送主機地址,接收主機地址及與報文內容相關的信息等,在"報文"中記載有需要發送的數據,網絡中的每個主機和路由器中都有一個路由尋址表,根據這個路由表,包就可以通過網絡傳送到相應的目的主機。   


  
網絡通信中的一個非常重要的概念就是套接字(Socket),簡單地說,套接字就是網絡進程的ID,網絡通信歸根到底是進程的通信,在網絡中,每個節點有一個網絡地址(即IP地址),兩個進程通信時,首先要確定各自所在網絡節點的網絡地址,但是,網絡地址只能確定進程所在的計算機,而一臺計算機上可能同時有多個網絡進程,還不能確定到底是其中的哪個進程,由此套接字中還要有其他的信息,那就是端口號(Port),在一臺計算機中,一個端口一次只能分配給一個進程,即端口號與進程是一一對應的關系,所以,端口號和網絡地址就能唯一地確定Internet中的一個網絡進程。可以認為:套接字=網絡地址+端口號  系統調用一個Socket()得到一個套接字描述符,然后就可以通過他進行網絡通信了。  

套接字有很多種類,最常用的就有兩種;流式套接字和數據報套接字。在Linux中分別稱之為"SOCK_STREAM"和"SOCK_DGRAM)"他們分別使用不同的協議,流式套接字使用TCP協議,數據報套接字使用UDP協議,本文所使用的是流式套接字協議。  

4 網絡通信原理在文件傳輸程序設計中的應用  

網絡上的絕大多數通信采用的都是客戶機/服務器機制(Client/Server),即服務器提供服務,客戶是這些服務的使用者,服務器首先創建一個Socket,然后將該Socket與本地地址/端口號綁定(Bind()),成功之后就在相應的Socket上監聽(Listen()) 。當Accept()函數捕捉到一個連接服務(Connect())請求時,接受并生成一個新的Socket,并通過這個新的Socket與客戶端通信,客戶端同樣也要創建一個Socket,將該Socket與本地地址/端口號綁定,還需要指定服務器端的地址與端口號,隨后向服務器端發出Connect(),請求被服務器端接受后,可以通過Socket與服務器端通信。  

TCP是一種面向連接的、可靠的、雙向的通信數據流,說他可靠,是因為他使用3段握手協議傳輸數據,并且在傳輸時采用"重傳肯定確認"機制保證數據的正確發送:接收端收到的數據后要發出一個肯定確認,而發送端必須要能接受到這個肯定信號,否則就要將數據重發。在此原理基礎之上,設計了基于Linux操作系統下TCP/IP編程實現文件傳輸的實例。我們采用客戶機/服務器模式通信時,通信雙方發送/接收數據的工作流程如圖3所示。   


  
文件傳輸就是基于客戶機/服務器模型而設計的,客戶機和服務器之間利用TCP建立連續,因文件傳輸是一個交互式會話系統,客戶機每次執行文件傳輸,都需要與服務器建立控制連接和數據連接,其中控制連接負責傳輸控制信息、利用控制命令、客戶機可以向服務器提出無限次的請求,客戶機每次提出的請求,服務器與客戶機建立一個數據連接,進行實際的數據傳輸,數據傳輸完畢后,對應的數據連接被清除,控制連接依然保持,等待客戶機發出新的傳輸請求,直到客戶機撤銷控制連接,結束會話。  

當進行文件傳輸時,首先向服務器發出連接請求,服務器驗證身份后,與客戶端建立連接,雙方進入會話狀態,這時只要客戶端向服務器端發出數據連接請求,建立起數據連接后,雙方就進入數據傳輸狀態,數據傳輸完畢后,數據連接被撤銷,如此循環反復,直到會話結束,從而實現將文件從服務器端傳輸至客戶機端。  

5 文件傳輸程序設計流程

5.1 客戶端的TCP應用程序流程  

(1)先用Socket()創建本地套接口,給服務器端套接口地址結構賦值。  
(2)用Connect()函數使本地套接口向服務器端套接口發出建立連接請求,經3次握手建立TCP連接。  
(3)用Read()函數讀取所要接收的文件名以及存放在內存里的文件內容。   
(4)用Open()函數打開客戶端新建立的目標文件,如果沒有建立,該函數會自動生成目標文件,等待存放文件內容。  
(5)最后用Write()函數將讀取的文件內容存放在新的目標文件中,以實現服務器端向客戶端的文件傳輸。  
(6)通信結束,用Close()關閉套接口,停止接收文件。  

5.2 服務器端的TCP應用程序流程  

(1)先用Open()函數打開等待傳輸的可讀文件;  
(2)用Socket()創建套接口,并給套接口地址結構賦值;  
(3)用Bind()函數綁定套接口;  
(4)用Listen()函數在該套接口上監聽請求;  
(5)用Accept()函數接受請求,產生新的套接口及描述字,并與客戶端連接;  
(6)用Lseek()函數是為了在每次接受客戶機連接時,將用于讀的源文件指針移到文件頭;  
(7)用Read()函數讀取一定長度的源文件數據;  
(8)最后用Write()函數將讀取的源文件數據存放在內存中,以便客戶端讀取;  
(9)傳輸完畢時,用Close()關閉所有進程,結束文件傳輸。  

在文件傳輸過程中,很重要的一點是:當服務器端開始發送數據時,客戶端要同時進行文件數據的接收。如果客戶端沒有運行,服務器端會一直等待客戶端發送請求,當服務器源文件發送完畢,則客戶端也將源文件的數據完全接收,并生成新的目標文件,從而實現文件的網絡通信。  

6 結語  

Linux操作系統在網絡應用方面具有很強的開發潛力,同時Linux也是可靠性、安全性非常高的系統,因此在基于TCP/IP網絡通信的研究與開發中,通常選用Linux操作系統作為開發平臺。
  
本文是介紹基于Linux操作系統下TCP/IP網絡通信的實際應用主要用于文件的網絡傳輸,解決了文件傳輸的效率問題,作為進一步完善,可以在文件傳送的過程中,加入如身份驗證、權限分配、文件加密等安全機制,保證一些重要文件在傳送過程中不會出現泄密的情況,該設計可廣泛應用企業辦公區域網中。
本文地址:http://www.qingdxww.cn/thread-18321-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产三级在线专区 | 欧美视频免费看 | 日本在线视频二区 | 一区二区日韩精品中文字幕 | 99精品欧美一区二区三区 | 久久99国产综合精品 | 国产精品999视频 | 免费在线观看黄色的网站 | 欧美成人香蕉网在线观看 | 免费视频一区二区性色 | 黄色片免费在线看 | 两个人的视频在线观看 | 国内精品久久久久久久999下 | 四虎影片国产精品8848 | 韩国理论片妈妈的朋友 | 国产一区二区自拍视频 | 高清欧美在线三级视频 | 久久久久国产精品免费免费 | 手机毛片在线观看 | 青青青青青青青青草 | 四虎黄色网 | 国产香蕉在线精彩视频 | 91久久精品国产一区二区 | 青青草国产免费久久久下载 | 久久精品中文字幕有码日本 | 香蕉在线视频网站 | 天天视频免费观看高清影视 | 四虎永久免费地址 | 妈妈的朋友伦理片在线观看 | 久久国产精品亚洲va麻豆 | 九九热精品视频在线 | 另类视频一区 | 女人18片毛片60分钟 | 一级毛片在线免费观看 | 亚洲国产欧美日韩一区二区 | 亚洲视频一区在线 | 9999热 | 欧美日韩中文字幕在线观看 | 91原创视频在线 | 四虎永久在线精品国产馆v视影院 | 91入口|