亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 關(guān)于unix網(wǎng)絡(luò)編程卷一第二章關(guān)于TIME_WAIT的描述的一個疑問 [打印本頁]

作者: chuangsheng    時間: 2012-02-27 11:22
標題: 關(guān)于unix網(wǎng)絡(luò)編程卷一第二章關(guān)于TIME_WAIT的描述的一個疑問
本帖最后由 chuangsheng 于 2012-02-27 11:23 編輯

書中有這些描述:關(guān)于TIME_WAIT的描述


如果到達的SYN序號大于前一化身的結(jié)束序號,Berkeley的實現(xiàn)將對處于TIME_WAIT狀態(tài)的鏈接進行啟動創(chuàng)建“化身”的。

它要求服務(wù)器執(zhí)行主動關(guān)閉,因為接受下一SYN的那端必須處于TIME_WAIT狀態(tài)。




這一段不大明白,搞得晚上睡不好覺都,哪位高手給解釋一下~~
作者: chuangsheng    時間: 2012-02-27 11:26
本帖最后由 chuangsheng 于 2012-02-27 11:27 編輯

“如果到達的SYN序號大于前一化身的結(jié)束序號”:是不是 說明 接收端先后收到了兩個數(shù)據(jù)包?
“Berkeley的實現(xiàn)將對處于TIME_WAIT狀態(tài)的鏈接進行啟動創(chuàng)建“化身”的”  這里的啟動化身,是啟動那個化身?
“他要求服務(wù)器執(zhí)行主動關(guān)閉”:是誰要求的主動執(zhí)行關(guān)閉?是不是被啟動“化身的”的那個鏈接要求主動關(guān)閉
因為接受下一SYN的那端必須處于TIME_WAIT狀態(tài): 這句話更是不明白了。。。
作者: digdeep126    時間: 2012-02-27 13:46
你看的中文版???
這翻譯根本看不懂啊。
作者: digdeep126    時間: 2012-02-27 14:02
本帖最后由 digdeep126 于 2012-02-27 16:17 編輯

To understand the second reason for the TIME_WAIT state, assume we have a TCP connection between 12.106.32.254 port 1500 and 206.168.112.219 port 21. This connection is closed and then sometime later, we establish another connection between the same IP addresses and ports: 12.106.32.254 port 1500 and 206.168.112.219 port 21. This latter connection is called an incarnation of the previous connection since the IP addresses and ports are the same. TCP must prevent old duplicates from a connection from reappearing at some later time and being misinterpreted as belonging to a new incarnation of the same connection. To do this, TCP will not initiate a new incarnation of a connection that is currently in the TIME_WAIT state. Since the duration of the TIME_WAIT state is twice the MSL, this allows MSL seconds for a packet in one direction to be lost, and another MSL seconds for the reply to be lost. By enforcing this rule, we are guaranteed that when we successfully establish a TCP connection, all old duplicates from previous incarnations of the connection have expired in the network.

There is an exception to this rule. Berkeley-derived implementations will initiate a new incarnation of a connection that is currently in the TIME_WAIT state if the arriving SYN has a sequence number that is "greater than" the ending sequence number from the previous incarnation. Pages 958–959 of TCPv2 talk about this in more detail. This requires the server to perform the active close, since the TIME_WAIT state must exist on the end that receives the next SYN. This capability is used by the rsh command. RFC 1185 [Jacobson, Braden, and Zhang 1990] talks about some pitfalls in doing this.

當處于TIME_WAIT狀態(tài)時,不能建立一個“化身”(也就是與前一個TCP連接的兩個IP地址、兩個端口完全一樣的新的TCP連接)。但是有一個特例:在BSD實現(xiàn)的TCP中,如果來connect() “化身”的第一個同步 SYN J,它的 J 大于前一個TCP(也即處于TIME_WAIT的TCP)的序列號時,即使還處于TIME_WAIT,在這種特殊的情況下還是能夠建立新的“化身”的(也就是不用再TIME_WAIT下去了,而是立刻建立新的TCP連接)。

但是:這種特殊的情況只能是在服務(wù)器端主動關(guān)閉時,才可能出現(xiàn),因為只有服務(wù)器主動關(guān)閉,服務(wù)器才能有 TIME_WAIT狀態(tài),而被動關(guān)閉是不會有TIME_WAIT狀態(tài)的。(僅僅是個人的理解)

作者: chuangsheng    時間: 2012-02-27 17:01
本帖最后由 chuangsheng 于 2012-02-27 17:03 編輯

謝謝 digdeep126 的關(guān)注~

有三個問題詳細追問一下~:

1)如果來connect() “化身”的第一個同步 SYN J,它的 J 大于前一個TCP(也即處于TIME_WAIT的TCP)的序列號時
   這句話的意思是不是 一個連接先后發(fā)送了兩個數(shù)據(jù)包(其中有一個是由于網(wǎng)絡(luò)原因游離的包),其中游離的那個包的序列號小于最后發(fā)出的那個?
2)也就是不用再TIME_WAIT下去了,而是立刻建立新的TCP連接
   當建立新的連接的時候 原來的那個鏈接怎么辦?等他自動超時消失?此時建立新的連接后,他與另一端的回話過程的三次握手是不是就改變了?

3) 建立新的連接后,那上面提到的兩個序列號數(shù)據(jù)包做如何處理?另一端按照常理講,應(yīng)該只接受最大的序列號的那個吧,因為他的序列號比較大,說明是重發(fā)的~
作者: digdeep126    時間: 2012-02-27 17:20
本帖最后由 digdeep126 于 2012-02-27 17:23 編輯

1)這里涉及到兩個TCP連接,它們的兩個IP(假設(shè)服務(wù)端為IP_S,客戶端為IP_C),兩個端口都相同(假設(shè)服務(wù)器為port_s,客戶端為port_c),所以稱為“化身”。當前面的TCP連接close之后,假設(shè)服務(wù)器端主動關(guān)閉,則服務(wù)器處于TIME_WAIT狀態(tài),此時這個關(guān)閉的TCP連接,它有一個最后的序列號,就是關(guān)閉時的序列號。而這時同一個IP和端口的客戶端(IP_C和port_c)向(IP_S和port_s)發(fā)來了SYN J(申請握手),如果這個J 大于服務(wù)器最后的序列號,那么BSD就允許這個新的TCP連接建立成功,即使它還處在TIME_WAIT狀態(tài)。

2)因為兩個IP,兩個端口,決定一條TCP連接,所以自然地“化身”會覆蓋前面的那個處于TIME_WAIT的連接。三次握手應(yīng)該不變,還是要經(jīng)過三次握手才能建立新的連接。
作者: digdeep126    時間: 2012-02-27 17:36
chuangsheng 發(fā)表于 2012-02-27 17:01
3) 建立新的連接后,那上面提到的兩個序列號數(shù)據(jù)包做如何處理?另一端按照常理講,應(yīng)該只接受最大的序列號的那個吧,因為他的序列號比較大,說明是重發(fā)的~


我們并不關(guān)注前面已經(jīng)close的TCP的最后的數(shù)據(jù)報,我們只是要用他的最后的序列號,來做判斷而已。

如果新來的序列號大于最后的序列號,說明不是重發(fā)的!。
因為重發(fā)的應(yīng)該等于或者小于最后的序列號。!

作者: chuangsheng    時間: 2012-02-28 09:52
本帖最后由 chuangsheng 于 2012-02-28 09:53 編輯

thanks~~

明白很多了~

還有一個疑問就是:客戶端向服務(wù)端傳送信息因網(wǎng)絡(luò)原因?qū)е轮匕l(fā)的時候,是還在原來的鏈接上 僅僅是重新發(fā)送一個數(shù)據(jù)包,還是鏈接完全關(guān)掉了,然后重新進行三次握手鏈接,然后再次發(fā)包的呢?

就是說“化身”是在以上哪種情況下發(fā)生的呢? 我看您的描述 應(yīng)該是重新進行了鏈接吧~




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2