tcp的三次握手與四次釋放
一、名詞解釋
序列號seq:佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生;給位元組編上序號後,就給每乙個報文段指派乙個序號;序列號seq就是這個報文段中的第乙個位元組的資料編號。
確認號ack:佔4個位元組,期待收到對方下乙個報文段的第乙個資料位元組的序號;序列號表示報文段攜帶資料的第乙個位元組的編號;而確認號指的是期望接收到下乙個位元組的編號;因此當前報文段最後乙個位元組的編號+1即為確認號。
確認ack:佔1位,僅當ack=1時,確認號字段才有效。ack=0時,確認號無效
同步syn:連線建立時用於同步序號。當syn=1,ack=0時表示:這是乙個連線請求報文段。若同意連線,則在響應報文段中使得syn=1,ack=1。因此,syn=1表示這是乙個連線請求,或連線接受報文。syn這個標誌位只有在tcp建產連線時才會被置1,握手完成後syn標誌位被置0。
終止fin:用來釋放乙個連線。fin=1表示:此報文段的傳送方的資料已經傳送完畢,並要求釋放運輸連線
ps:ack、syn和fin這些大寫的單詞表示標誌位,其值要麼是1,要麼是0;ack、seq小寫的單詞表示序號。
二、三次握手過程
1)主機a向主機b傳送tcp連線請求資料報,其中包含主機a的初始序列號seq(a)=x。(其中報文中同步標誌位syn=1,ack=0,表示這是乙個tcp連線請求資料報文;序號seq=x,表明傳輸資料時的第乙個資料位元組的序號是x);
2)主機b收到請求後,會發回連線確認資料報。(其中確認報文段中,標識位syn=1,ack=1,表示這是乙個tcp連線響應資料報文,並含主機b的初始序列號seq(b)=y,以及主機b對主機a初始序列號的確認號ack(b)=seq(a)+1=x+1)
3)第三次,主機a收到主機b的確認報文後,還需作出確認,即傳送乙個序列號seq(a)=x+1;確認號為ack(a)=y+1的報文;
三、四次釋放
假設主機a為客戶端,主機b為伺服器,其釋放tcp連線的過程如下:
1) 關閉客戶端到伺服器的連線:首先客戶端a傳送乙個fin,用來關閉客戶到伺服器的資料傳送,然後等待伺服器的確認。其中終止標誌位fin=1,序列號seq=u
2) 伺服器收到這個fin,它發回乙個ack,確認號ack為收到的序號加1。
3) 關閉伺服器到客戶端的連線:也是傳送乙個fin給客戶端。
4) 客戶段收到fin後,並發回乙個ack報文確認,並將確認序號seq設定為收到序號加1。
首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉
主機a傳送fin後,進入終止等待狀態, 伺服器b收到主機a連線釋放報文段後,就立即給主機a傳送確認,然後伺服器b就進入close-wait狀態,此時tcp伺服器程序就通知高層應用程序,因而從a到b的連線就釋放了。此時是「半關閉」狀態。即a不可以傳送給b,但是b可以傳送給a。
此時,若b沒有資料報要傳送給a了,其應用程序就通知tcp釋放連線,然後傳送給a連線釋放報文段,並等待確認。a傳送確認後,進入time-wait,注意,此時tcp連線還沒有釋放掉,然後經過時間等待計時器設定的2msl後,a才進入到close狀態。
TCP三次握手與四次握手
當我們從瀏覽器輸入乙個url,http的工作流程如下圖所示 dns解析流程請看dns網域名稱解析過程這篇文章 現在來講tcp三次握手 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。1 序號 seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起...
TCP鏈結(三次握手)和釋放(四次握手)
tcp報文段首部格式 序號 本報文段所傳送的資料的第乙個位元組的序號。確認號ack 期待收到 對方下乙個報文段的第乙個資料位元組的序號 確認ack 佔1位,僅當ack 1時,確認號字段才有效。ack 0時,確認號無效 同步syn 連線建立時用於同步序號。當syn 1,ack 0時表示 這是乙個連線請...
TCP 三次握手 四次握手
http常見狀態碼 200 ok 伺服器成功處理了請求 301 302 moved permanently 重定向 response中應該包含乙個location url,說明資源現在所處的位置 304 not modified 未修改 客戶的快取資源是最新的,要客戶端使用快取 404 not fo...