網(wǎng)絡(luò)層的詳解

參考鏈接

www.cnblogs.com/wendingding/p/3813466.html

www.reibang.com/p/1389677a5840

www.cnblogs.com/meier1205/p/5971313.html

blog.csdn.net/hopedark/article/details/50729763

我相信出去面試的同學經(jīng)常會被問到網(wǎng)絡(luò)層相關(guān)的問題,其實作為一個ios開發(fā),可能接觸這一塊比較少,但是如果想表現(xiàn)自己是一位老程序員,這方面的知識是不可少的.首先上一張圖給大家看看網(wǎng)絡(luò)請求過程.

請求數(shù)據(jù)結(jié)構(gòu)

七層模型介紹(OSI 模型(Open System Interconnection model))

1.物理層:物理層負責最后將信息編碼成電流脈沖或其它信號用于網(wǎng)上傳輸彪笼;eg:RJ45等將數(shù)據(jù)轉(zhuǎn)化成0和1;



2.數(shù)據(jù)鏈路層:數(shù)據(jù)鏈路層通過物理網(wǎng)絡(luò)鏈路提供數(shù)據(jù)傳輸蚂且。不同的數(shù)據(jù)鏈路層定義了不同的網(wǎng)絡(luò)和協(xié) 議特征,其中包括物理編址配猫、網(wǎng)絡(luò)拓撲結(jié)構(gòu)、錯誤校驗杏死、數(shù)據(jù)幀序列以及流控;可以簡單的理解為:規(guī)定了0和1的分包形式泵肄,確定了網(wǎng)絡(luò)數(shù)據(jù)包的形式;

數(shù)據(jù)鏈路層:SLIP淑翼,CSLIP腐巢,PPP,MTU


3.網(wǎng)絡(luò)層:網(wǎng)絡(luò)層負責在源和終點之間建立連接;可以理解為玄括,此處需要確定計算機的位置冯丙,怎么確定?IPv4遭京,IPv6胃惜!

網(wǎng)絡(luò)層:IP,ICMP哪雕,OSPF船殉,EIGRP,IGMP

IP 協(xié)議:是網(wǎng)絡(luò)互連協(xié)議(Internet Protocol)的縮寫斯嚎。它提供了能適應(yīng)各種網(wǎng)絡(luò)硬件的靈活性利虫,對底層網(wǎng)絡(luò)硬件幾乎沒任何要求挨厚,任何一個網(wǎng)絡(luò)只要能夠從一個地點向另一個地點傳送二進制數(shù)據(jù),即可使用IP協(xié)議加入互聯(lián)網(wǎng)絡(luò)了


4.傳輸層:傳輸層向高層提提供可靠的端到端的網(wǎng)絡(luò)數(shù)據(jù)流服務(wù),可以理解為:每一個應(yīng)用程序都會在網(wǎng)卡注冊一個端口號糠惫,該層就是端口與端口的通信疫剃!常用的(TCP/IP)協(xié)議;

傳輸層:TCP硼讽,UDP

說說關(guān)于UDP/TCP的區(qū)別巢价?

UDP: 是用戶數(shù)據(jù)報協(xié)議: 主要用在實時性要求高以及對質(zhì)量相對較弱的地方,但面對現(xiàn)在高質(zhì)量的線路不是容易丟包除非是一些擁塞條件下, 如流媒體

TCP: 是傳輸控制協(xié)議:是面連接的,那么運行環(huán)境必然要求其可靠性不可丟包有良好的擁塞控制機制如http ftp telnet 等

什么是三次握手與四次揮手?

三次握手實現(xiàn)的過程:

第一次握手:建立連接時理郑,客戶端發(fā)送同步序列編號到服務(wù)器蹄溉,并進入發(fā)送狀態(tài)咨油,等待服務(wù)器確認

第二次:服務(wù)器收到同步序列編號您炉,確認并同時自己也發(fā)送一個同步序列編號+確認標志,此時服務(wù)器進入接收狀態(tài)

第三次:客戶端收到服務(wù)器發(fā)送的包役电,并向服務(wù)器發(fā)送確認標志赚爵,隨后鏈接成功。

注意:是在鏈接成功后在進行數(shù)據(jù)傳輸法瑟。

四次揮手:

第一次: 客戶端向服務(wù)器發(fā)送一個帶有結(jié)束標記的報文冀膝。

第二次:服務(wù)器收到報文后,向客戶端發(fā)送一個確認序號霎挟,同時通知自己相應(yīng)的應(yīng)用程序:對方要求關(guān)閉連接

第三次: 服務(wù)器向客戶端發(fā)送一個帶有結(jié)束標記的報文窝剖。

第四次: 客戶端收到報文后,向服務(wù)器發(fā)送一個確認序號酥夭。鏈接關(guān)閉赐纱。


5.會話層:會話層建立、管理和終止表示層與實體之間的通信會話熬北;建立一個連接(自動的手機信息疙描、自動的網(wǎng)絡(luò)尋址);









6.表示層:表示層提供多種功能用于應(yīng)用層數(shù)據(jù)編碼和轉(zhuǎn)化,以確保以一個系統(tǒng)應(yīng)用層發(fā)送的信息 可以被另一個系統(tǒng)應(yīng)用層識別;可以理解為:解決不同系統(tǒng)之間的通信,eg:Linux下的QQ和Windows下的QQ可以通信讶隐;








7.應(yīng)用層:OSI 的應(yīng)用層協(xié)議:包括文件的傳輸起胰、訪問及管理協(xié)議(FTAM) ,以及文件虛擬終端協(xié)議(VIP)和公用管理系統(tǒng)信息(CMIP)等;

應(yīng)用層:TFTP,HTTP巫延,SNMP效五,F(xiàn)TP,SMTP炉峰,DNS火俄,Telnet 等等

一、HTTP 協(xié)議:是超文本傳輸協(xié)議讲冠,對應(yīng)于應(yīng)用層瓜客,用于如何封裝數(shù)據(jù),http 為短連接:客戶端發(fā)送請求都需要服務(wù)器端回送響應(yīng).請求結(jié)束后,主動釋放鏈接,因此為短連接谱仪。通常的做法是玻熙,不需要任何數(shù)據(jù),也要保持每隔一段時間向服務(wù)器發(fā)送"保持連接"的請求疯攒。這樣可以保證客戶端在服務(wù)器端是"上線"狀態(tài),HTTP連接使用的是"請求-響應(yīng)"方式嗦随,不僅在請求時建立連接,而且客戶端向服務(wù)器端請求后敬尺,服務(wù)器才返回數(shù)據(jù)枚尼。

二、FTP 協(xié)議 :是文件傳輸協(xié)議砂吞,是File Transfer Protocol的簡稱署恍,它的作用是用于控制互聯(lián)網(wǎng)上文件的雙向傳輸,因此一定不會是即時聊天使用的蜻直;UDP是面向無連接的傳輸層協(xié)議盯质,數(shù)據(jù)傳輸是不可靠的,它只管發(fā)概而,不管收不收得到呼巷;TCP是面向連接的,可靠的傳輸層協(xié)議赎瑰;HTTP是超文本傳輸協(xié)議王悍,對應(yīng)于應(yīng)用層,而HTTP是基于TCP的餐曼。


二.網(wǎng)絡(luò)請求篇---URL

? ? ? ? ??客戶端都是通過一個URL去請求數(shù)據(jù),那我們就根據(jù)這個URL去解讀這個請求的過程以 及涉及的知識,.URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符),通過1個URL压储,能找到互聯(lián)網(wǎng)上唯一的1個資源,URL就是資源的地址、位置.互聯(lián)網(wǎng)上的每個資源都有一個唯一的URL.

?一. URL 基本介紹

請求格式

二.URL中常見的協(xié)議介紹

(1)HTTP ?

超文本傳輸協(xié)議晋辆,訪問的是遠程的網(wǎng)絡(luò)資源渠脉,格式是http://

1、HTTP協(xié)議簡介

不管是移動客戶端還是PC端瓶佳,訪問遠程的網(wǎng)絡(luò)資源經(jīng)常使用HTTP協(xié)議,訪問百度主頁:http://www.baidu.com,獲得新浪的微博數(shù)據(jù),獲得大眾點評的團購數(shù)據(jù).

2.HTTP協(xié)議的作用

?HTTP的全稱是Hypertext Transfer Protocol芋膘,超文本傳輸協(xié)議

(1)規(guī)定客戶端和服務(wù)器之間的數(shù)據(jù)傳輸格式

(2)讓客戶端和服務(wù)器能有效地進行數(shù)據(jù)溝通

3.HTTP的通信過程

要想使用HTTP協(xié)議向服務(wù)器索取數(shù)據(jù),得先了解HTTP通信的完整過程

完整的http通信可以分為2大步驟

(1)請求:客戶端向服務(wù)器索要數(shù)據(jù)

(2)響應(yīng):服務(wù)器返回客戶端相應(yīng)的數(shù)據(jù)

4.HTTP通信過程 - 請求和響應(yīng)

? 4.1.HTTP通信過程 - 請求

HTTP協(xié)議規(guī)定:1個完整的由客戶端發(fā)給服務(wù)器的HTTP請求中包含以下內(nèi)容

請求行:包含了請求方法霸饲、請求資源路徑为朋、HTTP協(xié)議版本

GET /MJServer/resources/images/1.jpg HTTP/1.1

請求頭:包含了對客戶端的環(huán)境描述、客戶端請求的主機地址等信息

Host: 192.168.1.105:8080// 客戶端想訪問的服務(wù)器主機地址

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0// 客戶端的類型厚脉,客戶端的軟件環(huán)境

Accept: text/html, */*// 客戶端所能接收的數(shù)據(jù)類型

Accept-Language: zh-cn// 客戶端的語言環(huán)境

Accept-Encoding: gzip// 客戶端支持的數(shù)據(jù)壓縮格式

請求體:客戶端發(fā)給服務(wù)器的具體數(shù)據(jù)习寸,比如文件數(shù)據(jù)

4.2.HTTP通信過程 - 響應(yīng)

客戶端向服務(wù)器發(fā)送請求,服務(wù)器應(yīng)當做出響應(yīng)傻工,即返回數(shù)據(jù)給客戶端

HTTP協(xié)議規(guī)定:1個完整的HTTP響應(yīng)中包含以下內(nèi)容:

狀態(tài)行:包含了HTTP協(xié)議版本霞溪、狀態(tài)碼孵滞、狀態(tài)英文名稱

HTTP/1.1 200 OK

響應(yīng)頭:包含了對服務(wù)器的描述、對返回數(shù)據(jù)的描述

Server: Apache-Coyote/1.1// 服務(wù)器的類型

Content-Type: image/jpeg// 返回數(shù)據(jù)的類型

Content-Length: 56811// 返回數(shù)據(jù)的長度

Date: Mon, 23 Jun 2014 12:54:52 GMT// 響應(yīng)的時間

實體內(nèi)容:服務(wù)器返回給客戶端的具體數(shù)據(jù)鸯匹,比如文件數(shù)據(jù)

5.請求方法

在HTTP/1.1協(xié)議中坊饶,定義了8種發(fā)送http請求的方法

GET、POST殴蓬、OPTIONS匿级、HEAD、PUT染厅、DELETE痘绎、TRACE、CONNECT肖粮、PATCH

根據(jù)HTTP協(xié)議的設(shè)計初衷孤页,不同的方法對資源有不同的操作方式

PUT :增

DELETE :刪

POST:改

GET:查

提示:最常用的是GET和POST(實際上GET和POST都能辦到增刪改查)

2.get和post請求

要想使用GET和POST請求跟服務(wù)器進行交互,得先了解一個概念:參數(shù)就是傳遞給服務(wù)器的具體數(shù)據(jù)尿赚,比如登錄時的帳號散庶、密碼

GET和POST對比:GET和POST的主要區(qū)別表現(xiàn)在數(shù)據(jù)傳遞上

GET

在請求URL后面以?的形式跟上發(fā)給服務(wù)器的參數(shù)蕉堰,多個參數(shù)之間用&隔開凌净,比如http://ww.test.com/login?username=123&pwd=234&type=JSON

注意:由于瀏覽器和服務(wù)器對URL長度有限制,因此在URL后面附帶的參數(shù)是有限制的屋讶,通常不能超過1KB

POST

發(fā)給服務(wù)器的參數(shù)全部放在請求體中

理論上冰寻,POST傳遞的數(shù)據(jù)量沒有限制(具體還得看服務(wù)器的處理能力)

3.GET和POST的選擇

? ?選擇GET和POST的建議

(1)如果要傳遞大量數(shù)據(jù),比如文件上傳皿渗,只能用POST請求

(2)GET的安全性比POST要差些斩芭,如果包含機密\敏感信息,建議用POST

(3)如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢)乐疆,建議使用GET

(4)如果是增加划乖、修改、刪除數(shù)據(jù)挤土,建議使用POST.


三琴庵、Socket 連接

要想明白 Socket,必須要理解 TCP 連接仰美。

TCP 三次握手:握手過程中并不傳輸數(shù)據(jù)迷殿,在握手后服務(wù)器與客戶端才開始傳輸數(shù)據(jù),理想狀態(tài)下咖杂,TCP 連接一旦建立庆寺,在通訊雙方中的任何一方主動斷開連接之前 TCP 連接會一直保持下去。

Socket?是對 TCP/IP 協(xié)議的封裝诉字,Socket 只是個接口不是協(xié)議懦尝,通過 Socket 我們才能使用 TCP/IP 協(xié)議知纷,除了 TCP,也可以使用 UDP 協(xié)議來傳遞數(shù)據(jù)陵霉。

創(chuàng)建 Socket?連接的時候屈扎,可以指定傳輸層協(xié)議,可以是 TCP 或者 UDP撩匕,當用 TCP 連接腰奋,該Socket就是個TCP連接,反之殃恒。

Socket?原理

Socket?連接,至少需要一對套接字吞滞,分為 clientSocket,serverSocket 連接分為3個步驟:

(1) 服務(wù)器監(jiān)聽:服務(wù)器并不定位具體客戶端的套接字扁凛,而是時刻處于監(jiān)聽狀態(tài)忍疾;

(2) 客戶端請求:客戶端的套接字要描述它要連接的服務(wù)器的套接字,提供地址和端口號谨朝,然后向服務(wù)器套接字提出連接請求卤妒;

(3) 連接確認:當服務(wù)器套接字收到客戶端套接字發(fā)來的請求后,就響應(yīng)客戶端套接字的請求,并建立一個新的線程,把服務(wù)器端的套接字的描述發(fā)給客戶端字币。一旦客戶端確認了此描述则披,就正式建立連接。而服務(wù)器套接字繼續(xù)處于監(jiān)聽狀態(tài)洗出,繼續(xù)接收其他客戶端套接字的連接請求.

Socket為長連接:通常情況下Socket 連接就是 TCP 連接士复,因此 Socket 連接一旦建立,通訊雙方開始互發(fā)數(shù)據(jù)內(nèi)容,直到雙方斷開連接翩活。在實際應(yīng)用中阱洪,由于網(wǎng)絡(luò)節(jié)點過多,在傳輸過程中菠镇,會被節(jié)點斷開連接冗荸,因此要通過輪詢高速網(wǎng)絡(luò),該節(jié)點處于活躍狀態(tài)利耍。

很多情況下蚌本,都是需要服務(wù)器端向客戶端主動推送數(shù)據(jù),保持客戶端與服務(wù)端的實時同步堂竟。

若雙方是 Socket 連接魂毁,可以由服務(wù)器直接向客戶端發(fā)送數(shù)據(jù)。

若雙方是 HTTP 連接出嘹,則服務(wù)器需要等客戶端發(fā)送請求后席楚,才能將數(shù)據(jù)回傳給客戶端。

因此税稼,客戶端定時向服務(wù)器端發(fā)送請求烦秩,不僅可以保持在線垮斯,同時也詢問服務(wù)器是否有新數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端只祠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兜蠕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抛寝,更是在濱河造成了極大的恐慌熊杨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盗舰,死亡現(xiàn)場離奇詭異晶府,居然都是意外死亡,警方通過查閱死者的電腦和手機钻趋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門川陆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛮位,你說我怎么就攤上這事较沪。” “怎么了失仁?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵尸曼,是天一觀的道長。 經(jīng)常有香客問我陶因,道長骡苞,這世上最難降的妖魔是什么垂蜗? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任楷扬,我火速辦了婚禮,結(jié)果婚禮上贴见,老公的妹妹穿的比我還像新娘烘苹。我一直安慰自己,他們只是感情好片部,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布镣衡。 她就那樣靜靜地躺著,像睡著了一般档悠。 火紅的嫁衣襯著肌膚如雪廊鸥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天辖所,我揣著相機與錄音惰说,去河邊找鬼。 笑死缘回,一個胖子當著我的面吹牛吆视,可吹牛的內(nèi)容都是我干的典挑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼啦吧,長吁一口氣:“原來是場噩夢啊……” “哼您觉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起授滓,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤琳水,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后般堆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炫刷,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年郁妈,在試婚紗的時候發(fā)現(xiàn)自己被綠了浑玛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡噩咪,死狀恐怖顾彰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胃碾,我是刑警寧澤涨享,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站仆百,受9級特大地震影響厕隧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俄周,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一吁讨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峦朗,春花似錦建丧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尺铣,卻和暖如春拴曲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凛忿。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工澈灼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侄非。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓蕉汪,卻偏偏與公主長得像流译,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子者疤,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容