TCP/IP 三次握手 四次斷開

    所謂的三次握手,就是指客戶端和服務器端建立 TCP 連接。訪問過程中會發送三個包來確認,並建立連接。

wKioL1YjX1WjtS4wAACDGpcVQVA303.jpg


    第一步:客戶端會發送請求包,包內包含 SYN 信號,SYN 標記位置爲1(還可以是其他的位置),並且隨機產生一個隨機值 seq(用來後面的檢驗),將這些發送給服務端。

    第二步:服務端收到 SYN 信號後,會發送一個確認信息給客戶端,包內包含 SYN 的標誌位 SYN=1 ,以及確認標誌位 ACK=1 ,檢驗位 ack=J+1(客戶端發送的隨機數+1),本機生成的隨機數

seq=K。

    第三步:客戶端在收到服務端的確認信息後,開始發送建立連接的信息,包內包含,確認標誌位ACK=1,檢驗位 ack=K+1 。


    經過以上這三步,服務端與客戶端就建立了連接。

(同時由於服務器端只要收到 SYN 信號,就會處理併發送建立連接的信息,所以有些人會不停的發送 SYN 請求信息,但是不接收服務器端發送來的確定建立信息,也就是說只執行三次握手的第一步,那麼服務器端就會一直接受接受,然後導致服務器資源耗盡。這就是 SYN ***。解決辦法我在網上找了,大致有兩種:1、硬件防護。2、軟件防護。

硬件防護不用說,就是買硬件防火牆。

軟件防護方法有多種:

1、做 SYN 網關,當用戶發送 SYN 請求時,由網關代理轉發至後端服務器,這樣後端服務器能與網關之間完成一整套TCP連接,SYN ***被阻擋在 SYN 網關那裏。

2、做 SYN 連接超時設置,再短時間內如果一個連接沒有完成,則不會繼續等待,會自動斷開。

3、做 SYN 中繼,當用戶發送 SYN 請求時,中繼器會等待知道收到客戶端發送的 ACK 檢驗後再講請求發送到後端服務器上,否則丟棄。)


    建立連接後,自然就需要斷開連接。

    TCP/IP 四次揮手

wKioL1YjZejR-XsRAACUQ0IuT9o684.jpg

    第一步:客戶端主動發出斷開請求 FIN M 給服務器。

    第二步:服務器端在收到客戶端發送的 FIN M 後,返回確認信息 ack M+1 。

    第三步:服務器端發送完確認信息後會再次發送 FIN N ,用來關閉向客戶端發送的數據。

    第四步:客戶端在收到服務器端發送來的確認信息後,會返回一個標誌信息 ACK=1(這個 1 就是之前建立連接的標誌信息),然後返回確認信息 ack=K+1。

    

    至此,TCP連接徹底斷開。

(注:文中圖片來自http://blog.csdn.net/mxgsgtc/article/details/12718905  )

    以上只是我個人的語言組織理解,如果有錯誤的地方,還望能指正出來,良辰在此謝過j_0002.gif




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章