協(xié)議

ISO

上大學的時候?qū)W計算機記得有個ISO的網(wǎng)絡模型臼朗,七層劃分比較詳細胸蛛,盜圖如下:

image.png

看到上邊的圖是不是比較頭疼,其實從我們常用的協(xié)議來講渠抹,應該是這個樣子蝙昙。TCP/IP協(xié)議參考模型把所有的TCP/IP系列協(xié)議歸類到四個抽象層中:
  應用層:TFTP,HTTP逼肯,SNMP耸黑,F(xiàn)TP,SMTP篮幢,DNS大刊,Telnet 等
  傳輸層:TCP,UDP
  網(wǎng)絡層:IP三椿,ICMP缺菌,OSPF,EIGRP搜锰,IGMP
  數(shù)據(jù)鏈路層:SLIP伴郁,CSLIP,PPP蛋叼,MTU

那么焊傅,什么是TCP/IP、UDP呢狈涮?
TCP/IP(Transmission Control Protocol/Internet Protocol)即傳輸控制協(xié)議/網(wǎng)間協(xié)議狐胎,是一個工業(yè)標準的協(xié)議集,它是為廣域網(wǎng)(WANs)設計的歌馍。
UDP(User Data Protocol握巢,用戶數(shù)據(jù)報協(xié)議)是與TCP相對應的協(xié)議。它是屬于TCP/IP協(xié)議族中的一種松却。

那么網(wǎng)絡之間是如何通信的呢暴浦?這些都得靠socket,那么問題來了晓锻,什么是socket歌焦?
Socket是應用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口砚哆。在設計模式中独撇,Socket其實就是一個門面模式,它把復雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說券勺,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù)灿里,以符合指定的協(xié)議关炼。

http

HTTP請求/響應報文
HTTP請求報文組成:請求行+請求頭+請求體
HTTP響應報文組成:響應行+響應頭+響應體
請求行: 請求方法(HEAD/GET/POST) + 請求URL + HTTP協(xié)議版本
響應行: HTTP協(xié)議版本 + 狀態(tài)碼 + 狀態(tài)碼描述
請求頭: 比如客戶端的Cookie和User-Agent就放在這里.
響應頭: 比如服務器的Set-Cookie和Server信息就放在這里.
請求體: 比如客戶端POST的數(shù)據(jù)就放在這里(對比:GET的數(shù)據(jù)放在請求行的URL里).
響應體: 比如服務器返回的HTML和JSON數(shù)據(jù)就放在這里.

HTTPS

? 安全超文本傳輸協(xié)議(Secure Hypertext Transfer Protocol),HTTPS實際上應用了Netscape的完全套接字層(SSL) 作為HTTP應用層的子層(HTTPS使用端口443匣吊,而不是象HTTP那樣使用端口80來和TCP/IP進行通信)儒拂,SSL使用40位關鍵字作為RC4流加密算法,這對于商業(yè)信息的加密是合適的色鸳。HTTPS和SSL支持使用X.509數(shù)字認證社痛,如果需要的話用戶可以確認發(fā)送者是誰。

Http和Https區(qū)別

一命雀、https協(xié)議需要到ca申請證書蒜哀,一般免費證書很少,需要交費吏砂。
  二撵儿、http是超文本傳輸協(xié)議,信息是明文傳輸狐血,https 則是具有安全性的ssl加密傳輸協(xié)議淀歇。
  三、http和https使用的是完全不同的連接方式匈织,用的端口也不一樣浪默,前者是80,后者是443缀匕。
  四纳决、http的連接很簡單,是無狀態(tài)的弦追;HTTPS協(xié)議是由SSL+HTTP協(xié)議構建的可進行加密傳輸岳链、身份認證、完整性保護劲件,即HTTP+ 加密 + 認證 +完整性保護 = HTTPS掸哑,比http協(xié)議安全。

? 五零远、HTTP的缺點:通信使用明文苗分,內(nèi)容可能被竊聽;不驗證通信方身份牵辣,有可能遭遇偽裝(跨站點請求偽造)摔癣;無法證明報文的完整性,有可能已被篡改(運營商劫持)

TCP

HTTP本身是應用層協(xié)議,協(xié)議本身并不約束傳輸層用的择浊。而HTTP是一個基于TCP的協(xié)議戴卜,TCP是一種可靠的傳輸層協(xié)議,有三次握手琢岩,四次揮手投剥。我們主要看一下TCP和UDP吧!

首先看下TCP的三次握手和四次揮手:

先看下名詞:

序列號seq:占4個字節(jié)担孔,用來標記數(shù)據(jù)段的順序江锨,TCP把連接中發(fā)送的所有數(shù)據(jù)字節(jié)都編上一個序號,第一個字節(jié)的編號由本地隨機產(chǎn)生糕篇;給字節(jié)編上序號后啄育,就給每一個報文段指派一個序號;序列號seq就是這個報文段中的第一個字節(jié)的數(shù)據(jù)編號拌消。

確認號ack:占4個字節(jié)挑豌,期待收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號;序列號表示報文段攜帶數(shù)據(jù)的第一個字節(jié)的編號拼坎;而確認號指的是期望接收到下一個字節(jié)的編號浮毯;因此當前報文段最后一個字節(jié)的編號+1即為確認號。

確認ACK:占1位泰鸡,僅當ACK=1時债蓝,確認號字段才有效。ACK=0時盛龄,確認號無效

同步SYN:連接建立時用于同步序號饰迹。當SYN=1,ACK=0時表示:這是一個連接請求報文段余舶。若同意連接啊鸭,則在響應報文段中使得SYN=1,ACK=1匿值。因此赠制,SYN=1表示這是一個連接請求,或連接接受報文挟憔。SYN這個標志位只有在TCP建產(chǎn)連接時才會被置1钟些,握手完成后SYN標志位被置0。

終止FIN:用來釋放一個連接绊谭。FIN=1表示:此報文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢政恍,并要求釋放運輸連接

image.png

(建立會話)三次握手:

三次握手.png

(結束會話)四次揮手:


四次揮手.png

簡單來講:

三次握手(three-way handshake),建立TCP連接時會發(fā)生:
UserAgent > Server [SYN] 在么
Server > UserAgent [SYN, ACK] 在
UserAgent > Server [ACK] 知道了

四次揮手(four-way handshake)达传,關閉TCP連接時會發(fā)生:
UserAgent > Server [FIN] 我要關閉連接了
Server > UserAgent [ACK] 知道了,等我發(fā)完包先
Server > UserAgent [FIN] 我也關閉連接了
UserAgent > Server [ACK] 好的,知道了

HTTP協(xié)議與TCP/IP協(xié)議的關系

HTTP的長連接和短連接本質(zhì)上是TCP長連接和短連接篙耗。HTTP屬于應用層協(xié)議迫筑,在傳輸層使用TCP協(xié)議,在網(wǎng)絡層使用IP協(xié)議宗弯。IP協(xié)議主要解決網(wǎng)絡路由和尋址問題脯燃,TCP協(xié)議主要解決如何在IP層之上可靠的傳遞數(shù)據(jù)包,使在網(wǎng)絡上的另一端收到發(fā)端發(fā)出的所有包蒙保,并且順序與發(fā)出順序一致曲伊。TCP有可靠,面向連接的特點追他。
如何理解HTTP協(xié)議是無狀態(tài)的
  HTTP協(xié)議是無狀態(tài)的,指的是協(xié)議對于事務處理沒有記憶能力岛蚤,服務器不知道客戶端是什么狀態(tài)邑狸。也就是說,打開一個服務器上的網(wǎng)頁和你之前打開這個服務器上的網(wǎng)頁之間沒有任何聯(lián)系涤妒。HTTP是一個無狀態(tài)的面向連接的協(xié)議单雾,無狀態(tài)不代表HTTP不能保持TCP連接,更不能代表HTTP使用的是UDP協(xié)議(無連接)她紫。

TCP與UDP的區(qū)別

? 1硅堆、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接

? 2贿讹、TCP提供可靠的服務渐逃。也就是說,通過TCP連接傳送的數(shù)據(jù)民褂,無差錯茄菊,不丟失,不重復赊堪,且按序到達;UDP盡最大努力交付面殖,即不保證可靠交付

? 3、TCP面向字節(jié)流哭廉,實際上是TCP把數(shù)據(jù)看成一連串無結構的字節(jié)流;UDP是面向報文的脊僚,UDP沒有擁塞控制,因此網(wǎng)絡出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應用很有用遵绰,如IP電話辽幌,實時視頻會議等)

? 4、每一條TCP連接只能是點到點的;UDP支持一對一街立,一對多舶衬,多對一和多對多的交互通信

? 5、TCP首部開銷20字節(jié);UDP的首部開銷小赎离,只有8個字節(jié)

? 6逛犹、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道

本文只做學習參考,如有任何不準確的地方歡迎指正虽画。

我的郵箱:

  • lulongji2011@163.com
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舞蔽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子码撰,更是在濱河造成了極大的恐慌渗柿,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脖岛,死亡現(xiàn)場離奇詭異朵栖,居然都是意外死亡,警方通過查閱死者的電腦和手機柴梆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門陨溅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绍在,你說我怎么就攤上這事门扇。” “怎么了偿渡?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵臼寄,是天一觀的道長。 經(jīng)常有香客問我溜宽,道長吉拳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任适揉,我火速辦了婚禮合武,結果婚禮上,老公的妹妹穿的比我還像新娘涡扼。我一直安慰自己稼跳,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布吃沪。 她就那樣靜靜地躺著汤善,像睡著了一般。 火紅的嫁衣襯著肌膚如雪票彪。 梳的紋絲不亂的頭發(fā)上红淡,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音降铸,去河邊找鬼在旱。 笑死,一個胖子當著我的面吹牛推掸,可吹牛的內(nèi)容都是我干的桶蝎。 我是一名探鬼主播驻仅,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼登渣!你這毒婦竟也來了噪服?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胜茧,失蹤者是張志新(化名)和其女友劉穎粘优,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呻顽,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡雹顺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廊遍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片无拗。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昧碉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揽惹,我是刑警寧澤被饿,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站搪搏,受9級特大地震影響狭握,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疯溺,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一论颅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧囱嫩,春花似錦恃疯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸳碧,卻和暖如春盾鳞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞻离。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工腾仅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人套利。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓推励,卻偏偏與公主長得像鹤耍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吹艇,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354