1. 程式人生 > >三次握手、四次揮手的理解

三次握手、四次揮手的理解

client: socket

connect

send
    encode
recv
    decode

close

server: socket

bind

listen
    1.主動轉換成被動
    2.向系統申請佇列(5)

accept
    1.阻塞等待客戶端的連結
    2.建立一個新的socket(主動)

recv
send

new.close
server.close

. 三次握手: 發生時間: 客戶端和服務端建立連結的時候

                syn j
    connect     -》     accept

                ack j+1
                《-
                syn k
    connect返回

                ack k+1 
                -》      accept返回

. 四次揮手 發生時間: 客戶端和服務端斷開連結的時候

    client:        server:
            fin j
    close   ->              

            ack j+1 
            <-      

            fin k
            <-      close

            ack k+1
            ->      
                    斷開連結



    client:        server:
            fin j
    close   ->      recv        

            ack j+1 recv解開阻塞並
            <-      返回長度為0的資料

            fin k
            <-      close

            ack k+1
            ->      
                    斷開連結