




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
北京工業職業技術學院嵌入式系統應用主講:
XXX老師Android基本網絡技術和編程實踐學習目標掌握了解熟悉結合車型機器人在Android上實現TCP協議結合車型機器人在Android上實現TCP協議13計算機網絡的基本概念網絡協議的層次結構TCP/IP和UDP協議基本概念2TCP/IP協議結構UDP協議結構主講內容主講內容Speechcontent17.2在Android中使用TCP、UDP協議17.1計算機網絡及其協議網絡原指用一個巨大的虛擬畫面把所有東西連接起來,計算機網絡最初的目的也是將各個獨立的計算機連接起來,但是現在的計算機網絡所能實現的已遠遠超出了人們早期的構想。在人們的生活中,計算機網絡已經無處不在,如網絡視頻、網絡購物、網絡教育等。計算機網絡及其協議17.1.1計算機網絡概述計算機網絡就是用物理鏈路將各個孤立的工作站或主機連接在一起,組成數據鏈路,從而達到資源共享和通信的目的。凡將地理位置不同且具有獨立功能的多個計算機系統通過通信設備和線路連接起來,并以功能完善的網絡軟件(網絡協議、信息交互方式及網絡操作系統等)實現網絡資源共享的系統,均可稱為計算機網絡。簡單地說,計算機網絡即連接兩臺或多臺計算機進行通信的系統。計算機網絡及其協議計算機網絡的功能主要表現在硬件資源共享、軟件資源共享和用戶間信息交換等方面。(1)硬件資源共享:可以在全網范圍內實現處理資源、存儲資源、輸入/輸出資源等設備的共享,節省投資,也便于集中管理和均衡分擔負荷。(2)軟件資源共享:允許互聯網上的用戶遠程獲得各類服務,如網絡文件傳送服務、遠地進程管理服務和遠程文件訪問服務,從而避免軟件研制上的重復勞動及數據資源的重復存儲,也便于集中管理。計算機網絡及其協議(3)用戶間信息交換:計算機網絡為分布在各地的用戶提供了強有力的通信手段。用戶可以通過計算機網絡傳送電子郵件、發布新聞消息和進行電子商務活動。(4)提高計算機的可靠性和可用性:網絡中的每臺計算機都可通過網絡相互成為后備機。一旦某臺計算機出現故障,它的任務就可由其他計算機代為完成,這樣可以避免在單機情況下一臺計算機發生故障引起整個系統癱瘓的現象,從而提高系統的可靠性。而當網絡中的某臺計算機負擔過重時,網絡又可以將新的任務交給較空閑的計算機完成,均衡負載,從而提高每臺計算機的可用性。計算機網絡及其協議(5)分布式處理:通過算法將大型的綜合性問題交給不同的計算機同時進行處理。用戶可以根據需要合理選擇網絡資源,就近快速地進行處理。計算機網絡中用于規定信息的格式以及如何發送和接收信息的一套規則稱為網絡協議或通信協議。網絡協議是為計算機網絡中進行數據交換而建立的規則、標準或約定的集合。不同計算機之間必須使用相同的網絡協議才能進行通信。計算機網絡及其協議17.1.2網絡協議概述大多數網絡都采用分層的體系結構,每一層都建立在它的下一層之上,同時向它的上一層提供一定的服務,而把如何實現這一服務的細節對上一層加以屏蔽。一臺設備上的第n層與另一臺設備上的第n層進行通信的規則就是第n層協議。在網絡的各層中存在許多協議,接收方和發送方同層的協議必須一致,否則一方將無法識別另一方發出的信息。網絡協議是網絡上所有設備(網絡服務器、計算機及交換機、路由器、防火墻等)之間通信規則的集合,它規定了通信時信息必須采用的格式和這些格式的意義。計算機網絡及其協議1.網路協議的層次結構由于網絡結點之間聯系的復雜性,在制定協議時,通常把復雜成分分解成一些簡單成分,然后再將它們復合起來。最常用的復合技術就是采用層次結構。網絡協議的層次結構如下:(1)結構中的每一層都規定有明確的任務及接口標準。(2)把用戶的應用程序作為最高層。計算機網絡及其協議(3)除最高層外,中間的每一層都向上一層提供服務,同時又是下一層的用戶。(4)把物理通信線路作為最低層,它使用從最高層傳送來的參數,是提供服務的基礎。計算機網絡及其協議2.OSI/RM模型為了使不同廠家生產的計算機能夠相互通信,以便在更大的范圍內建立計算機網絡,國際標準化組織(ISO)在1978年提出了“開放系統互連參考模型”,即著名的OSI/RM模型。它將計算機網絡體系結構的通信協議劃分為7層,自下而上依次為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。其中,低4層完成數據傳送服務,上3層面向用戶。對于每一層,至少制定兩項標準:服務定義和協議規范。前者給出了該層所提供的服務的準確定義,后者詳細描述了該協議的動作和各種有關規程,以保證服務的提供。計算機網絡及其協議(1)應用層:是開放系統互連環境的最高層。應用層為操作系統或網絡應用程序提供訪問網絡服務的接口。(2)表示層:為上層用戶提供共同的數據或信息的語法表示變換。為了讓采用不同編碼方法的計算機在通信中能相互了解數據的內容,可以采用抽象的標準方法來定義數據結構,并采用標準的編碼表示形式。表示層管理這些抽象的數據結構,并將計算機內部的表示形式轉換成網絡通信中采用的標準表示形式。數據壓縮和加密也是表示層提供的表示變換功能。計算機網絡及其協議(3)會話層:也稱會晤層,主要功能是組織和同步不同主機各種進程間的通信(稱為對話),負責在兩個會話層實體之間進行對話連接的建立和拆除。會話層還提供在數據流中插入同步點的機制,使得數據傳輸因網絡故障而中斷后,可以不必從頭開始而是僅重傳最近一個同步點以后的數據。(4)傳輸層:負責數據傳送的最高層次。傳輸層完成同處于資源子網中的兩個主機(即源主機和目的主機)間的連接和數據傳輸,也稱端到端的數據傳輸。計算機網絡及其協議(5)網絡層:主要任務是選擇合適的路由,使網絡層的數據傳輸單元——分組能夠正確無誤地按照地址找到目的站。(6)數據鏈路層:負責在兩個相鄰的結點間的線路上無差錯地傳送以幀為單位的數據,每一幀包括一定的數據和必要的控制信息,在接收點接收到數據出錯時要通知發送方重發,直到這一幀無誤地到達接收結點。計算機網絡及其協議(7)物理層:定義了為建立、維護和拆除物理鏈路所需的機械的、電氣的、功能的和規程的特性,其作用是使原始的數據比特流能在物理介質上傳輸。具體涉及接插件的規格、0或1信號的電平表示、收發雙方的協調等內容。物理層為上一層的數據鏈路層提供一個物理連接,通過物理連接透明地傳輸比特流。所謂同名傳輸,是指經實際電路傳送后的比特流沒有變化,任意組合的比特流都可以在這個電路上傳輸,物理層并不知道比特的含義。計算機網絡及其協議17.1.3TCP/IP和UDP協議1.TCP/IP模型由于OSI/RM模型過于復雜也難以實現,現實中廣泛應用的是TCP/IP模型。TCP/IP是一個協議集,是由ARPA于1977——1979年推出的一種網絡體系結構和協議規范。隨著Internet的發展,TCP/IP也得到進一步的研究開發和推廣應用,稱為Internet上的“通用語言”。計算機網絡及其協議TCP/IP模型也是分層模型,分為4層。OSI/RM模型與TCP/IP模型參考層次如圖17.1所示。計算機網絡及其協議(1)應用層:應用層是大多數普通與網絡相關的程序為了通過網絡與其他程序通信所使用的層。在應用層中,數據以應用內部使用的格式進行傳送,然后被編碼成標準協議的格式。例如,萬維網使用的HTTP協議、文件傳輸使用的FTP協議、接收電子郵件使用的POP3和IMAP協議、發送郵件使用的SMTP協議,以及遠程登錄使用的SSH和Telnet等。用戶通常是與應用層進行交互。計算機網絡及其協議(2)傳輸層:傳輸層響應來自應用層的服務請求,并向網絡層發出服務請求。傳輸層提供兩臺主機之間同名的數據傳輸,通常用于端到端連接、流量控制或錯誤恢復。這一層的兩個最重要的協議是TCP(TransmissionControlProtocol,傳輸控制協議)和UDP(UserDatagramProtocol,用戶數據報協議)。(3)網絡層:提供端到端的數據包交付。換言之,它負責數據包從源發送到目的地,任務包括網絡路由、差錯控制和IP編址等。這一層包括的重要協議有IP、ICMP和IPSec。計算機網絡及其協議(4)網絡接口層:是TCP/IP參考模型的最低層,負責通過網絡發送和接收IP數據報;允許主機連入網絡時使用多種現成的與流行的技術,如以太網、令牌網、幀中繼、ATM、X.25、DDN、SDH、WDM等。2.TCP/IP和UDP協議一個應用層應用一般都會使用到兩個傳輸層協議之一:面向連接的TCP傳輸控制協議和面向無連接的UDP用戶數據報協議。下面分析TCP/IP協議棧中常用的IP、TCP和UDP協議。計算機網絡及其協議(1)IP協議。網際協議(InternetProtocol,IP)是用于報文交換網絡的一種面向數據的協議。IP是在TCP/IP協議中網絡層的主要協議,任務是根據源主機和目的主機的地址傳送數據。為達到此目的,IP定義了尋址方法和數據報的封裝結構。第一個架構的主要版本,現在稱為IPv4,仍然是最主要的互聯網協議,如下圖所示。當前世界各地正在積極部署IPv6。計算機網絡及其協議計算機網絡及其協議下面對IPv4協議包的結構進行介紹,包含多個數據域。各個數據域的含義如下:4位版本:表示目前的協議版本號,數值是4表示版本為4,因現在主要使用的還是版本為4的IP協議,所以IP有時也稱IPv4。4位首部長度:頭部的長度,它的單位是32位(4字節),數值為5表示IP頭部長度為20字節。計算機網絡及其協議8位服務類型(TOS):這個8位字段由3位的優先權子字段(現在已經被忽略)、4位的TOS子字段以及1位保留字段(現在為0)構成。4位的TOS子字段包含最小延遲、最大吞吐量、最高可靠性以及最小費用,對應為1時指出上層協議對處理當前數據報所期望的服務質量。如果都為0,則表示是一般服務。16位總長度(字節數):總長度字段是指整個IP數據報的長度,以字節為單位。如數值為0030,換算成十進制為48字節,48字節=20字節的IP頭+28字節的TCP頭。這個數據報只是傳送的控制信息,還沒有傳送真正的數據,所以總長度就是報頭的長度。計算機網絡及其協議16位標識:標識字段唯一標識主機發送的每一份數據報。3位標志:該字段用于標記該報文是否分片,以及后面是否還有分片。13位片偏移:指當前分片在元數據報中相對于用戶數據字段的偏移量,即在原數據報中的相對位置。8位生存時間:生存時間(Time-To-Live,TTL)字段設置了數據報可以經過的最多路由器數目。它指定了數據報的生存時間。TTL的初始值由源主機設置,一旦經過一個處理它的路由器,它的值就減去1。可根據TTL值判斷服務器是什么系統和經過的路由器。計算機網絡及其協議8位協議:表示協議類型,6表示傳輸層TCP協議。16位首部校驗和:當收到一份IP數據報后,同樣對首部中的每個16位進行二進制反碼的求和。由于接收方在計算過程中包含了發送方存在首部中的校驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那么接收方計算的結果應該為全1。如果結果不是全1,即校驗和錯誤,那么IP就丟棄收到的數據報,但是不生成差錯報文,而是由上層發現丟失的數據報進行重傳。計算機網絡及其協議32位源IP地址和32位目的IP地址:這是IPv4協議中核心的部分。32位的IP地址由一個網絡IP和一個主機ID組成。源地址是指發送數據的源主機的IP地址,目的地址是指接收數據的目的主機的IP地址。選項:長度不定,如果沒有選項就表示這個字節的域等于0。數據:該IPv4協議包負載的數據。計算機網絡及其協議(2)TCP協議。傳輸控制協議(TransmissionControlProtocol,TCP)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。在Internet協議族中,傳輸層是位于網絡層之上、應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是網絡層不提供這樣的流機制,其只能提供不可靠的包交換,所以傳輸層應運而生。計算機網絡及其協議TCP協議頭最小長度為20個字節,其協議包結構如圖產17.3所示。各個字段的含義如下:計算機網絡及其協議16位源端口號:源端口號是指發送數據的源主機的端口號,16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是標識報文的返回地址。16位目的端口號:目的端口號是指接收數據的目的主機的端口號,16位的目的端口域定義傳輸的目的地。這個端口指明報文接收計算機上的應用程序地址端口。32位序號:TCP是面向字節流的,在一個TCP連接中傳送的字節流中的每一個字節都按順序標號。整個要傳送的字節流的起始序號必須在連接建立時設置。首部中的序號字段值則是指本報段所發送的數據的第一個字節的序號。計算機網絡及其協議32位確認序號:期望收到對方下一個報文段的第一個數據字節的序號,若確認號為N,則表明序號為N-1為止的所有數據都已正確收到。4位數據偏移:指出TCP報文段的數據起始處距離TCP報文段的起始處有多遠,整個字段實際上指明了TCP報文段的首部長度。保留(6位):為了將來定義新的用途而保留的位,目前應置為0。URG、ACK、PSH、RST、SYN、FIN:6位標志域,依次對應為緊急標志、確認標志、推送標志、復位標志、同步標志、終止標志。計算機網絡及其協議16位窗口大小:指的是發送本報文段的一方的接收窗口,以便告訴對方,從本報文段首部中的確認號算起,接收方目前允許對方發送的數據量。因為接收方的數據緩存空間有限,該窗口值可作為接收方讓發送方設置其發送窗口的依據。16位校驗和:源機器基于數據內容計算一個數值,目的機器根據接收到的數據內容也要計算出一個數值,這個數值要與源機器數值完全一樣,從而證明數據的有效性。校驗和字段校驗的范圍包括首部和數據兩部分,這是一個強制性的字段,由發送端計算和存儲,并由接收端進行驗證。計算機網絡及其協議16位緊急指針:在URG標志為1時其才有效,指出了本報文段中的緊急數據的字節數。選項:長度可變,最長可達40字節。當沒有使用選項時,TCP首部長度是20字節。數據:該TCP協議包負載的數據。計算機網絡及其協議在上述字段中,6位標志域中各標志的功能如下:URG:緊急標志。該位為1表示該位有效。ACK:確認表示。該位被置位時表示確認序號欄有效。大多數情況下該標志位是置位的。PSH:推送標志。該標志位置位時,接收端不將該數據進行隊列處理,而是盡可能快地將數據轉由應用處理。在處理Telnet或rlogin等交互模式的連接時,該標志位總是置位的。計算機網絡及其協議RST:復位標志。該位被置位時表示復位相應的TCP連接。SYN:同步標志。同步標志在連接建立時用來同步序號。當SYN=1而ACK=0時,表明這是一個連接請求報文段。對方若同意建立連接,則應在響應的報文段中使SYN=1和ACK=1,即SYN置位時表示這是一個連接請求或者連接接收報文。FIN:結束標志,用來釋放一個連接。計算機網絡及其協議(3)UDP協議。用戶數據報協議(UDP)是TCP/IP模型中一種面向無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。與TCP不同,UDP并不提供對IP協議的可靠機制、流控制及錯誤恢復功能等,在數據傳輸之前不需要建立連接。由于UDP比較簡單,UDP頭包含很少的字節,所以比TCP負載消耗少。UDP適用于不需要TCP可靠機制的情形,如當高層協議或應用程序提供錯誤和流控制功能的時候。UDP服務于很多知名應用層協議,包括網絡文件系統、簡單網絡管理協議、域名系統及簡單文件傳輸系統。計算機網絡及其協議UDP數據報格式包含的字段如下所示。源端口:16位,源端口是可選字段。當使用時,它表示發送程序的端口,同時它還被認為是沒有其他信息的情況下需要被尋址的答復端口。如果不使用,設置其值為0即可。目的端口:16位。目標端口在特殊互聯網目標地址的情況下具有意義。長度:16位。UDP用戶數據報的總長度。校驗和:16位。用于校驗UDP數據報的UDP首部和UDP數據。數據:包含上層數據信息。計算機網絡及其協議主講內容主講內容Speechcontent17.1計算機網絡及其協議17.2在Android中使用TCP、UDP協議17.2.1Socket基礎Socket通常稱為“套接字”。Socket字面上的中文意思為“插座”。一臺服務器可能會提供很多服務,每種服務對應一個Socket,而客戶的“插頭”也是一個Socket。Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。Socket把復雜的TCP/IP協議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。Socket用于描述IP地址和端口,是一個通信鏈的句柄,應用程序通常通過套接字向網絡發出請求或者應答網絡請求。在Android中使用TCP、UDP協議1.Socket的基本操作連接遠程機器。
發送數據。
接收數據。
關閉連接。
綁定端口。
監聽到達數據。在Android中使用TCP、UDP協議2.在綁定的端口上接收來自遠程機器的連接服務器要和客戶端通信,兩者都要實例化一個Socket。服務器和客戶端的Socket是不一樣的,客戶端可以實現連接遠程機器、發送數據、接收數據、關閉連接等,服務器還需要實現綁定端口,監聽到達的數據,接收來自遠程機器的連接。Android在包里面提供了兩個類:ServerSocket和Socket,前者用于實例化服務器的Socket,后者用于實例化客戶端的Socket。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成客戶端到服務器所需的會話。在Android中使用TCP、UDP協議3.構造客戶端Socket首先是如何構造一個Socket,常用的構造客戶端Socket的方法有以下幾種。
Socket():創建一個新的未連接的Socket。
Socket(Proxyproxy):使用指定的代理類型創建一個新的未連接的Socket。
Socket(StringdstName,intdstPort):使用指定的目標服務器的IP地址和目標服務器的端口號,創建一個新的Socket。在Android中使用TCP、UDP協議
Socket(StringdstName,intdstPort,InetAddresslocalAddress,intlocalPort):使用指定的目標主機、目標端口、本地地址和本地端口,創建一個新的Socket。
Socket(InetAddressdstAddress,intdstPort):使用指定的本地地址和本地端口,創建一個新的Socket。在Android中使用TCP、UDP協議
Socket(InetAddressaddress,intport,InetAddressaddress,intport):使用指定的目標主機、目標端口、本地地址和本地端口,創建一個新的Socket。其中,proxy為代理服務器地址,dstAddress為目標服務器IP地址,dstPort為目標服務器的端口號(因為服務器的每種服務都會綁定在一個端口上面),dstName為目標服務器的主機名。Socket構造函數代碼如下:在Android中使用TCP、UDP協議Socketclient=newSocket("3",8080); //第一個參數是目標服務器的IP地址,8080是目標服務器的端口號
Socketsock=newSocket(newProxy(Proxy.Type.SOCKS,newInetSocketAddress("",8080); //實例化一個Proxy,以該Proxy為參數,創建一個新的Socket在Android中使用TCP、UDP協議4.構造服務器端ServerSocket構造服務器端ServerSocket的方法有以下幾種。(1)ServerSocket():構造一個新的未綁定的ServerSocket。(2)ServerSocket(intport):構造一個新的ServerSocket實例并綁定到指定端口。如果port參數為0,端口將由操作系統自動分配,此時進入隊列的數目將被設置為50。(3)ServerSocket(intport,intbacklog):構造一個新的ServerSocket實例并綁定到指定端口,并且指定進入隊列的數目。如果port參數為0,端口將由操作系統自動分配。在Android中使用TCP、UDP協議(4)ServerSocket(intport,intbacklog,InetAddresslocalAddress):構造一個新的ServerSocket實例并綁定到指定端口和指定的地址。如果localAddress參數為null,則可以使用任意地址,如果port參數為0,端口將由操作系統自動分配。下面舉例說明ServerSocket的構建方法,代碼如下:ServerSocketsocketserver=newServerSocket(8080);//8080表示服務器要監聽的端口號在Android中使用TCP、UDP協議17.2.2使用TCP通信TCP建立連接之后,通信雙方都同時可以進行數據的傳輸;在保證可靠性上,采用超時重傳和攜帶確認機制;在流量控制上,采用滑動窗口協議。協議中規定,對于窗口內未經確認的分組需要重傳;在擁塞控制上,采用慢啟動算法。在Android中使用TCP、UDP協議TCP通信的原理示意圖如圖所示。在Android中使用TCP、UDP協議1.TCP服務器端工作的主要步驟步驟1
調用ServerSocket(intport)創建一個ServerSocket,并綁定到指定端口上。步驟2
調用accept()監聽連接請求,如果客戶端請求連接,則接收連接,返回通信套接字。步驟3
調用Socket類的getOutputStream()和getInputStream()獲取輸出流和輸入流,開始網絡數據的發送和接收。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫療行業AI輔助診斷產品注冊審批政策對醫療服務模式的影響報告
- 2025-2030中國航空租賃行業市場深度調研及競爭格局與投資前景研究報告
- esl考試題及答案
- 新能源汽車充電設施布局優化策略與2025年運營效率提升方案報告
- 醫院解除合同協議書
- 2025年社區心理健康服務與社區心理健康服務體系建設路徑報告
- 食品銷售試題及答案
- 美團筆試題目及答案
- 八年級下冊期末物理試題及答案
- 高等數學成人試題及答案
- 湖北省武漢市2025屆高中畢業生四月調研考試語文試卷及答案(武漢四調)
- 2025年全國中小學生百科知識競賽題庫及答案(480題)
- 測控技術培訓課件
- 2025年度專業技術人員繼續教育公需科目考試題(附答案)
- 2025屆天津市十二區重點學校高三下學期畢業聯考(一)英語試題(含答案)
- 毽球知到智慧樹章節測試課后答案2024年秋武漢職業技術學院
- 轉科申請書 醫院
- 社會工作行政(第三版)課件全套 時立榮 第1-11章 社會服務機構- 社會工作行政的挑戰、變革與數字化發展
- 密級內部公開園林企信通項目用戶手冊企業用戶
- DB5105T 30-2022 葷豆花工藝技術規范
- 人工智能設計倫理知到智慧樹章節測試課后答案2024年秋浙江大學
評論
0/150
提交評論