聊聊iOS中TCP / UDP 協議

來源:互聯網
上載者:User

聊聊iOS中TCP / UDP 協議
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬於傳輸層協議。UDP(User Datagram protocol)使用者資料包通訊協定,它只提供應用進程定址和簡單的差錯檢測,並不提供其他功能。TCP(Transmission Control Protocol,傳輸控制通訊協定)是連線導向的協議,也就是說,在收發資料前,必須和對方建立可靠的串連。一個TCP串連必須要經過三次“對話”才能建立起來,其中的過程非常複雜,只簡單的描述下這三次對話的簡單過程:主機A向主機B發出串連請求資料包:“我想給你發資料,可以嗎?”,這是第一次對話;主機B向主機A發送同意串連和要求同步(同步就是兩台主機一個在發送,一個在接收,協調工作)的資料包:“可以,你什麼時候發?”,這是第二次對話;主機A再發出一個資料包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使資料包的發送和接收同步,經過三次“對話”之後,主機A才向主機B正式發送資料。 1.上傳資料是怎麼和後台伺服器互動的; 後台和前端的互動手段是通過網路介面來實現的.上傳資料通過http請求上傳,iOS9之後是https請求,需要把資料轉換成data類型,然後拼接到POST請求體(body)中,通過請求資料一起發送到伺服器上。對於伺服器端的返回的格式,一般使用json格式返回。它有優勢,傳遞資料相對小,ios用戶端也容易解析。至於伺服器端你可以有多種選擇,asp.net,java,php均可。 二、兩種請求方式的區別:1、GET請求,請求的資料會附加在URL之後,以?分割URL和傳輸資料,多個參數用&串連。URL的編碼格式採用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字元都要編碼之後再傳輸。POST請求:POST請求會把請求的資料放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸資料。因此,GET請求的資料會暴露在地址欄中,而POST請求則不會。 2、傳輸資料的大小在HTTP規範中,沒有對URL的長度和傳輸的資料大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和伺服器對URL的長度有限制。因此,在使用GET請求時,傳輸資料會受到URL長度的限制。對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個伺服器會規定對POST提交資料大小進行限制,Apache、IIS都有各自的配置。 3、安全性POST的安全性比GET的高。這裡的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改伺服器的資料。比如,在進行登入操作,通過GET請求,使用者名稱和密碼都會暴露再URL上,因為登入頁面有可能被瀏覽器緩衝以及其他人查看瀏覽器的記錄的原因,此時的使用者名稱和密碼就很容易被他人拿到了。除此之外,GET請求提交的資料還可能會造成Cross-site request frogery攻擊 9、解釋HTTP中Get和Post,它們有什麼區別,哪個使用時更加安全?Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概的瞭解了,GET一般用於擷取/查詢資源資訊,而POST一般用於更新資源資訊。一、原理區別1.根據HTTP規範,GET用於資訊擷取,而且應該是安全的和等冪的。2.根據HTTP規範,POST表示可能修改變伺服器上的資源的請求。 3、如何處理多個網路請求並發的情況 通過GCD和NSOperationQueue來控制並發 92.TCP和UDP的區別是什嗎?TCP連線導向、傳輸可靠(保證資料正確性,保證資料順序)、用於傳輸大量資料(流模式)、速度慢,建立串連需要開銷較多(時間,系統資源)。UDP面向非串連、傳輸不可靠、用於傳輸少量資料(資料包模式)、速度快。 82.網路通訊用過哪些方式(100%的人說了AFNetworking...)如何處理多個網路請求並發的情況1)、直接使用socket的方式2)、AFNetworking使用多線程中的並發隊列去處理網路的並發請求。 83.在網路請求中如何提高效能在網路請求中如何保證安全性iOS 在資料轉送過程中有資料泄露的可能,用戶端在進行網路請求時一般都採用加密的方式來保證資料的安全性,在iOS9以後,蘋果為了保護資料的安全性,使用了Https協議。11、socket是什嗎?(1)socket是一套完成tcp,udp協議的介面。HTTP協議:簡易物件存取通訊協定 (SOAP),對應於應用程式層,HTTP協議是基於TCP串連的tcp協議: 對應於傳輸層ip協議: 對應於網路層TCP/IP是傳輸層協議,主要解決資料如何在網路中傳輸;而HTTP是應用程式層協議,主要解決如何封裝資料。Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用介面(API),通過Socket,我們才能使用TCP/IP協議。Socket的出現只是使得程式員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函數介面。 http串連:http串連就是所謂的短串連,即用戶端向伺服器端發送一次請求,伺服器端響應後串連即會斷掉;socket串連:socket串連就是所謂的長串連,理論上用戶端和伺服器端一旦建立起串連將不會主動斷掉;但是由於各種環境因素可能會是串連斷開,比如說:伺服器端或用戶端主機down了,網路故障,或者兩者之間長時間沒有資料轉送,網路防火牆可能會斷開該串連以釋放網路資源。 (2)建立Socket串連至少需要一對通訊端,通訊端簡單來說就是通訊的兩方的一種約定,用通訊端中的相關函數來完成通訊過程。其中一個運行於用戶端,稱為ClientSocket ,另一個運行於伺服器端,稱為ServerSocket 。通訊端之間的串連過程分為三個步驟:伺服器監聽,用戶端請求,串連確認。1。伺服器監聽:伺服器端通訊端並不定位具體的用戶端通訊端,而是處於等待串連的狀態,即時監控網路狀態,等待用戶端的串連請求。2。用戶端請求:指用戶端的通訊端提出串連請求,要串連的目標是伺服器端的通訊端。為此,用戶端的通訊端必須首先描述它要已連線的服務器的通訊端,指出伺服器端通訊端的地址和連接埠號碼,然後就向伺服器端通訊端提出串連請求。3。串連確認:當伺服器端通訊端監聽到或者說接收到用戶端通訊端的串連請求時,就響應用戶端通訊端的請求,建立一個新的線程,把伺服器端通訊端的描述發給用戶端,一旦用戶端確認了此描述,雙方就正式建立串連。而伺服器端通訊端繼續處於監聽狀態,繼續接收其他用戶端通訊端的串連請求。 AFHTTPRequestOperation 核心代碼與NSURLConnection對象不同,每個共用應用範圍的設定如會話管理、緩衝策略、Cookie儲存以及URL協議等,這些NSURLSession對象都可以單獨進行配置。使用特定的配置來初始化會話,它可以發送任務來擷取資料,並上傳或下載檔案。在AFNetworking 2.0中,使用AFHTTPRequestOperation,有可能建立一個沒有額外開銷的獨立的網路請求來擷取資料。NSURLSession則需要更多的開銷,為了獲得所要請求的資料。41.AFNetworking新版本和以前版本的區別,NSURLSession使用(1)NSURLConnection的API已廢棄棄用的類下面的類已從AFNetworking 3.0中廢棄:? AFURLConnectionOperation? AFHTTPRequestOperation? AFHTTPRequestOperationManager修改的類下面的類包含基於NSURLConnection的API的內部實現。他們已經被使用NSURLSession重構:? UIImageView+AFNetworking? UIWebView+AFNetworking? UIButton+AFNetworking(2)AFHTTPRequestOperation 核心代碼與NSURLConnection對象不同,每個共用應用範圍的設定如會話管理、緩衝策略、Cookie儲存以及URL協議等,這些NSURLSession對象都可以單獨進行配置。使用特定的配置來初始化會話,它可以發送任務來擷取資料,並上傳或下載檔案。在AFNetworking 2.0中,使用AFHTTPRequestOperation,有可能建立一個沒有額外開銷的獨立的網路請求來擷取資料。NSURLSession則需要更多的開銷,為了獲得所要請求的資料。 (3)UIKit的遷移圖片下載已經被重構,以遵循AlamofireImage架構與新的AFImageDownloader類。這個類的圖片下載職責的代理人是UIButton與UIImageView的類目,並且提供了一些方法,在必要時可以自訂。類別中,下載遠程圖片的實際方法沒有改變。UIWebView的類目被重構為使用AFHTTPSessionManager作為其網路請求。UIAlertView的類目被廢棄從AFNetworking 3.0後UIAlertView的類目因過時而被廢棄。並沒有提供UIAlertController類目的計劃,因為這是應用程式應處理的邏輯,而不是這個庫。 NSURLSession使用NSURLSession是IOS SDK提供的一組相對容易使用的網路API。它包括幾個部分NSURLRequest,NSURLCache,NSURLSession,NSURLSessionConfiguration,NSURLSessionTask。 6、無網情況下,從本機資料庫sqlite上拉載入時,每次取10條,如何??判斷網路情況,在無網路情況下,上拉載入的時候,通過謂詞設定從資料庫中取出資料10條資料,重新整理介面。 20.http與https的區別,https的好處有哪些?http是超?文本傳輸協議,資訊是明?文傳輸,https 則是具有安全性的ssl加密傳輸 協議。https相?比http更安全。https協議需要到ca申請認證,?一般免費認證很少,需要交費。 http和https使?用的是完全不同的串連?方式?用的端??口也不?一樣,前者是80,後者是 443。http的串連很簡單,是?無狀態的 HTTPS協議是由SSL+HTTP協議構建的可進?行加密傳輸、?身份認證的?網路通訊協定 要?比http協議安全41.網路通訊用過哪些方式(100%的人說了AFNetworking...)如何處理多個網路請求並發的情況 1)、直接使用socket的方式2)、AFNetworking使用多線程中的並發隊列去處理網路的並發請求 42.在網路請求中如何提高效能在網路請求中如何保證安全性iOS 在資料轉送過程中有資料泄露的可能,用戶端在進行網路請求時一般都採用加密的方式來保證資料的安全性,在iOS9以後,蘋果為了保護資料的安全性,使用了Https協議。  2、載入大量圖片時,如果網路較差會出現什麼情況?如何處理? 可能會出現資料請求緩慢,映像載入不出來的情況 ,嚴重的會導致程式崩潰處理方法:1.做好資料緩衝,程式使用時先從緩衝讀取,如果對應緩衝沒有,再請求資料。2.控制請求次數和資料量 3、使用過哪些網路請求方式?用過哪些第三方架構,有哪些區別?http://m.blog.csdn.net/blog/quanqinayng/22325195 http協議申明了用戶端與服務端互動的方式,即請求方式:get、post、put、delete這四種方式可以對網路資源(url描述的內容)進行:查、改、增、刪 CLLocationManager實現定位,查詢並即時顯示周邊商戶;常用的是下面兩種:1:get方法:下行/從服務端獲得資料(1)get請求一般只是從伺服器獲得資料,請求時一般會提交伺服器一些請求參數,附加在url上的,參數之間以&分割。(2)url中英文和數字原樣識別,而中文或者一些其他字元需要編碼。(3)get請求提交的資料一般放在http協議的頭header中 2:post方法:上傳/上傳資料改變服務端內容(1)post請求多用於給伺服器提交資料。(2)post請求提交的資料一般放在http的主體資料包body中  用過的第三發架構有3種,ASIHttpRequest,AFNetWorking,MKNetWork.三種的區別:ASIHttpRequest比較臃腫,MKNetWork和AFNektwork感覺比較輕量級,本人推薦MKNetWork,比較簡單 4.APP內部下載和離線下載的實現(像迅雷一樣可以離線下載)內部下載: 1. 建立NSURLSession 並 根據連結建立一個NSURLRequest2. 開始下載3. 在代理中接受資料並根據路徑寫入到檔案夾下

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.