iOS網路應用入門

來源:互聯網
上載者:User

標籤:

眾所周知,網路應用在互連網時代的重要性,個人作為一個現代人在日常生活中基本上離不開網路。

iOS網路開發這一塊,無疑是很重要的一塊。個人認為是比較難啃的,來來回回學了好幾回,還是暈暈沒學明白,下面希望通過寫這份學習筆記能加深對網路開發的理解。

初次寫部落格,只是為了記述一些學習開發想法,請各位多多指教。

一、URL中常見的協議

那麼什麼是URL呢?

URL全稱是Uniform Resource Locator(同意資源定位器),URL是唯一的,通過一個URL,能找到互連網唯一的一個資源。

URL的基本格式=協議://主機地址/路徑

協議:不同的協議代表不同的資源尋找方式、資源傳輸方式,

下面有幾種常用的協議

  1. 網路開發中最常用的協議:HTTP:超文字傳輸通訊協定 (HTTP),訪問的是遠端網路資源,格式是http://
  2. 訪問本機電腦上的資源:file協議 格式:file://
  3. 訪問電子郵件地址:mailto  格式:mailto://
  4. 訪問共用主機的檔案資源 :FTP  格式:ftp://
主機地址:存在資源的主機的IP地址

路徑:資源在主機中的具體位置


二、HTTP協議

各部落格論壇都有很多關於HTTP的文章,我這就班門弄斧了,可以轉到大神的部落格去學習。

下面給出百度百科連結,或自行查閱書籍資源

點擊開啟連結


我自己的理解:

http串連是建立在TCP串連上的一種應用,HTTP串連使用“請求--響應”的方式,不僅在請求時需要先建立串連,而且需要用戶端在伺服器發出請求後,伺服器才能回複資料給用戶端,請求結束後,自動釋放串連,這種方式可以節省傳輸時間,相對於socket也屬於“短串連”。

那麼來拓展一下:什麼是TCP,說到TCP肯定會有UDP的存在,這也是面試很可能會問到的。

  1. TCP:傳輸控制通訊協定,提供的是連線導向,可靠的位元組流服務,它屬於運輸層協議。(具體的OSI七層和TCP/IP五層,請轉向百科或大神部落格)
  • 前提:當Client Access Server彼此交換資料前,必須先在雙方之間建立一個TCP串連,之後才能傳輸資料
  • 功能:提供逾時重發,檢驗資料、流量控制、反饋機制,保證資料能從一端傳到另一端,理想狀態下,TCP串連一旦建立,在通訊雙方中的任何一方主動關閉串連前,TCP串連都將被一直保持下去,中斷連線時,伺服器和用戶端均可以主動發起斷開TCP串連的請求
  • 用途:TCP發送的包有序號,雙方收到包後要給一個反饋,如果超過一定時間還沒收到反饋就自動執行逾時重發,因此TCP最大的優點是可靠。網頁http,郵件smtp,遠端連線,檔案ftp傳送
  • 三向交握:建立串連-->發送請求-->應答請求-->請求結束通知。打電話的例子:

    [喂喂喂,能聽到我嗎?]

    [沒問題。能聽到我說一聲。]

    [沒問題。]

2.UDP:使用者資料包通訊協定,是一個無串連,簡單的面向資料報的傳輸層協議
  • 相當於TCP:

    不提供可靠性,它只是把應用程式傳給IP層的資料報發送出去,但是並不能保證它們能到達目的地。

    由於UDP在傳輸資料報前不用在客戶和伺服器之間建立一個串連,且沒有逾時重發等機制,因此傳輸速度很快

  • 用途:UDP是面向訊息的協議,通訊時不需要建立串連,資料的傳輸自然是不可靠的,UDP一般用於多點通訊和即時的資料業務,比如語音廣播、視頻、QQ、tftp簡單檔案傳送、snmp簡易網路管理通訊協定、rtp即時傳送協議、rip路由資訊協議(如報告股票資訊,航空資訊)、dns網域名稱解釋。注重速度流暢


3.Socket串連與HTTP串連的區別:

Socket:由於通常情況下Socket串連就是TCP串連,因此Socket串連一旦建立,通訊雙方即可開始相互發送資料內容,直到雙方串連斷開。

在實際應用開發中,用戶端到伺服器之間的通訊往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的串連而導致Socket串連斷連,因此需要通過輪詢告訴網路,該串連處於活躍狀態.

HTTP:HTTP協議是建立在TCP協議之上的一種應用,HTTP串連使用的是“要求-回應”的方式,不僅在請求時需要先建立串連,而且需要用戶端向伺服器發出請求後,伺服器才能回複資料。

在請求結束後,會主動釋放串連。

從建立串連到關閉串連的過程稱為“一次串連”。

由於HTTP在每次請求結束後都會主動釋放串連,因此HTTP串連是一種“短串連”,要保持用戶端程式的線上狀態,需要不斷地向伺服器發起串連請求。

通常的做法是即使不需要獲得任何資料,用戶端也保持每隔一段固定時間向伺服器發送一次“保持串連”的請求,伺服器在收到該請求後對用戶端進行回複,表明知道用戶端“線上”。若伺服器長時間無法收到用戶端的請求,則認為用戶端“下線”,若用戶端長時間無法收到伺服器的回複,則認為網路已經斷開

使用情境:很多情況下,需要伺服器主動向用戶端推送資料,保持用戶端與伺服器資料的即時與同步。

此時若雙方建立的是Socket串連,伺服器就可以直接將資料傳送給用戶端;

若雙方建立的是HTTP串連,則伺服器需要等到用戶端發送一次請求後才能將資料傳回用戶端,因此,用戶端定時向伺服器發送串連請求,不僅可以保持線上,同時也是在“詢問”伺服器是否有新的資料,如果有就將資料傳給用戶端

 

Socket原理

通訊端(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。

它是網路通訊中端點的抽象表示,包含進行網路通訊必須的五種資訊:1串連使用的協議,2本地主機的IP地址,3本地進程的協議連接埠,4遠程主機的IP地址,5遠地進程的協議連接埠。

應用程式層通過傳輸層進行資料通訊時,TCP會遇到同時為多個應用程式進程提供並發服務的問題。

多個TCP串連或多個應用程式進程可能需要通過同一個TCP協議連接埠傳輸資料。為了區別不同的應用程式進程和串連,電腦作業系統為應用程式與TCP/IP協議互動提供了通訊端(Socket)介面。應用程式層可以和傳輸層通過Socket介面,區分來自不同應用程式進程或網路連接的通訊,實現資料轉送的並發服務。

建立Socket串連:建立Socket串連至少需要一對通訊端,其中一個運行於用戶端,稱為ClientSocket,另一個運行於伺服器端,稱為ServerSocket

通訊端之間的串連過程分為三個步驟:伺服器監聽,用戶端請求,串連確認

伺服器監聽:伺服器端通訊端並不定位具體的用戶端通訊端,而是處於等待串連的狀態,即時監控網路狀態,等待用戶端的串連請求

用戶端請求:用戶端的通訊端提出串連請求,要串連的目標是伺服器端的通訊端。為此,用戶端的通訊端必須首先描述它要已連線的服務器的通訊端,指出伺服器端通訊端的地址和連接埠號碼,然後就向伺服器端通訊端提出串連請求

串連確認:當伺服器端通訊端監聽到或者說接收到用戶端通訊端的串連請求時,就響應用戶端通訊端的請求,建立一個新的線程,把伺服器端通訊端的描述發給用戶端,一旦用戶端確認了此描述,雙方就正式建立串連。而伺服器端通訊端繼續處於監聽狀態,繼續接收其他用戶端通訊端的串連請求

Socket串連與TCP串連:建立Socket串連時,可以指定使用的傳輸層協議,Socket可以支援不同的傳輸層協議(TCP或UDP),當使用TCP協議進行串連時,該Socket串連就是一個TCP串連




iOS網路應用入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.