• 展開
    湖北國聯計算機科技有限公司
  • 首頁HOME
  • 公司簡介INTRODUCTION
  • 安全防御DEFENSE
  • 軟件開發(fā)SOFTWARE
  • 物聯網IOT
  • 運行維護SRE
  • 成功案例CASE
  • 聯系我們CONTACT
  • Software Technology Sharing |技術分享

    APP開發(fā)必須懂的網絡常識
    來源:荊州松滋軟件開發(fā) 時間:2017-05-11

    不忘初心,方得始終。最近很多客戶都在咨詢APP定制開發(fā),但對于一些基本的網絡常識缺少認識,其實APP開發(fā)是一件很嚴謹的事情,不管是需求分析還是場景演示,對開發(fā)環(huán)境和開發(fā)人員的要求都比較高,了解基本的網絡常識對于開發(fā)方案的理解會更深入透徹,有助于產品定位和服務品質的提升,同時,對網絡公司有一個基本的判斷準則,避免陷入低價所帶來的惡性產品循環(huán)和不必要的成本開支,也避免后期運營中出現的初期愿景和現實產品的分離。湖北國菱計算機科技有限公司軟件開發(fā)部工程師給大家總結了一些APP開發(fā)必須懂的網絡常識。


    1、網絡常用概念


    網絡是應用的靈魂,是所有應用的數據來源.離開了網絡,我們的應用就是一潭死水,網絡是數據交互的媒介,我們通過網絡得到服務器上的數據,也是通過網絡給服務器傳遞數據.也就是說,網絡的實質就 是是交互數據,而數據交互的媒介就是在網絡中傳輸二進制數據流(包括html/圖片/視頻數據)。


    互聯網開發(fā)的常用概念:

    客戶端(Client):移動設備(手機/iPad等手持設備),客戶端一般就是前端/前臺等等.iOS,android開發(fā)都是前端開發(fā).

    服務器(Server):為客戶端提供服務(比如數據/資源等)的機器---本質也是一臺計算機(+服務器軟件),服務器開發(fā)就是后端/后臺開發(fā).java/php/.net等.

    請求(Request):客戶端向服務器索取數據.

    響應(Response):服務器對客戶端請求做出的反應,一般就是返回數據給客戶端.

    服務器:按開發(fā)階段來分,分為兩種:

    遠程服務器: 外網服務器.應用上線之后供全體用戶使用的服務器.速度取決于用戶的網速和服務器的性能.

    本地服務器: 內網服務器,測試服務器.開發(fā)測試階段使用的服務器.供內部開發(fā)測試人員使用.速度飛快.

    2.什么是IP地址

    靜態(tài)IP地址:固定不變的IP地址,需要用戶自己手動設置.
    動態(tài)IP地址:打開計算機后,自動生成的IP地址,不用人為設置。動態(tài)的IP地址是通過DHCP協(xié)議實現自動獲取的。
    子網掩碼:與IP地址配合使用判斷兩臺計算機是否位于同一個子網絡.
    DNS服務器:可以將域名(網址)轉換成IP地址.
    DHCP協(xié)議:每一個子網絡中,有一臺計算機負責管理本網絡的所有IP地址,它叫做“DHCP服務器”.當新的計算機加入網絡,必須向“DHCP服務器”發(fā)
    送一個“DHCP請求”數據包,申請IP地址和相關的網絡參數.然后DHCP協(xié)議會賦予本機一些參數,如動態(tài)IP地址,子網掩碼,網關,DNS服務器等.
    以太網標頭:設置發(fā)出方(本機)的MAC地址和接收方(DHCP服務器)的MAC地址.
    IP標頭:設置發(fā)出方(本機)的IP地址和接收方(DHCP服務器)的IP地址
    UDP標頭:設置發(fā)出方(本機)的端口和接收方(DHCP服務器)的端口. 這一部分是DHCP協(xié)議規(guī)定好的,發(fā)出方是68端口,接收方是67端口.
    所以電腦想要上網,都需要確定這四個參數:本機IP地址, 子網掩碼, 網關的IP地址, DNS的IP地址。

    3.HTTP請求

    通俗地說,網絡協(xié)議就是網絡之間溝通、交流的橋梁,只有相同網絡協(xié)議的計算機才能進行信息的溝通與交流。這就好比人與人之間交流所使用的各種語言一樣,只有使用相同語言才能正常、順利地進行交流。從專業(yè)角度定義,網絡協(xié)議是計算機在網絡中實現通信時必須遵守的約定,也就是通信協(xié)議。主要是對信息傳輸的速率、傳輸代碼、代碼結構、傳輸控制步驟、出錯控制等作出規(guī)定并制定出標準。

    3.1. URL(Uniform Resource Locator):
    統(tǒng)一資源定位符.URL就是資源的地址,位置.通過一個URL能夠找到互聯網上唯一的一個資源.
    URL的基本格式: 協(xié)議://主機地址/路徑
    協(xié)議:不同的協(xié)議代表不同的資源查找方式,資源傳輸方式.

    URL中的常見協(xié)議:
    <1>HTTP:超文本傳輸協(xié)議,在網絡開發(fā)中最常用的協(xié)議.訪問的是遠程的網絡資源.格式:http://...
    <2>IP協(xié)議:
    TCP數據包嵌入IP數據包.IP數據包標頭需要設置雙方的IP地址.發(fā)送方(本機)是:192.168.2.6 ,接收方(百度)是:119.75.218.70
    IP數據包的標頭長度為20字節(jié).加上嵌入的TCP數據包,現在總長度是5000字節(jié)
    <3>file:訪問的時本地計算機上的資源.格式:file://(不要再加主機地址了)
    <4>FTP:訪問的是共享主機的文件資源.格式:ftp://
    <5>TCP協(xié)議:
    TCP數據包標頭需要設置端口,接收方(Baidu)的HTTP端口默認是80,發(fā)送方(本機)的端口是一個隨機生成的1024~65535之間的整數.
    TCP數據包的標頭長度是20字節(jié).加上嵌入的HTTP數據包,現在總長度是4980字節(jié).
    <6>以太網協(xié)議

    IP數據包嵌入以太網數據包的數據部分.以太網數據包的標頭需要設置雙方的MAC地址.發(fā)送方為本機的網卡MAC地址,接收方為網關192.168.2.1的MAC地址(通過ARP協(xié)議得到), 以太網數據包的數據部分,最大長度為1500字節(jié),而現在的IP數據包長度為5000字節(jié).因此,IP數據包必須分割成四個包,因為每個包都有自己的IP標頭(20字節(jié)),所以四個包的IP數據包的長度分別為1500 ,1500, 1500,560 字節(jié).
    <7>mailto:訪問的是電子郵件地址.格式:mailto:
    主機地址:存放資源的主機IP地址(域名).
    路徑:資源在主機中得具體位置.

    3.2. HTTP請求的完整過程:
    <1> 請求: 客戶端發(fā)出請求.向服務器索要數據(操作數據).
    <2> 響應: 服務器對客戶端的請求做出響應.返回客戶端所需要的數據.

    3.3. 包裝一個HTTP請求
    用 NSURLRequest 來包裝一個HTTP請求.可以指定緩存策略和超時時間,緩存策略的選擇:NSURLRequestCachePolicy
    NSURLRequestUseProtocolCachePolicy = 0, // 默認的緩存策略,使用協(xié)議定義. NSURLRequestReloadIgnoringLocalCacheData = 1, // 忽略本地緩存,直接從原始服務器地址下載. NSURLRequestReturnCacheDataElseLoad = 2, // 只有在緩存中不存在數據時,才從原始地址下載 NSURLRequestReturnCacheDataDontLoad = 3, // 只使用緩存數據,如果不存在緩存,則請求失敗. 用于沒有網絡連接的離線模式 NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // 忽略遠程和本地的數據緩存,直接從原始地址下載 NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData = 1, // 忽略緩存,直接從原始服務器地址下載. NSURLRequestReloadRevalidatingCacheData = 5, // 驗證本地數據和遠程數據是否相同,如果不同則下載遠程數據,否則使用本地數據
    網絡緩存數據,保存在SQLite的數據庫中(NSHomeDirectory),

    網絡緩存數據,保存在SQLite的數據庫中(NSHomeDirectory)

    3.4. 發(fā)送請求
    用 NSURLConnection 發(fā)送請求.
    同步方法:
    + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
    異步方法:
    + (void)sendAsynchronousRequest:(NSURLRequest*) request queue:(NSOperationQueue*) queue
    completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler

    4.Socket介紹
    網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,根據連接啟動的方式以及本地套接字要連接的目標,套接字之間的連接過程可以分為三個步驟:服務器監(jiān)聽,客戶端請求,連接確認。
    (1)服務器監(jiān)聽:是服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網絡狀態(tài)。
    (2)客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然后就向服務器端套接字提出連接請求。
    (3)連接確認:是指當服務器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發(fā)給客戶端,一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續(xù)處于監(jiān)聽,繼續(xù)接收其他客戶端套接字的連接請求。

    分步驟創(chuàng)建Socket
    1.創(chuàng)建客戶端Socket socket(<#int#>, <#int#>, <#int#>);
    2.創(chuàng)建服務器Socket struct sockaddr_in serverAddress;
    3.連接到服務器(Socket編程) connect(<#int#>, <#const struct sockaddr *#>, <#socklen_t#>);
    4.發(fā)送數據給服務器 send(<#int#>, <#const void *#>, <#size_t#>, <#int#>)
    5.接收服務器返回的數據 recv(<#int#>, <#void *#>, <#size_t#>, <#int#>)
    6.關閉 Socket close(socketNumber)

    湖北國菱計算機科技有限公司軟件開發(fā)部面向荊州松滋乃止全國客戶,提供軟件開發(fā)、APP開發(fā)、網站建設和網絡應用開發(fā)等服務。我們所關注的一些業(yè)界包括電子商務、電子政務、辦公室自動化、金融服務、公共衛(wèi)生、物聯網和多媒體等。我們的服務可以為客戶提供一個專門的開發(fā)團隊或承接您公司內部的項目,擅長為客戶定制應用程序開發(fā),請點擊瀏覽我們的成功案例。歡迎來電洽談合作:0716-6666211.

    荊州地區(qū)政府網站建設 解決方案 專業(yè)團隊 騰訊第三方平臺 地址:湖北省荊州市沙市區(qū)荊沙大道楚天都市佳園一期C區(qū)29棟112       地址:湖北省松滋市新江口街道才知文化廣場1幢1146-1151室     郵編:434200 聯系電話:0716-6666211     網站編輯部郵箱:business@gl-ns.com 鄂公網安備 42100202000212號 備案號:鄂ICP備2021015094號-1     企業(yè)名稱:湖北國菱計算機科技有限公司
    亚洲色精品Aⅴ一区区三区,少妇中文高清av无码,久久精品这里只有精品99品,无码乱人伦中文视频 99福利资源久久福利资源 国产精品白浆无码流出嗯啊豆