什么是TCP和UDP
TCP和UDP是TCP/IP協(xié)議中的兩個傳輸層協(xié)議,它們使用IP路由功能把數(shù)據(jù)包發(fā)送到目的地,從而為應(yīng)用程序及應(yīng)用層協(xié)議(包括:HTTP、SMTP、SNMP、FTP和Telnet)提供網(wǎng)絡(luò)服務(wù) 。TCP提供的是面向連接的、可靠的數(shù)據(jù)流傳輸,而UDP提供的是非面向連接的、不可靠的數(shù)據(jù)流傳輸 。面向連接的協(xié)議在任何數(shù)據(jù)傳輸前就建立好了點到點的連接 。ATM和幀中繼是面向連接的協(xié)議,但它們工作在數(shù)據(jù)鏈路層,而不是在傳輸層 。普通的音頻電話也是面向連接的 。
可靠的傳輸協(xié)議可避免數(shù)據(jù)傳輸錯誤 。其實現(xiàn)方式是:在構(gòu)造數(shù)據(jù)包時在其中設(shè)置校驗碼,到達目的地后再采用一定的算法重新計算校驗碼,通過比較二者,就可以找出被破壞了的數(shù)據(jù) 。因為需要重發(fā)被破壞了的和已經(jīng)丟失的數(shù)據(jù),所以在需要重發(fā)數(shù)據(jù)時協(xié)議必須能夠使目的地給出源頭的一個確認信號 。有些數(shù)據(jù)包不一定按照順序到達,所以協(xié)議必須能夠探測出亂序的包,暫存起來,然后把它們按正確的次序送到應(yīng)用層中去 。另外,協(xié)議還必須能夠找出并丟棄重復發(fā)送的數(shù)據(jù) 。一組定時器可以限制針對不同確認的等待時間,這樣就可以開始重新發(fā)送或重新建立連接 。
數(shù)據(jù)流傳輸協(xié)議不支持位傳輸 。TCP不能在一個包內(nèi)以字節(jié)或位為單位構(gòu)造數(shù)據(jù),它只負責傳輸未經(jīng)構(gòu)造的8位字符串 。
非面向連接的傳輸協(xié)議在數(shù)據(jù)傳輸之前不建立連接,而是在每個中間節(jié)點對非面向連接的包和數(shù)據(jù)包進行路由 。沒有點到點的連接,非面向連接的協(xié)議,如UDP,是不可靠的連接 。當一個UDP數(shù)據(jù)包在網(wǎng)絡(luò)中移動時,發(fā)送過程并不知道它是否到達了目的地,除非應(yīng)用層已經(jīng)確認了它已到達的事實 。非面向連接的協(xié)議也不能探測重復的和亂序的包 。標準的專業(yè)術(shù)語用“不可靠”來描述UDP 。在現(xiàn)代網(wǎng)絡(luò)中,UDP并不易于導致傳輸失敗,但是你也不能肯定地說它是可靠的 。
TCP工作流程
現(xiàn)在讓我們一起來看看TCP段的各個域,在IP包中它們緊跟在IP頭部信息之后 。第一個16位確認了源端口,第二個16位確認了目的端口 。端口的劃分使IP主機之間可用單個的IP地址實現(xiàn)不同類型的并發(fā)連接 。在絕大多數(shù)現(xiàn)代操作系統(tǒng)中,采用32位IP地址和16位端口地址的組合來確認一個接口 。源接口和目的接口的組合就定義了一個連接 。有216或65536個可能的端口 。最低的1024個端口是常用的,它們是系統(tǒng)為特定的應(yīng)用層協(xié)議所保留的默認設(shè)置 。如:默認狀態(tài)下,HTTP使用端口80,而POP3使用端口110 。其它的應(yīng)用可以使用編號更高的端口 。
在接下來的兩個域中,序列號和確認號是TCP實現(xiàn)可靠連接的要害 。當建立一個TCP連接時,發(fā)送方主機發(fā)出一個隨機的初始化序列號給初始化器,初始化器將其加1后送回確認域的起始器,這意味著下一個字節(jié)可以發(fā)送了 。一旦數(shù)據(jù)開始流動,序列號和確認號將跟蹤已發(fā)送了那些數(shù)據(jù),那些數(shù)據(jù)已被確認 。因為每個域都是32位,總共可以有232個值,所以每個域的范圍是:0~4294967295,當超過上限時回到0 。
4位的偏移量代表TCP頭部一共有多少個32位的信息 。這個信息是必不可少的,因為有可選的頭部區(qū)域,偏移量標識了頭部的結(jié)束和數(shù)據(jù)的開始 。
TCP的設(shè)計者保留了接下來的6位,以防萬一將來要對其進行擴展 。實際上,自從RFC793(傳輸控制協(xié)議)1981年發(fā)布以來,還沒人有恰當?shù)睦碛墒褂眠@些位,在這一點上,Jon Postel和他的同事一定是過分謹慎了 。
隨后的6位每個都是一個標志 。若UNG標志位的值為1,意味著遠在頭部緊急指針區(qū)域的數(shù)據(jù)是有效的;若ACK標志位的值為1,則意味著確認號區(qū)域中的數(shù)據(jù)是有效的 。(注重:一個SYN包有一個有意義的序列號,但它的確認號是無意義的,因為它并不確認任何事件)PSH標志位使數(shù)據(jù)不必等待發(fā)送和等待接收 。RST標志位將斷開一個連接 。SYN(同步)標志位意味著序列號是有效的,F(xiàn)IN(結(jié)束)標志位將指出發(fā)送方已經(jīng)發(fā)完了數(shù)據(jù) 。
推薦閱讀
- 湖光秋月兩相和下一句 湖光秋月兩相和下一句是什么
- TCP協(xié)議的擁塞控制策略及改進
- 馬男孩取名字寓意好的字 馬字取名的寓意和含義
- 802.17和城域環(huán)網(wǎng)協(xié)議
- 法羅三文魚和挪威三文魚區(qū)別,俄羅斯三文魚和挪威三文魚的區(qū)別
- 普通面粉和低筋面粉做蛋糕的區(qū)別 普通面粉和低筋面粉做蛋糕的區(qū)別介紹
- 偏偏寵愛和偷偷藏不住有什么關(guān)系
- 融雪劑和工業(yè)鹽一樣,最常用的融雪劑和普通的工業(yè)鹽是一種物質(zhì)
- TCP/IP協(xié)議詳解卷1學習筆記-IP校驗和與ICMP協(xié)議
- 紅臉和白臉的故事 紅臉和白臉講了什么故事
