版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、傳輸控制協(xié)議(r)協(xié)議主為了在主機間實現(xiàn)高可靠性的包交換傳輸協(xié)議。本文將描述協(xié)議標準和實現(xiàn)的一些方法。因為計算機網(wǎng)絡在現(xiàn)代社會中已經(jīng)是不可缺少的了,協(xié)議主要在網(wǎng)絡不可靠的時候完成通信,對軍方可能特別有用,但是對于政府和商用部門也適用。是面向連接的端到端的可靠協(xié)議。它支持多種網(wǎng)絡應用程序。對下層服務沒有多少要求,它假定下層只能提供不可靠的數(shù)據(jù)報服務,它可以在多種硬件構成的網(wǎng)絡上運行。下面的圖是在層次式結構中的位置,它的下層是協(xié)議,可以根據(jù)協(xié)議提供的服務傳送大小不定的數(shù)據(jù),協(xié)議負責對數(shù)據(jù)進行分段,重組,在多種網(wǎng)絡中傳送。勵貉層次TOC o 1-5 h zI+I咼層丨H+ HYPERLINK l b
2、ookmark8|TCP|H1-IIPI_11_ HYPERLINK l bookmark16I借輸剛絡|q1_的上面就是應用程序,下面是協(xié)議,上層接口包括一系列類似于操作系統(tǒng)中斷的調(diào)用。對于上層應用程序來說,應該能夠異步傳送數(shù)據(jù)。下層接口我們假定為協(xié)議接口。為了在并不可靠的網(wǎng)絡上實現(xiàn)面向連接的可靠的傳送數(shù)據(jù),必須解決可靠性,流量控制的問題,必須能夠為上層應用程序提供多個接口,同時為多個應用程序提供數(shù)據(jù),同時必須解決連接問題,這樣才能稱得上是面向連接的,最后,也必須能夠解決通信安全性的問題。網(wǎng)絡環(huán)境包括由網(wǎng)關(或其它設備)連接的網(wǎng)絡,網(wǎng)絡可以是局域網(wǎng)也可以是一些城域網(wǎng)或廣域網(wǎng),但無論它們是什么
3、,它們必須是基于包交換的。主機上不同的協(xié)議有不同的端口號,一對進程通過這個端口號進行通信。這個通信不包括計算機內(nèi)的操作,只包括在網(wǎng)絡上進行的操作。網(wǎng)絡上的計算機被看作包傳送的源和目的結點。特別應該注意的是:計算機中的不同進程可能同時進行通信,這時它們會用端口號進行區(qū)別,不會把發(fā)向進程的數(shù)據(jù)由進程接收的。進程為了傳送數(shù)據(jù)會調(diào)用,將數(shù)據(jù)和相應的參數(shù)傳送給,于是會將數(shù)據(jù)傳送到目的那里,當然這是通過將包打包在包內(nèi)在網(wǎng)絡上傳送達到的。接收方在接收到數(shù)據(jù)后會通信上層應用程序,會保證接收數(shù)據(jù)順序的正確性。雖然下層協(xié)議可能不會保證順序是正確的。這里需要說明的是網(wǎng)關在接收到這個包后,會將包解開,看看是不是已經(jīng)到
4、目的地了,如果沒有到,應該走什么路由達到目的地,在決定后,網(wǎng)關會根據(jù)下一個網(wǎng)絡內(nèi)的協(xié)議情況再次將包打包傳送,如果需要,還要把這個包再次分成幾段再傳送。這個落地檢查的過程是一個耗時的過程。從上面,我們可以看出傳送的基本過程,當然具體過程可能要復雜得多。在實現(xiàn)的主機上,可以被看成是一個模塊,和文件系統(tǒng)區(qū)別不大,也可以調(diào)用一些操作系統(tǒng)的功能,不直接和網(wǎng)絡打交道,控制網(wǎng)絡的任務由專門的設備驅動模塊完成。只是調(diào)用接口,向提供所有需要的服務。通過下圖我們可以更清楚地看到協(xié)議的結構。上面已經(jīng)說過了,連接是可靠的,而且保證了傳送數(shù)據(jù)包的順序,保證順序是用一個序號來保證的。響應包內(nèi)也包括一個序列號,表示接收方準
5、備好這個序號的包。在傳送一個數(shù)據(jù)包時,它同時把這個數(shù)據(jù)包放入重發(fā)隊列中,同時啟動記數(shù)器,如果收到了關于這個包的確認信息,將此包從隊列中刪除,如果計時超時則需要重新發(fā)送此包。請注意,從返回的確認信息并不保證最終接收者接收到數(shù)據(jù),這個責任由接收方負責。每個用于傳送的通道都有一個端口標記,因為這個標記是由每個終端確定的,因此可能不唯一,為了保證這個數(shù)值的唯一,要使用網(wǎng)絡地址和端口號的組合達到唯一標識的目的,我們稱這個為了套接字(),一個連接由連接兩端的套接字標識,本地的套接字可能和不同的外部套接字通信,這種通信是全雙工的。通過向本地端口發(fā)送命令及外部套接字參數(shù)建立連接,返回一個標記這個連接的名稱,以
6、后如果用戶需要使用這個名稱標記這個連接。為了保存這個連接的信息,我們假設有一個稱為傳輸控制塊(,)的東西來保存。命令還指定這個連接的建立是主動請求還是被動等待請求。下面我們要涉及具體的功能了,段以數(shù)據(jù)報的形式傳送。包頭傳送不同的信息域,包括源地址和目的地址。頭跟在包頭后面,提供了一些專用于協(xié)議的信息。下圖是包頭格式圖:01230123456739012345S78501234E)7830111111111111111111111111111111111ScuresPort|111111111111111111111Destination1111111111111Port|11111111111
7、1SequenceNumberLl1111111111111J1111111111111AcknaivledgmentNumbex111111IData|tn1i11111111111|U|A|P|R|S|F|n11i1111111111|Offset|Reserved|K|C|S|S|Y|I|Window1I.,!GKHTir|NJ111111Checksum.|UxgentFainter|1111111111111111111111111Options1IIIIIIIIIIIIII1111111111111n11111rPadding|1IIiiiidata1TH-1-HUH-1-HUHH
8、TCP包頭格式源端口:16位;目的端口:16位序列碼:位,當出現(xiàn),序列碼實際上是初始序列碼(),而第一個數(shù)據(jù)字節(jié)是確認碼:位,如果設置了控制位,這個值表示一個準備接收的包的序列碼;數(shù)據(jù)偏移量:4位,指示何處數(shù)據(jù)開始;保留:6位,這些位必須是0;控制位:6位;窗口:16位;校驗位:16位;優(yōu)先指針:16位,指向后面是優(yōu)先數(shù)據(jù)的字節(jié);選項:長度不定;但長度必須以字節(jié)記;選項的具體內(nèi)容我們結合具體命令來看;填充:不定長,填充的內(nèi)容必須為0,它是為了保證包頭的結合和數(shù)據(jù)的開始處偏移量能夠被32整除;我們前面已經(jīng)說過有一個的東西了,里有存儲了包括發(fā)送方,接收方的套接字,用戶的發(fā)送和接收的緩沖區(qū)指針等變量
9、。除了這些還有一些變量和發(fā)送接收序列號有關:發(fā)送序列變量發(fā)送未確認發(fā)送下一個發(fā)送窗口發(fā)送優(yōu)先指針用于最后窗口更新的段序列號用于最后窗口更新的段確認號初始發(fā)送序列號接收序列號接收下一個接收下一個接收優(yōu)先指針初始接收序列號下圖會幫助您了解發(fā)送序列變量間的關系:表示沒有連EO和;,還有超時,上面所當前段變量段序列號段確認標記段長段窗口段緊急指針段優(yōu)先級連接進程是通過一系列狀態(tài)表示的,這些狀態(tài)有:T,AA,T,和接,各個狀態(tài)的意義如下:偵聽來自遠方端口的連接請求;在發(fā)送連接請求后等待匹配的連接請求;在收到和發(fā)送一個連接請求后等待對連接請求的確認;代表一個打開的連接,數(shù)據(jù)可以傳送給用戶;等待遠程的連接中
10、斷請求,或先前的連接中斷請求的確認;從遠程等待連接中斷請求;等待從本地用戶發(fā)來的連接中斷請求;等待遠程對連接中斷的確認;等待原來發(fā)向遠程的連接中斷請求的確認;等待足夠的時間以確保遠程接收到連接中斷請求的確認;沒有任何連接狀態(tài);連接過程是狀態(tài)的轉換,促使發(fā)生狀態(tài)轉換的是用戶調(diào)用:E,;傳送過來的數(shù)據(jù)段,特別那些包括以下標記的數(shù)據(jù)段,和說的都會時狀態(tài)發(fā)生變化。下面的圖表示了了。狀態(tài)的轉換,但這圖中沒有包括錯誤的情況和錯誤處理,不要把這幅圖看成是總說明_11_主動OPENICLOSED|H+創(chuàng)建TCB發(fā)I“II送5訕TOC o 1-5 h z被動OPEM|CLOSE創(chuàng)產(chǎn)TCBII刪除TCBV|h+C
11、LOSE|LISTEN|+刪除TCB|接收SYN|SEND|IVq1-笈送SYN,ACKJ發(fā)送SYN+I11I|SYN|接收SYN|SYN|RCVD|TIMEWAIT|xV_11_-|CLOSED|11發(fā)送憂K1111Hh接收Syn的iCK/接收沁ACK111發(fā)送ACK1VV|CLOSE_1+|ESTAB|1發(fā)送FINH十1CLOSE|接收FINV|Hb發(fā)送FIN發(fā)送ACKH一十|FIN|CLOSE1|WAIT1|WAIT1Hb接收FINH_十|接收FUI的朋E|CLOSE|炭送ACK|VKV發(fā)迸FiliV十十-十TCP連接狀態(tài)圖序.列號請注意,我們在連接中發(fā)送的字節(jié)都有一個序列號。因為編了號
12、,所以可以確認它們的收到。對序列號的確認是累積性的,也就是說,如果用戶收到對的確認信息,這表示在以前的數(shù)據(jù)(不包括)都收到了。在每個段中字節(jié)是這樣安排的:第一個字節(jié)在包頭后面,按這個順序排列。我們需要認記實際的序列空間是有限的,雖然很大,但是還是有限的,它的范圍是0到2的32次方減1。我想熟悉編程的一定知道為什么要在計算兩個段是不是相繼的時候要使用的次方為模了。必須進行的序列號比較操作種類包括以下幾種:決定一些發(fā)送了的但未確認的序列號;決定所有的序列號都已經(jīng)收到了;決定下一個段中應該包括的序列號。對于發(fā)送的數(shù)據(jù)要接收確認,處理確認時必須進行下面的比較操作:最老的確認了的序列號;下一個要發(fā)送的序
13、列號;接收的確認,接收期待的下一個序列號;一個數(shù)據(jù)段的第一個序列號;數(shù)據(jù)段中包括的字節(jié)數(shù);數(shù)據(jù)段的最后一個序列號。請注意下面的關系:如果一個數(shù)據(jù)段的序列號小于等于確認號的值,那么整個數(shù)據(jù)段就被確認了。而在接收數(shù)據(jù)時下面的比較操作是必須的:期待的序列號和接收窗口的最低沿;最后一個序列號和接收窗口的最高沿;接收到的第一個序列號;接收到的最后一個序列號;上面幾個量有如下關系:或測試的第一部分是檢查數(shù)據(jù)段的開始部分是否在接收窗口中,第二部分是檢查數(shù)據(jù)段的結束部分是否也在接收窗口內(nèi);上面兩個檢查通過任何一個就說明它包括窗口要求的數(shù)據(jù)。實際中的情況會更復雜一些,因為有零窗口和零數(shù)據(jù)段長,因此我們有下面四種
14、情況:段長度接收窗口測試不可接受或請注意接收窗口的大小可以為零,在窗口為零時它只用來接收信息,因此對于一個來說,它可以使用零大小窗口在發(fā)送數(shù)據(jù)的同時接收數(shù)據(jù)。即使接收窗口的大小為零,必須處理所有接收到信息的和域。我們也應用計數(shù)的方式保護了一些特定的控制信息,這是通過隱式地使用一些控制標記使數(shù)據(jù)段能夠可靠地重新發(fā)送(或確認)為達到的??刂菩畔⒉⒉辉诙螖?shù)據(jù)空間中傳送,因此,我們必須采用隱式指定序列號進行控制。和是需要保護的控制量,這兩個控制量也只在連接打開和關閉時使用。被認為是在第一個實際數(shù)據(jù)之間的數(shù)據(jù),而是最后一個實際數(shù)據(jù)之后的數(shù)據(jù)。段長度()包括數(shù)據(jù)和序列號空間,如果出現(xiàn)了,那么是的序列號。初
15、始序列號選擇協(xié)議對于特定連接被重復使用沒有什么限制。連接是由一對套接字定義的。新的連接實例被定義為連接的另一次恢復,這就帶來了問題:如果確定多個數(shù)據(jù)段是從以前連接的另一次恢復中取得的呢?這個問題在連接迅速打開和關閉,或因為內(nèi)存原因被關閉然后又迅速建立后顯示特別突出。為了避免混亂,用戶必須避免因此恢復使用某一連接,而使序列號發(fā)生混亂。我們必須保證序列號的正確性,即使失敗,根本不知道以前的序列號是什么的情況下也要保證序列號的正確性。當新的連接被創(chuàng)建時,產(chǎn)生一個新的初始序列號()產(chǎn)生子,它用來選擇一個新的位S產(chǎn)生子和位時鐘的低度位字節(jié)相關,低位字節(jié)的刷新頻率大概是微秒,因此的循環(huán)時間大概是小時。因此
16、我們把網(wǎng)絡包的最長生存時間()小于小時,因此我們可以認為是唯一的。對于每個連接都有發(fā)送序列號和接收序列號,初始發(fā)送序列號()由發(fā)送選擇,而初始接收序列號是在連接建立過程中產(chǎn)生的。對于將要連接或初始化的連接,兩個必須和對方的初始序列號同步。這通過交換一個控制位和初始序列號完成。我們把帶有的數(shù)據(jù)段稱為。同步的獲得過程這里就不重復了,每方必須發(fā)送自己的序列號并返回對對方序列號的確認。本方序列號是本方序列號被確認對方序列號是確認對方序列號上面的第2步和第3步可以合并,這時可以成為3階段,所以我們可以稱它為三消息握手。這個過程是必須的,因為序列號不和全局時鐘關聯(lián),也可以有不同的機制選擇。接收到第一個的接
17、收方不可能知道這個數(shù)據(jù)段是不是被延時,除非它記住了在連接上使用的最近的序列號(這通常是不可能的),因此它必須要求發(fā)送者確認。為了保證獲得的確認是剛才發(fā)送的段產(chǎn)生的,而不是仍然在網(wǎng)絡中的老數(shù)據(jù)段產(chǎn)生的,因此必須在時間之內(nèi)保持沉默。在本文中,我們假設小時,這是出于工程的需要,如果用戶覺得可以,他可以改變。請注意如果重新初始化,而內(nèi)存中的序列號正在使用,不需要等待,但必須確認使用的序列號比當前使用的要大。如果一臺主機在未保留任何序列號的情況下失敗,那么它應該在時間之內(nèi)不發(fā)出任何數(shù)據(jù)段。下面將會這一情況進行說明。的實現(xiàn)可以不遵守這個規(guī)定,但是這會造成老數(shù)據(jù)被當成新數(shù)據(jù)接收,而新數(shù)據(jù)被當成老數(shù)據(jù)拒絕的情
18、況。每當數(shù)據(jù)段形成并進入輸出隊列,會為它指定序列空間中的一個值。中多復本檢測和序列算法都依賴于這個地址空間,在對方發(fā)送或接收之前不會超過2的32次方個包存在于輸出隊列中。所有多余的數(shù)據(jù)段都會被刪除。如果沒有這個規(guī)定,會出現(xiàn)多個數(shù)據(jù)段被指定同一個序列號的情況,會造成混亂。數(shù)據(jù)段中序列號的多少和數(shù)據(jù)段中的字節(jié)數(shù)一樣多。在通常情況下,保留下一個要發(fā)送的序列號和還未確認的最老的序列號,不要在沒有確認的時候就再次使用,這樣會有些風險,也正是因為這樣的目的,所以序列空間很大。對于的網(wǎng)絡,要小時來耗盡序列空間,因為一個數(shù)據(jù)段可能的最大生存時間也不過十幾分之一秒,這就留下了足夠的空間;而在10的網(wǎng)絡上需要分鐘
19、,雖然少了點,但也可以了。如果在實現(xiàn)時沒有為保存序列號留下空間,那清除多余的包可能就不能實現(xiàn)了,因此推薦這種類型的實現(xiàn)最好在失敗后等待時間,這樣保證多余的包被刪除。這種情況有時候也可能會出現(xiàn)在保留序列號的實現(xiàn)中。如果在選擇一個另一個連接正在使用的序列號時,這臺主機突然失敗了,這就產(chǎn)生了問題。這個問題的實質在于主機不知道它失敗了多久,也不知道多余的復本是不是還在網(wǎng)絡中。處理這種問題的方法是等待時間,如果不這樣就要冒著對方錯誤接收數(shù)據(jù)的危險,要等待的時間也就稱為“沉默時間”。實現(xiàn)者可以讓用戶選擇是不是等待,但是無論用戶如何也不見得非要等待時間。建立一個連接建立連接應用的是三消息握手。如果雙方同時都
20、發(fā)送也沒有關系,雙方會發(fā)現(xiàn)這個中沒有確認,于是就知道了這種情況,通常來說,應該發(fā)送一個段來解決這種情況。三消息握手減少了連接失敗的可能性。下面就是一個例子,在尖括號是的就是數(shù)據(jù)段中的內(nèi)容和標記。其它的就不多說了。TCPATCPBCLOSEDLISTENSYJT-EEITTSYIT-EECEIVEDESTABLISHEDESTABLISHEDESTABLISHEDESTABLISHED基匣三消息同歩在第行,發(fā)送初始化序列號,表示它要使用序列號;第行中,給出確認,并且期待著的帶有序列號的數(shù)據(jù)段;第行,給出確認,而在第行,它也給出確認,并發(fā)送了一些數(shù)據(jù),注意第行的序列號與第號的一樣,因為信息不占用序
21、列號空間內(nèi)的序列號。同時產(chǎn)生請求的情況如下圖所示,只復雜一點。TCPBCLOSEDSYK-KECEIVEDESTABLISHEDTCPA2.3.5.6.CLOSEDSY1I-SENTS-DECEIVEDSTN-DECEIVEDESTABLISHED同時連接同步使用三消息握手的主要原因是為了防止使用過期的數(shù)據(jù)段。為了這個目的,必須引入新的控制消息,如果接收處理非同步狀態(tài),在接收到后返回到狀態(tài)。如果處理下面幾種狀態(tài)LAA-S-時,放棄連接并通過用戶。我們下面就詳細說明后一種情況。TCPBTCPAI3.5.6.8.CLOSEDSY1I-SENTtduplicate)SY-SENTSYI-SENTST
22、N-SENTESTABLISHEDLISTEN.SEQ=90XCTL=SW-SYN-RECEIVEDSYR-RECEIVEDLISTEN-SYIf-RECEIVEDSYK-EECEIVEDESTABLISHED過期SYN的恢震通過上面的例子,我們可以看出連接是如何從過期數(shù)據(jù)段的干擾下恢復的。請注意第行和第行中的(信號)。半開連接和其它非正常狀態(tài)如果連接已經(jīng)不存在,而發(fā)送來的消息又不是,那么要返回。如果想拒絕對不存在的連接如果一方在未通過另一方的情況下關閉連接,或雙方雖然失敗而不同步的情況我們稱為半開連接狀態(tài)。在一方試圖發(fā)送數(shù)據(jù)時連接會自動。然而這種情況畢竟屬于不正常情況。應該做出相應的處理。如
23、果處的連接已經(jīng)關閉,處并不知道。當希望發(fā)送數(shù)據(jù)到時,就會收到信號,表示這個連接有誤,要中止當前連接。假設和兩個進程相互通信的時候的發(fā)生了失敗,依靠操作系統(tǒng)支持的存在,通常這種情況下會有恢復機制起作用,當重新恢復的時候,可能希望從恢復點開始工作。這樣可能會試圖連接,然后在這個它認為還是打開的連接上傳送數(shù)據(jù),這時會從本地(也就是的)上獲得錯誤消息“未打開連接”。的將發(fā)送包括的數(shù)據(jù)段。下面的例子將顯示這一過程:3.5.6.TCPA(CRASH)CLOSEDSYN-SEWT(!J)SYN-SEWTSYN-SEWTTCPB(send300jreceive100)TOC o 1-5 h zESTABLIS
24、HED(?)ESTABLISHED(Aboit!J)CLOSED一半開連接檢測上面這個例子中,方收到的信息并沒有確認任何東西,這時候發(fā)現(xiàn)出了問題,于是發(fā)送了控制信息。另一種情況是發(fā)生在失敗,而方仍然試圖發(fā)送數(shù)據(jù)時,下面的例子可以表示這種情況,請注意第行中對發(fā)送來的信息不知所云。TCPATCPB(send300jieceive100)(?)(ABORT)主動方引起半開連接檢測在下面的例子中,方和方進行的被動連接,它們都在等待信息。過期的包傳送到方使回應了,而收到回應的卻發(fā)現(xiàn)不對頭,傳送控制信息,方返回被動狀態(tài)。TCPATCPBLISTENLISTED.SYIT-KECEIVED(?)Cretuz
25、ntoLISTEN)E.LISTENLISTED過期SYN在兩個被動査接字上開始RESET現(xiàn)實中的情況太多了,我們列舉一些產(chǎn)生控制信息的規(guī)則如下:通常情況下,在收到的信息不是期待的信息時產(chǎn)生。如果在不能確定時不要輕易發(fā)送控制信息。下面有三類情況:進行,可以使用這種辦法。如果到達的信息有一個域,返回的信息可以從域中取得序列號,如果沒有這個域,就把的序列號設置為,域被設備為序列號和到達段長度之和。連接仍然處于狀態(tài)。如果連接處于非同步狀態(tài)(T,),而且收到的確認是對未發(fā)出包的確認或是接收到數(shù)據(jù)段的安全級別與不能連接要求的相一一致時,就發(fā)送。如果未被確認時,而且收到的數(shù)據(jù)段的優(yōu)先級比要求的優(yōu)先級要高,
26、那么要么提高本地優(yōu)先級(得事先征得用戶和系統(tǒng)的許可)要么發(fā)送;如果接收數(shù)據(jù)段的優(yōu)先級比要求的優(yōu)先級低,就算是匹配了,當然如果對方發(fā)現(xiàn)優(yōu)先級不對提高了優(yōu)先級,在下一個包中提高了優(yōu)先級,這就不算是匹配了。如果連接已經(jīng)進入,那么接收到數(shù)據(jù)段的優(yōu)先級必須和本地優(yōu)先級一樣,否則發(fā)送。如果到達的信息有一個域,返回的信息可以從域中取得序列號,如果沒有這個域,就把的序列號設置為,域被設備為序列號和到達段長度之和。連接仍然處于與原來相同的狀態(tài)。如果連接處于同步狀態(tài)(,-)w任何超出接收窗口的序列號的數(shù)據(jù)段都產(chǎn)生如下結果:發(fā)出一個空確認數(shù)據(jù)段,此段中包括當前發(fā)送序列號,另外還包括一個確認指出希望接收的下一個數(shù)據(jù)段
27、的序列號,連接仍然保存在原來的狀態(tài)。如果因為安全級,優(yōu)先級之類的問題,那就發(fā)送信號然后進入狀態(tài)。過程除了狀態(tài)外的其它狀態(tài)中,所有的數(shù)據(jù)段可以通過檢查域查明。如果序列號在接收窗口中,是有效的。當連接處于狀態(tài)時,如果域確認,那么也是合法的。的接收方首先確認它的合法性,然后進行狀態(tài)轉換。如果接收方處于狀態(tài),它就忽略包。如果接收方處于狀態(tài),而且以前處于狀態(tài),接收方返回狀態(tài),否則接收方關閉連接進入狀態(tài)。當接收方處于其它狀態(tài)時,直接關閉連接回到狀態(tài)。關閉連接是一個操作,它的意思就是“本方已經(jīng)有數(shù)據(jù)發(fā)送”。由于是全雙工的,所以會造成一些麻煩,因為接收方對于處理接收方的連接有點麻煩。我們以一種簡單的方式對待,
28、發(fā)送的一方在接收到對方的之前,還要繼續(xù)接收數(shù)據(jù)。因此程序可以在一個之后初始化幾個,然后開始E直到接收到對方的而失敗為止。我們假設可以通知用戶連接關閉,即使仍在也可以,這樣用戶就可以正常關閉了。這樣,可以在連接關閉前可靠地發(fā)送數(shù)據(jù)。下面列舉了三種基本情況:情況1:本地用戶關閉這種情況下,可以建立一個段放入發(fā)送隊列。不再接收用戶的指令,進入狀態(tài)。在這種狀態(tài)下是允許的。所有數(shù)據(jù)段和在未接收到確認以前會一直發(fā)送。當另一個確認,并發(fā)送自己的后,本地的可以確認這個了。請注意,也可以在確認時不返回自己的,直到用戶關閉連接時再返回自己的,如果連接已經(jīng)不存在,而發(fā)送來的消息又不是,那么要返回。如果想拒絕對不存在
29、的連接情況:從網(wǎng)絡上接收到一個如果在沒有請求的情況下收到I可以返回并通知用戶連接已經(jīng)關閉。用戶可以以響應,在發(fā)送完剩下的數(shù)據(jù)后發(fā)送自己的I然后等待對這個的確認,在接收到后,它關閉連接。如果確認超時,可以關閉連接并通知用戶完事。情況:雙方同時關閉3.6優(yōu).先和安全的操作必須在兩個優(yōu)先級相同的端口間進行。使用的優(yōu)先和安全參數(shù)在協(xié)議中定義。我們這里所說的安全間隔就是指的中定義的優(yōu)先,用戶組和處理規(guī)定。如果不符合則發(fā)送S這些內(nèi)容請大家看上一節(jié)中的敘述。在操作過程中也會檢查接收數(shù)據(jù)段的優(yōu)先級,還可以在操作中提高優(yōu)先級。雖然運行在無安全環(huán)境中,主機也必須能夠處理安全參數(shù)。:.7數(shù).據(jù)通信建立了連接以后就是
30、傳送數(shù)據(jù)了,通過重新傳送保證每個數(shù)據(jù)段到達對方,因為有了重新傳送,所以對方可能接收到兩個相同的包,那就必須根據(jù)內(nèi)部的序列號判斷哪個數(shù)據(jù)段是可以接收的。發(fā)送方通過使用跟蹤下一個要發(fā)送的數(shù)據(jù)段,而接收方則跟蹤來知道下一個要接收的數(shù)據(jù)段。發(fā)送方要還未確認的最老的序列號保存于。當發(fā)送方形成數(shù)據(jù)段并發(fā)送它后增大;當接收方接收到數(shù)據(jù)段后增大并發(fā)送確認;當發(fā)送方接收到確認后增大。它們?nèi)咴诓煌臅r間增大,這是因為傳送時延造成的。而增大多少則由數(shù)據(jù)段中數(shù)據(jù)的大小決定。注意:連接進入狀態(tài)后,所有的段必須包括當前的確認信息。而用戶操作的性質類型于推操作,這和在接收到的數(shù)據(jù)段中的標記一樣。重傳超時因為網(wǎng)絡中有不類型
31、的網(wǎng)絡,而使用的范圍又很廣,因此重傳超時必須動態(tài)決定。下面給出一個例子,通過例子可以看出確定重傳超時的過程。下面有兩個變量說明時延的問題,一個是環(huán)路時間(),它是由一個序列碼得到的,這個序列碼在發(fā)送時給出,在接收到確認時被覆蓋;另一個平滑環(huán)路時間():通過上面的式子,可以得到重傳超時(R,)O:其中是超時的上界(如分鐘),是超時的下界(如秒鐘),是平滑因子(如到)9是延時變量(如到)。傳送緊急消息的緊急機制是允許發(fā)送者使接收者接收一些緊急消息,并讓接收方在接收到這一消息后立刻通知用戶。這種機制是在數(shù)據(jù)流是加入一個點,指出這是緊急數(shù)據(jù)的結束點,當接收方要接收到這個點之前,它會通知用戶進入緊急狀態(tài)
32、,在接收到這個點的數(shù)據(jù)后,它會通知用戶進入通常狀態(tài)。如果這個緊急點在用戶進入緊急狀態(tài)時更新,這個更新必須對用戶透明。應用一個緊急域的方法可以達到上述目的,而控制標記則指明緊急域是否被使用,而且在數(shù)據(jù)段中必須加入指示緊急點的序列號,如果沒有這個標記則說明沒有緊急點。如果需要發(fā)送緊急數(shù)據(jù),發(fā)送方必須起碼發(fā)送一個字節(jié)。管理窗口如果我們學習過網(wǎng)絡基礎,我們一定知道有一個窗口協(xié)議,中每個數(shù)據(jù)段都包括下一個希望接收到的序列號。窗口比較大會提高傳送速度,如果傳送過來的數(shù)據(jù)超過的窗口大小,數(shù)據(jù)會被拋棄。這樣會加重網(wǎng)絡負擔。如果開始時的接收窗口比較大,而到最后這個窗口縮小了,這種作法可不是好辦法。對于健壯的來說
33、,最好不要自己縮小窗口,但要做要準備對方的縮小窗口。即使發(fā)送窗口大小為零,發(fā)送也必須做好準備接收數(shù)據(jù)并且可以發(fā)送至少一位新數(shù)據(jù)。即使接收窗口為零,發(fā)送方也會重發(fā),重發(fā)間的間隔時間一般為兩分鐘。當接收的接收窗口為零時,在它接收到數(shù)據(jù)時,它依然會返回確認,其中包括希望收到的序列碼和當前窗口大小(為零)。發(fā)送將數(shù)據(jù)打成符合當前大小的包,但在重新傳送隊列中可能重新打包。這種重新打包并不是必須的,但是會很有好處。如果一個連接只有單向數(shù)據(jù)流,窗口信息可以在確認信息中得到,這些的序列號都是一個,因此沒法區(qū)別出誰先誰后。但這并不是一個嚴重的問題。改進的方法是在數(shù)據(jù)段中加入最新的期待序列號,這樣就可以區(qū)別出誰先
34、誰后了。窗口管理對傳送效率有很大影響,下面是一些建議:當使用更少的大數(shù)據(jù)而要獲得高效率時分配非常小的窗口使數(shù)據(jù)以許多小段傳送。對于發(fā)送者來說要避免在發(fā)送小數(shù)據(jù)段時必須等到窗口大到一定程度再進行。確認不要被延時。接收窗口如果大小為零時,要傳送的數(shù)據(jù)段可能被分成越來越小的段。如果發(fā)送僅僅發(fā)送窗口允許大小的數(shù)據(jù)段,可能這些數(shù)據(jù)段會被換成比這個段大(或者?。┑臄?shù)據(jù)段發(fā)送。接收方時不時地進行窗口大小調(diào)整會使大數(shù)據(jù)段分為小段,而不成對。盡量把小的窗口合成大的窗口。接口網(wǎng)絡協(xié)議的分層結構決定了有兩個接口,向上的用戶接口和下面的接口。對下層接收口的描述不是很清楚,這個工作由下層協(xié)議來描述,但是這里我們也描述一
35、些要使用要的參數(shù)。用戶接口下面描述一些命令,這些命令是功能性的,因各系統(tǒng)不同具體實現(xiàn)可能不同。最后,我們必須清楚,不同的實現(xiàn)可能有不同的用戶接口,但是有一些功能是最基本的,本節(jié)描述的功能便是這個基本功能集。用戶命令下面定義的命令與其它高級語言中定義的方法差不多,但有些陷井操作需要的,如,。下面只是一個功能介紹,具體實現(xiàn)可能大為不同,如有些系統(tǒng)會把這里的多條命令結合成一條命令使用。為了實現(xiàn)通信功能,不能只會接收命令,而且能夠返回消息給它服務的進程,這些消息包括:關于連接的通常消息,如中斷,遠程關閉等等;對用戶命令做出應答,是成功還是失敗。格式:我們假定本地注意到它所服務的進程標記,而且將檢查進程
36、的認證。因實現(xiàn)不同,本地網(wǎng)絡和源地址的認證可能由進行也可以由下層協(xié)議進行(如協(xié)議)。這些考慮主要是基于安全性的考慮。如果標記設置為,會檢測到達的連接請求,它是被動的,被動的連接可以有一個完全指定的外套接字用于等待特定的連接或未指定的外套接字來等待任何呼叫。一個完全定義的被動呼叫可以通過執(zhí)行一系列的命令而變?yōu)橹鲃拥?。?chuàng)建一個傳輸控制塊(),其中一部分參數(shù)是由命令參數(shù)而來。在主動時,會立刻開始同步連接。如果給出參數(shù),會允許呼叫者應用于所有數(shù)據(jù)。如果在規(guī)定的時間內(nèi)還未把數(shù)據(jù)送到目的地,就關閉連接,一般的默認值是分鐘。參數(shù)或是用于規(guī)范用戶對某一連接的安全性的,如果沒有指定則使用默認值。會匹配這兩個參數(shù)
37、,只有在一致而且接收到的小于等于要求的時才會打開連接。當連接的大于要求的值時,從接收到的數(shù)據(jù)段中取得這一值,并在連接中一直使用這個比較大的值。具體實現(xiàn)時可以給用戶權力控制的決定過程。例如,用戶可以要求必須安全一致,或在提升時要通知用戶。本地連接名()由返回用戶,它可以代替本地套接字,外套接字標記一個連接。格式:這個命令使指定緩沖區(qū)內(nèi)的數(shù)據(jù)發(fā)向指定連接,如果連接未打開則返回一個錯誤,一些實現(xiàn)中可能在打開連接以前調(diào)用,由自動打開連接。如果設置了標記,數(shù)據(jù)必須立刻傳送給接收者,而且位在緩沖區(qū)中的最后一個段是必須設置。如果沒有設置,此數(shù)據(jù)段就會因為效率的考慮而和下一個命令傳送的數(shù)據(jù)一起傳送。如果設置了
38、標記,那就必須象上面所述的一樣緊急處理。傳送方設置的數(shù)目不一定非要等于通知接收方用戶的次數(shù)。如果在中沒有指定外套接字,那緩沖區(qū)數(shù)據(jù)會被發(fā)送到隱式外套接字。未使用外套接字打開連接的用戶仍然可以,而不用知道外套接字地址。但是,如果在指定外套接字前進行,則會出錯。用戶可以使用確定連接狀態(tài)。如果指定了,對于當前連接的當前用戶會更改為新的連接。最簡單的實現(xiàn)方法就是在沒有把數(shù)據(jù)發(fā)送完畢以前,不把控制權交給發(fā)送進程,但是這樣可能會造成死鎖(例如,雙方都試圖,而不準備)I效率也不好。好的實現(xiàn)方法是在發(fā)送一段數(shù)據(jù)后返回控制權給發(fā)送進程,當然如果能夠多個同時發(fā)送,那更好不過了。有多個需要服務時一般采取先來先服務。
39、對于本地來說,我們現(xiàn)在假定的是在發(fā)送數(shù)據(jù)后會產(chǎn)生類似中斷的東西告訴發(fā)送進程數(shù)據(jù)發(fā)送的情況;當然也可以在發(fā)送完后立刻告知進行數(shù)據(jù)發(fā)送的情況。我們可以樂觀地認為發(fā)送是成功的,如果發(fā)送失敗,連接會因為超時而關閉。在實現(xiàn)中,即使是同步返回情況,也需要一些異步信號,但這些異步信號是用于處理連接的,而不是用于處理數(shù)據(jù)發(fā)送的。既然允許多個同時工作,因此有必要區(qū)別返回的信息是哪一個的。具體的情況下面會討論到。格式:此命令分配一個接收緩沖區(qū)給指定的連接。如果下面不是一個命令或者此調(diào)用進行未被授權使用此連接返回錯誤。最簡單的實現(xiàn)方法是在緩沖區(qū)沒有填充完以前不返回控制權,但這樣可能會造成嚴重的死鎖。更復雜的實現(xiàn)方法
40、允許同時存在多個,這樣會提高效率。這樣是在控制復雜的情況下取得了高效率。如果在之前的數(shù)據(jù)已經(jīng)填滿緩沖區(qū),那么對于的響應中就不用設置位了。緩沖區(qū)會容納盡可能多的數(shù)據(jù),如果在緩沖區(qū)填充滿以前看到位,將返回緩沖區(qū)中的數(shù)據(jù)并設置S在處理緊急狀態(tài)時,如果有標記,還有緊急數(shù)據(jù);如果沒有標記了,就返回所有緊急數(shù)據(jù),用戶也離開緊急狀態(tài)。請注意,在緊急指針指向的點以后的那些數(shù)據(jù)不能和緊急數(shù)據(jù)一起返回,即使它們在同一個緩沖區(qū)內(nèi),當然,如果用戶指定要這么做例外。為了區(qū)別多個并保證緩沖區(qū)不被充滿,返回的數(shù)據(jù)中也要包括緩沖區(qū)指針和一個計數(shù)器指明現(xiàn)在接收了多少數(shù)據(jù)。可以有自己專用了緩沖區(qū),也可以和用戶共享一個緩沖區(qū)。格式
41、:本地連接名此命令關閉連接,如果連接未打開,或未授權可以關閉連接返回錯誤。在關閉的時候應該注意正常關閉,讓所有的發(fā)送都發(fā)送完數(shù)據(jù),也可以如上所說在后面加上幾個,這就要求用戶在收到后仍然要進行接收。因此,意指“我沒有更多的數(shù)據(jù)要發(fā)了”,并不代表“我不再發(fā)送任何數(shù)據(jù)了”。關閉方也可能在超時前不能發(fā)出所有數(shù)據(jù),這種情況下,要由轉入狀態(tài)。用戶可以自己決定在任何時間關閉連接,也可以根據(jù)返回的提示關閉。因此關閉操作要和外進行通信,因此在關閉狀態(tài)可能要呆一會兒,在沒有返回前調(diào)用打開,會返回錯誤。格式本地連接名這個命令和具體的實現(xiàn)有關,而且有可能會有負作用。返回的信息通常來自有連接相關的。返回的數(shù)據(jù)塊中包括下
42、面的信息:本地套接字,外套接字,本地連接名,接收窗口,發(fā)送窗口,連接狀態(tài),等待確認的緩沖區(qū)數(shù),等待接收的緩沖區(qū)數(shù),緊急狀態(tài),優(yōu)先級,和傳輸超時。因此實現(xiàn)不同,所以上述數(shù)據(jù)項中可能有幾項沒有意義或根本不存在。如果調(diào)用進程沒有被授權使用這一連接,返回錯誤。這一點會防止未被授權的進程獲得連接狀態(tài)。格式本地連接名此命令中止所有和,刪除,將發(fā)送特殊的信息到對方。具體的返回信息會因實現(xiàn)不同而不同。到用戶信息假定操作系統(tǒng)提供一種可以使異步傳送信息到用戶程序的機制。當確實通知用戶程序時會返回一些特定的信息。通常在這些信息中也會有錯誤信息,在其它情況下會有關于完成或或其它用戶調(diào)用的相關信息。會提供下面的幾種消息
43、:本地連接名都提供響應串都提供緩沖區(qū)地址發(fā)送和接收字節(jié)記數(shù)接收標記接收標記接收和下層接口實際上調(diào)用下層服務才能在網(wǎng)絡上傳輸數(shù)據(jù),在互聯(lián)網(wǎng)上我們通常認為的下層是協(xié)議。如果下層是層,它提供一些類于服務類型和生存時間的參數(shù)。使用這些參數(shù)的如下設置:或是數(shù)字00000。000一分鐘,或是數(shù)字1請注意:假定的最大數(shù)據(jù)段的生存時間為分鐘,這里人為指定為分鐘。如果下層是而且使用源地址路由,接口必須允許路由信息的通信。這對建立連接和進行路由是十分重要的。當然也可以不使用協(xié)議作為的底層協(xié)議,但無論下層協(xié)議是什么,都必須提供源地址,目的地址和協(xié)議域,以及一些決定長度的域,總之一句話,要能夠提供類似于的功能。事件處
44、理下面說明的過程是可能的實現(xiàn),其它實現(xiàn)和本例的過程可能有一點點不同,但只在細節(jié),而決不在結果。的活動可以總結為對事件的響應。事件可以分為三類:用戶調(diào)用,接收數(shù)據(jù)段和超時。下面描述的是對具體事件的響應,在許多情況下,相關的動作(響應)要和連接狀態(tài)相關。用戶調(diào)用的有:接收數(shù)據(jù)段的有:超時的有:對用戶的響應可能是立即的也可能是延時的。錯誤信息以字符串的形式給出。下面就是一個具體的錯誤信息:。另外,請記住序列號空間大小為的次方。處理數(shù)據(jù)段的順序為首先接收,再檢查序列號,如果是要接收的就放入接收隊列。另外,沒有說明狀態(tài)轉移時,保持原來的狀態(tài)。調(diào)用狀態(tài)創(chuàng)建新的保存連接狀態(tài)信息,填充本地套接字標記,外套接字
45、,優(yōu)先級,和用戶超時信息。注意一部分外套接字在被動中可能未說明。如果是主動的,而外套接字未指定,返回,如果是主動的,而外套接字指定了,發(fā)送一個數(shù)據(jù)段。選擇初始發(fā)送序列號。數(shù)據(jù)段的格式如下,設置為,為,進行狀態(tài),然后返回。如果調(diào)用者不能訪問指定的本地套接字,返回。如果沒有空間接收新的連接,返回。狀態(tài)如果處于主動狀態(tài),指定了外套接字,可以將連接從被動改為主動,并選擇。發(fā)送一個數(shù)據(jù)段,設置為,為。進入狀態(tài)。和一起的數(shù)據(jù)可以和數(shù)據(jù)段一起發(fā)送,也可以在進入狀態(tài)后發(fā)送。如果沒有空間接收請求,返回r如果未指定外套接字,返回。如果處于以下狀態(tài):狀態(tài),狀態(tài),狀態(tài),狀態(tài),狀態(tài),狀態(tài),狀態(tài)或狀態(tài)時返回。調(diào)用狀態(tài)如果
46、用戶無權訪問連接,返回。否則返回狀態(tài)TOC o 1-5 h z如果指定了外套接字,可以將連接從被被動改為主動,選擇一個。發(fā)送數(shù)據(jù)段,設置為s為。進入狀態(tài)。和一起的數(shù)據(jù)可以和數(shù)據(jù)段一起發(fā)送,也可以在進入狀態(tài)后發(fā)送。如果沒有空間接收請求,返回,如果未指定外套接字,則返回。狀態(tài)和時在進入狀態(tài)后將需要傳送的數(shù)據(jù)加入隊列。如果隊列已無空間,則返回狀態(tài)和狀態(tài)將緩沖區(qū)分段,發(fā)送緩沖區(qū)數(shù)據(jù),并使它帶有確認值。如果沒有空間保存緩沖區(qū),則返回。如果設置了緊急標記,那么,并設置緊急指針指向發(fā)送數(shù)據(jù)段中的相應位置。在A,和狀態(tài)時返回,不理會請求。調(diào)用狀態(tài)如果用戶沒有權利訪問這個連接,返回。如果有權利,則返回。在,和狀
47、態(tài)下在進入狀態(tài)后,將數(shù)據(jù)放入隊列準備處理。如果隊列中沒有空間,返回在,和狀態(tài)下如果沒有接收到足夠的數(shù)據(jù)段滿足請求,將請求放入隊列。如果隊列中沒有空間記錄,返回,重新將接收數(shù)據(jù)段放入接收緩沖區(qū),并返回給用戶。在這種情況下,可以設置標記。如果比現(xiàn)在傳送給用戶的要大,通知用戶有緊急數(shù)據(jù)。狀態(tài)如果連接已經(jīng)不存在,而發(fā)送來的消息又不是,那么要返回。如果想拒絕對不存在的連接因為遠方已經(jīng)發(fā)送了I必須由現(xiàn)在在緩沖區(qū)但還未傳送給用戶的數(shù)據(jù)滿足。如果沒有數(shù)據(jù)了,會得到的響應。在,和狀態(tài)下返回調(diào)用狀態(tài)如果用戶沒有權利訪問這個連接,返回。如果有權利,則返回。狀態(tài)存在著的任何都會返回的響應。刪除,然后進入狀態(tài)并返回。狀
48、態(tài)刪除并返回響應給任何在隊列中的或。狀態(tài)如果沒有發(fā)送,而且沒有等待發(fā)送的數(shù)據(jù)了,則形成并發(fā)送數(shù)據(jù)段,進入狀態(tài);否則在進入狀態(tài)后將命令保存在隊列中等待處理。狀態(tài)將這一命令保存在隊列中,直到所有正在進行的完成后,形成并發(fā)送數(shù)據(jù)段,然后進入狀態(tài)。在和狀態(tài)下嚴格地說,這將會是個錯誤,會收到。只要第二個沒有發(fā)出,也可以收到一個響應。狀態(tài)直到所有命令完成后再將這個請求放入隊列;然后發(fā)送數(shù)據(jù)段,進入狀態(tài)。-和狀態(tài)下返回調(diào)用狀態(tài)如果用戶沒有權利訪問這個連接,返回。如果有權利,則返回。狀態(tài)任何存在的都應該返回,刪除,進入狀態(tài),然后返回。狀態(tài)對于所有在隊列中的和,都返回rcetsie,o刪除,進入狀態(tài),然后返回。
49、在,LA和狀態(tài)發(fā)送數(shù)據(jù)段,對于所有在隊列中的和,都返回,;所有要進行傳送或重新傳送的數(shù)據(jù)段立刻進行,刪除,進入狀態(tài),然后返回。在,和狀態(tài)下返回,刪除,進入狀態(tài),然后返回。調(diào)用狀態(tài)e如果有權利,如果用戶沒有權利訪問這個連接,返回則返回狀態(tài)返回和指針。狀態(tài)返回和指針。返回狀態(tài)和指針。返回和指針。狀態(tài)返回和指針。狀態(tài)返回和指針。狀態(tài)返回和指針。狀態(tài)返回和指針。狀態(tài)返回和指針。狀態(tài)返回和指針。接收到數(shù)據(jù)段如果處于狀態(tài),所有到達的數(shù)據(jù)都被拋棄。包括的也不例外。如果接收到的數(shù)據(jù)段不包括,則返回一個。對于發(fā)送要選擇它可以認知的確認和序列號。如果關閉位,則序列號為0格式如下如果打開位,格式如下:如果處于狀態(tài),
50、首先檢查,接收到的應該被忽略。下來應該檢查,如果連接處于TOC o 1-5 h z狀態(tài)下,任何都是錯誤的,應該返回段,它的格式如下:。第三步應該檢查,如果位設置了,檢查安全性,如果接收數(shù)據(jù)段中的與中的不能匹配,返回段,格式如下:。在大于的情況下,如果用戶和系統(tǒng)允許,則設置,如果用戶和系統(tǒng)不允許,發(fā)送段并返回。其格式如下:。如果小于,繼續(xù)進行。設置為,為,指用.中,的指值,其它控制信息和數(shù)據(jù)以后處理。應該選擇和,并發(fā)送,段,其格式如下:。設置為,設置為的值,連接狀態(tài)改為,其它控制信息和數(shù)據(jù)將在狀態(tài)中處理,但以于和的處理不應該狀態(tài)狀態(tài)重復。如果未完全指定域,現(xiàn)在就應該指定了。第四步是處理其它數(shù)據(jù)和
51、控制信息。其它的數(shù)據(jù)段(不包括)應該有,因此不要對它進行處理。如果接收到段,則它是非法的。如果確實接收到了,拋棄它,直接返回。TOC o 1-5 h z如果處于狀態(tài)。首先檢查位,如果設置了位,而且或,發(fā)送S(除非設置了位,如果這樣,拋棄這個數(shù)據(jù)段直接返回)。段的格式如下:K不用理會收到的數(shù)據(jù)段,直接返回。如果,那么是可以接受的。下一步檢查位。在設置了的情況下,如果是可以接受的,通知用戶,拋棄接收到的數(shù)據(jù)段并進入狀態(tài),刪除并返回。如果不能接受,拋棄數(shù)據(jù)段返回。第三步檢查安全性和優(yōu)先級。如果和中的不匹配,發(fā)送段。在發(fā)送段的時候,如果已經(jīng)有了,格式為:,如果沒有,格式為。在沒有發(fā)現(xiàn)不匹配的時候,如果
52、有,段中的優(yōu)先級必須和中的匹配,如果不匹配,發(fā)送,其格式為:;如果未發(fā)現(xiàn)不匹配,而且沒有的情況下,如果接收到的數(shù)據(jù)段中的優(yōu)先級高于中的優(yōu)先級,在得到用戶和系統(tǒng)許可的情況下可以將中的優(yōu)先級升高,如果用戶或系統(tǒng)不許可,提高,然后以如下格式發(fā)送:,如果接收數(shù)據(jù)段中的優(yōu)先級小于中的優(yōu)先級則繼續(xù)。在發(fā)送了后,拋棄數(shù)據(jù)段并返回。第四步檢查位。只有在位是合法或沒有而且數(shù)據(jù)段中不包括的情況下才能進行這一步。如果設置了位,而且和優(yōu)先級合法,那么設為:設為。應該增加和相等,在重新發(fā)送隊列中原來等待確認而現(xiàn)在已經(jīng)被確認的數(shù)據(jù)段也被清除。如果,改變連接狀態(tài)為,形成下面格式的段并發(fā)送:。隊列中用于發(fā)送的數(shù)據(jù)的控制信息也一起發(fā)送,如果段中沒有數(shù)據(jù)或控制信息,則進行第六步,否則返回。如果不成立,形成,段,格式如下:,并發(fā)送它。如果在段中沒有數(shù)據(jù)或控制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)保材料印刷委托協(xié)議范本3篇
- 2025版牙齒矯正教育培訓機構合作合同3篇
- 二零二五年度個人掛靠公司教育培訓合作協(xié)議3篇
- 二零二五版私人學校物業(yè)設施租賃及管理合同3篇
- 機械設備行業(yè)員工需求
- 服裝行業(yè)生產(chǎn)工藝安全
- 藥學科護士協(xié)助藥劑配制
- 二零二五年度個人股權轉讓代持協(xié)議書(股權代持與退出機制)16篇
- 二零二五年度行政合同訂立流程與模板指南3篇
- 二零二五年度婚禮視頻拍攝制作合同2篇
- 八年級上冊英語完形填空、閱讀理解100題含參考答案
- 八年級物理下冊功率課件
- DBJ51-T 188-2022 預拌流態(tài)固化土工程應用技術標準
- 《長津湖》電影賞析PPT
- 銷售禮儀培訓PPT
- 滑雪運動介紹
- 最新滋補類中藥的用藥保健主題講座課件
- 大數(shù)據(jù)和人工智能知識考試題庫600題(含答案)
- 2021譯林版高中英語選擇性必修一單詞表
- 機器人控制課件
- 招聘會突發(fā)事件應急預案(通用6篇)
評論
0/150
提交評論