小組學(xué)習(xí)收集資料

一戚揭、TCP(傳輸控制協(xié)議)和 UDP(用戶數(shù)據(jù)報協(xié)議)是網(wǎng)絡(luò)體系結(jié)構(gòu) TCP/IP 模 型中傳輸層一層中的兩個不同的通信協(xié)議振峻。

TCP:傳輸控制協(xié)議藻雪,一種面向連接的協(xié)議饲宿,給用戶進(jìn)程提供可靠的全雙工 的字節(jié)流,TCP 套接口是字節(jié)流套接口(stream socket)的一種迈勋。
UDP:用戶數(shù)據(jù)報協(xié)議炬灭。UDP 是一種無連接協(xié)議。UDP 套接口是數(shù)據(jù)報套 接口(datagram socket)的一種粪躬。
二、TCP 和 UDP 介紹

1)基本 TCP 客戶—服務(wù)器程序設(shè)計基本框架
說明:(三路握手)
1.客戶端發(fā)送一個 SYN 段(同步序號)指明客戶打算連接的服務(wù)器端口昔穴,以 及初始化序號(ISN) 镰官。
2.服務(wù)器發(fā)回包含服務(wù)器的初始序號的 SYN 報文段作為應(yīng)答。同時吗货,將確 認(rèn)序號(ACK)設(shè)置為客戶的 ISN 加 1 以對客戶的 SYN 報文段進(jìn)行確認(rèn)泳唠。一個 SYN 將占用一個序號。
3.客戶必須將確認(rèn)序號設(shè)置為服務(wù)器的 ISN 加 1 以對服務(wù)器的 SYN 報文段 進(jìn)行確認(rèn)宙搬。

  1. 基本 TCP 客戶—服務(wù)器程序設(shè)計基本框架流程圖

  2. UDP 和 TCP 的對比: UDP 沒有三次握手過程笨腥。

簡單點說。UDP 處理的細(xì)節(jié)比 TCP 少勇垛。UDP 不能保證消息被傳送到(它也 報告消息沒有傳送到)目的地脖母。UDP 也不保證數(shù)據(jù)包的傳送順序。UDP 把數(shù)據(jù) 發(fā)出去后只能希望它能夠抵達(dá)目的地闲孤。
TCP 優(yōu)缺點:
優(yōu)點:
1.TCP 提供以認(rèn)可的方式顯式地創(chuàng)建和終止連接谆级。
2.TCP 保證可靠的、順序的(數(shù)據(jù)包以發(fā)送的順序接收)以及不會重復(fù)的 數(shù)據(jù)傳輸讼积。
3.TCP 處理流控制肥照。
4.允許數(shù)據(jù)優(yōu)先
5.如果數(shù)據(jù)沒有傳送到,則 TCP 套接口返回一個出錯狀態(tài)條件勤众。
6.TCP 通過保持連續(xù)并將數(shù)據(jù)塊分成更小的分片來處理大數(shù)據(jù)塊舆绎。—無需 程序員知道
缺點: TCP 在轉(zhuǎn)移數(shù)據(jù)時必須創(chuàng)建(并保持)一個連接们颜。這個連接給通信 進(jìn)程增加了開銷吕朵,讓它比 UDP 速度要慢猎醇。
UDP 優(yōu)缺點:
1.UDP 不要求保持一個連接
2.UDP 沒有因接收方認(rèn)可收到數(shù)據(jù)包(或者當(dāng)數(shù)據(jù)包沒有正確抵達(dá)而自動 重傳)而帶來的開銷。
3.設(shè)計 UDP 的目的是用于短應(yīng)用和控制消息
4.在一個數(shù)據(jù)包連接一個數(shù)據(jù)包的基礎(chǔ)上边锁,UDP 要求的網(wǎng)絡(luò)帶寬比 TCP 更 小姑食。

三、Socket 編程
Socket 接口是 TCP/IP 網(wǎng)絡(luò)的 API茅坛,Socket 接口定義了許多函數(shù)或例程音半,程 序員可以用它們來開發(fā) TCP/IP 網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué) Internet 上的 TCP/IP 網(wǎng) 絡(luò)編程贡蓖,必須理解 Socket 接口曹鸠。

Socket 接口設(shè)計者最先是將接口放在 Unix 操作系統(tǒng)里面的。如果了解 Unix 系統(tǒng)的輸入和輸出的話斥铺,就很容易了解 Socket 了彻桃。網(wǎng)絡(luò)的 Socket 數(shù)據(jù)傳輸是一 種特殊的 I/O,Socket 也是一種文件描述符晾蜘。Socket 也具有一個類似于打開文件 的函數(shù)調(diào)用 Socket()邻眷,該函數(shù)返回一個整型的 Socket 描述符,隨后的連接建立剔交、 數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該 Socket 實現(xiàn)的肆饶。常用的 Socket 類型有兩種:流式 Socket(SOCK_STREAM)和數(shù)據(jù)報式 Socket(SOCK_DGRAM)。流式是一種 面向連接的 Socket岖常,針對于面向連接的 TCP 服務(wù)應(yīng)用驯镊;數(shù)據(jù)報式 Socket 是一種 無連接的 Socket,對應(yīng)于無連接的 UDP 服務(wù)應(yīng)用竭鞍。

四板惑、FTP
文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是用于在網(wǎng)絡(luò)上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議偎快,它工作在 OSI 模型的第七層冯乘, TCP 模型的第四層, 即應(yīng)用層晒夹, 使用 TCP 傳輸而不是 UDP往湿, 客戶在和服務(wù)器建立連接前要經(jīng)過一個“三次握手”的過程, 保證客戶與服務(wù)器之間的連接是可靠的惋戏, 而且是面向連接领追, 為數(shù)據(jù)傳輸提供可靠保證。
FTP允許用戶以文件操作的方式(如文件的增响逢、刪绒窑、改、查舔亭、傳送等)與另一主機(jī)相互通信些膨。然而蟀俊, 用戶并不真正登錄到自己想要存取的計算機(jī)上面而成為完全用戶, 可用FTP程序訪問遠(yuǎn)程資源订雾, 實現(xiàn)用戶往返傳輸文件肢预、目錄管理以及訪問電子郵件等等, 即使雙方計算機(jī)可能配有不同的操作系統(tǒng)和文件存儲方式洼哎。

參考思路:

  • 客戶端向服務(wù)端發(fā)起socket連接烫映,建立數(shù)據(jù)傳輸通道
  • 客戶端向服務(wù)端發(fā)送要傳輸?shù)奈募Q,以’#’字符結(jié)尾噩峦,服務(wù)端逐字符接受锭沟,知道接收到‘#’
  • 客戶端向服務(wù)端發(fā)送文件長度,4字節(jié)
  • 客戶端向服務(wù)端發(fā)送文件內(nèi)容
  • 服務(wù)端接受完文件之后识补,發(fā)送“OK”
  • 客戶端接收到“OK”族淮,關(guān)閉套接字
    1、客戶端向服務(wù)端發(fā)起socket連接凭涂,建立數(shù)據(jù)傳輸通道
    2祝辣、文件的類型不限于文本文件,所以在處理的時候應(yīng)該以二進(jìn)制文件的形式進(jìn)行處理切油、C++的文件流中提供了read()和write()函數(shù)蝙斜,可以比較方便的實現(xiàn)二進(jìn)制數(shù)據(jù)一次按一定大小讀取和寫入。
    3白翻、- 緩沖區(qū)大小是有限的乍炉,而且在傳輸大文件的時候绢片,非常有可能出現(xiàn)緩沖區(qū)大小小于文件長度滤馍,所以在處理的時候要循環(huán)處理,發(fā)送要循環(huán)發(fā)送底循,接受也應(yīng)該循環(huán)接受巢株、寫入。 C++的文件流中提供了read()和write()函數(shù)熙涤,不斷調(diào)用這兩個函數(shù)來進(jìn)行超過緩沖區(qū)大小的傳輸數(shù)據(jù)阁苞。
    4、在傳輸文件內(nèi)容的時候祠挫,主要是根據(jù)前面收到的文件長度之后那槽,調(diào)用定長數(shù)據(jù)接受函數(shù)來進(jìn)行數(shù)據(jù)接收。
    5等舔、在傳輸結(jié)束之后骚灸,服務(wù)端打印文件傳輸結(jié)束的提示,并且給客戶端進(jìn)行信息返回慌植∩跎客戶端在接受OK信息之后义郑,退出。
    6丈钙、如何判斷文件接收完畢非驮,就是收到FIN包時。FIN 包表示數(shù)據(jù)傳輸完畢雏赦,計算機(jī)收到 FIN 包后就知道對方不會再向自己傳輸數(shù)據(jù)劫笙。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喉誊,隨后出現(xiàn)的幾起案子邀摆,更是在濱河造成了極大的恐慌,老刑警劉巖伍茄,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栋盹,死亡現(xiàn)場離奇詭異,居然都是意外死亡敷矫,警方通過查閱死者的電腦和手機(jī)例获,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曹仗,“玉大人榨汤,你說我怎么就攤上這事≡趺#” “怎么了收壕?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長轨蛤。 經(jīng)常有香客問我蜜宪,道長,這世上最難降的妖魔是什么祥山? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任圃验,我火速辦了婚禮,結(jié)果婚禮上缝呕,老公的妹妹穿的比我還像新娘澳窑。我一直安慰自己,他們只是感情好供常,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布摊聋。 她就那樣靜靜地躺著,像睡著了一般栈暇。 火紅的嫁衣襯著肌膚如雪麻裁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音悲立,去河邊找鬼鹿寨。 笑死,一個胖子當(dāng)著我的面吹牛薪夕,可吹牛的內(nèi)容都是我干的脚草。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼原献,長吁一口氣:“原來是場噩夢啊……” “哼馏慨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起姑隅,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤写隶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后讲仰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慕趴,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年鄙陡,在試婚紗的時候發(fā)現(xiàn)自己被綠了冕房。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡趁矾,死狀恐怖耙册,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毫捣,我是刑警寧澤详拙,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蔓同,受9級特大地震影響饶辙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牌柄,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一畸悬、第九天 我趴在偏房一處隱蔽的房頂上張望侧甫。 院中可真熱鬧珊佣,春花似錦、人聲如沸披粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽守屉。三九已至惑艇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滨巴。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工思灌, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恭取。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓泰偿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜈垮。 傳聞我的和親對象是個殘疾皇子耗跛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 網(wǎng)絡(luò)編程 一.楔子 你現(xiàn)在已經(jīng)學(xué)會了寫python代碼调塌,假如你寫了兩個python文件a.py和b.py,分別去運...
    go以恒閱讀 2,016評論 0 6
  • 個人認(rèn)為惠猿,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記羔砾,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評論 0 8
  • 1.1 TCP/IP協(xié)議組 TCP/IP協(xié)議(傳輸控制協(xié)議)由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成 IP層負(fù)責(zé)...
    F麥子閱讀 2,788評論 0 25
  • 網(wǎng)絡(luò)概念第一天 兩臺電腦怎么通過網(wǎng)絡(luò)傳輸數(shù)據(jù)?怎樣才能知道傳輸?shù)氖菙?shù)據(jù)腹缩?誰摸過網(wǎng)線屿聋? 看電影,怎么看的藏鹊?通過電流润讥,...
    小吖朱閱讀 1,555評論 0 1
  • 我們之間楚殿,每次尼瑪,臥草這樣的詞竿痰,會像口頭禪一樣掛在嘴上脆粥,我跟她說過很多次,女孩子要淑女要端莊一點影涉,我都快被你帶歪...
    鷗嘜嘎閱讀 331評論 2 6