一、FTP
文件傳送協(xié)議(FTP):在互聯(lián)網(wǎng)的兩個(gè)主機(jī)間實(shí)現(xiàn)文件互傳的應(yīng)用層協(xié)議菜谣。
C/S模式珠漂,采用(21端口)傳輸控制命令,(20端口)傳輸文件內(nèi)容尾膊。
二媳危、P2P應(yīng)用
P2P應(yīng)用的優(yōu)勢:充分聚集利用了(對(duì)等方主機(jī))的計(jì)算能力以及網(wǎng)絡(luò)傳輸帶寬,對(duì)服務(wù)器的依賴很小冈敛。
第一個(gè)用戶從服務(wù)器獲得副本待笑,另一個(gè)用戶也要獲得副本,那么該用戶不一定要從服務(wù)器獲取抓谴,可以從第一個(gè)用戶獲取暮蹂,若有第三個(gè)用戶請(qǐng)求寞缝,那么他有3種選擇,可以從服務(wù)器仰泻,1荆陆、2個(gè)用戶獲取。
三集侯、Socket編程基礎(chǔ)
Socket接口模型:
網(wǎng)絡(luò)應(yīng)用進(jìn)程通信時(shí)需要通過API接口請(qǐng)求底層協(xié)議的服務(wù)被啼。可以創(chuàng)建數(shù)據(jù)報(bào)類型套接字SOCK_DGRAM棠枉、流式套接字SOCK_STREAM和原始套接字SOCK_RAW.
TCP服務(wù)器:
1. 首先給固定的客戶端分配一個(gè)端口號(hào)浓体,所以要綁定(bind)一個(gè)端口.
2. 接下來服務(wù)器進(jìn)入監(jiān)聽(listen)狀態(tài),等待客戶端來訪問.
3. 接著客戶端要發(fā)送TCP連接(connect)辈讶,服務(wù)器接收(accept).
4. 客戶端對(duì)服務(wù)器發(fā)送(send)數(shù)據(jù)命浴,服務(wù)器就等待接受(recv)數(shù)據(jù),如果沒有收到數(shù)據(jù)贱除,服務(wù)端就會(huì)一直等生闲,即進(jìn)入阻塞狀態(tài).
5. 當(dāng)收到數(shù)據(jù)后會(huì)對(duì)數(shù)據(jù)進(jìn)行處理,處理完會(huì)將響應(yīng)數(shù)據(jù)發(fā)送給客戶端.
6. 若沒有數(shù)據(jù)了月幌,就關(guān)閉TCP連接close(ss)(和發(fā)送數(shù)據(jù)的客戶機(jī))跪腹,但還可以監(jiān)聽,若沒有客戶機(jī)發(fā)送數(shù)據(jù)了才關(guān)閉監(jiān)聽端口close(ms)飞醉,整個(gè)程序退出。
TCP客戶:
1. 不需要分配固定的端口屯阀,而是調(diào)用一個(gè)socket()接口獲取一個(gè)臨時(shí)的端口
2. 用臨時(shí)端口跟服務(wù)器連接
3. 連接成功客戶端可以開始發(fā)送數(shù)據(jù)缅帘,
4. 發(fā)送完以后等待服務(wù)器發(fā)送響應(yīng)信息,進(jìn)入recv(cs)狀態(tài)
5. 接收到信息后难衰,recv()函數(shù)返回钦无,進(jìn)行數(shù)據(jù)的處理,等到所有數(shù)據(jù)都發(fā)送接收完后關(guān)閉端口盖袭。
UDP服務(wù)器:
1. 獲得一個(gè)固定的端口號(hào)
2. 該端口號(hào)與服務(wù)器進(jìn)行綁定
3. 不需要等待客戶機(jī)進(jìn)行連接失暂,而是可以直接等待接收客戶機(jī)發(fā)來的數(shù)據(jù)
4. 發(fā)送響應(yīng)數(shù)據(jù)
5. 若還需要繼續(xù)接收,那么就等待接收完后發(fā)送響應(yīng)數(shù)據(jù)
6. 整個(gè)過程完了可以關(guān)閉監(jiān)聽端口鳄虱,最后程序結(jié)束退出
UDP客戶:
1. 調(diào)用socket接口弟塞,獲得一個(gè)臨時(shí)端口的套接字
2. 然后用這個(gè)套接字向服務(wù)端發(fā)送數(shù)據(jù)
3. 接收到服務(wù)端發(fā)送的響應(yīng)數(shù)據(jù)
4. 若還需要發(fā)送數(shù)據(jù),就進(jìn)行發(fā)送和接收
5. 若所有數(shù)據(jù)的都發(fā)送接收完了關(guān)閉相應(yīng)的端口和連接拙已,最后程序結(jié)束退出