( S) \, P' W+ r# U假設(shè)B上的客戶運行rlogin與A上的rlogind通信: # Q! |4 K8 e5 f% D
! p* ]4 Y% Y9 Y/ q/ \
1. B發(fā)送帶有SYN標志的數(shù)據(jù)段通知A需要建立TCP連接。并將TCP報頭中的sequence number設(shè)置成自己本次連接的初始值ISN。 - j- I: {1 o1 K5 k1 Z# R/ I3 r M# b; @2 G8 y& b3 d
2. A回傳給B一個帶有SYS+ACK標志的數(shù)據(jù)段,告之自己的ISN,并確認B發(fā)送來的第一個數(shù)據(jù)段,將acknowledge number設(shè)置成B的ISN+1。 5 G; ]* |) I: y& q
9 o7 A4 f/ L ^. K4 N
3. B確認收到的A的數(shù)據(jù)段,將acknowledge number設(shè)置成A的ISN+1。 # G4 ?& y1 F; E( C) P6 J, w: y
]) e9 h) u i7 [' lB ---- SYN ----> A / J) m$ [& z6 y$ u2 l- ^, xB <---- SYN+ACK A ! ~" E# L7 K+ |
B ---- ACK ----> A # d* v5 F G0 p4 o% e( T4 i+ v+ }' c6 n
TCP使用的sequence number是一個32位的計數(shù)器,從0-4294967295。TCP為每一個連接選擇一個初始序號ISN,為了防止因為延遲、重傳等擾亂三次握手,ISN不能隨便選取,不同系統(tǒng)有不同算法。理解TCP如何分配ISN以及ISN隨時間變化的規(guī)律,對于成功地進行IP欺騙攻擊很重要。 . P' y. E9 `; @1 x6 B