網(wǎng)絡(luò)

網(wǎng)絡(luò)

網(wǎng)絡(luò)的基本概念

  • 為什么學(xué)習(xí)網(wǎng)絡(luò)編程
    • 所有的app都需要用到網(wǎng)絡(luò)
    • 只有通過網(wǎng)絡(luò)跟外界進(jìn)行數(shù)據(jù)交互、數(shù)據(jù)更新,應(yīng)用才能保持新鮮、活力
    • 移動網(wǎng)絡(luò)應(yīng)用 = 良好的UI +良好的用戶體驗 + 實時更新的數(shù)據(jù)
    • 網(wǎng)絡(luò)編程是一種實時更新應(yīng)用數(shù)據(jù)的常用手段
    • 網(wǎng)絡(luò)編程是開發(fā)優(yōu)秀網(wǎng)絡(luò)應(yīng)用的前提和基礎(chǔ)
  • 基本概念:
    • 客戶端:移動應(yīng)用(ios/android等應(yīng)用)

    • 服務(wù)器:為客戶端提供服務(wù)、提供數(shù)據(jù)、提供資源的機器

      • 分類:
        • 遠(yuǎn)程服務(wù)器(外網(wǎng)服務(wù)器、正式服務(wù)器)比如百度的網(wǎng)頁,任何人只要聯(lián)網(wǎng)就能使用,一般應(yīng)用上線后使用的服務(wù)器
        • 本地服務(wù)器(內(nèi)網(wǎng)服務(wù)器、測試服務(wù)器),開發(fā)、測試階段使用的服務(wù)器
    • 請求:客戶端向服務(wù)器索取數(shù)據(jù)的一種行為(通過網(wǎng)絡(luò)向服務(wù)器發(fā)送一個請求,目的是向服務(wù)器索要資源數(shù)據(jù))

    • 響應(yīng):服務(wù)器對客戶端的請求作出響應(yīng),返回客戶端想要的資源(數(shù)據(jù))

    • 開發(fā)中:搭建UI界面,發(fā)送網(wǎng)絡(luò)請求,刷新界面

HTTP相關(guān)概念

  • 如何找到服務(wù)器?

    • URL
  • URL

    • Uniform Resource Locator(統(tǒng)一資源定位符)

    • 通過一個URL,能找到互聯(lián)網(wǎng)上唯一的一個資源

    • URL就是資源的地址、位置,互聯(lián)網(wǎng)上的每一個資源都有一個唯一的URL

    • URL的基本格式 = 協(xié)議://主機地址/路徑

    • 協(xié)議:不同的協(xié)議,代表著不同的資源查找方式,資源傳輸方式

    • 主機地址:存放資源的主機(服務(wù)器)的ip地址(域名)

    • 路徑:資源在主機(服務(wù)器)中的具體位置

    • 常見協(xié)議:

      • HTTP:超文本傳輸協(xié)議,訪問的是遠(yuǎn)程的網(wǎng)絡(luò)資源,格式為http://,http協(xié)議是在網(wǎng)絡(luò)開發(fā)中最常用的協(xié)議
      • file:訪問的是本地計算機上的資源,格式:file://(不用加主機地址)
      • mailto:訪問的是電子郵件地址,格式為mailto:
      • FTP:訪問的是共享主機的文件資源,格式是ftp://
  • 網(wǎng)絡(luò)編程中能夠用到的協(xié)議

    • TCP/IP協(xié)議簇
      • HTTP屬于它內(nèi)部的一個子集
      • 規(guī)則(協(xié)議)
      • 使用到的協(xié)議簇的統(tǒng)稱
      • 分層設(shè)計思想:(查看參考模型)
        • 應(yīng)用層:HTTP/FTP/SMTP/DNS/RPC/SNM
        • 傳輸層:TCP/UDP
        • Internet層:RARP/IP/IGMP/ICMP
        • 網(wǎng)絡(luò)接口層:以太網(wǎng)...
  • HTTP協(xié)議

    • 訪問遠(yuǎn)程網(wǎng)絡(luò)資源
  • 思考:

    • 客戶端應(yīng)該傳什么格式的數(shù)據(jù)給服務(wù)器,服務(wù)器才能看懂?
    • 服務(wù)器應(yīng)該返回什么格式的數(shù)據(jù)給客戶端,客戶端才能看懂?
    • 兩邊怎樣傳輸數(shù)據(jù)才能有效溝通
    • HTTP協(xié)議(超文本傳輸協(xié)議)Hypertext Transfer Protocol
    • 規(guī)定客戶端和服務(wù)器之間的數(shù)據(jù)傳輸格式,讓客戶端和服務(wù)器有效的溝通
  • HTTP協(xié)議的特點

    • 簡單快速
    • 靈活:允許傳輸各種各樣數(shù)據(jù)
    • HTTP0.9和1.0使用非持續(xù)連接,限制每次連接只處理一個請求,服務(wù)器對客戶端的請求作出響應(yīng)后,馬上斷開連接,這種方式可以節(jié)省傳輸時間。HTTP1.0之后變?yōu)槌掷m(xù)連接
  • HTTP基本通信過程

    • 請求:客戶端向服務(wù)器索要數(shù)據(jù)
    • 響應(yīng):服務(wù)器返回客戶端相應(yīng)的數(shù)據(jù)
1.確定請求路徑url
http://www.baidu.com:80/tools.html
2.獲取主機名
www.baidu.com
3.DNS域名解析
192.168.31.1
4.獲得端口號80
5.連接到192.168.31.1的端口80
6.發(fā)送HTTP GET請求 
7.接收到服務(wù)器的響應(yīng)
8.關(guān)閉連接

GET請求|POST請求

  • 發(fā)送請求的方法

    • GET:查
    • POST:改
    • OPTIONS
    • HEAD
    • PUT:增
    • DELETE:刪
    • TRACE
    • CONNECT
    • PATCH
  • 參數(shù):傳遞給服務(wù)器的具體數(shù)據(jù),比如登錄時的賬號、密碼

  • GET和POST對比

    • 區(qū)別表現(xiàn)在數(shù)據(jù)傳遞上
    • GET:在請求URL后面以?的形式跟上發(fā)給服務(wù)器的參數(shù),多個參數(shù)之間用&隔開,瀏覽器和服務(wù)器對URL的長度有限制,因此URL后面附帶的參數(shù)是有限制的,通常不能超過1KB
    • POST:發(fā)給服務(wù)取得參數(shù)全部放在請求體中,理論上,POST傳遞的數(shù)據(jù)量沒有限制
    • 如何選擇?(公司后臺規(guī)定的,接口文檔)
      • 如果要傳遞大量數(shù)據(jù),比如文件上傳、只能用POST
      • GET的安全性比POST要差一些,如果包含機密、敏感信息,建議用POST
      • 如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢),建議使用GET
      • 如果是增刪改查數(shù)據(jù),建議使用POST
  • HTTP版本說明

    • HTTP0.9|HTTP1.0
    • 公司用的還是HTTP1.1(1997年),使用了持久連接
    • HTTP2.0,提高了性能(面試會問你有沒有關(guān)注2.0,你們公司用的是1.1還是2.0)
    • rfc文檔
  • 常見的響應(yīng)狀態(tài)碼

    • 調(diào)試接口
    • 200 OK 請求成功
    • 400 客戶端請求語法錯誤,服務(wù)器無法解析BadRequest
    • 404 服務(wù)器無法根據(jù)客戶端的請求找到資源 NotFound
    • 500 服務(wù)器內(nèi)部錯誤,無法完成請求 Internal Server Error

HTTP通信的過程(請求和響應(yīng))

  • 請求

    • 請求頭:對客戶端的環(huán)境描述、客戶端請求信息
      • 請求方法、請求資源路徑、HTTP協(xié)議版本
      • 客戶端想訪問的服務(wù)器主機地址
      • 客戶端的類型、客戶端的軟件環(huán)境
      • 客戶端所能接收的數(shù)據(jù)類型
      • 客戶端的語言環(huán)境
      • 客戶端支持的數(shù)據(jù)壓縮格式
    • 請求體:客戶端發(fā)給服務(wù)器的具體數(shù)據(jù),比如文件數(shù)據(jù)(post請求才會有)
  • 響應(yīng)

    • 響應(yīng)頭:對服務(wù)器的描述、對返回數(shù)據(jù)的描述
      • HTTP協(xié)議版本、狀態(tài)碼、狀態(tài)英文名稱
      • 服務(wù)器類型
      • 返回數(shù)據(jù)的類型
      • 返回數(shù)據(jù)的長度
      • 響應(yīng)的時間
    • 響應(yīng)體:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)
  • HTTP通信過程

    • 客戶端 <--> 服務(wù)器

ios中發(fā)送HTTP請求的方案

  • 蘋果原生
    • NSURLConnection
    • NSURLSession:功能比NSURLConnection更加強大,2013推出,ios7開始出的技術(shù)
    • CFNetwork:NSURL*的底層,純C語言
  • 第三方框架
    • ASIHttpRequest:HTTP終結(jié)者,但是不更新了,沒有人使用了
    • AFNetworking
    • MKNetworkKit
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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