展開(kāi)
            湖北國(guó)聯(lián)計(jì)算機(jī)科技有限公司
          1. 首頁(yè)HOME
          2. 公司簡(jiǎn)介INTRODUCTION
          3. 安全防御DEFENSE
          4. 軟件開(kāi)發(fā)SOFTWARE
          5. 物聯(lián)網(wǎng)IOT
          6. 運(yùn)行維護(hù)SRE
          7. 成功案例CASE
          8. 聯(lián)系我們CONTACT
          9. Software Technology Sharing |技術(shù)分享

            APP開(kāi)發(fā)必須懂的網(wǎng)絡(luò)常識(shí)
            來(lái)源:荊州松滋軟件開(kāi)發(fā) 時(shí)間:2017-05-11

            不忘初心,方得始終。最近很多客戶(hù)都在咨詢(xún)APP定制開(kāi)發(fā),但對(duì)于一些基本的網(wǎng)絡(luò)常識(shí)缺少認(rèn)識(shí),其實(shí)APP開(kāi)發(fā)是一件很?chē)?yán)謹(jǐn)?shù)氖虑?,不管是需求分析還是場(chǎng)景演示,對(duì)開(kāi)發(fā)環(huán)境和開(kāi)發(fā)人員的要求都比較高,了解基本的網(wǎng)絡(luò)常識(shí)對(duì)于開(kāi)發(fā)方案的理解會(huì)更深入透徹,有助于產(chǎn)品定位和服務(wù)品質(zhì)的提升,同時(shí),對(duì)網(wǎng)絡(luò)公司有一個(gè)基本的判斷準(zhǔn)則,避免陷入低價(jià)所帶來(lái)的惡性產(chǎn)品循環(huán)和不必要的成本開(kāi)支,也避免后期運(yùn)營(yíng)中出現(xiàn)的初期愿景和現(xiàn)實(shí)產(chǎn)品的分離。湖北國(guó)菱計(jì)算機(jī)科技有限公司軟件開(kāi)發(fā)部工程師給大家總結(jié)了一些APP開(kāi)發(fā)必須懂的網(wǎng)絡(luò)常識(shí)。


            1、網(wǎng)絡(luò)常用概念


            網(wǎng)絡(luò)是應(yīng)用的靈魂,是所有應(yīng)用的數(shù)據(jù)來(lái)源.離開(kāi)了網(wǎng)絡(luò),我們的應(yīng)用就是一潭死水,網(wǎng)絡(luò)是數(shù)據(jù)交互的媒介,我們通過(guò)網(wǎng)絡(luò)得到服務(wù)器上的數(shù)據(jù),也是通過(guò)網(wǎng)絡(luò)給服務(wù)器傳遞數(shù)據(jù).也就是說(shuō),網(wǎng)絡(luò)的實(shí)質(zhì)就 是是交互數(shù)據(jù),而數(shù)據(jù)交互的媒介就是在網(wǎng)絡(luò)中傳輸二進(jìn)制數(shù)據(jù)流(包括html/圖片/視頻數(shù)據(jù))。


            互聯(lián)網(wǎng)開(kāi)發(fā)的常用概念:

            客戶(hù)端(Client):移動(dòng)設(shè)備(手機(jī)/iPad等手持設(shè)備),客戶(hù)端一般就是前端/前臺(tái)等等.iOS,android開(kāi)發(fā)都是前端開(kāi)發(fā).

            服務(wù)器(Server):為客戶(hù)端提供服務(wù)(比如數(shù)據(jù)/資源等)的機(jī)器---本質(zhì)也是一臺(tái)計(jì)算機(jī)(+服務(wù)器軟件),服務(wù)器開(kāi)發(fā)就是后端/后臺(tái)開(kāi)發(fā).java/php/.net等.

            請(qǐng)求(Request):客戶(hù)端向服務(wù)器索取數(shù)據(jù).

            響應(yīng)(Response):服務(wù)器對(duì)客戶(hù)端請(qǐng)求做出的反應(yīng),一般就是返回?cái)?shù)據(jù)給客戶(hù)端.

            服務(wù)器:按開(kāi)發(fā)階段來(lái)分,分為兩種:

            遠(yuǎn)程服務(wù)器: 外網(wǎng)服務(wù)器.應(yīng)用上線之后供全體用戶(hù)使用的服務(wù)器.速度取決于用戶(hù)的網(wǎng)速和服務(wù)器的性能.

            本地服務(wù)器: 內(nèi)網(wǎng)服務(wù)器,測(cè)試服務(wù)器.開(kāi)發(fā)測(cè)試階段使用的服務(wù)器.供內(nèi)部開(kāi)發(fā)測(cè)試人員使用.速度飛快.

            2.什么是IP地址

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

            3.HTTP請(qǐng)求

            通俗地說(shuō),網(wǎng)絡(luò)協(xié)議就是網(wǎng)絡(luò)之間溝通、交流的橋梁,只有相同網(wǎng)絡(luò)協(xié)議的計(jì)算機(jī)才能進(jìn)行信息的溝通與交流。這就好比人與人之間交流所使用的各種語(yǔ)言一樣,只有使用相同語(yǔ)言才能正常、順利地進(jìn)行交流。從專(zhuān)業(yè)角度定義,網(wǎng)絡(luò)協(xié)議是計(jì)算機(jī)在網(wǎng)絡(luò)中實(shí)現(xiàn)通信時(shí)必須遵守的約定,也就是通信協(xié)議。主要是對(duì)信息傳輸?shù)乃俾?、傳輸代碼、代碼結(jié)構(gòu)、傳輸控制步驟、出錯(cuò)控制等作出規(guī)定并制定出標(biāo)準(zhǔn)。

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

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

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

            3.2. HTTP請(qǐng)求的完整過(guò)程:
            <1> 請(qǐng)求: 客戶(hù)端發(fā)出請(qǐng)求.向服務(wù)器索要數(shù)據(jù)(操作數(shù)據(jù)).
            <2> 響應(yīng): 服務(wù)器對(duì)客戶(hù)端的請(qǐng)求做出響應(yīng).返回客戶(hù)端所需要的數(shù)據(jù).

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

            網(wǎng)絡(luò)緩存數(shù)據(jù),保存在SQLite的數(shù)據(jù)庫(kù)中(NSHomeDirectory)

            3.4. 發(fā)送請(qǐng)求
            用 NSURLConnection 發(fā)送請(qǐng)求.
            同步方法:
            + (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介紹
            網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,根據(jù)連接啟動(dòng)的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過(guò)程可以分為三個(gè)步驟:服務(wù)器監(jiān)聽(tīng),客戶(hù)端請(qǐng)求,連接確認(rèn)。
            (1)服務(wù)器監(jiān)聽(tīng):是服務(wù)器端套接字并不定位具體的客戶(hù)端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)。
            (2)客戶(hù)端請(qǐng)求:是指由客戶(hù)端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶(hù)端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。
            (3)連接確認(rèn):是指當(dāng)服務(wù)器端套接字監(jiān)聽(tīng)到或者說(shuō)接收到客戶(hù)端套接字的連接請(qǐng)求,它就響應(yīng)客戶(hù)端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶(hù)端,一旦客戶(hù)端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽(tīng),繼續(xù)接收其他客戶(hù)端套接字的連接請(qǐng)求。

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

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

            荊州地區(qū)政府網(wǎng)站建設(shè) 解決方案 專(zhuān)業(yè)團(tuán)隊(duì) 騰訊第三方平臺(tái) 地址:湖北省荊州市沙市區(qū)荊沙大道楚天都市佳園一期C區(qū)29棟112       地址:湖北省松滋市新江口街道才知文化廣場(chǎng)1幢1146-1151室     郵編:434200 聯(lián)系電話(huà):0716-6666211     網(wǎng)站編輯部郵箱:business@gl-ns.com 鄂公網(wǎng)安備 42100202000212號(hào) 備案號(hào):鄂ICP備2021015094號(hào)-1     企業(yè)名稱(chēng):湖北國(guó)菱計(jì)算機(jī)科技有限公司
            2020国自产拍精品免费观看,国产经典aⅴ三级观看,国产午夜99视频精品免费播放,亚洲开心网激情五月,91久久精品无码,久久综合香蕉久久久久久久,亚洲中亚洲中文字幕无线乱码,在线播放对白太大了