iOS基礎(chǔ)面題試之網(wǎng)絡(luò)篇

前言:年底了,木木提醒一下正在找工作的小伙伴們(特別是女孩子),當(dāng)心騙子。找工作的時(shí)候一定要注意地點(diǎn)啥的,別上當(dāng)受騙了~

網(wǎng)絡(luò)七層協(xié)議(http,tcp/ip處于哪一層)?

  • (由下至上)物理層->數(shù)據(jù)鏈路層->網(wǎng)絡(luò)層->傳輸層->會(huì)話層->表示層->應(yīng)用層
  • http屬于應(yīng)用層協(xié)議
  • tcp/ip屬于傳輸層協(xié)議

什么是HTTP?

超文本傳輸協(xié)議,是Web聯(lián)網(wǎng)的基礎(chǔ)

什么是HTTPS?

  • HTTPS = HTTP + SSL/TLS, 也就是在HTTP上又加了一層處理加密信息的模塊, 傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)
  • SSL
  • TLS

HTTP與HTTPS的區(qū)別?

  • 使用https協(xié)議需要申請(qǐng)證書, 需要交費(fèi)
  • http是明文傳輸, https則是具有安全性的加密傳輸
  • 兩者使用的是完全不同的連接方式

HTTPS的加密原理

  1. 服務(wù)器端用非對(duì)稱加密(RSA)生成公鑰和私鑰
  2. 然后把公鑰發(fā)給客戶端, 服務(wù)器則保存私鑰
  3. 客戶端拿到公鑰后, 會(huì)生成一個(gè)密鑰, 這個(gè)密鑰就是將來客戶端和服務(wù)器用來通信的鑰匙
  4. 然后客戶端用公鑰對(duì)密鑰進(jìn)行加密, 再發(fā)給服務(wù)器
  5. 服務(wù)器拿到客戶端發(fā)來的加密后的密鑰后, 再使用私鑰解密密鑰, 到此雙方都獲得通信的鑰匙

TCP和UDP的區(qū)別?

  • 相同點(diǎn)
    • 都屬于傳輸層協(xié)議
  • 不同點(diǎn)
    • TCP面向連接, 提供可靠傳輸, UDP面向無連接, 無法提供可靠性傳輸
    • TCP必須要和服務(wù)器交互,需要和服務(wù)器進(jìn)行三次握手和四次揮手

GET和POST的區(qū)別

  • GET通常用于從服務(wù)器獲取數(shù)據(jù),POST通常用于向服務(wù)器發(fā)送數(shù)據(jù)
  • 相同點(diǎn):
    • 都可以用于請(qǐng)求數(shù)據(jù)
  • 不同點(diǎn):
    • 上傳參數(shù)的方式不一樣
      • GET的參數(shù)是追加到url后面
      • POST的參數(shù)是添加在HttpBody中的
    • 對(duì)上傳的參數(shù)的大小限制不一樣
      • GET有限制
      • POST沒有限制
    • 安全性不一樣
      • POST比GET更安全
    • 效率不一樣
      • GET效率高于POST

md5和base64是什么,有什么區(qū)別?

  • md5是不可逆的加密算法,可以把任意長(zhǎng)的字符串加密為固定長(zhǎng)度的字符串
  • base64是可逆的加密算法, 一般用于url的編碼

簡(jiǎn)單談?wù)刄DP和TCP/(http和https)

  • 兩者都是傳輸層的協(xié)議, 可以應(yīng)用于即時(shí)通訊
  • 兩者的區(qū)別
    • TCP面向連接,安全可靠,
    • TCP需要和服務(wù)器的Socket對(duì)接, 連接過程需要三次握手
    • UDP面向無連接, 不可靠,
    • UDP不需要服務(wù)器也能進(jìn)行數(shù)據(jù)傳輸, 適合用于高速傳輸和實(shí)時(shí)性較高的廣播通信

NSURlConnection斷點(diǎn)下載的思路

  • 先判斷是否已經(jīng)下載完成
  • 已下載完成的情況:
  • 未完成下載的情況:
    • 若根本沒下載過,則從頭下載
    • 若下載了一部分,先讀取下載了多少數(shù)據(jù),在告訴服務(wù)器從哪個(gè)地方開始繼續(xù)下載
    • 核心代碼

SSL加密流程

  • 服務(wù)器用非對(duì)稱加密(RSA)產(chǎn)生一對(duì)公鑰和私鑰
  • 服務(wù)器將公鑰發(fā)送給客戶端(即使消息被攔截也需要用私鑰解密,私鑰不會(huì)離開服務(wù)器)
  • 客戶端收到公鑰后,用對(duì)稱加密產(chǎn)生一個(gè)密鑰,并且用公鑰加密傳回給服務(wù)器
  • 服務(wù)器用私鑰解密,得到密鑰,這個(gè)密鑰就是以后通信的鑰匙

網(wǎng)絡(luò)加密方式有哪些,各自的原理

  • md5(哈希算法):把任意長(zhǎng)度的字符串加密成一個(gè)128bit的大整數(shù),并且是不可逆的
  • RSA(非對(duì)稱算法加密):產(chǎn)生一對(duì)非對(duì)稱的公鑰和私鑰,公鑰加密,私鑰解密。私鑰加密,公鑰解密
  • AES(對(duì)稱加密):加密和解密的密鑰是同一個(gè)
  • base64(現(xiàn)代密碼學(xué)的基礎(chǔ)):原本8 bit一組的數(shù)據(jù)改為6bit一組,不足的地方補(bǔ)0,每?jī)蓚€(gè)0用一個(gè) = 表示

說下你對(duì)Socket的理解?

  • Socket就是對(duì)TCP/IP協(xié)議的封裝,一組接口

對(duì)xmpp的理解

  • xmpp是基于XML流傳輸協(xié)議,它用于即使消息以及在線現(xiàn)場(chǎng)偵探。
  • XMPPStream用于連接服務(wù)器,設(shè)置主機(jī)名,服務(wù)器域名,設(shè)置代理,注冊(cè)、登陸和發(fā)消息所有時(shí)間的回調(diào)。
  • 通過jid與服務(wù)器進(jìn)行連接。連接成功做登陸或注冊(cè)的操作。用XMPPPresence做上線的操作。
  • 通過發(fā)送命令獲取好友。
  • XMPPMessage類做消息的發(fā)送與消息的獲取。
  • XMPPRoster負(fù)責(zé)好友的添加,好友的獲取。
  • XMPPRoom 提供多用戶的聊天支持

客戶端安全性處理方式?

  • 敏感數(shù)據(jù)加密,存儲(chǔ)到keyChain

網(wǎng)絡(luò)圖片處理問題中怎么解決一個(gè)相同的網(wǎng)絡(luò)地址重復(fù)請(qǐng)求的問題?

  • 圖片的名字就是url的md5.所以判斷url的md5是否存在本地即可

現(xiàn)在有一個(gè)資源網(wǎng)址(資源是什么未知),要請(qǐng)求這個(gè)資源你會(huì)考慮哪些問題?

  • 根據(jù)響應(yīng)頭判斷數(shù)據(jù)類型(conten-type)
  • 如果文件比較大,可以考慮斷點(diǎn)下載
  • 子線程中下載
  • 如果加密了要進(jìn)行相應(yīng)的解密

客戶端安全性處理方式?

  • 敏感數(shù)據(jù)加密,存儲(chǔ)到keyChain

iOS緩存方案?

  • 網(wǎng)絡(luò)優(yōu)先:開始總是從網(wǎng)絡(luò)獲取,如果獲取失敗,從本地獲取。
  • 本地優(yōu)先:在一段時(shí)間內(nèi)從本地獲取,當(dāng)超過這個(gè)時(shí)間,然后重新請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)。
  • 混合(智能):打開程序先從本地獲取展示,然后請(qǐng)求數(shù)據(jù),請(qǐng)求完成后刷新界面。

僅供木木學(xué)習(xí),以及有需要的伙伴們閱讀~可轉(zhuǎn)載,不可復(fù)制粘貼喲~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容