在初識(shí)網(wǎng)絡(luò)原理(初識(shí)網(wǎng)絡(luò)原理_蠟筆小心眼子!的博客-CSDN博客)這篇博客中,我們簡(jiǎn)單的了解了一下TCP/IP五層網(wǎng)絡(luò)模型,這篇博客將詳細(xì)的學(xué)習(xí)一下五層網(wǎng)絡(luò)模型中傳輸層的兩個(gè)著名協(xié)議:UDP和TCP
目錄
一, 傳輸層的作用
二, UDP
1,UDP協(xié)議的特點(diǎn)
2,UDP報(bào)文格式
三, TCP
1,TCP協(xié)議的特點(diǎn)
2,TCP報(bào)文格式
四, UDP和TCP的對(duì)比
一, 傳輸層的作用
傳輸層主要解決的是端對(duì)端的數(shù)據(jù)傳輸,所以該層的協(xié)議會(huì)包含端口號(hào)這樣的信息(目的端口和源端口),端口綁定的是一個(gè)主機(jī)上的某一程序的,這樣在進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候才知道被哪個(gè)應(yīng)用程序接收(注意:一個(gè)端口號(hào)只能被一個(gè)應(yīng)用程序綁定,但是一個(gè)應(yīng)用程序可以對(duì)應(yīng)多個(gè)端口號(hào)),端口號(hào)的取值范圍是0-65535,其中0-1023這個(gè)范圍的端口被稱為"知名端口號(hào)/具名端口號(hào)",這些端口號(hào)已經(jīng)分配給了一些知名且廣泛使用的應(yīng)用程序了,所以我們?cè)趯懘a時(shí),不建議使用這個(gè)范圍內(nèi)的端口號(hào).
二, UDP
1,UDP協(xié)議的特點(diǎn)
無(wú)連接 | 通信雙方不需要建立對(duì)彼此的連接就可以進(jìn)行數(shù)據(jù)傳輸 |
不可靠傳輸 | UDP協(xié)議沒(méi)有相應(yīng)的機(jī)制可以檢驗(yàn)數(shù)據(jù)是否安全到達(dá)對(duì)端 |
面向數(shù)據(jù)報(bào) | 數(shù)據(jù)傳輸都是以一個(gè)完整的數(shù)據(jù)報(bào)為單位 |
全雙工 | 通信雙方既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù) |
2,UDP報(bào)文格式
我們?cè)谘芯恳粋€(gè)協(xié)議的時(shí)候,主要是參考該協(xié)議的報(bào)文結(jié)構(gòu),觀察報(bào)文有哪些部分組成,這樣才可以更好的理解該協(xié)議的工作原理:
任何一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)的教科書對(duì)于UDP協(xié)議的報(bào)文結(jié)構(gòu)的畫圖方式都是如此,因?yàn)闀緸榱伺虐娣奖?實(shí)際上的的報(bào)文結(jié)構(gòu)應(yīng)該如下:
UDP報(bào)文結(jié)構(gòu)由UDP報(bào)頭和UDP載荷兩部分構(gòu)成,UDP報(bào)頭由源端口,目的端口,UDP報(bào)文長(zhǎng)度和校驗(yàn)和構(gòu)成,其中每個(gè)部分占2個(gè)字節(jié),共8個(gè)字節(jié).
- 源端口:表示發(fā)送方所綁定的進(jìn)程
- 目的端口:接收方所綁定的進(jìn)程
- UDP報(bào)文長(zhǎng)度:表示UDP報(bào)文的長(zhǎng)度是2個(gè)字節(jié),共64kb
- 檢驗(yàn)和:主要用來(lái)校驗(yàn)接收的數(shù)據(jù)是否是發(fā)送方傳輸?shù)臄?shù)據(jù)
注意:
1,如果應(yīng)用層數(shù)據(jù)報(bào)超過(guò)64kb該怎么辦?
應(yīng)用層數(shù)據(jù)報(bào)如果超過(guò)64kb(即兩個(gè)字節(jié)),有兩種解決辦法:1.需要在應(yīng)用層通過(guò)代碼的方式針對(duì)數(shù)據(jù)報(bào)進(jìn)行拆分,拆成多個(gè)包進(jìn)行傳輸,此時(shí)需要send多次,沒(méi)進(jìn)行一次send就會(huì)多一次數(shù)據(jù)封裝分用的過(guò)程,故開銷較大,一般不采用此方法;2.不用UDP協(xié)議,采用TCP協(xié)議,TCP沒(méi)有對(duì)傳輸數(shù)據(jù)的大小進(jìn)行限制.
2,校驗(yàn)和是如何進(jìn)行校驗(yàn)的?
校驗(yàn)和用來(lái)檢驗(yàn)傳輸?shù)臄?shù)據(jù)是否正確,因?yàn)榫W(wǎng)絡(luò)傳輸?shù)倪^(guò)程中,可能會(huì)受到一些干擾,造成"比特翻轉(zhuǎn)"的情況(0011變成0010),這樣可能會(huì)帶來(lái)不可預(yù)估的災(zāi)難,同時(shí)這種現(xiàn)象是客觀存在且不可避免的,因此校驗(yàn)的作用是尤為重要的,主要的工作原理如下:
如果內(nèi)容相同,得到的校驗(yàn)和一定相同;但是計(jì)算得到的校驗(yàn)和相同,內(nèi)容不一定相同,但是這種情況理論上很少出現(xiàn),所以忽略不計(jì).
三, TCP
1,TCP協(xié)議的特點(diǎn)
有連接 | 通信雙方需要先建立對(duì)彼此的連接才可以進(jìn)行數(shù)據(jù)傳輸 |
可靠傳輸 | TCP協(xié)議有相應(yīng)的機(jī)制可以檢驗(yàn)數(shù)據(jù)是否安全到達(dá)對(duì)端 |
面向字節(jié)流 | 數(shù)據(jù)傳輸都是以一個(gè)字節(jié)一個(gè)字節(jié)為單位 |
全雙工 | 通信雙方既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù) |
2,TCP報(bào)文格式
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-694872.html
- 源端口,目的端口和校驗(yàn)和同UDP,不作贅述
- 4位首部長(zhǎng)度:一個(gè)TCP報(bào)頭長(zhǎng)度是可變的,首部長(zhǎng)度的單位不是字節(jié),而是4個(gè)字節(jié),如果首部長(zhǎng)度值是5,那么整個(gè)報(bào)文的長(zhǎng)度就是20個(gè)字節(jié)
- 選項(xiàng):選項(xiàng)相當(dāng)于對(duì)TCP報(bào)文的一些屬性進(jìn)行解釋說(shuō)明的
- 保留位:保留位是為了開發(fā)的可擴(kuò)展性考慮的,這個(gè)功能暫時(shí)可能不需要,但是保不齊以后會(huì)用到,這樣就可以使用保留位的存儲(chǔ)空間對(duì)程序進(jìn)行擴(kuò)展了,代價(jià)較小
- 序號(hào),確認(rèn)序號(hào)和窗口大小后續(xù)在講解TCP機(jī)制的時(shí)候再詳細(xì)介紹
四, UDP和TCP的對(duì)比
TCP與UDP的主要區(qū)別就是TCP是可靠連接,但是并不是說(shuō)明TCP就是優(yōu)于UDP,UDP在不考慮網(wǎng)絡(luò)環(huán)境或者在局域網(wǎng)內(nèi),通常效率更高,因?yàn)閁DP沒(méi)有一系列的機(jī)制來(lái)控制數(shù)據(jù)的傳輸:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-694872.html
- TCP用于可靠傳輸?shù)那闆r,應(yīng)用于文件傳輸,重要狀態(tài)更新等場(chǎng)景;
- UDP用于對(duì)高速傳輸和實(shí)時(shí)性要求較高的通信領(lǐng)域,例如,早期的QQ,視頻傳輸?shù)?。另外UDP可以用于廣播;
到了這里,關(guān)于UDP和TCP協(xié)議報(bào)文格式詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!