<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 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ā)出去,而不管對(duì)方是不是在收信,就算是UDP無法送達(dá),也不會(huì)產(chǎn)生ICMP差錯(cuò)報(bào)文,這一經(jīng)時(shí)重申了很多遍了。

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

      把TCP保證可靠性的簡(jiǎn)單工作原理:

      應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的 數(shù)據(jù)報(bào)長(zhǎng)度將保持不變。由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)和,目的是檢測(cè)數(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將對(duì)收到的數(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),直到得到對(duì)方的確認(rèn)為止。

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

      雙方建立連接

      發(fā)送方給接受方TCP數(shù)據(jù)報(bào),然后等待對(duì)方的確認(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ù)器申請(qǐng)打開某一個(gè)端口(用SYN段等于1的TCP報(bào)文),然后服務(wù)器端發(fā)回一個(gè)ACK報(bào)文通知客戶端請(qǐng)求報(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è)方向上的連接。客戶機(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)文長(zhǎng)度

      在建立連接的時(shí)候,通信的雙方要互相確認(rèn)對(duì)方的最大報(bào)文長(zhǎng)度(MSS),以便通信。一般這個(gè)SYN長(zhǎng)度是MTU減去固定IP首部和TCP首部長(zhǎng)度。對(duì)于一個(gè)以太網(wǎng),一般可以達(dá)到1460字節(jié)。當(dāng)然如果對(duì)于非本地的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ù)器對(duì)于每一個(gè)連接都需要建立一個(gè)獨(dú)立的進(jìn)程(或者是輕量級(jí)的,線程),來保證對(duì)話的獨(dú)立性。所以TCP服務(wù)器是并發(fā)的。而且TCP還需要配備一個(gè)呼入連接請(qǐng)求隊(duì)列(UDP服務(wù)器也同樣不需要),來為每一個(gè)連接請(qǐng)求建立對(duì)話進(jìn)程,這也就是為什么各種TCP服務(wù)器都有一個(gè)最大連接數(shù)的原因。而根據(jù)源主機(jī)的IP和端口號(hào)碼,服務(wù)器可以很輕松的區(qū)別出不同的會(huì)話,來進(jìn)行數(shù)據(jù)的分發(fā)。

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

      對(duì)于交互性要求比較高的應(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è)策略對(duì)于低減網(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)文章:

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

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

    查找本地IP/網(wǎng)絡(luò)IP/對(duì)方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

    主站蜘蛛池模板: 色播精品免费小视频| 精品无码人妻夜人多侵犯18| 热RE99久久精品国产66热| 久久棈精品久久久久久噜噜| 国产福利91精品一区二区三区| 国产精品∧v在线观看| 夜夜高潮夜夜爽国产伦精品| 国产精品久久久久影院嫩草 | 久久精品国产第一区二区| 四虎成人精品无码| 刺激无码在线观看精品视频| 久久99精品久久久久子伦| 2024最新国产精品一区| 亚洲日韩国产精品乱| 国产成人精品日本亚洲专一区| 欧美成人精品第一区二区三区| 99re热这里只有精品视频中文字幕 | 亚洲精品理论电影在线观看| 亚洲欧美日韩久久精品第一区 | 99精品无人区乱码在线观看| 久久精品国产亚洲av瑜伽| 国产成人亚洲精品| 亚洲∧v久久久无码精品| 精品乱码久久久久久夜夜嗨| 国产精品臀控福利在线观看| 午夜天堂精品久久久久| 精品综合久久久久久88小说| 国产一精品一av一免费爽爽| 亚洲精品国产av成拍色拍| 国产呦小j女精品视频| 国产精品视频网站| 久久综合精品国产二区无码| 久久久久亚洲精品天堂久久久久久 | 亚洲国产精品碰碰| 精品久久久久久无码中文字幕 | 国产成人精品免费视| 国产精品三级在线观看无码| 精品亚洲国产成AV人片传媒| 精品一区二区三区自拍图片区| 久久亚洲私人国产精品| 久久精品国产亚洲AV嫖农村妇女|