TCP TP協議備忘錄

2021-07-15 15:51:06 字數 2600 閱讀 4618

《tcp/ip詳解卷一》

wiki about ip

(1)鏈路層:包括作業系統中的裝置驅動程式和網路介面卡,處理與傳輸媒介的物理介面細節。

(2)網路層:提供路由和定址的功能,使兩終端系統能夠互連且決定最佳路徑,並具有一定的擁塞控制和流量控制的能力。 (點對點)

(3)運輸層:為兩台主機上的應用程式提供端到端的通訊。(端對端指的是在資料傳輸前,經過各種各樣的交換裝置,在兩端裝置間建立一條鏈路,就像它們是直接相連的一樣,鏈路建立後,傳送端就可以傳送資料,直至資料傳送完畢,接收端確認接收成功)

(4)應用層:負責處理特定的應用程式細節。

udp不提供可靠性:它把應用程式傳給ip層的資料傳送出去,但是並不保證它們能到達目的地。

每個tcp首部都包含源端目的端的埠號,用於尋找發端和收端的使用者程序,這個兩個值加上ip首部的源端ip位址和目的端ip位址唯一確定乙個tcp連線。

有時,乙個ip位址和乙個埠號也稱為乙個插口(socket)。插口對(socket pair, 包含客戶ip位址、客戶端口號、伺服器ip位址和伺服器端口號的四元組)可唯一確定網際網路絡中每個tcp連線的雙方。

tcp提供一種面向連線的、可靠的位元組流服務。tcp通過下列方式來提供可靠性

tcp首部標誌

syn(synchronous):tcp首部中的同步序號標誌;

ack(acknowledgement):tcp首部中的確認標誌;

rst(reset):連線重置,連線被關閉;

psh(push):tcp首部中的急迫標誌,盡可能快地將資料發往接受程序;

fin(finish):tcp首部中的結束標誌,傳送方完成資料傳送;

urg(urgent):tcp首部中的緊急指標標誌。

建立tcp連線(三次握手)

終止tcp連線(四次揮手)

time_wait狀態的意義

假想網路是不可靠的,你無法保證你最後傳送的ack報文會一定被對方收到,因此處於last_ack狀態下的伺服器可能會因為超時未收到ack報文,而重發fin報文,所以這個time_wait狀態的作用就是客戶端用來重發可能丟失的ack報文。通常時長為2msl(最長報文生存週期)。

流量控制(滑動視窗協議):所謂的流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接受。接收方不必確認收到的每乙個分組,傳回的ack是累積的->表示接受到了一直到確認序號減一之前的所有位元組。

擁塞控制:避免過多的資料注入到網路中,防止路由器或鏈路過載。

(1)慢啟動:為傳送方的tcp增加了乙個擁塞視窗(cwnd),當與另一主機建立tcp連線時,擁塞視窗被初始化為1個報文段,每收到乙個ack擁塞視窗就增加1個報文段。傳送方取擁塞視窗與通告視窗中的最小值作為傳送上限。擁塞視窗是傳送方使用的流量控制,而通告視窗則是接收方使用的流量控制。

(2)擁塞避免演算法:引入乙個慢啟動閾值ssthresh的概念,當cwnd小於ssthresh的時候,tcp處於慢啟動狀態,否則,進入擁塞避免階段。

(3)快速重傳

(4)快速恢復

(1)tcp是面向連線的(傳送資料前必須要建立連線),三次握手保證了連線的可靠性;udp是無連線、不可靠的(需要自己做資料校驗);

(2)tcp的傳輸速率相對較低,udp傳輸效率較高(由於不必進行收發的確認,開銷較小);

(3)tcp保證了訊息的有序性(接收到時可能順序錯誤,但tcp協議可以進行排序),udp無法保證;

(4)tcp是面向位元組流的,資料流間無邊界(多次傳送,一次接受),udp是面向報文的,有邊界;

(5)tcp有流量控制(滑動視窗)和擁塞控制(慢開始、快重傳、擁塞避免、快恢復),udp無。

icmp(網路控制報文協議)通常被認為是ip層的乙個組成部分。它用於傳送控制訊息,提供可能發生在通訊環境中的各種問題反饋,通過這些資訊,令管理者可以對所發生的問題作出診斷,然後採取適當的措施解決。(查詢報文/差錯報文)

ping是對兩個tcp/ip系統連通性進行測試的基本工具。該程式傳送乙份icmp回顯請求報文給主機,並等待返回icmp回顯應答.程式會按時間和成功響應的次數估算丟失資料報率(丟包率)和資料報往返時間(網路時延,round-trip delay time)。

ipv4使用32位(4位元組)位址。

除了ip位址外,主機還需要知道有多少位元用於子網號及多少位元用於主機號。這是通過子網掩碼來確定的,其中值為『1』的留給網路號和子網號,值為『0』的留給主機號。

主機標識的各個位不能都為「1」,如果所有位都為「1」,則該機位址是廣播位址,而非主機的位址。主機標識的各個位不能都為「0」,如果各個位都為「0」,則表示「只有這個網路」,而這個網路上沒有任何主機。 還有很多特殊ip位址,如127.0.0.0等。

20/21:ftp協議

23:telnet

25:smtp(簡單郵件傳輸協議)

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...

備忘錄模式

先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...

備忘錄模式

面臨問題 物件狀態的變化無端,如何回溯恢復物件在某個點的狀態?在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,要求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公用介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞...