可能碰到的iOS筆試面試題(16)--網絡

網絡

http請求方式?

通常,HTTP的請求方式有3種,分別是:POST、GET、HEAD。POST和GET方法是用于數據發送的。

POST:它將要發送的數據單獨放在一個流中進行發送,而不是附加在URL地址后面,這樣做的好處是這些數據不會出現在URL地址中。

GET:它將要發送的數據直接添加在URL后面,如:www.sina.com.cn?username=""&password="",這樣的好處是可以直接將數據加在URL后,而不需在用另外的流來發送這些數據,但是缺點也顯而易見,它將用戶的信息顯示出來了。

HEAD:它是請求資源的元數據方法。在具體的應用中,我暫時還沒遇到過,也不去對它進行研究,需要是在學習。

Http定義了與服務器交互的不同方法,最基本的方法有?

  • URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用于描述一個網絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。

  • GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。

socket編程簡述

它是基于TCP/IP協議,Socket就是一個可以連通網絡上不同計算機程序之間的管道,把一堆數據從管道的A端扔進去,則會從管道的B端(也許同時還可以從C、D、E、F……端冒出來)。管道的端口由兩個因素來唯一確認,即機器的IP地址和程序所使用的端口號。

Socket可以支持數據的發送和接收,它會定義一種稱為套接字的變量,發送數據時首先創建套接字,然后使用該套接字的sendto等方法對準某個IP/端口進行數據發送;接收端也首先創建套接字,然后將該套接字綁定到一個IP/端口上,所有發向此端口的數據會被該套接字的recv等函數讀出。如同讀出文件中的數據一樣。

TCP/IP的socket提供下列三種類型套接字。 流式套接字、數據報式套接字、原始式套接字。

客戶端編程步驟:

1:加載套接字庫,創建套接字(WSAStartup()/socket());

2:向服務器發出連接請求(connect());

3:和服務器端進行通信(send()/recv());

4:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。

常用第三方庫:1,Asyncsocket庫

asihttp代碼原理,異步請求的原理,異步請求最大數目,為什么只能這么多?

ASIHTTPRequest是一個簡易使用的類庫,通過包裝CFNetwork API 來簡化 和服務器端的通訊. 它編寫的語言是Objective-C 能夠應用于Mac OS X and iPhone 平臺的應用程序.

異步: 請求通過事件觸發->服務器處理(這是瀏覽器仍然可以作其他事情)->處理完畢這個數量是跟cpu有關的,并發性取決于cpu核數,每個核只能同時處理一個任務.4核cpu理論上可以并發處理4個任務,如果按http來算就是4個請求,但是cpu是搶占式資源,所以一般來說并發量是要根據任務的耗時和cpu的繁忙度來計算4個左右只是個經驗值你開10個短耗時的任務和幾個長耗時任務的效率是不同的。

JSONKit、SBJson、TouchJSON和原生的區別?

JSONKit、SBJson、TouchJSON(性能從左到右,越右越差,主要就是性能上的差別)

App需要加載超大量的數據,給服務器發送請求,但是服務器卡住了如何解決?

1> 設置請求超時
2> 給用戶提示請求超時
3> 根據用戶操作再次請求數據

HTTP的通信的 發送請求、接收響應 包含哪些內容?OC中是怎樣實現的?

  1. 請求:一個請求包含以下內容:
  2. 請求行:包含了請求方法、請求資源路徑、HTTP協議版本
    GET /XXServer/resources/images/1.jpg HTTP/1.1
  3. 請求頭:包含了對客戶端的環境描述、客戶端請求的主機地址等信息
    • Host: 192.168.1.105:8080 // 客戶端想訪問的服務器主機地址
    • User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0
      // 客戶端的類型,客戶端的軟件環境
    • Accept: text/html, / // 客戶端所能接收的數據類型
    • Accept-Language: zh-cn // 客戶端的語言環境
    • Accept-Encoding: gzip // 客戶端支持的數據壓縮格式
  4. 請求體:客戶端發給服務器的具體數據,比如文件數據
  5. OC中請求NSURLRequest
    • 發送給服務器的請求包含:
    • 請求行: 包含了請求方法、請求資源路徑、HTTP協議版本
    • 請求頭: 對客戶端的環境描述、客戶端請求的主機地址等信息
    • 請求體: 客戶端發給服務器的具體數據
    • 默認超時時常:60s
  6. 響應:
    • 一個響應包括:
    • 狀態行:包含了HTTP協議版本、狀態碼、狀態英文名稱 HTTP/1.1 200 OK
    • 響應頭:包含了對服務器的描述、對返回數據的描述
    • Server: Apache-Coyote/1.1 // 服務器的類型
    • Content-Type: image/jpeg // 返回數據的類型
    • Content-Length: 56811 // 返回數據的長度
    • Date: Mon, 23 Jun 2014 12:54:52 GMT // 響應的時間
    • 實體內容:服務器返回給客戶端的具體數據,比如文件數據
    • OC中響應用NSURLRespose:返回給客戶端的回應包含:
      • 狀態行 : 包含了HTTP協議版本、狀態碼、狀態英文名稱

      • 響應頭 : 包含了對服務器的描述、對返回數據的描述

      • 實體內容:服務器返回給客戶端的具體二進制數據

      • 常用屬性: expectedContentLength (下載時返回文件的長度)
        suggestedFilename(建議保存的文件名)

http 的post與get區別與聯系,實踐中如何選擇它們?

GET POST
用途 從服務器上獲取數據 向服務器傳送數據提交方式
服務器解析 Request.QueryString獲取變量的值 Request.Form獲取提交的數據
數據大小 最大1024字節 無限制
安全性 URL中能看到提交的數據 隱藏在請求頭中

知道TCP/UDP嗎?說說關于UDP/TCP的區別?

  • UDP: 是用戶數據報協議: 主要用在實時性要求高以及對質量相對較弱的地方,但面對現在高質量的線路不是容易丟包除非是一些擁塞條件下, 如流媒體
  • TCP: 是傳輸控制協議:是面連接的,那么運行環境必然要求其可靠性不可丟包有良好的擁塞控制機制如http ftp telnet 等
TCP UDP
發送與接收 安全送達 只管發送
建立連接 是(三次握手) 否(有數據包,無需連接)
數據大小 無限制 每個數據報64k
可靠性 可靠 不可靠
速度 慢(三次握手才能完成連接 快(無需連接)
應用 流媒體 qq

什么是三次握手與四次揮手?

  • 三次握手實現的過程:

    • 第一次握手:建立連接時,客戶端發送同步序列編號到服務器,并進入發送狀態,等待服務器確認
    • 第二次:服務器收到同步序列編號,確認并同時自己也發送一個同步序列編號+確認標志,此時服務器進入接收狀態
    • 第三次:客戶端收到服務器發送的包,并向服務器發送確認標志,隨后鏈接成功。
    • 注意:是在鏈接成功后在進行數據傳輸。
  • 四次揮手:

    • 第一次: 客戶端向服務器發送一個帶有結束標記的報文。
    • 第二次:服務器收到報文后,向客戶端發送一個確認序號,同時通知自己相應的應用程序:對方要求關閉連接
    • 第三次: 服務器向客戶端發送一個帶有結束標記的報文。
    • 第四次: 客戶端收到報文后,向服務器發送一個確認序號。鏈接關閉。

分析json、xml的區別?json、xml解析方式的底層是如何處理的?

  1. Json與xml的區別:

    • 可讀性方面:基本相同,xml的可讀性比較好
    • 可擴展性方面:都具有很好的擴展性
    • 編碼難度方面:相對而言:JSON的編碼比較容易
    • 解碼難度:json的解碼難度基本為零,xml需要考慮子節點和父節點
    • 數據體積方面:json相對于xml來講,數據體積小,傳遞的速度跟快些
    • 數據交互方面:json與JavaScript的交互更加方面,更容易解析處理,更好的數據交互
    • 數據描述方面:xml對數據描述性比較好
    • 傳輸速度方面:json的速度遠遠快于xml
  2. JSON底層原理:

    • 遍歷字符串中的字符,最終根據格式規定的特殊字符,比如{}號,[]號, : 號 等進行區分,{}號是一個字典 的開始,[]號是一個數組的開始, : 號是字典的鍵和值的分水嶺,最終乃是將json數據轉化為字典,字典中值可能是字典,數組,或字符串而已。
  3. XML底層原理:

    • XML解析常用的解析方法有兩種:DOM解析和SAX解析。
    • DOM 采用建立樹形結構的方式訪問 XML 文檔,而 SAX 采用的事件模型。
    • DOM 解析把 XML 文檔轉化為一個包含其內容的樹,并可以對樹進行遍歷。
    • 使用 DOM 解析器的時候需 要處理整個 XML 文檔,所以對性能和內存的要求比較高。
    • SAX在解析 XML 文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。
    • SAX 對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag。特別是當開發人員只需要處理文檔中所包含的部分數據時,SAX 這種擴展能力得到了更好的體現。
  4. (補充)其他解析方式有自定義二進制解析,就是按字節去解析,電話會談就是如此,還可以是字符串之間用特殊符號連接的數據,將此數據用特殊符號可以分割成所用數據。

http和scoket通信的區別?socket連接相關庫,TCP,UDP的連接方法,HTTP的幾種常用方式?

  1. http和scoket通信的區別:
    • http是客戶端用http協議進行請求,發送請求時候需要封裝http請求頭,并綁定請求的數據,服務器一般有web服務器配合(當然也非絕對)。 http請求方式為客戶端主動發起請求,服務器才能給響應,一次請求完畢后則斷開連接,以節省資源。服務器不能主動給客戶端響應(除非采取http長連接技術)。iphone主要使用類是NSUrlConnection。
    • scoket是客戶端跟服務器直接使用socket“套接字”進行連接,并沒有規定連接后斷開,所以客戶端和服務器可以保持連接通道,雙方都可以主動發送數據。一般在游戲開發或股票開發這種要求即時性很強并且保持發送數據量比較大的場合使用。主要使用類是CFSocketRef。

通信底層原理(OSI七層模型)

  • OSI簡介:OSI采用了分層的結構化技術,共分七層,物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。

  • 物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地后在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。

  • 數據鏈路層:定義了如何讓格式化數據以進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保數據的可靠傳輸。

  • 網絡層::在位于不同地理位置的網絡中的兩個主機系統之間提供連接和路徑選擇。Internet的發展使得從世界各站點訪問信息的用戶數大大增加,而網絡層正是管理這種連接的層。

  • 傳輸層:定義了一些傳輸數據的協議和端口號(WWW端口80等),如:TCP(傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的)。 主要是將從下層接收的數據進行分段和傳輸,到達目的地址后再進行重組。常常把這一層數據叫做段。

  • 會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數據傳輸的通路。主要在你的系統之間發起會話或者接受會話請求(設備之間需要互相認識可以是IP也可以是MAC或者是主機名)

  • 表示層::可確保一個系統的應用層所發送的信息可以被另一個系統的應用層讀取。例如,PC程序與另一臺計算機進行通信,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符。如有必要,表示層會通過使用一種通格式來實現多種數據格式之間的轉換。

  • 應用層:是最靠近用戶的OSI層。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。

all people seem to need date processing這一句話的意思是所有的人似乎都需要處理數據

| | |
| ------------ | |
| Application | all |
| Presentation | people |
| Session | seem |
| Transport | to |
| Network | need |
| Data| date |
| Physical| processing |

設計一套大文件(如上百M的視頻)下載方案

  • NSURLSession

  • 支持斷點下載,自動記錄停止下載時斷點的位置

  • 遵守NSURLSessionDownloadDelegate協議

  • 使用NSURLSession下載大文件,被下載文件會被自動寫入沙盒的臨時文件夾tmp中

  • 下載完畢,通常需要將已下載文件移動其他位置(tmp文件夾中的數據被定時刪除),通常是cache文件夾中

  • 下載步驟:

    • 設置下載任務task的為成員變量

       @property (nonatomic, strong) NSURLSessionDownloadTask *task;
      
    • 獲取NSURLSession對象

        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
      
    • 初始化下載任務任務

        self.task = [session downloadTaskWithURL:(此處為下載文件路徑URL)];
      
    • 實現代理方法

        /**每當寫入數據到臨時文件的時候,就會調用一次該方法,通常在該方法中獲取下載進度*/
        -(void)URLSession:(NSURLSession *)session downloadTask: (NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
        {
        // 計算下載進度
         CGFloat progress = 1.0 * totalBytesWritten / totalBytesExpectedToWrite;
        }
      
        /**任務終止時調用的方法,通常用于斷點下載*/
        -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
        {
          //fileOffset:下載任務中止時的偏移量
        }
      
        /**遇到錯誤的時候調用,error參數只能傳遞客戶端的錯誤*/
        -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
        { }
      
        /**下載完成的時候調用,需要將文件剪切到可以長期保存的文件夾中*/
        -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
        {
        //生成文件長期保存的路徑
        NSString *file = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
        //獲取文件句柄
        NSFileManager *fileManager = [NSFileManager defaultManager];
        //通過文件句柄,將文件剪切到文件長期保存的路徑
        [fileManager moveItemAtURL:location toURL:[NSURL fileURLWithPath:file] error:nil];
        }
      
    • 操作任務狀態

        /**開始/繼續下載任務*/
        [self.task resume];
      
        /**暫停下載任務*/
        [self.task suspend]; 
      

HTTP協議的特點,關于HTTP請求GET和POST的區別?

HTTP協議的特點:
- HTTP超文本傳輸協議,是短連接,是客戶端主動發送請求,服務器做出響應,服務器響應之后,鏈接斷開。HTTP是一個屬于應用層面向對象的協議,HTTP有兩類報文:請求報文和響應報文。
- HTTP請求報文:一個HTTP請求報文由請求行、請求頭部、空行和請求數據4部分組成。
- HTTP響應報文:由三部分組成:狀態行、消息報頭、響應正文。

即時聊天App不會采用的網絡傳輸方式

A UDP
B TCP 
C HTTP 
D FTP
參考答案:D
理由:FTP是文件傳輸協議,是File Transfer Protocol的簡稱,它的作用是用于控制互聯網上文件的雙向傳輸,因此一定不會是即時聊天使用的;UDP是面向無連接的傳輸層協議,數據傳輸是不可靠的,它只管發,不管收不收得到;TCP是面向連接的,可靠的傳輸層協議;HTTP是超文本傳輸協議,對應于應用層,而HTTP是基于TCP的。

在App中混合HTML5開發App如何實現的。在App中使用HTML5的優缺點是什么?

在iOS中,通常是用UIWebView來實現,當然在iOS8以后可以使用WKWebView來實現.有以下幾種實現方法:
通過實現UIWebView的代理方法來攔截,判斷scheme是否是約定好的,然后iOS調用本地相關API來實現:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
在iOS7以后,可以直接通過JavaScripteCore這個庫來實現,通過往JS DOM注入對象,而這個對象對應于我們iOS的某個類的實例。更詳細請閱讀:
OC JavaScriptCore與js交互
WKWebView新特性及JS交互
Swift JavaScriptCore與JS交互
可以通過WebViewJavascriptBridge來實現。具體如何使用,請大家去其它博客搜索吧!
優缺點:
iOS加入H5響應比原生要慢很多,體驗不太好,這是缺點。
iOS加入H5可以實現嵌入別的功能入口,可隨時更改,不用更新版本就可以上線,這是最大的優點。

介紹一下XMPP?有什么優缺點嗎?

XMPP(Extensible Messaging and Presence Protocol,前稱)是一種以XML為基礎的開放式實時通信協議,是 經由互聯網工程工作小組(IETF)通過的互聯網標準。簡單的說,XMPP就是一種協議,一種規定。就是說,在網絡上傳 東西,要建立連接,TCP/IP連接,建立后再傳東西,而XMPP就是規定你傳的東西的格式。XMPP是基于XML的協議。 優點
開放:
XMPP協議是自由、開放、公開的,并且易于了解。 而且在客戶端 、 服務器 、 組件 、 源碼庫等方面,都已經各自有多種實現。 標準:
互聯網工程工作小組( IETF )已經將Jabber的核心XML流協議以XMPP之名,正式列為認可的實時通信及Presence技術。 而XMPP的技術規格已被定義在RFC 3920及RFC 3921 。 任何IM供應商在遵循XMPP協議下,都可與Google Talk實現連接。 證實可用:
第一個Jabber(現在XMPP)技術是Jeremie Miller在1998年開發的,現在已經相當穩定;數以百計的開發者為XMPP技術而努 力。 今日的互聯網上有數以萬計的XMPP服務器運作著,并有數以百萬計的人們使用XMPP實時傳訊軟件。
分散式:
XMPP網絡的架構和電子郵件十分相像;XMPP核心協議通信方式是先創建一個stream,XMPP以TCP傳遞XML數據流,沒有 中央主服務器。 任何人都可以運行自己的XMPP服務器,使個人及組織能夠掌控他們的實時傳訊體驗。
安全:
任何XMPP協議的服務器可以獨立于公眾XMPP網絡(例如在企業內部網絡中),而使用SASL及TLS等技術的可靠安全性,已自 帶于核心XMPP技術規格中。
可擴展:
XML 命名空間的威力可使任何人在核心協議的基礎上建造定制化的功能;為了維持通透性,常見的擴展由XMPP標準基金會 。 彈性佳:
XMPP除了可用在實時通信的應用程序,還能用在網絡管理、內容供稿、協同工具、文件共享、游戲、遠程系統監控等。 多樣性:
用XMPP協議來建造及布署實時應用程序及服務的公司及開放源代碼計劃分布在各種領域;用XMPP技術開發軟件,資源及支持的 來源是多樣的,使得使你不會陷于被“綁架”的困境。
缺點
數據負載太重:
隨著通常超過70%的XMPP協議的服務器的數據流量的存在和近60%的被重復轉發,XMPP協議目前擁有一個大型架空中存在的 數據提供給多個收件人。 新的議定書正在研究,以減輕這一問題。
沒有二進制數據:
XMPP協議的方式被編碼為一個單一的長的XML文件,因此無法提供修改二進制數據。 因此, 文件傳輸協議一樣使用外部的 HTTP。 如果不可避免,XMPP協議還提供了帶編碼的文件傳輸的所有數據使用的Base64 。 至于其他二進制數據加密會話 (encrypted conversations)或圖形圖標(graphic icons)以嵌入式使用相同的方法。

NSURLConnection的幾個常用的代理?

  • NSURLConnectionDownloadDelegate :能夠實現監聽下載進度!但是下載之后,找不到下載好的文件!
  • NSURLConnectionDataDelegate 是針對數據下載提供的方法!需要注意的是,需要自己實現監聽進度的業務邏輯!
  • 利用 NSURLConnection 的異步回調進行文件下載:
    • 如果是小文件下載,問題不大! 可以直接使用異步回調進行下載
    • 如果使用異步回調的方法進行大文件下載,則會出現內存暴漲的情況!
  • 內存暴漲的原因: 大文件下載之后,默認是放在內存中的,所以下載的文件越大,越耗費內存.
  • 存在的缺點: 使用異步回調實現文件,無法監聽下載進度!并且對于大文件下載,會造成內存暴漲!
  • 基于以上兩點,一般,在進行文件下載的時候,使用代理回調監聽下載進度!并且在下載文件的時候,手動管理內存!

NSURLConnection&NSURLSession的區別?

  • 雖然 NSURLConnection 在 iOS 9.0 中已經被廢棄,但是作為資深的 iOS 程序員,必須要了解 NSURLConnection 的細節,
    • NSURLSession: 用于替代 NSURLConnection
    • 支持后臺運行的網絡任務
    • 暫停、停止、重啟網絡任務,不再需要 NSOperation 封裝
    • 請求可以使用同樣的配置容器
    • 不同的 session 可以使用不同的私有存儲
    • block 和代理可以同時起作用
    • 直接從文件系統上傳、下載

XML是什么? XML與HTML的區別?

  • XML的簡單使其易于在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,雖然不同的應用軟件也支持其它的數據交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,Mac OS,Linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數據到程序中并分析他,并以XML格式輸出結果。
  • XML去掉了之前令許多開發人員頭疼的SGML(標準通用標記語言)的隨意語法。在XML中,采用了如下的語法:
    • 任何的起始標簽都必須有一個結束標簽。
    • 可以采用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大于符號之前緊跟一個斜線(/),例如<tag/ >。XML解析器會將其翻譯成<tag></tag>。
    • 標簽必須按合適的順序進行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽,例如this is asamplestring。這好比是將起始和結束標簽看作是數學中的左右括號:在沒有關閉所有的內部括號之前,是不能關閉外面的括號的。
    • 所有的特性都必須有值。
    • 所有的特性都必須在值的周圍加上雙引號。
  • XML與HTML的設計區別是:XML的核心是數據,其重點是數據的內容。而HTML 被設計用來顯示數據,其重點是數據的顯示。
  • XML和HTML語法區別:HTML的標記不是所有的都需要成對出現,XML則要求所有的標記必須成對出現;HTML標記不區分大小寫,XML則 大小敏感,即區分大小寫。

網絡圖片處理問題中怎么解決一個相同的網絡地址重復請求的問題?

利用字典(圖片地址為key,下載操作為value)

sip是什么?

1>  SIP(Session Initiation Protocol),會話發起協議
2>  SIP是建立VOIP連接的 IETF 標準,IETF是全球互聯網最具權威的技術標準化組織
3>  所謂VOIP,就是網絡電話,直接用互聯網打電話,不用耗手機話費

TCP/IP四層模型

  • TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇。TCP/IP協議簇分為四層,IP位于協議簇的第二層(對應OSI的第三層),TCP位于協議簇的第三層(對應OSI的第四層)。

  • 應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。

  • 傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據并把它傳輸到下一層中,這一層負責傳送數據,并且確定數據已被送達并接收。

  • 互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。

  • 網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、Serial Line等)來傳送數據。

文章如有問題,請留言,我將及時更正。

滿地打滾賣萌求贊,如果本文幫助到你,輕點下方的紅心,給作者君增加更新的動力。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,145評論 6 13
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,007評論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內部原理。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,035評論 0 12
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,426評論 0 35