09-socket應(yīng)用編程專題講座_理論概念-_第1頁
09-socket應(yīng)用編程專題講座_理論概念-_第2頁
09-socket應(yīng)用編程專題講座_理論概念-_第3頁
09-socket應(yīng)用編程專題講座_理論概念-_第4頁
09-socket應(yīng)用編程專題講座_理論概念-_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、輕松入門 實(shí)戰(zhàn)應(yīng)用 從項(xiàng)目開發(fā)角度 為你搭建完整的知識(shí)體系 wangbaominglinux Socket-應(yīng)用編程-理論概念-專題講座 written by 王保明ISO的開放互聯(lián)網(wǎng)模型(OSI)TCP回射客戶/服務(wù)器模型總結(jié) q OSI(open system interconnection)開放系統(tǒng)互聯(lián)模型是由ISO(International Organization for Standardization)國際標(biāo)準(zhǔn)化組織定義的網(wǎng)絡(luò)分層模型,共七層。 q 物理層(Physical Layer):物理層定義了所有電子及物理設(shè)備的規(guī)范,為上層的傳輸提供了一個(gè)物理介質(zhì),本層中數(shù)據(jù)傳輸?shù)膯挝粸?/p>

2、比特(bit)。屬于本層定義的規(guī)范有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等,實(shí)際使用中的設(shè)備如網(wǎng)卡等屬于本層。q 數(shù)據(jù)鏈路層(Data Link Layer):對(duì)物理層收到的比特流進(jìn)行數(shù)據(jù)成幀。提供可靠的數(shù)據(jù)傳輸服務(wù),實(shí)現(xiàn)無差錯(cuò)數(shù)據(jù)傳輸。在數(shù)據(jù)鏈路層中數(shù)據(jù)的單位為幀(frame)。屬于本層定義的規(guī)范有SDLC、HDLC、PPP、STP、幀中繼等,實(shí)際使用中的設(shè)備如switch交換機(jī)屬于本層。q 網(wǎng)絡(luò)層(Network Layer):網(wǎng)絡(luò)層負(fù)責(zé)將各個(gè)子網(wǎng)之間的數(shù)據(jù)進(jìn)行路由選擇,分組與重組。本層中數(shù)據(jù)傳輸?shù)膯挝粸閿?shù)據(jù)包(packet)。屬于本層定義的規(guī)范

3、有IP、IPX、RIP、OSPF、ICMP、IGMP等。實(shí)際使用中的設(shè)備如路由器屬于本層。q 傳輸層(Transport Layer):提供可靠的數(shù)據(jù)傳輸服務(wù),它檢測路由器丟棄的包,然后產(chǎn)生一個(gè)重傳請(qǐng)求,能夠?qū)y序收到的數(shù)據(jù)包重新排序。q 會(huì)話層(Session Layer):管理主機(jī)之間會(huì)話過程,包括會(huì)話建立、終止和會(huì)話過程中的管理。q 表示層(Presentation Layer):表示層對(duì)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)進(jìn)行變換,使得多個(gè)主機(jī)之間傳送的信息能夠互相理解,包括數(shù)據(jù)的壓縮、加密、格式轉(zhuǎn)換等。q 應(yīng)用層(Application Layer):應(yīng)用層與應(yīng)用程序界面溝通,以達(dá)至展示給用戶的目的。 在

4、此常見的協(xié)定有: HTTP,HTTPS,F(xiàn)TP,TELNET,SSH,SMTP,POP3等q 結(jié)論:傳輸層能做差錯(cuò)控制。對(duì)IP包進(jìn)行排序 IP路由 OSI和郵件發(fā)送TCP/IP四層模型和OSI七層的不同TCP/IP主要協(xié)議運(yùn)行FTP的兩臺(tái)主機(jī)通過路由器連接的網(wǎng)絡(luò)q (對(duì)等通信、封裝、分用、端口)對(duì)等通訊封裝(Encapsulation)分用(Demultiplexing,解封)端口q 眾所周知端口(Well Known Ports):從0到1023,這些端口由IANA分配和控制它們緊密綁定于一些服務(wù)。通常這些端口的通訊明確表明了某種服務(wù)的協(xié)議。例如:21端口為ftp服務(wù)端口。 q 注冊端口(R

5、egistered Ports):從1024到49151。它些端口不受IANA控制,但由IANA登記并提供使用情況清單。它們松散地綁定于一些服務(wù)。也就是說有許多服務(wù)綁定于這些端口,這些端口同樣用于許多其它目的。例如:1433 Microsoft SQL服務(wù)端口q 動(dòng)態(tài)或私有端口(Dynamic or Private Ports):從49152到65535。IANA不管這些端口。實(shí)際上,機(jī)器通常從1024起分配動(dòng)態(tài)端口。但也有例外:SUN的RPC端口從32768開始。TCP/IP各層報(bào)文以太網(wǎng)幀格式說明1:鏈路層數(shù)據(jù)包,稱為以太網(wǎng)幀。說明2:鏈路層不識(shí)別IP地址(邏輯地址,公網(wǎng)IP),鏈路層識(shí)別

6、物理網(wǎng)卡MAC地址。說明3:需要根據(jù)IP地址找到對(duì)方的MAC地址。這個(gè)過程稱為:地址解析,也就是ARP協(xié)議。(MAC)IP地址方向地址解析 RARP)。說明4:應(yīng)用層根據(jù)對(duì)等方的IP地址進(jìn)行通訊,在數(shù)據(jù)封裝過程中,鏈路層有需要目的地址的MAC網(wǎng)卡地址?怎么樣解決這個(gè)問題? 需要將IP地址轉(zhuǎn)換成MAC地址,也就是地址解析。ARP地址解析協(xié)議以太網(wǎng)的MTU和路徑MTU 以太網(wǎng)MTUq 以太網(wǎng)和IEEE 802.3對(duì)數(shù)據(jù)幀的長度都有限制,其最大值分別是1500和1492字節(jié),將這個(gè)限制稱作最大傳輸單元(MTU,Maximum Transmission Unit)q 如果IP層有一個(gè)數(shù)據(jù)報(bào)要傳,而且數(shù)

7、據(jù)的長度比鏈路層的MTU還大,那么IP層就要進(jìn)行分片(Fragmentation),把數(shù)據(jù)報(bào)分成若干片,這樣每一片都小于MTU。q 當(dāng)網(wǎng)絡(luò)上的兩臺(tái)主機(jī)互相進(jìn)行通信時(shí),兩臺(tái)主機(jī)之間要經(jīng)過多個(gè)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)的鏈路層可能有不同的MTU,其中兩臺(tái)通信主機(jī)路徑中的最小MTU被稱作路徑MTU。IP數(shù)據(jù)報(bào) 版本號(hào),目前取值4 首部長度,4個(gè)字節(jié)為單位,取值范圍515 服務(wù)類型,指定傳輸?shù)膬?yōu)先級(jí)、傳輸速度、可靠性和吞吐量等 報(bào)文總長度,最大長度為65535字節(jié) 報(bào)文標(biāo)識(shí),唯一標(biāo)識(shí)一個(gè)數(shù)據(jù)報(bào),如果數(shù)據(jù)報(bào)分段,則每個(gè)分段的標(biāo)識(shí)都一樣 標(biāo)志,最高位未使用,定義為0,其余兩位為DF(不分段)和MF(更多分段) 段偏移

8、量,以8個(gè)字節(jié)為單位,指出該分段的第一個(gè)數(shù)據(jù)字在原始數(shù)據(jù)報(bào)中的偏移位置 生存時(shí)間,取值0255,每經(jīng)過一個(gè)路由節(jié)點(diǎn)減1,為0時(shí)被丟棄 協(xié)議,指明該數(shù)據(jù)報(bào)的協(xié)議類型,如1為ICMP,4為IP,6為TCP,17為UDP等 首部校驗(yàn)和,每通過一次網(wǎng)關(guān)都要重新計(jì)算該值,用于保證IP首部的完整性 選項(xiàng),長度可變,提供某些場合下需要的控制功能,IP首部的長度必須是4個(gè)字節(jié)的整數(shù)倍,如果選項(xiàng)長度不是4的整數(shù)倍,必須填充數(shù)據(jù)ICMP協(xié)議ICMP協(xié)議說明 ICMP協(xié)議用于傳遞差錯(cuò)信息、時(shí)間、回顯、網(wǎng)絡(luò)信息等控制數(shù)據(jù) 當(dāng)你ping 一臺(tái)主機(jī)想看它是否運(yùn)行時(shí),就產(chǎn)生了一條ICMP 信息。遠(yuǎn)程主機(jī)將用它自己的ICMP

9、 信息對(duì)ping 請(qǐng)求作出回應(yīng)。ICMP協(xié)議 本身是IP的一部分。 用途:網(wǎng)關(guān)或者目標(biāo)機(jī)器利用ICMP與源通訊,當(dāng)出現(xiàn)問題時(shí),提供反饋信息 在IP協(xié)議棧中必須實(shí)現(xiàn) 特點(diǎn): 其控制能力并不用于保證傳輸?shù)目煽啃?它本身也不是可靠傳輸?shù)?ICMP包含在IP數(shù)據(jù)包的凈荷數(shù)據(jù)中,IP頭中協(xié)議類型為1 ICMP數(shù)據(jù)的第一個(gè)字節(jié)代表ICMP報(bào)文的類型,它決定了后續(xù)數(shù)據(jù)的格式ICMP數(shù)據(jù)包 ICMP包含在IP數(shù)據(jù)包的凈荷數(shù)據(jù)中,IP頭中協(xié)議類型為1 ICMP數(shù)據(jù)的第一個(gè)字節(jié)代表ICMP報(bào)文的類型,它決定了后續(xù)數(shù)據(jù)的格式ICMP報(bào)文類型報(bào)文類型說明 0 Echo Reply 3 Destination Unre

10、achable 4 Source Quench 5 Redirect 8 Echo 11 Time Exceeded 12 Parameter Problem 13 Timestamp 14 Timestamp Reply 15 Information Request 16 Information Reply 17 Address Mask Request 18 Address Mask Reply 報(bào)文分類 ICMP差錯(cuò)報(bào)文 目的不可達(dá)報(bào)文(類型3) 超時(shí)報(bào)文(類型11) 參數(shù)出錯(cuò)報(bào)文(類型12) ICMP控制報(bào)文 報(bào)源抑制報(bào)文(類型4) 重定向(類型5) ICMP請(qǐng)求/應(yīng)答報(bào)文 回送請(qǐng)求和

11、響應(yīng)報(bào)文(類型0和8) 時(shí)間戳請(qǐng)求和響應(yīng)報(bào)文(類型13和14) 地址掩碼請(qǐng)求和響應(yīng)報(bào)文(類型17和18) 其他ICMP Echo報(bào)文 類型:0表示Echo Reply,8表示Echo 代碼:0 標(biāo)識(shí)符:標(biāo)識(shí)一個(gè)會(huì)話,例如,用進(jìn)程ID 序號(hào):例如每個(gè)請(qǐng)求增1 選項(xiàng)數(shù)據(jù):回顯ICMP 目的不可達(dá)報(bào)文 類型:3 代碼:0表示網(wǎng)絡(luò)不可達(dá),1表示主機(jī)不可達(dá);2表示協(xié)議不可達(dá);3表示端口不可達(dá);等等 出錯(cuò)的IP包的IP首部+原始IP數(shù)據(jù)包中前8個(gè)字節(jié)UDP數(shù)據(jù)報(bào)TCP報(bào)文段協(xié)議描述 源端口號(hào)和目的端口號(hào):源和目的主機(jī)的IP地址加上端口號(hào)構(gòu)成一個(gè)TCP連接 序號(hào)和確認(rèn)號(hào):序號(hào)為該TCP數(shù)據(jù)包的第一個(gè)數(shù)據(jù)字在

12、所發(fā)送的數(shù)據(jù)流中的偏移量;確認(rèn)號(hào)為希望接收的下一個(gè)數(shù)據(jù)字的序號(hào); 首部長度,以4個(gè)字節(jié)為單位,通常為20個(gè)字節(jié) 6個(gè)標(biāo)志位: URG:如果使用了緊急指針,URG置1,緊急指針為當(dāng)前序號(hào)到緊急數(shù)據(jù)位置的偏移量 ACK:為1表示確認(rèn)號(hào)有效,為0表示該TCP數(shù)據(jù)包不包含確認(rèn)信息 PSH:表示是帶有PUSH標(biāo)志的數(shù)據(jù),接收到數(shù)據(jù)后不必等緩沖區(qū)滿再發(fā)送 RST:用于連接復(fù)位,也可用于拒絕非法的數(shù)據(jù)或拒絕連接請(qǐng)求 SYN:用于建立連接,連接請(qǐng)求時(shí)SYN1,ACK=0;響應(yīng)連接請(qǐng)求時(shí)SYN=1,ACK=1 FIN:用于釋放連接,表示發(fā)送方已經(jīng)沒有供發(fā)送的數(shù)據(jù) 窗口大小:表示在確認(rèn)字節(jié)后還可以發(fā)送字節(jié)數(shù),用于

13、流量控制 校驗(yàn)和:覆蓋了整個(gè)數(shù)據(jù)包,包括對(duì)數(shù)據(jù)包的首部和數(shù)據(jù) 選項(xiàng):常見的選項(xiàng)是MSS(Maximum Segment Size)連接建立三次握手連接終止四次握手TCP如何保證可靠性q 應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊,稱為段傳遞給IP層。q 當(dāng)TCP發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。q 當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)。這個(gè)確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒。q TCP將保持它首部和數(shù)據(jù)的校驗(yàn)和。這是一個(gè)端到端的校驗(yàn)和,目的是檢測數(shù)據(jù)在傳輸過程中的任何變化。如果收到段的校驗(yàn)和有差錯(cuò),TCP將丟棄這個(gè)報(bào)文段并且不確認(rèn)(導(dǎo)致對(duì)方超時(shí)重傳)q TCP承載于IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序。TCP將對(duì)收到的數(shù)據(jù)進(jìn)行重新排序。q IP數(shù)據(jù)報(bào)會(huì)發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。q TCP還能提供流量控制。TCP連接的每一方都有一定大小的緩沖空間。綜合案例數(shù)據(jù)在網(wǎng)絡(luò)中傳輸過程q 步驟a:應(yīng)用程序ping會(huì)判斷發(fā)送的是主機(jī)名還是IP地址,調(diào)用函數(shù)gethostbyname()解析主機(jī)機(jī)B,將主機(jī)名轉(zhuǎn)換成一個(gè)32位的IP地址。這個(gè)過程叫做DNS域名解析q 步驟b:ping程序向目的IP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論