OSI/TCP/IP深入淺出

一.OSI七層網(wǎng)絡(luò)模型—Open System Interconnection

OSI 功能 TCP/IP協(xié)議
應(yīng)用層(Application Layer) 面向計(jì)算機(jī)用戶天试,提供應(yīng)用程序和網(wǎng)絡(luò)之間的接口质礼,向用戶提供服務(wù),完成用戶希望在網(wǎng)上完成的各種工作 HTTP宣蠕,HTTPS,F(xiàn)TP,TELNET,SSH退唠,SMTP,POP3等
表示層(Presentation Layer) 處理來(lái)自應(yīng)用層的的命令和數(shù)據(jù)荤胁,對(duì)各種語(yǔ)法解釋?zhuān)凑找?guī)格傳給會(huì)話層瞧预。處理編碼,數(shù)據(jù)可是轉(zhuǎn)換和加密解密 沒(méi)有協(xié)議
會(huì)話層(Session Layer) 用戶應(yīng)用程序和網(wǎng)絡(luò)之間的接口仅政,向兩個(gè)實(shí)體表示層提供連接和連接方法垢油,不同實(shí)體之間的表示層連接叫做會(huì)話,因此主要功能是維護(hù)和協(xié)調(diào)會(huì)話之間的數(shù)據(jù)通信 沒(méi)有協(xié)議
傳輸層(Transport Layer) 為會(huì)話層和網(wǎng)絡(luò)層提供傳輸服務(wù)圆丹,從會(huì)話層獲得數(shù)據(jù)滩愁,在必要時(shí)進(jìn)行分割,然后傳送給網(wǎng)絡(luò)層辫封,主要起到建立硝枉,維護(hù)和取消傳輸連接功能,負(fù)責(zé)兩節(jié)點(diǎn)的可靠傳輸 TCP倦微、UDP
網(wǎng)絡(luò)層(Network Layer) 通過(guò)路由算法(兩節(jié)點(diǎn)之間可能有多條路徑)妻味,為報(bào)文選擇最適當(dāng)?shù)穆窂剑诰W(wǎng)絡(luò)層數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)包欣福,通過(guò)路徑選擇等控制责球,將信息從一個(gè)網(wǎng)絡(luò)設(shè)備傳送到另一個(gè)網(wǎng)絡(luò)設(shè)備 IP、ICMP拓劝、RIP雏逾、OSPF、BGP郑临、IGMP等
數(shù)據(jù)鏈路層(Data Link Layer) 數(shù)據(jù)鏈路層的數(shù)據(jù)傳輸單元成為幀校套,就是將網(wǎng)絡(luò)層轉(zhuǎn)發(fā)的數(shù)據(jù)封裝為幀,傳輸給物理層牧抵,以及分析物理層傳輸過(guò)來(lái)的數(shù)據(jù)幀 SLIP、CSLIP、PPP犀变、ARP妹孙、RARP、MTU等
物理層(Physical Layer) 為數(shù)據(jù)鏈路層提供數(shù)據(jù)幀和接收數(shù)據(jù)幀然后管理電腦通信設(shè)備和網(wǎng)絡(luò)媒體之間的互通获枝。包括了針腳蠢正、電壓、線纜規(guī)范省店、集線器嚣崭、中繼器、網(wǎng)卡懦傍、主機(jī)適配器等 ISO2110等

二 .TCP/IP模型

OSI TCP/IP 協(xié)議
應(yīng)用層/表示層/會(huì)話層 應(yīng)用層 HTTP雹舀、FTP、TFTP粗俱、SMIP说榆、SNMP、DNS
傳輸層 傳輸層 TCP寸认、UDP
網(wǎng)絡(luò)層 網(wǎng)絡(luò)層 ICMP签财、IGMP、IP偏塞、ARP唱蒸、RARP
數(shù)據(jù)鏈路層/物理層 網(wǎng)絡(luò)接口層 由底層網(wǎng)絡(luò)定義協(xié)議

三.TCP/IP分層模型圖

tcp圖解
  • 鏈路層—網(wǎng)絡(luò)接口層

    網(wǎng)絡(luò)接口層是TCP/IP模型的最底層,負(fù)責(zé)接收從上一層交來(lái)的數(shù)據(jù)報(bào)并將數(shù)據(jù)報(bào)通過(guò)底層的物理網(wǎng)絡(luò)發(fā)送出去灸叼,比較常見(jiàn)的就是設(shè)備的驅(qū)動(dòng)程序神汹。ARP(地址解析協(xié)議)和RARP(逆地址解析協(xié)議)是某些網(wǎng)絡(luò)接口(如以太網(wǎng)和令牌環(huán)網(wǎng))使用的特殊協(xié)議,用來(lái)轉(zhuǎn)換IP層和網(wǎng)絡(luò)接口層使用的地址

  • 網(wǎng)絡(luò)層

    對(duì)應(yīng)OSI網(wǎng)絡(luò)層怜姿,負(fù)責(zé)數(shù)據(jù)包裝慎冤、尋址、路由和交換錯(cuò)誤報(bào)文沧卢。只管傳送數(shù)據(jù)蚁堤,不管成功與否

    IP網(wǎng)絡(luò)協(xié)議一種不可靠的服務(wù),快速將源節(jié)點(diǎn)送到目標(biāo)節(jié)點(diǎn)但狭,被TCP/UDP使用披诗,TCP和UDP的每組數(shù)據(jù)都通過(guò)端系統(tǒng)和每個(gè)中間路由器中的IP層在互聯(lián)網(wǎng)中進(jìn)行傳輸。

  • 傳輸層

    位于應(yīng)用層和網(wǎng)絡(luò)接口層之間立磁,為兩臺(tái)主機(jī)提供端到端的通信呈队,在TCP/IP協(xié)議族中,有兩個(gè)互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)唱歧。

    TCP為兩臺(tái)主機(jī)提供高可靠性的數(shù)據(jù)通信宪摧,如圖:

tcpport

TCP首部最小為20字節(jié)粒竖,這20字節(jié)分為5行,每行4個(gè)字節(jié)也就是32個(gè)位几于。

  • 第一行是源端口號(hào)和目標(biāo)端口號(hào)蕊苗,分別占用16位,也就是端口號(hào)最大是2^16沿彭,所以端口號(hào)的范圍是0~65536

  • 第二行朽砰,第三行分別是32位序列號(hào)和32位確認(rèn)號(hào),在建立連接時(shí)喉刘,計(jì)算機(jī)生成一個(gè)隨機(jī)序列號(hào)作為初始值瞧柔,傳遞給目標(biāo),當(dāng)對(duì)方接收完畢之后睦裳,接收端會(huì)返回一個(gè)32位確認(rèn)應(yīng)答號(hào)是序列號(hào)加數(shù)據(jù)長(zhǎng)度造锅,當(dāng)發(fā)送端收到確認(rèn)應(yīng)答號(hào)后,用來(lái)確認(rèn)這個(gè)位置以前所有數(shù)據(jù)都被正常接收推沸,否則將會(huì)從新連接發(fā)送

  • 第四行主要分為兩大部分备绽,左側(cè)16位分別是4位首首部長(zhǎng)度,如果沒(méi)有可選字段鬓催,那這里的值就是5肺素,表示TCP首都的長(zhǎng)度為20字節(jié),也就是說(shuō)5行x每行32bit宇驾。一位8bit倍靡,所以就是5x4=20字節(jié)。然后是6位保留用作未來(lái)使用课舍,暫時(shí)都為0.

    然后是6位控制位塌西,連接,傳輸和斷開(kāi)都受到這六個(gè)控制位的指揮

    • URG (urgent緊急) — 緊急標(biāo)志位筝尾,表示的是此報(bào)文段中有緊急數(shù)據(jù)捡需,將緊急數(shù)據(jù)排在普通數(shù)據(jù)的前面;當(dāng)接受端收到此報(bào)文后后必須先處理緊急數(shù)據(jù)筹淫,而后再處理普通數(shù)據(jù)站辉。 通常用來(lái)暫時(shí)中斷通信
    • ACK (acknowledgement確認(rèn)) — 置1時(shí)表示確認(rèn)號(hào)合法,為0表示數(shù)據(jù)段不包含確認(rèn)信息损姜,確認(rèn)號(hào)被忽略
    • PSH (push推送) — 置1時(shí)請(qǐng)求的報(bào)文在接收方收到時(shí)饰剥,會(huì)盡快交付接收應(yīng)用進(jìn)程,而不在等到整個(gè)緩存區(qū)都填滿后再交付給應(yīng)用進(jìn)程
    • RST (reset重置) — 置1時(shí)重新連接摧阅,表示出現(xiàn)錯(cuò)誤汰蓉,需要釋放連接,再重新建立連接
    • SYN (synchronous同步) — 置1時(shí)連接請(qǐng)求或同意報(bào)文棒卷,當(dāng)SYN=1而ACK=0時(shí)顾孽,表明這是一個(gè)連接請(qǐng)求報(bào)文段祝钢。對(duì)方若同意建立連接,則應(yīng)在響應(yīng)的報(bào)文段中使SYN=1和ACK=1
    • FIN (FINis終止) — 釋放連接若厚,提出斷開(kāi)連接的一方將FIN置為1表示斷開(kāi)連接

    然后第二部分是16位窗口大小

    • 窗口 — 指對(duì)于發(fā)送報(bào)文段一方而言的接收窗口太颤。 窗口值 — 則是告訴發(fā)送方,從報(bào)文段首部的確認(rèn)號(hào)算起盹沈,接收方目前允許對(duì)方發(fā)送的數(shù)據(jù)量
  • 第五行分別為16位校驗(yàn)和、16位緊急指針

    • 16位校驗(yàn)和 — 發(fā)送端計(jì)算校驗(yàn)和吃谣,接收端進(jìn)行檢驗(yàn)計(jì)算和乞封,如果兩次校驗(yàn)一致表示數(shù)據(jù)正確,否則認(rèn)為數(shù)據(jù)被破壞岗憋,接收端將丟棄該數(shù)據(jù)肃晚,主要用來(lái)差錯(cuò)控制
    • 16位緊急指針 — 當(dāng)URG置為1時(shí),指向后面優(yōu)先數(shù)據(jù)仔戈,URG為0時(shí)关串,則無(wú)效作為填充,主要用來(lái)加快處理標(biāo)識(shí)為URG的緊急數(shù)據(jù)
  • 可選項(xiàng) — TCP頭部長(zhǎng)度最多為60字節(jié)监徘,所以可選項(xiàng)最多為40字節(jié)晋修,在這里不做太多陳述,具體可查閱TCP頭部選項(xiàng)

  • 應(yīng)用層

    應(yīng)用層是我們經(jīng)常接觸使用的部分凰盔,比如常用的http協(xié)議墓卦、ftp協(xié)議(文件傳輸協(xié)議)、snmp(網(wǎng)絡(luò)管理協(xié)議)户敬、telnet(遠(yuǎn)程登錄協(xié)議)落剪、smtp(簡(jiǎn)單郵件傳輸協(xié)議)、dns(域名解析)尿庐,主要是面向用戶的交互的忠怖。這里的應(yīng)用層集成了osi分層模型中 的應(yīng)用、表示抄瑟、會(huì)話層三層的功能凡泣。

TCP三次握手,四次揮手

  • TCP是面向連接的協(xié)議锐借,它在源點(diǎn)和終點(diǎn)之間建立虛擬連接问麸,而不是物理連接
  • 在數(shù)據(jù)通信之前,發(fā)送端與接收端要先建立連接钞翔,等數(shù)據(jù)發(fā)送結(jié)束后严卖,雙方再斷開(kāi)連接
  • TCP連接的每一方都是由一個(gè)IP地址和一個(gè)端口組成
TCP連接圖
  • 首先建立連接,客戶端連接服務(wù)端布轿,發(fā)送32位序列號(hào)seq=x哮笆,并且SYN置1来颤,服務(wù)端監(jiān)聽(tīng)客戶端發(fā)送的序列號(hào),然后發(fā)送32位確認(rèn)響應(yīng)swq=y和ack=x+1稠肘,并將SYN福铅、ACK置1,然后客戶端接收以后项阴,說(shuō)明服務(wù)端接收成功滑黔,然后再返回ack=y+1,表示客戶端已經(jīng)接收成功可以開(kāi)始連接
  • 當(dāng)需要斷開(kāi)數(shù)據(jù)的時(shí)候环揽,客戶端發(fā)送序列號(hào)seq=x+2略荡,確認(rèn)號(hào)ack=y+1,并FIN置1歉胶,服務(wù)端接收以后汛兜,返回ack=x+3,并ACK置1通今,如果有數(shù)據(jù)沒(méi)有傳送完畢粥谬,等待傳送完畢返回序列號(hào)seq=y+1也就是返回確認(rèn)號(hào),并FIN置1辫塌,如果沒(méi)有數(shù)據(jù)則合并ack=x+3漏策,seq=y+1 FIN置1,最后客戶端接收以后返回給服務(wù)端確認(rèn)號(hào)ack=y+2來(lái)確認(rèn)斷開(kāi)

抓包

  • Window用科來(lái)網(wǎng)絡(luò)分析系統(tǒng)璃氢,如圖
TCP抓包
  • 如圖所示三次握手哟玷,第一次客戶端發(fā)送seq序列號(hào),ACK置0一也,SYN置1巢寡。然后服務(wù)端收到序列號(hào)后發(fā)送列號(hào)seq,確認(rèn)號(hào)ack為客戶端序列號(hào)+1椰苟,且SYN抑月、ACK置1,然后客戶端接收以后發(fā)送序列號(hào)為服務(wù)端的ack確認(rèn)號(hào)舆蝴,并發(fā)送確認(rèn)號(hào)為服務(wù)端序列號(hào)+1谦絮,且ACK置1

  • 如圖所示四次揮手變?nèi)螕]手,因?yàn)闆](méi)有數(shù)據(jù)需要等待傳輸洁仗,首先客戶端發(fā)送序列號(hào)為服務(wù)端在握手中發(fā)送的確認(rèn)號(hào)层皱,確認(rèn)號(hào)為服務(wù)端發(fā)送的序列號(hào)+1,且ACK赠潦、FIN置1叫胖,當(dāng)服務(wù)端收到以后開(kāi)始發(fā)送給客戶端,序列號(hào)為客戶端發(fā)送的確認(rèn)號(hào)她奥,確認(rèn)號(hào)為客戶端發(fā)送的序列號(hào)+1瓮增,且ACK怎棱、FIN置1,當(dāng)客戶端收到以后再發(fā)送給服務(wù)端绷跑,序列號(hào)為服務(wù)端發(fā)的確認(rèn)號(hào)拳恋,確認(rèn)號(hào)為服務(wù)端發(fā)送的序列號(hào)+1,且ACK置1砸捏,結(jié)束連接

  • Mac用WireShark

    WireShark主要用于抓包谬运,在這里我們需要用wireshark查看tcp的三次握手和4次揮手,具體請(qǐng)查看WireShark教程

UDP則為應(yīng)用層提供一種非常簡(jiǎn)單的服務(wù)垦藏,如圖:

  • UDP是一個(gè)無(wú)連接吩谦、不保證可靠性的傳輸層協(xié)議,也就是說(shuō)發(fā)送端不關(guān)心發(fā)送的數(shù)據(jù)是否到達(dá)目標(biāo)主機(jī)膝藕、數(shù)據(jù)是否出錯(cuò)等,收到數(shù)據(jù)的主機(jī)也不會(huì)告訴 發(fā)送方是否收到了數(shù)據(jù)咐扭,它的可靠性由上層協(xié)議來(lái)保障
  • 首部結(jié)構(gòu)簡(jiǎn)單晌畅,在數(shù)據(jù)傳輸時(shí)能實(shí)現(xiàn)最小的開(kāi)銷(xiāo)渣触,如果進(jìn)程想發(fā)送很短的報(bào)文而對(duì)可靠性要求不高可以使用
UDP
  • 16位源端口號(hào)和16位目標(biāo)端口號(hào)和TCP一樣
  • 16位UDP長(zhǎng)度代表數(shù)據(jù)長(zhǎng)度
  • 16位UDP校驗(yàn)和,用于差錯(cuò)控制
  • 主要應(yīng)用于QQ、視頻軟件构罗、TFTP 簡(jiǎn)單文件傳輸協(xié)議(短信)

三.應(yīng)用交互舉例

應(yīng)用交互圖

四.參考

五.博客

魏燃技術(shù)博客

有任何問(wèn)題可留言或者發(fā)送本人

郵箱:ngaiwe@126.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鲜屏,隨后出現(xiàn)的幾起案子吱抚,更是在濱河造成了極大的恐慌,老刑警劉巖豁延,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昙篙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡诱咏,警方通過(guò)查閱死者的電腦和手機(jī)苔可,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)袋狞,“玉大人焚辅,你說(shuō)我怎么就攤上這事」堆欤” “怎么了同蜻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)早处。 經(jīng)常有香客問(wèn)我湾蔓,道長(zhǎng),這世上最難降的妖魔是什么陕赃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任卵蛉,我火速辦了婚禮颁股,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘傻丝。我一直安慰自己甘有,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布葡缰。 她就那樣靜靜地躺著亏掀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泛释。 梳的紋絲不亂的頭發(fā)上滤愕,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音怜校,去河邊找鬼间影。 笑死,一個(gè)胖子當(dāng)著我的面吹牛茄茁,可吹牛的內(nèi)容都是我干的魂贬。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼裙顽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼付燥!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起愈犹,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤键科,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后漩怎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體勋颖,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年勋锤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牙言。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怪得,死狀恐怖咱枉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情徒恋,我是刑警寧澤蚕断,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站入挣,受9級(jí)特大地震影響亿乳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一葛假、第九天 我趴在偏房一處隱蔽的房頂上張望障陶。 院中可真熱鬧,春花似錦聊训、人聲如沸抱究。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鼓寺。三九已至,卻和暖如春勋磕,著一層夾襖步出監(jiān)牢的瞬間妈候,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工挂滓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苦银,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓赶站,卻偏偏與公主長(zhǎng)得像墓毒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亲怠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 讀懂了TCP/IP協(xié)議,也就基本了解的網(wǎng)絡(luò)通信原理柠辞。本文是參照研究生教材《網(wǎng)絡(luò)安全原理與應(yīng)用》里面的內(nèi)容加上自己實(shí)...
    Super超人閱讀 21,878評(píng)論 1 19
  • 套接字選項(xiàng)SO_RESUEADDR 即使端口處于2MSL狀態(tài)团秽,使用該選項(xiàng),仍然能夠在該端口建立連接叭首。服務(wù)器常會(huì)設(shè)置...
    Myth52125閱讀 1,403評(píng)論 0 0
  • 1.這篇文章不是本人原創(chuàng)的习勤,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,049評(píng)論 6 174
  • 同樣的焙格,本文篇幅也比較長(zhǎng)图毕,先來(lái)一張思維導(dǎo)圖,帶大家過(guò)一遍眷唉。 一予颤、 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 二、 TCP/IP 基礎(chǔ)...
    滌生_Woo閱讀 64,972評(píng)論 38 1,038
  • 個(gè)人認(rèn)為冬阳,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記蛤虐,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8