Linux 系统应用编程——网络编程(TCP 协议三次握手过程)
TCP(Transmission Control Protocol) 傳輸控制協議?
TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接:?
 
 
位碼即tcp標志位,有6種標示:
SYN ( synchronous 建立聯機 )?
ACK ( acknowledgement ?確認 )?
PSH ( push 傳送 )
?FIN ( finish 結束 )?
RST ( reset 重置 )?
 URG( urgent 緊急 )
 
 
 
SYN
 ? ? ? 在連接建立時用來同步序號。當SYN=1而ACK=0時,表明這是一個連接請求報文。對方若同意建立連接,則應在響應報文中使SYN=1和ACK=1. 因此, ?SYN置1就表示這是一個連接請求或連接接受報文。
 
ACK
? ? ??TCP協議規定,只有ACK=1時有效,也規定連接建立后所有發送的報文的ACK必須為1;
Sequence number (順序號碼)
? ? ???發送方首次發出為了確認接收方回應?ack=seq+1;作為一個順序號碼---第三次握手需要用到。
Acknowledge number (確認號碼)
 ? ? ???為了回應seq,等于seq+1,課本上的小寫ack。
 
 
 
三次握手過程:
第一次握手:
 ? ? ? ? 主機A發送位碼為SYN=1(?主機A告訴主機B我們需要建立聯機),隨機產生seq number=1234567(?完全是個隨機數,一個主機有可能同時要進行與多個主機之間的聯機)的數據包到服務器,主機B由SYN=1知道,A要求建立聯機;?
 
 
第二次握手:
? ? ? ?主機B收到請求后要確認聯機信息,向A發送ack number = (主機A的seq+1=1234567+1),??SYN=1(主機B回應主機A好的,我們建立聯機吧),ACK = 1(確認我已經收到了!只有兩種情況,ACK=1表示它確認發來的 數據已經接收無誤;ACK=0表示不包含確認信息,一般不確認的話則會忽略不現實此字段。同時發送自己的seq number。
 
 
第三次握手:
? ? ? ??主機A收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ACK(與上面一個意思)是否為1,若正確,則主機A知道主機B 已經正確收到自己發送的信息,此時主機A會再發送ack number= (主機B的seq+1),?ACK=1,seq =1+1234567(作為順序號碼),主機B收到后確認seq值與ACK=1則連接建立成功。
總結
以上是生活随笔為你收集整理的Linux 系统应用编程——网络编程(TCP 协议三次握手过程)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: cs-Panination
 - 下一篇: plc通讯的握手信号_PLC工程师教你: