(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送(報文段4)。html
(2)服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1(報文段5)。和SYN同樣,一個FIN將佔用一個序號。程序員
(3)服務器B關閉與客戶端A的鏈接,發送一個FIN給客戶端A(報文段6)。算法
(4)客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1(報文段7)。瀏覽器
其實,GET和POST本質上二者沒有任何區別。他們都是HTTP協議中的請求方法。底層實現都是基於TCP/IP協議。所謂區別,只是瀏覽器廠家根據約定,作得限制而已。緩存
棧(操做系統):由操做系統自動分配釋放 ,存放函數的參數值,局部變量的值等。其操做方式相似於數據結構中的棧。服務器
堆(操做系統): 通常由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式卻是相似於鏈表。cookie
棧使用的是一級緩存, 他們一般都是被調用時處於存儲空間中,調用完畢當即釋放。session
堆則是存放在二級緩存中,生命週期由虛擬機的垃圾回收算法來決定(並非一旦成爲孤兒對象就能被回收)。因此調用這些對象的速度要相對來得低一些。數據結構
棧由系統自動分配,速度較快。但程序員是沒法控制的。
堆是由new分配的內存,通常速度比較慢,並且容易產生內存碎片,不過用起來最方便。
棧: 在函數調用時,在大多數的C編譯器中,參數是由右往左入棧的,而後是函數中的局部變量。注意靜態變量是不入棧的。
當本次函數調用結束後,局部變量先出棧,而後是參數,最後棧頂指針指向函數的返回地址,也就是主函數中的下一條指令的地址,程序由該點繼續運行。
堆:通常是在堆的頭部用一個字節存放堆的大小。堆中的具體內容由程序員安排。
其餘知識點參考:juejin.im/post/5bb2d1…
存儲位置不一樣:cookie存儲在客戶端,是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息。每次HTTP請求時,客戶端都會發送相應的Cookie信息到服務端。session存儲在服務端,瀏覽器第一次訪問服務器會在服務器端生成一個session,有一個sessionid和它對應,這個id會被傳遞給客戶端放置於cookie中,從而識別用戶。
刪除權限不一樣:cookie能夠由用戶在瀏覽器設置中清除,session則只能由服務端經過validate或者是過時後自動刪除。
cookie相對而言不夠安全
單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie;session保存的數據大小不受限制,但太多了也會損耗服務器性能,因此仍是根據須要適當分配cookie和session。
參考:www.cnblogs.com/Lzf127/p/89…
Accept瀏覽器能夠接受的媒體類型 Accept-Encoding瀏覽器能夠接受的編碼方法 Accept-Language申明本身能夠接受的語言 Host也就是域名 Connectionkeep-alive或者close cache-control好比no-cache Referer告訴服務器我是從哪一個頁面連接過來的 User-Agent告訴HTTP服務器, 客戶端使用的操做系統和瀏覽器的名稱和版本
採用兩次握手,那麼若Client向Server發起的包A1若是在傳輸鏈路上遇到的故障,致使傳輸到Server的時間至關滯後,在這個時間段因爲Client沒有收到Server的對於包A1的確認,那麼就會重傳一個包A2,假設服務器正常收到了A2的包,而後返回確認B2包。因爲沒有第三次握手,這個時候Client和Server已經創建鏈接了。再假設A1包隨後在鏈路中傳到了Server,這個時候Server又會返回B1包確認,可是因爲Client已經清除了A1包,因此Client會丟棄掉這個確認包,可是Server會保持這個至關於「殭屍」的鏈接。
GET:對服務器資源的簡單請求
POST:用於發送包含用戶提交數據的請求
HEAD:相似於GET請求,不過返回的響應中沒有具體內容,用於獲取報頭
PUT:傳說中請求文檔的一個版本
DELETE:發出一個刪除指定文檔的請求
TRACE:發送一個請求副本,以跟蹤其處理進程
OPTIONS:返回全部可用的方法,檢查服務器支持哪些方法
CONNECT:用於ssl隧道的基於代理的請求
由於TCP有個半關閉狀態,假設A.B要釋放鏈接,那麼A發送一個釋放鏈接報文給B,B收到後發送確認,這個時候A不發數據,可是B若是發數據A仍是要接受,這叫半關閉。而後B還要發給A鏈接釋放報文,而後A發確認,因此是4次。
在tcp鏈接握手時爲什麼ACK是和SYN一塊兒發送,這裏ACK卻沒有和FIN一塊兒發送呢。緣由是由於tcp是全雙工模式,接收到FIN時意味將沒有數據再發來,可是仍是能夠繼續發送數據。
IP地址是邏輯上的,用戶能夠修改本身設備的IP地址,Mac地址是物理上的,直接燒入物理設備,好比路由器,用戶不能輕易修改。
IP地址負責標記發送方和接收方,而MAC地址負責傳輸過程當中的分段傳送,兩者缺一不可。