tcp(transmission control protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。
位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)。sequence number(順序號碼) acknowledge number(確認號碼)
osi的七層模型:
tcp工作在網路osi的七層模型中的第四層——transport層,ip在第三層——network層,arp在第二層——data link層;在第二層上的資料,我們把它叫frame,在第三層上的資料叫packet,第四層的資料叫segment。同時,我們需要簡單的知道,資料從應用層發下來,會在每一層都會加上頭部資訊,進行封裝,然後再傳送到資料接收端。就是每個資料都會經過資料的封裝和解封裝的過程。在osi七層模型中,每一層的作用和對應的協議如下:
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.首先,當前客戶端和伺服器的狀態都為established
狀態,客戶主機發起連線釋放的請求,設定fin
為1
,當然,序號seq
也會帶上,這裡假設為u
;傳送完畢後,客戶端進入fin-wait-1
狀態。
2.服務端接收到fin 報文
後,會返回乙個ack報文
回去,此時設定ack
為1
,確認號
為u + 1
;表明自己接受到了客戶端關閉連線的請求,但還沒有準備好關閉連線。傳送完畢後,伺服器端進入close-wait
狀態,客戶端接收到這個確認包之後,進入fin-wait-2
狀態,等待伺服器端關閉連線。
3.伺服器端準備好關閉連線時,向客戶端傳送結束連線請求,fin
為1,ack為1,確認號
為u + 1
;傳送完畢後,伺服器端進入last-ack
狀態,等待來自客戶端的最後乙個ack
。
4.客戶端接收到服務端傳來的fin 報文
後,知道伺服器已經準備好關閉了,傳送乙個確認包,ack為1
,seq
為u+1
,確認號為w+1
,並進入time-wait
狀態,等待可能出現的要求重傳的ack 報文
;伺服器端接收到這個確認包之後,關閉連線,進入closed
狀態。客戶端等待了某個固定時間(兩個最大段生命週期,2msl
,2 maximum segment lifetime)之後,沒有收到伺服器端的ack
,認為伺服器端已經正常關閉連線,於是自己也關閉連線,進入closed
狀態.
四次揮手重要的是time-wait
狀態,為什麼需要這個狀態呢?
要確保伺服器是否已經收到了我們的ack 報文
,如果沒有收到的話,伺服器會重新發fin 報文
給客戶端,那麼客戶端再次收到fin 報文
之後,就知道之前的ack 報文
丟失了,就會再次傳送ack 報文
。
關鍵就在中間兩步。
3.如果已經建立了連線,但是客戶端突然出現故障了怎麼辦?
tcp還設有乙個保活計時器,顯然,客戶端如果出現故障,伺服器不能一直等下去,白白浪費資源。伺服器每收到一次客戶端的請求後都會重新復位這個計時器,時間通常是設定為2小時,若兩小時還沒有收到客戶端的任何資料,伺服器就會傳送乙個探測報文段,以後每隔75秒鐘傳送一次。若一連傳送10個探測報文仍然沒反應,伺服器就認為客戶端出了故障,接著就關閉連線。
TC課程筆記
需求管理 測試計畫 用例計畫 缺陷跟蹤 測試報告 不使用測試管理軟體遇到的問題 測試過程難以進行管理 測試用例缺乏規範性 缺陷管理力度不足 管理人員不能及時了解測試進度 自動測試無法實現 手工統計資料 製作報表 測試管理工具的好處 支援並規範軟體測試全過程 將測試需求分析 測試計畫 測試用例設計 測...
TC做題筆記
給出n個元素取值的max min,把這n個元素分割成兩個集合,求如何分割使兩個累和差的最大值最小 n le 50,min,max le 10000 把題意化歸成式子,就是 求 max a sum b sum,b sum a sum 有乙個矩陣,矩陣中有num個帽子,有k個硬幣塞在帽子下。小q有x次機...
TC(測試控制方法)
引言 tc 測試控制方法 是指以測試為核心控制軟體專案開發過程的方法,它包括完整的規範tc 系統及其相關管理理論tc 理論。主要完成軟體開發中開發流程的管控 軟體測試 開發績效評價 持續改進管控質量等功能。我們先來看一看軟體專案開發中經常遇到的問題。各模組一拖再拖,整個專案無休止延期,開發進度無法得...