網絡

網絡

網絡的基本概念

  • 為什么學習網絡編程
    • 所有的app都需要用到網絡
    • 只有通過網絡跟外界進行數據交互、數據更新,應用才能保持新鮮、活力
    • 移動網絡應用 = 良好的UI +良好的用戶體驗 + 實時更新的數據
    • 網絡編程是一種實時更新應用數據的常用手段
    • 網絡編程是開發優秀網絡應用的前提和基礎
  • 基本概念:
    • 客戶端:移動應用(ios/android等應用)

    • 服務器:為客戶端提供服務、提供數據、提供資源的機器

      • 分類:
        • 遠程服務器(外網服務器、正式服務器)比如百度的網頁,任何人只要聯網就能使用,一般應用上線后使用的服務器
        • 本地服務器(內網服務器、測試服務器),開發、測試階段使用的服務器
    • 請求:客戶端向服務器索取數據的一種行為(通過網絡向服務器發送一個請求,目的是向服務器索要資源數據)

    • 響應:服務器對客戶端的請求作出響應,返回客戶端想要的資源(數據)

    • 開發中:搭建UI界面,發送網絡請求,刷新界面

HTTP相關概念

  • 如何找到服務器?

    • URL
  • URL

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

    • 通過一個URL,能找到互聯網上唯一的一個資源

    • URL就是資源的地址、位置,互聯網上的每一個資源都有一個唯一的URL

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

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

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

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

    • 常見協議:

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

    • TCP/IP協議簇
      • HTTP屬于它內部的一個子集
      • 規則(協議)
      • 使用到的協議簇的統稱
      • 分層設計思想:(查看參考模型)
        • 應用層:HTTP/FTP/SMTP/DNS/RPC/SNM
        • 傳輸層:TCP/UDP
        • Internet層:RARP/IP/IGMP/ICMP
        • 網絡接口層:以太網...
  • HTTP協議

    • 訪問遠程網絡資源
  • 思考:

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

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

    • 請求:客戶端向服務器索要數據
    • 響應:服務器返回客戶端相應的數據
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.發送HTTP GET請求 
7.接收到服務器的響應
8.關閉連接

GET請求|POST請求

  • 發送請求的方法

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

  • GET和POST對比

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

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

    • 調試接口
    • 200 OK 請求成功
    • 400 客戶端請求語法錯誤,服務器無法解析BadRequest
    • 404 服務器無法根據客戶端的請求找到資源 NotFound
    • 500 服務器內部錯誤,無法完成請求 Internal Server Error

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

  • 請求

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

    • 響應頭:對服務器的描述、對返回數據的描述
      • HTTP協議版本、狀態碼、狀態英文名稱
      • 服務器類型
      • 返回數據的類型
      • 返回數據的長度
      • 響應的時間
    • 響應體:服務器返回給客戶端的具體數據,比如文件數據
  • HTTP通信過程

    • 客戶端 <--> 服務器

ios中發送HTTP請求的方案

  • 蘋果原生
    • NSURLConnection
    • NSURLSession:功能比NSURLConnection更加強大,2013推出,ios7開始出的技術
    • CFNetwork:NSURL*的底層,純C語言
  • 第三方框架
    • ASIHttpRequest:HTTP終結者,但是不更新了,沒有人使用了
    • AFNetworking
    • MKNetworkKit
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容