1. 程式人生 > >Python筆記之http協議

Python筆記之http協議

HA col 傳輸控制協議 soc AC 網上 關閉 ext 等待

  • http協議的簡介
    HTTP,HyperText Transfer Protocol。超文本傳輸協議,是互聯網上應用最為廣泛的一種網絡協議。基於TCP的協議,HTTP是一個客戶端和服務器端請求和應答的標準
  • 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狀態,完成三次握手
  • TCP四次揮手過程
    技術分享圖片
    客戶端A發送一個FIN.用來關閉客戶A到服務器B的數據傳送(報文段4)(客戶端:我要關了)
    服務器B收到這個FIN. 它發回一個ACK,確認序號為收到的序號+1(報文段5)。和SYN一樣,一個FIN將占用一個序號(服務端:好的,收到)
    服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A(報文段6)(服務端:我也要關了)
    客戶端A發回ACK報文確認,並將確認序號設置為序號加1(報文段7)(客戶端:好的,收到)
  • 服務器如何復用同一個端口而不會提示端口被占用
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    允許地址重用
  • str.splitlines()按照行(‘\r‘, ‘\n‘, ‘\r\n‘)分隔,返回一個包含各行作為元素的列表
  • Python筆記之http協議