版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
網(wǎng)絡軟件設計套接字基本原理制作主講段景山2網(wǎng)絡軟件類型SocketBSDsockets--基于CWindowssockets1.0/2.0MFCCsocket類其它語言環(huán)境JAVAC++,Boost庫,asioC#與網(wǎng)絡通信有關的Asp--動態(tài)網(wǎng)頁制作Restful,WebService數(shù)據(jù)庫3套接字服務的基本原理套接字、端口、服務方式編寫簡單的通信程序內容4套接字編程的基本原理1、引入1.1網(wǎng)絡通信是一個復雜的過程功能的層次性協(xié)議的多樣性“套接字”(socket)提供給用戶需要的通信服務?應用層表示層會晤層傳輸層網(wǎng)絡層數(shù)據(jù)連路層物理層應用層表示層會晤層傳輸層網(wǎng)絡層數(shù)據(jù)連路層物理層網(wǎng)絡層數(shù)據(jù)連路層物理層通信介質傳輸層協(xié)議會晤層協(xié)議表示層協(xié)議應用層協(xié)議端系統(tǒng)A端系統(tǒng)B中繼系統(tǒng)通信介質5引入1.1網(wǎng)絡通信是一個復雜的過程功能的層次性協(xié)議的多樣性應用的多樣性LANIPTCPUDPSMTPFTPTPTELNETDNSSNMPWANICMPARP6引入1.2用戶需要的服務不喜歡復雜不過也不喜歡太簡單1.2.1簡單的服務不關心通信系統(tǒng)的細節(jié)不關心中介節(jié)點的參與直接面向源和目的的服務用戶需要怎樣的通信服務?端到端的通信服務分布式的環(huán)境,用戶甚至無需知道數(shù)據(jù)在本地或遠方7引入1.2.2用戶希望有足夠的選擇和控制服務類型可靠(但復雜)與不可靠(但簡單)服務方式阻塞(死等)與非阻塞(并行)特殊處理帶外數(shù)據(jù)、原始套接字、源路由控制……差錯控制報錯、檢錯、恢復至少先要知道是否出錯、出了什么錯,然后進行恢復。8套接字的位置和作用“套接字”(socket)提供給用戶需要的通信服務2.1套接字的位置直接面向用戶用戶進程端到端(endtoend)傳輸層之上2.2套接字的作用端到端簡單的通信服務較多的套接字服務選擇9套接字的位置和作用2.2.1端到端通信服務套接字的使用過程中不涉及低層協(xié)議細節(jié)不涉及中介節(jié)點socket,就如同墻上的插口一樣方便10套接字的位置和作用2.2.2較多的選擇服務類型面向連接:SOCK_STREAM TCP無連接:SOCK_DGRAM UDP服務方式阻塞:FIONBIO非阻塞:特殊處理帶外數(shù)據(jù):FD_OOB原始數(shù)據(jù)服務:SOCK_RAW檢錯差錯定義:error.h得到差錯類型:WSAGetLastError()11套接字(socket)3、套接字是一個標識是一種結構是服務訪問點(數(shù)據(jù)+服務)3.1套接字變量(套接字描述符)SOCKETs;獲得一個套接字類型變量,可通過它得到通信服務SOCKETs1,s2;代表兩個不同的通信--標識作用SOCKET類型就是整型是一個起標識作用的數(shù)值12套接字(socket)3.2套接字的操作以套接字為標識,通信服務都是圍繞套接字進行的例:一個簡單的通信流程,通過調試觀察SOCKETs;s=socket(。。。)send(s,。。。);recv(s,。。。);ioctlsocket(s,。。。);setsockopt(s,。。。);獲得套接字資源發(fā)送數(shù)據(jù)接收數(shù)據(jù)控制套接字工作參數(shù)13端口、端點4、端口、端點(endpoint)4.1端口(port)傳輸層實體用來區(qū)分應用進程的通信的標識SourcePortDest.PortSequenceNumberACKNumberHLen(4)Rsv(6)Code(6)WindowCheckSumUrgentPointerOptionPadUrgentData(DataOutOfBand)Data200021。。。。。。300023。。。。。。303080。。。。。。(21)(23)(80)應用進程1應用進程2應用進程3TCP層實體IP層實體14端口、端點端口號的分配全局分配(固定分配)由公認的機構統(tǒng)一分配--“知名”端口<1024端口號關鍵字服務7ECHO回送20FTP-DATA文件傳輸21FTP文件傳輸23TELNET遠終端連接25SMTP郵件傳輸53DOMAIN域名服務80WWWWeb服務器161SNMP簡單網(wǎng)管1516端口、端點端口號的分配全局分配(固定分配)本地分配(動態(tài)分配)在本地非知名,未使用的端口中任意選擇每次得到不同的端口號,保證唯一性思考:為什么有這兩種分配(全局分配和動態(tài)分配),各有什么作用,是相互配合還是相互抵觸?17端口、端點4.2端點在網(wǎng)絡上唯一確定一個通信應用進程需要?確定網(wǎng)絡確定網(wǎng)絡上的節(jié)點確定節(jié)點上的端口確定通信應用進程=(網(wǎng)絡號+主機號+端口號)IP地址+協(xié)議傳輸層有兩種協(xié)議,需要確定協(xié)議種類半相關(誰)18端口、端點在網(wǎng)絡上確定一次通信需要?確定通信兩端的端點本地(源)端點遠(目的)端點協(xié)議+本地IP地址+本地端口遠IP地址+遠端口++協(xié)議全相關(誰和誰在通信)19端口、端點4.3端點地址結構又叫套接字地址端點結構要素:IP地址,端口號注意:協(xié)議類型不在結構中記錄4.3.1sockaddr_in結構structsockaddr_in{u_shortsin_family;協(xié)議族類型
u_shortsin_port;端口號
structin_addrsin_addr;IP地址
charsin_zero[8];保留,沒有使用}區(qū)分以下概念:套接字描述符、套接字地址、端口地址、本地地址、遠方地址20端口、端點Sin_family協(xié)議族類型Internet使用AF_INET表示此外,還使用AF_XXXPF_XXX的方式定義了多種協(xié)議族IPv4AF_INET16位端口號32位IP地址IPv6AF_INET616位端口號32位流標128位IPv6地址Data_LinkAF_LINK接口索引。。。21sin_addr:IP地址結構--structin_addrstructin_addr{union{struct{u_chars_b1,s_b2,s_b3,s_b4;}S_un_b;struct{u_shorts_w1,s_w2;}S_un_w;u_longS_addr;}S_un;}如此定義一個本質為長整數(shù)類形的IP地址,目的何在?方便使用端口、端點22套接字地址例:給端點賦值IP地址為structsockaddr_inaddr;addr.sin_addr.S_un.s_b1=202;addr.sin_addr.S_un.s_b2=115;addr.sin_addr.S_un.s_b3=12;addr.sin_addr.S_un.s_b4=1;或addr.sin_addr.S_un.s_addr=0xca730c01.s_un_b.s_un_b.s_un_b.s_un_b23套接字地址4.3.2sockaddr結構通用的套接字地址結構與Internet地址結構sockaddr沒有具體定義端點中的端口及地址的詳細內容兩種結構間可以進行強制類型轉換前提:大小基本一樣(占用的空間大小一樣)基本結構一樣structsockaddr{u_shortsa_family;charsa_data[14];}structsockaddr_in{u_shortsin_family;u_shortsin_port;structin_addrsin_addr;charsin_zero[8];}24套接字與端口5、套接字與端口套接字描述符是一個整數(shù)標識,端口號也是一個整數(shù)標識SOCKETs;unsignedshortport;共同點:它們都是對通信的標識不同:端口號的使用還要配合IP地址等套接字標識符在套接字函數(shù)中使用似乎不需要其它參數(shù)的配合問題:這兩種標識是怎樣的不同?可不可以只用一種?理論:套接字描述符用來獲得系統(tǒng)通信服務,標識不同的通信服務端口用來標識不同應用進程,以便為它們提供服務不同使用者不同:套接字描述符由應用進程使用端口號由TCP實體使用管理者不同套接字標識符局限于一個進程內端口號是整個系統(tǒng)統(tǒng)一管理2526套接字與端口它們有共同的作用,從理論的角度可以合二為一。但是在實際實現(xiàn)中,它們是相互獨立的、不同的資源在網(wǎng)絡上標識一個進程,僅端口號是不夠的,還需要IP地址,協(xié)議等而在一個進程里,標識不同的通信服務,套接字標識符就夠了它們之間應建立相互對應的關系即某個套接字工作在某個端點上5.1套接字與端點的關系用戶通過套接字取得系統(tǒng)通信資源和服務尋找系統(tǒng)通信資源通過在套接字上綁定端點地址來指定在哪里取得服務綁定:建立套接字與端點地址之間的映射關系bind(s,addr,)2728套接字與端點5.2建立關系的方法bind(s,sock_addr);又稱顯示綁定還有隱式綁定利用某些套接字調用來建立映射關系296、服務方式6.1TCP/IP的傳輸層服務TCP:面相連接的可靠協(xié)議UDP:面向無連接協(xié)議6.2指明服務類型的方法在申請socket時,指定服務類型s=socket(intaf,,intprotocol);inttypetype:SOCK_STREAMSOCK_DGRAMSOCK_RAW面向連接TCP面向無連接UDP原始服務服務方式例:s=socket(AF_INET,SOCK_DGRAM,0);306.3服務方式對軟件設計的影響1)字節(jié)流服務與數(shù)據(jù)報服務2)流程不同3)使用的socket調用不同,參數(shù)不同4)可靠性不同對象不同套接字端點過程不同環(huán)境不同結果不同317、客戶/服務器模式7.1什么是客戶/服務器模式
通信雙方,要求一方先在確定的端口等待,另一方才發(fā)起通信的模式等待的一方:服務器,
被動發(fā)起方:客戶機,
主動網(wǎng)絡客戶服務器SC服務請求服務響應后續(xù)通信客戶/服務器模式327.2為什么采用客戶服務器模式7.2.1從應用的模型角度文件下載上傳、網(wǎng)絡數(shù)據(jù)庫訪問、信息獲取遠程終端、遠程控制郵件通信終端對話、IP電話網(wǎng)絡廣播、點播網(wǎng)絡A方:啟動應用,向對方發(fā)出請求B方:對請求應答,提供服務…
后續(xù)通信客戶/服務器模式337.2.2從一次通信的正確過程的角度聚集的原理(rendezvous):如何使雙方“走”到一起?SOCKETs;connect(對方)s=socket(…)連接上?是否SOCKETs;connect(對方)s=socket(…)連接上?是否要同時啟動連接才可能連接上客戶/服務器模式推理34聚集的原理實驗方案測試兩個服務進程都等待對方連接,是否能夠成功測試兩個客戶進程不斷嘗試與對方連接,是否能夠成功實驗結論應該很難獲得成功驗證客戶/服務器模式35聚集的原理服務器等待客戶機發(fā)起連接是通信成功的先決條件C/S模式是網(wǎng)絡通信軟件實現(xiàn)的基本模式反思客戶/服務器模式367.2.3C/S的基本特點服務器長期運行,持續(xù)準備提供服務客戶機:提出及中止服務的隨意性強突出優(yōu)點隨機的通信請求(客戶機)隨時的通信暢通(服務器)客戶/服務器模式37客戶/服務器模式7.3客戶/服務器模式對軟件設計的影響通信雙方的軟件不同--客戶端軟件,服務器端軟件各有不同的流程各有不同的要求再結合網(wǎng)絡通信的特點面向連接的通信無連接的通信38服務方式面向連接面向無連接軟件模式服務器客戶機綜合服務方式和軟件模式對軟件設計的影響得到四種基本類型軟件:面向連接的服務器面向無連接的服務器面向連接的客戶機面向無連接的客戶機客戶/服務器模式397.4面向連接的服務器流程:申請?zhí)捉幼执_定本地端點,填寫端點地址建立套接字與端點關系設置為監(jiān)聽模式(服務器模式)接受一個連接完成通信過程關閉連接的套接字s=socket(…);bind(s,address…);address=…;listen(s);newsock=accept
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院醫(yī)療廢物處置設施維護保養(yǎng)制度
- 醫(yī)院醫(yī)療廢棄物回收與利用制度
- 眼科手術并發(fā)癥的財產(chǎn)損失賠償
- 真菌感染抗菌藥物濫用監(jiān)測與抗真菌藥物合理使用
- 真實世界數(shù)據(jù)在上市后監(jiān)測中的價值-1
- 真實世界中JAK抑制劑停藥策略的應用分析
- 監(jiān)測結果與采購決策掛鉤機制
- 皮膚科護理操作規(guī)范與并發(fā)癥預防
- 白血病氧化應激與治療策略-2
- 癌痛患者阿片類藥物滴定方案
- (正式版)DB65∕T 3997-2017 《油氣田鉆井固體廢物綜合利用污染控制要求》
- 2024-2025學年四川省廣元市蒼溪縣九年級(上)期末數(shù)學試卷(含答案)
- T-CBDA 82-2024 家裝防水防潮與滲漏修繕技術規(guī)程
- 基于灰色模型下的經(jīng)濟發(fā)展生育意愿分析與預測
- 腸道屏障修復研究-洞察及研究
- 審計數(shù)據(jù)管理辦法
- 2025國開《中國古代文學(下)》形考任務1234答案
- 研發(fā)公司安全管理制度
- 兒童口腔診療行為管理學
- 瓷磚樣品發(fā)放管理制度
- 北京市2025學年高二(上)第一次普通高中學業(yè)水平合格性考試物理試題(原卷版)
評論
0/150
提交評論