1. 程式人生 > >TCP、UDP之三次握手四次揮手

TCP、UDP之三次握手四次揮手

1. http協議的簡介 HTTP,HyperText Transfer Protocol。超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議。基於TCP的協議,HTTP是一個客戶端和伺服器端請求和應答的標準 2. TCP三次握手過程 SYN是請求同步的意思,synchronize(同步)的縮寫 ACK是確認同步的意思,acknowledgement(確認)的縮寫 TCP是主機對主機層的傳輸控制協議,提供可靠的連線服務 TCP的三次握手 第一次握手:(客戶端:伺服器在嗎?) 建立連線時,客戶端A發生SYN包(SYN=j)到伺服器B 並進入SYN_SEND狀態,等待伺服器B確認 第二次握手:(伺服器:收到了,在的,) 伺服器B收到SYN包,必須確認客戶A的SYN,ACK=j+1 同時自己也傳送一個SYN包,SYN=k 即,SYN+ACK包,此時伺服器進入SYN_RECV狀態 第三次握手:(客戶端:我要發資料了) 客戶端A收到伺服器B的SYN+ACK包 向伺服器B傳送確認包ACK(ACK=k+1) 此包傳送完畢,客戶端A和伺服器B進入ESTABLISHED狀態,完成三次握手 3. TCP四次揮手過程 客戶端A傳送一個FIN.用來關閉客戶A到伺服器B的資料傳送(報文段4)(客戶端:我要關了) 伺服器B收到這個FIN. 它發回一個ACK,確認序號為收到的序號+1(報文段5)。和SYN一樣,一個FIN將佔用一個序號(服務端:好的,收到) 伺服器B關閉與客戶端A的連線,傳送一個FIN給客戶端A(報文段6)(服務端:我也要關了) 客戶端A發回ACK報文確認,並將確認序號設定為序號加1(報文段7)(客戶端:好的,收到) 4. 伺服器如何複用同一個埠而不會提示埠被佔用 tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 允許地址重用     三次握手:保證收發雙方正常通訊確保資料不丟失(提升效率節省時間) 四次揮手:全雙工雙通道收發都必須關閉需要來回四次,保證雙方正常回收資源