OSI傳輸層中的TCP和UDP

UDP和TCP都屬于Socket協(xié)議。

UDP的特點(diǎn):

1、每一次發(fā)送數(shù)據(jù)都需要綁定IP和端口號(hào)。相當(dāng)于發(fā)送郵件,只管是否發(fā)送成功,不保證對(duì)方是否接收到數(shù)據(jù),所以UDP是不安全的,有可能會(huì)丟失數(shù)據(jù)包。

2、UDP:類似于HTTP,也屬于短連接。

TCP的特點(diǎn):

1、只需要一次連接,屬于 長(zhǎng)連接,只要不斷開的情況可以一直使用。TCP好像打電話,雙方要通話,首先,要確定對(duì)方不是開機(jī)(網(wǎng)絡(luò)可以到達(dá)),然后要確定是不是沒有信號(hào),然后還需要對(duì)方接聽(通信鏈接)。

2、TCP通過3次“握手”來保證數(shù)據(jù)發(fā)送的安全性,不會(huì)丟失數(shù)據(jù)包。


詳解:

OSI:開放系統(tǒng)互連參考模型:由下往上為

物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層

其中:

傳輸層:分割并重新組裝上層提供的數(shù)據(jù)流,為數(shù)據(jù)流提供端到端的傳輸服務(wù)。

圖1

因?yàn)?,?duì)應(yīng)傳輸層而言,它只需要知道目標(biāo)主機(jī)上的哪個(gè)服務(wù)程序來響應(yīng)這個(gè)程序,而不需要知道這個(gè)服務(wù)程序是干什么的。因此,我們只需要能夠抽象的表示出來這些應(yīng)用程序和服務(wù)程序即可。我們使用端口號(hào)來抽象標(biāo)識(shí)每個(gè)網(wǎng)絡(luò)程序。

傳輸層有兩大協(xié)議,即:TCP(傳輸控制協(xié)議)UDP(用戶數(shù)據(jù)包協(xié)議)。TCP和UDP可以接收來自多個(gè)應(yīng)用程序的數(shù)據(jù)流,并用端口號(hào)標(biāo)識(shí)他們,然后把他們送給Internet層處理。同時(shí)TCP和UDP接收來自Internet層的數(shù)據(jù)包,也用端口號(hào)區(qū)分他們,然后交給不同的應(yīng)用程序。

因此:在同一IP地址(同一個(gè)目標(biāo)主機(jī))上不同的端口號(hào)是兩個(gè)不同的鏈接。IP地址和端口號(hào)用來唯一的確定網(wǎng)絡(luò)上數(shù)據(jù)的目的地。


TCP中的“三次握手”:

目的:TCP是面向鏈接的(即端to端),在面向鏈接的環(huán)境中,開始傳輸數(shù)據(jù)之前,在兩個(gè)中端之間必須先建立一個(gè)鏈接。建立鏈接的過程可以確保通信雙方在發(fā)送應(yīng)用程序數(shù)據(jù)包之前,都已經(jīng)準(zhǔn)備好了傳送和接收數(shù)據(jù)。并且使通信雙方統(tǒng)一了初始化序列號(hào)。

過程:傳輸前,需要進(jìn)行三次握手建立鏈接。而通信結(jié)束后,通信雙方都會(huì)使用改進(jìn)的三次握手來關(guān)閉鏈接。

圖2

SYN:seq=X;

1、A的TCP程序,為這個(gè)鏈接分配一個(gè)端口(設(shè)為9090)。

2、同時(shí)邏輯上的將TCP連接的狀態(tài)設(shè)置為:正在連接。(通過在鏈接狀態(tài)表中添加一條記錄,記錄中狀態(tài)為:正在連接)

3、同時(shí),隨機(jī)生成一個(gè)初始序列號(hào)X,生成一個(gè)TCP包,將初始化序列號(hào)X設(shè)置為TCP中的序列號(hào),發(fā)送給主機(jī)B。

SYN:seq=Y ? ACK:ack=X+1;

1、B上TCP程序收到該數(shù)據(jù)包,查詢9091端口狀態(tài),如果可以鏈接。

2、同樣的,在邏輯上的將TCP連接的狀態(tài)設(shè)置為:正在連接

3、同時(shí),隨機(jī)生成一個(gè)初始化序列號(hào)Y,根據(jù)接收的序列號(hào)X,生成應(yīng)答號(hào)X+1,生成一個(gè)TCP包,將序列號(hào)和應(yīng)答號(hào)分別設(shè)置到TCP包頭中,將TCP數(shù)據(jù)包發(fā)給主機(jī)A。

SYN:seq=X+1 ? ACK:ack=Y+1.

1、A上的TCP程序接收到數(shù)據(jù)包,查詢9090端口狀態(tài)。

2、根據(jù)收到的SYN:seq=Y;ACK:ack=X+1; 封裝一個(gè)TCP包 SYN:seq=x+1;ACK:ack=Y+1;發(fā)送給主機(jī)B。同時(shí),TCP程序?qū)㈡溄訝顟B(tài)表中該條記錄狀態(tài)設(shè)置為已連接。

3、主機(jī)B收到數(shù)據(jù)包,TCP程序?qū)㈡溄訝顟B(tài)表中該條記錄狀態(tài)設(shè)置為已連接。

至此,一個(gè)TCP鏈接建立(三次握手)完成。


我們可以看到:

第一:傳送的都是IP數(shù)據(jù)包,其實(shí)只是將收到的數(shù)據(jù)包交給TCP程序處理。

第二:鏈接狀態(tài),只是TCP程序中的一個(gè)邏輯狀態(tài)。



參見:java-mzd.iteye.com/blog/1007577

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 用簡(jiǎn)單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 6,077評(píng)論 1 13
  • 1.1 TCP/IP協(xié)議組 TCP/IP協(xié)議(傳輸控制協(xié)議)由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成 IP層負(fù)責(zé)...
    F麥子閱讀 2,919評(píng)論 0 25
  • 參考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麥子閱讀 3,067評(píng)論 0 14
  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,712評(píng)論 0 11
  • 1 運(yùn)輸層協(xié)議概述 1.1 進(jìn)程之間的通信 網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信,而運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯...
    Mr希靈閱讀 8,320評(píng)論 0 34

友情鏈接更多精彩內(nèi)容