TCP 初步认识
第一次握手:客戶端TCP首先給服務(wù)器端TCP發(fā)送一個特殊的TCP數(shù)據(jù)段。
該數(shù)據(jù)段不包含應(yīng)用層數(shù)據(jù),并將頭部中的SYN位設(shè)置為1,所以該數(shù)據(jù)段被稱為SYN數(shù)據(jù)段。
另外,客戶選擇一個初始序列號SEQ,設(shè)SEQ=x 并將這個編號放到初始的TCP SYN數(shù)據(jù)段的序列號字段中。該數(shù)據(jù)段被封裝到一個IP數(shù)據(jù)報中,并發(fā)送給服務(wù)器。
?
第二次握手:一旦裝有TCP SYN數(shù)據(jù)段的IP數(shù)據(jù)報到達了服務(wù)器主機,服務(wù)器將從該數(shù)據(jù)報中提取出TCP SYN數(shù)據(jù)段,給該連接分配TCP緩沖區(qū)和變量,并給客戶TCP發(fā)送一個允許連接的數(shù)據(jù)段。
這個允許連接的數(shù)據(jù)段也不包含任何應(yīng)用層數(shù)據(jù)。但是,它的頭部中裝載著3個重要信息。首先,SYN被設(shè)置為1;其次,TCP數(shù)據(jù)段頭部的確認字段被設(shè)置為x+1;最后,服務(wù)器選擇自己的初始順序號,SEQ=y,并將該值放到TCP數(shù)據(jù)段頭部的
序列號字段中。
?
第三次握手:在接收到允許連接數(shù)據(jù)段之后,客戶也會給連接分配緩沖區(qū)和變量。客戶端主機還會給服務(wù)器發(fā)送另一個數(shù)據(jù)段,對服務(wù)器的允許連接數(shù)據(jù)段給出確認。
TCP協(xié)議中連接建立的過程
?
TCP連接的釋放---三(或者四)次握手
第一次握手:由進行數(shù)據(jù)通信的任意一方提出要求釋放連接的請求報文段。
第二次握手:接收端收到此請求后,會發(fā)送確認報文段,同時當接收端的所有數(shù)據(jù)也都已經(jīng)發(fā)送完畢后,接收端會向發(fā)送端發(fā)送一個帶有其自己序號的報文段。
第三次握手:發(fā)送端收到接收端的要求釋放連接的報文段后,發(fā)送反向確認。
TCP連接的釋放過程
?
TCP數(shù)據(jù)報文
序號字段——占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。
序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。
確認號字段——占 4 字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。
數(shù)據(jù)偏移——占 4? bit,它指出 TCP 報文段的數(shù)據(jù)起始處距離 TCP 報文段的起始處有多遠。
保留字段——占 6 bit,保留為今后使用,但目前應(yīng)置為 0。
緊急比特 URG —— 當 URG = 1 時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當于高優(yōu)先級的數(shù)據(jù))。
確認比特 ACK —— 只有當 ACK= 1 時確認號字段才有效。當 ACK= 0 時,確認號無效。
推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的報文段,就盡快地交付給接收應(yīng)用進程,而不再等到整個緩存都填滿了后再向上交付。?
復位比特 RST (ReSeT) —— 當 RST= 1 時,表明 TCP 連接中出現(xiàn)嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,通知一下對方。
同步比特 SYN —— 同步比特 SYN 置為 1,就表示這是一個連接請求或連接接受報文。
終止比特 FIN (FINal) —— 用來釋放一個連接。當FIN= 1 時,表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。
檢驗和 —— 占 2 字節(jié)。檢驗和字段檢驗的范圍包括首部和數(shù)據(jù)和偽段頭(不是TCP里的信息,
但是計算校驗和的時候也計算了的內(nèi)容:IP地址,TCP數(shù)據(jù)段長度,協(xié)議類型)。
緊急指針字段 —— 占 16 bit(2 字節(jié))。緊急指針指出在本報文段中的緊急數(shù)據(jù)的位置。?
選項字段 —— 長度可變。TCP 規(guī)定了二種選項,最大報文段長度和窗口擴大因子。
最大報文段長度 MSS (Maximum Segment Size) 告訴對方 TCP:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是 MSS 個字節(jié)。”
MSS 是 TCP 報文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上 TCP 首部才等于整個的 TCP 報文段。
窗口擴大因子,用于擴大接收方窗口。
填充字段 —— 這是為了使整個首部長度是 4 字節(jié)的整數(shù)倍。
轉(zhuǎn)載于:https://www.cnblogs.com/XiHua/p/3476389.html
總結(jié)
- 上一篇: linux nohup命令
- 下一篇: lucene学习的小结