一、TCP/IP和OSI模型的比較
相同點:兩者都是以協議堆疊的概念為基礎;
協議堆疊中的協議彼此相互獨立
下層對上層提供服務
不同點:OSI是先有模型;TCP/IP是先有協議,后有模型;
OSI是國際標準,適用于各種協議堆疊;
TCP/IP實際標準,只適用于TCP/IP網路
層次數量不同
二、TCP的特性
(1)作業在傳輸層
(2)面向連接協議
(3)全雙工協議
(4)半關閉
(5)錯誤檢查
(6)將資料打包成段,排序
(7)確認機制
(8)資料恢復,重傳
(9)流量控制,滑動視窗
三、TCP報文格式

(1)源埠、目標埠:計算機上的行程要和其他行程通信是要通過計算機埠的,而一個計算機埠某個時刻只能被一個行程占用,所以通過指定源埠和目標埠,就可以知道是哪兩個行程需要通信,源埠、目標埠是用16位表示的,可推算計算機的埠個數為2^16個,即 65536 (0-65535),
(2)序列號:表示本報文段所發送資料的第一個位元組的編號,在TCP連接中所傳送的位元組流的每一個位元組都會按順序編號,由于序列號由32位表示,所以每2^32個位元組,就會出現序列號回繞,再次從0開始無限回圈,
(3)確認號(ack):表示接收方期望收到發送方下一個報文段的第一個位元組資料的編號,也就是告訴發送方:我希望你(指發送方)下次發送的資料的第一個位元組資料的編號為此確認號:傳輸是否有問題,
(4)首部長度:表示TCP報文段的首部長度,共4位,由于TCP首部包含一個長度可變的選項部分,需要指定這個TCP報文段到底有多長,它指出 TCP 報文段的資料起始處距離 TCP 報文段的起始處有多遠,該欄位的單位是32位(即4個位元組為計算單位),4位二進制最大表示15,所以資料偏移也就是TCP首部最大60位元組,
(5)控制位
- URG(緊急位):表示本報文段中發送的資料是否包含緊急資料,后面的緊急指標欄位(urgent pointer)只有當URG=1時才有效,
- ACK(確認位):表示是否前面確認號欄位是否有效,只有當ACK=1時,前面的確認號欄位才有效,TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段,
- PSH(急切位):提示接收端應用程式應該立即從TCP接識訓沖區中讀走資料,為接收后續資料騰出空間,如果為1,則表示對方應當立即把資料提交給上層應用,而不是快取起來,如果應用程式不將接收到的資料讀走,就會一直停留在TCP接識訓沖區中,
- RST(重置位):如果收到一個RST=1的報文,說明與主機的連接出現了嚴重錯誤(如主機崩潰),必須釋放連接,然后再重新建立連接,或者說明上次發送給主機的資料有問題,主機拒絕回應,帶RST標志的TCP報文段稱為復位報文段,
- SYN(同步位):在建立連接時使用,用來同步序號,當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接,SYN=1,說明這是一個請求建立連接或同意建立連接的報文,只有在前兩次握手中SYN才置為1,帶SYN標志的TCP報文段稱為同步報文段,
- FIN(斷開位):表示通知對方本端要關閉連接了,標記資料是否發送完畢,如果FIN=1,即告訴對方:“我的資料已經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段,
(6)視窗大小:表示現在允許對方發送的資料量,也就是告訴對方,從本報文段的確認號開始允許對方發送的資料量,達到此值,需要ACK確認后才能再繼續傳送后面資料,由Window size value * Window size scaling factor(此值在三次握手階段TCP選項Window scale協商得到)得出此值,
(7)校驗和:提供額外的可靠性緊急指標:標記緊急資料在資料欄位中的位置,
(8)緊急指標:只出現在URG緊急報文后面,
(9)選項部分:其最大長度可根據TCP首部長度進行推算,TCP首部長度用4位表示,選項部分最長為:(2^4-1)*4-20=40位元組,
四、TCP三次握手四次揮手
4.1三次握手

4.2四次揮手

五、11種有限狀態機
(1)CLOSED 沒有任何連接狀態
(2)LISTEN 偵聽狀態,等待來自遠方TCP埠的連接請求
(3)SYN-SENT 在發送連接請求后,等待對方確認
(4)SYN-RECEIVED 在收到和發送一個連接請求后,等待對方確認
(5)ESTABLISHED 代表傳輸連接建立,雙方進入資料傳送狀態
(6)FIN-WAIT-1 主動關閉,主機已發送關閉連接請求,等待對方確認
(7)FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸連接確認,等待對方發送關閉傳輸連接請求
(8)TIME-WAIT 完成雙向傳輸連接關閉,等待所有分組消失
(9)CLOSE-WAIT 被動關閉,收到對方發來的關閉連接請求,并已確認
(10)LAST-ACK 被動關閉,等待最后一個關閉傳輸連接確認,并等待所有分組消失
(11)CLOSING 雙方同時嘗試關閉傳輸連接,等待對方確認
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505322.html
標籤:其他
上一篇:傳輸層
