久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

TCP/IP協(xié)議是什么

時(shí)間:2024-06-18 08:22:15 TCP/IP 我要投稿
  • 相關(guān)推薦

TCP/IP協(xié)議是什么

  TCP和UDP處在同一層---運(yùn)輸層,但是TCP和UDP最不同的地方是,TCP提供了一種可靠的數(shù)據(jù)傳輸服務(wù),TCP是面向連接的,也就是說,利用TCP通信的兩臺(tái)主機(jī)首先要經(jīng)歷一個(gè)“撥打電話”的過程,等到通信準(zhǔn)備結(jié)束才開始傳輸數(shù)據(jù),最后結(jié)束通話。所以TCP要比UDP可靠的多,UDP是把數(shù)據(jù)直接發(fā)出去,而不管對方是不是在收信,就算是UDP無法送達(dá),也不會(huì)產(chǎn)生ICMP差錯(cuò)報(bào)文,這一經(jīng)時(shí)重申了很多遍了。

TCP/IP協(xié)議是什么

  把TCP保證可靠性的簡單工作原理:

  應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的 數(shù)據(jù)報(bào)長度將保持不變。由TCP傳遞給IP的信息單位稱為報(bào)文段或段

  當(dāng)TCP發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能 及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段.

  當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)。這個(gè)確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒.

  TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和。這是一個(gè)端到端的檢驗(yàn)和,目的是檢測數(shù)據(jù)在傳輸 過程中的任何變化。如果收到段的檢驗(yàn)和有差錯(cuò), T P將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)端超時(shí)并重發(fā))。

  既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段 的到達(dá)也可能會(huì)失序。如果必要, TCP將對收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。

  TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。

  從這段話中可以看到,TCP中保持可靠性的方式就是超時(shí)重發(fā),這是有道理的,雖然TCP也可以用各種各樣的ICMP報(bào)文來處理這些,但是這也不是可靠的,最可靠的方式就是只要不得到確認(rèn),就重新發(fā)送數(shù)據(jù)報(bào),直到得到對方的確認(rèn)為止。

  TCP的首部和UDP首部一樣,都有發(fā)送端口號和接收端口號。但是顯然,TCP的首部信息要比UDP的多,可以看到,TCP協(xié)議提供了發(fā)送和確認(rèn)所需要的所有必要的信息。可以想象一個(gè)TCP數(shù)據(jù)的發(fā)送應(yīng)該是如下的一個(gè)過程。

  雙方建立連接

  發(fā)送方給接受方TCP數(shù)據(jù)報(bào),然后等待對方的確認(rèn)TCP數(shù)據(jù)報(bào),如果沒有,就重新發(fā),如果有,就發(fā)送下一個(gè)數(shù)據(jù)報(bào)。

  接受方等待發(fā)送方的數(shù)據(jù)報(bào),如果得到數(shù)據(jù)報(bào)并檢驗(yàn)無誤,就發(fā)送ACK(確認(rèn))數(shù)據(jù)報(bào),并等待下一個(gè)TCP數(shù)據(jù)報(bào)的到來。直到接收到FIN(發(fā)送完成數(shù)據(jù)報(bào))

  中止連接

  可以想見,為了建立一個(gè)TCP連接,系統(tǒng)可能會(huì)建立一個(gè)新的進(jìn)程(最差也是一個(gè)線程),來進(jìn)行數(shù)據(jù)的傳送

  --

  TCP協(xié)議

  TCP是一個(gè)面向連接的協(xié)議,在發(fā)送輸送之前 ,雙方需要確定連接。而且,發(fā)送的數(shù)據(jù)可以進(jìn)行TCP層的分片處理。

  TCP連接的建立過程 ,可以看成是三次握手 。而連接的中斷可以看成四次握手 。

  1.連接的建立

  在建立連接的時(shí)候,客戶端首先向服務(wù)器申請打開某一個(gè)端口(用SYN段等于1的TCP報(bào)文),然后服務(wù)器端發(fā)回一個(gè)ACK報(bào)文通知客戶端請求報(bào)文收到,客戶端收到確認(rèn)報(bào)文以后再次發(fā)出確認(rèn)報(bào)文確認(rèn)剛才服務(wù)器端發(fā)出的確認(rèn)報(bào)文(繞口么),至此,連接的建立完成。這就叫做三次握手。如果打算讓雙方都做好準(zhǔn)備的話,一定要發(fā)送三次報(bào)文,而且只需要三次報(bào)文就可以了。

  可以想見,如果再加上TCP的超時(shí)重傳機(jī)制,那么TCP就完全可以保證一個(gè)數(shù)據(jù)包被送到目的地。

  2.結(jié)束連接

  TCP有一個(gè)特別的概念叫做half-close,這個(gè)概念是說,TCP的連接是全雙工(可以同時(shí)發(fā)送和接收)連接,因此在關(guān)閉連接的時(shí)候,必須關(guān)閉傳和送兩個(gè)方向上的連接?蛻魴C(jī)給服務(wù)器一個(gè)FIN為1的TCP報(bào)文,然后服務(wù)器返回給客戶端一個(gè)確認(rèn)ACK報(bào)文,并且發(fā)送一個(gè)FIN報(bào)文,當(dāng)客戶機(jī)回復(fù)ACK報(bào)文后(四次握手),連接就結(jié)束了。

  3.最大報(bào)文長度

  在建立連接的時(shí)候,通信的雙方要互相確認(rèn)對方的最大報(bào)文長度(MSS),以便通信。一般這個(gè)SYN長度是MTU減去固定IP首部和TCP首部長度。對于一個(gè)以太網(wǎng),一般可以達(dá)到1460字節(jié)。當(dāng)然如果對于非本地的IP,這個(gè)MSS可能就只有536字節(jié),而且,如果中間的傳輸網(wǎng)絡(luò)的MSS更加的小的話,這個(gè)值還會(huì)變得更小。

  4.客戶端應(yīng)用程序的狀態(tài)遷移圖

  客戶端的狀態(tài)可以用如下的流程來表示:

  CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

  以上流程是在程序正常的情況下應(yīng)該有的流程,從書中的圖中可以看到,在建立連接時(shí),當(dāng)客戶端收到SYN報(bào)文的ACK以后,客戶端就打開了數(shù)據(jù)交互地連接。而結(jié)束連接則通常是客戶端主動(dòng)結(jié)束的,客戶端結(jié)束應(yīng)用程序以后,需要經(jīng)歷FIN_WAIT_1,F(xiàn)IN_WAIT_2等狀態(tài),這些狀態(tài)的遷移就是前面提到的結(jié)束連接的四次握手。

  5.服務(wù)器的狀態(tài)遷移圖

  服務(wù)器的狀態(tài)可以用如下的流程來表示:

  CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

  在建立連接的時(shí)候,服務(wù)器端是在第三次握手之后才進(jìn)入數(shù)據(jù)交互狀態(tài),而關(guān)閉連接則是在關(guān)閉連接的第二次握手以后(注意不是第四次)。而關(guān)閉以后還要等待客戶端給出最后的ACK包才能進(jìn)入初始的狀態(tài)。

  6.TCP服務(wù)器設(shè)計(jì)

  前面曾經(jīng)講述過UDP的服務(wù)器設(shè)計(jì),可以發(fā)現(xiàn)UDP的服務(wù)器完全不需要所謂的并發(fā)機(jī)制,它只要建立一個(gè)數(shù)據(jù)輸入隊(duì)列就可以。但是TCP不同,TCP服務(wù)器對于每一個(gè)連接都需要建立一個(gè)獨(dú)立的進(jìn)程(或者是輕量級的,線程),來保證對話的獨(dú)立性。所以TCP服務(wù)器是并發(fā)的。而且TCP還需要配備一個(gè)呼入連接請求隊(duì)列(UDP服務(wù)器也同樣不需要),來為每一個(gè)連接請求建立對話進(jìn)程,這也就是為什么各種TCP服務(wù)器都有一個(gè)最大連接數(shù)的原因。而根據(jù)源主機(jī)的IP和端口號碼,服務(wù)器可以很輕松的區(qū)別出不同的會(huì)話,來進(jìn)行數(shù)據(jù)的分發(fā)。

  TCP的交互數(shù)據(jù)流

  對于交互性要求比較高的應(yīng)用,TCP給出兩個(gè)策略來提高發(fā)送效率和減低網(wǎng)絡(luò)負(fù)擔(dān):(1)捎帶ACK。(2)Nagle算法(一次盡量多的發(fā)數(shù)據(jù))

  捎帶ACK的發(fā)送方式

  這個(gè)策略是說,當(dāng)主機(jī)收到遠(yuǎn)程主機(jī)的TCP數(shù)據(jù)報(bào)之后,通常不馬上發(fā)送ACK數(shù)據(jù)報(bào),而是等上一個(gè)短暫的時(shí)間,如果這段時(shí)間里面主機(jī)還有發(fā)送到遠(yuǎn)程主機(jī)的TCP數(shù)據(jù)報(bào),那么就把這個(gè)ACK數(shù)據(jù)報(bào)“捎帶”著發(fā)送出去,把本來兩個(gè)TCP數(shù)據(jù)報(bào)整合成一個(gè)發(fā)送。一般的,這個(gè)時(shí)間是200ms。可以明顯地看到這個(gè)策略可以把TCP數(shù)據(jù)報(bào)的利用率提高很多。

  Nagle算法

  上過bbs的人應(yīng)該都會(huì)有感受,就是在網(wǎng)絡(luò)慢的時(shí)候發(fā)貼,有時(shí)鍵入一串字符串以后,經(jīng)過一段時(shí)間,客戶端“發(fā)瘋”一樣突然回顯出很多內(nèi)容,就好像數(shù)據(jù)一下子傳過來了一樣,這就是Nagle算法的作用。

  Nagle算法是說,當(dāng)主機(jī)A給主機(jī)B發(fā)送了一個(gè)TCP數(shù)據(jù)報(bào)并進(jìn)入等待主機(jī)B的ACK數(shù)據(jù)報(bào)的狀態(tài)時(shí),TCP的輸出緩沖區(qū)里面只能有一個(gè)TCP數(shù)據(jù)報(bào),并且,這個(gè)數(shù)據(jù)報(bào)不斷地收集后來的數(shù)據(jù),整合成一個(gè)大的數(shù)據(jù)報(bào),等到B主機(jī)的ACK包一到,就把這些數(shù)據(jù)“一股腦”的發(fā)送出去。雖然這樣的描述有些不準(zhǔn)確,但還算形象和易于理解,我們同樣可以體會(huì)到這個(gè)策略對于低減網(wǎng)絡(luò)負(fù)擔(dān)的好處。

  在編寫插口程序的時(shí)候,可以通過TCP_NODELAY來關(guān)閉這個(gè)算法。并且,使用這個(gè)算法看情況的,比如基于TCP的X窗口協(xié)議,如果處理鼠標(biāo)事件時(shí)還是用這個(gè)算法,那么“延遲”可就非常大了。

【TCP/IP協(xié)議是什么】相關(guān)文章:

對TCP/IP網(wǎng)絡(luò)協(xié)議的深入淺出歸納03-15

OSI七層與TCP/IP五層網(wǎng)絡(luò)架構(gòu)詳解03-05

查找本地IP/網(wǎng)絡(luò)IP/對方IP地址圖文教程04-01

TCP洪水攻擊SYN Flood的診斷和處理03-30

手機(jī)修改ip地址方法03-08

淺談手游小眾IP的玩法實(shí)例03-06

網(wǎng)管必備技巧:如何跟蹤IP地址03-20

如何使用網(wǎng)絡(luò)中靜態(tài)IP地址03-22

路由器的IP地址怎么查找03-04