unp 第二章 傳輸層 TCP UDP SCTP

2021-07-04 17:15:28 字數 2770 閱讀 3536

udp:

應用程序將訊息寫入udp套接字,訊息被封裝成udp資料報,該資料報進而封裝到乙個ip資料報,傳送到目的地

1、不保證資料報會到達最終目的地

2、不保證各個資料報的先後順序跨網路後保持不變

3、不保證資料報只到達一次

4、udp資料報都有乙個長度

5、無連線的服務

6、udp避免了tcp的連線建立及終止所需的開銷

tcp:

1、連線:在客戶與伺服器之間建立連線,再跨該連線交換資料,最後終止該連線。

2、可靠性:要求對端返回乙個確認,如果沒有接收到確認,tcp將自動重傳並等待更長的時間(tcp含有動態估算往返時間的演算法用來確認等待多少時間)。

3、資料排序:對每個位元組關聯乙個序列號,分節傳遞給ip,接收端如果接收到非順序到達的分節,便可以根據分節號重排;如果接受到的資料是重複的,將丟棄重複資料。

4、流量控制:任何時刻可以從對端接收的位元組數(通告視窗)。

5、全雙工

tcp連線建立-三路握手:

1、伺服器端呼叫socket、bind、listen函式,準備好接收外來的連線,稱之為被動開啟

2、客戶端呼叫connect函式發起主動開啟,tcp傳送syn分節,告訴伺服器,客戶端在連線中傳送資料的初始序列號。(第乙個分節)

通常syn分節不攜帶資料,其ip資料報包含乙個ip首部,乙個tcp首部及可能有的tcp選項

3、伺服器確認(ack)客戶的syn分節,同時也向客戶端傳送乙個syn分節,告訴客戶端,伺服器在連線中傳送資料的初始序列號。(第二個分節)

伺服器端在單個分節中傳送syn及ack。

4、客戶端確認伺服器的syn,傳送ack。(第三個分節)

tcp連線終止:

1、一端呼叫close函式,主動關閉,tcp傳送fin分節。(第乙個分節)

2、接收到fin分節的對端執行被動關閉,作為檔案描述符傳送給應用程序,由tcp確認(傳送ack,第二個分節)

3、執行被動關閉的一端呼叫close,向主動關閉端傳送fin分節(第三個分節)

4、主動關閉端tcp接收到fin分節,確認(第四個分節)

在被動關閉端傳送fin分節之前,從被動關閉端向主動關閉端流動資料是可能的,稱為半關閉。

序列號:

syn、fin分節都攜帶初始序列號,確認分節(ack)攜帶的序列號為syn、fin分節序列號+1,即表示傳送ack的tcp端所期待的下乙個序列號

tcp狀態轉換:

1、closed(未開啟)

2、syn_sent:主動開啟時(客戶端connect),傳送syn分節,進入syn_sent狀態。

3、listen:應用程序被動開啟。

4、syn_rcvd:接收到主動端syn分節,並傳送syn及ack。

5、established:資料接收狀態,主動開啟時,接收到對端syn分節及ack,並傳送ack;被動開啟時,接收到ack。

6、fin_wait1:主動關閉,傳送fin

7、fin_wait2:主動關閉端接收到ack

8、closing:tcp在fin_wait1狀態下,接收到fin分節,傳送ack,進入closing狀態

9、time_wait:fin_wait1狀態下同時接收到fin分節及ack,並傳送ack;fin_wait2狀態下接收到fin分節,並傳送ack;closing 狀態下接收到ack。

10、close_wait:established狀態下執行被動關閉,接收到fin同時傳送ack;

11、last_ack:close_wait狀態下傳送fin

12、last_ack接收到最後乙個ack,進入closed;time_wait狀態下2msl(maximum segment lifetime)超時,進入closed

time_wait狀態:

msl,最長分節生命期,是任何ip資料報能夠在網際網路中存活的最長時間。

1、可靠的實現tcp全雙工連線的終止:被動關閉tcp端在last_ack狀態下,等待接收的那個ack分節丟失,那麼將重發fin分節,因此,此時客戶端必須維護狀態以保證對伺服器的fin分節確認,重發最終的ack分節。

為了保證可靠的終止連線,就要處理在關閉連線時4個分節任何乙個丟失的情況,因此time_wait狀態出現在主動關閉tcp端,用來保證最後乙個ack的傳送

2、允許老的重複分節在網路中消失:乙個連線關閉後又重新建立,新連線為前連線的化身,這時要保證屬於ex的老的重複分組全部在網路中消失

根據1和2,time_wait狀態等待2msl。

套接字:

1、乙個套接字標識每個斷點的ip位址和埠號

tcp緩衝區限制:

mtu:最大傳輸單元,是指一種通訊協議在某一層上所能通過的最大資料報大小(常見1500)。兩個主機之間的路徑中最小的mtu稱為路徑mtu。超過mtu的資料報,都將執行分片,並在到達最終目的地後重組。同時,對於ipv6路由器,不對其**的資料報分片(但是路由器本身產生的資料報同樣執行分片)

最小重組緩衝區大小:ipv4或ipv6的任何實現都必須保證支援的最小資料報大小,ipv4 576,ipv6 1500

mss:最大分節大小,用於告訴對端tcp在每個分節中能傳送的最大tcp資料量。在建立tcp連線時syn分節中的mss選項用於告訴對端其重組緩衝區的實際大小,以避免分片。在乙太網中,mss經常設定為mtc減去ip和tcp首部的固定長度,ipv4 1500-20-20,ipv6-20-40(ip).

tcp在向對端傳送資料報時,如果建立連線時收到的對端syn分節中設定了mss選項,則將本地mss設定為對端通告的值。否則,設定為最小重組緩衝區減去tcp和ip首部的值,即ipv4為536,。如果資料報大於對端最小重組緩衝區時,會產生分片。通常,mss<=mtu-40(ipv4).

第二章傳輸層 TCP UDP 和SCTP

第二章傳輸層 tcp udp 和sctp udp是乙個簡單的 不可靠的傳輸協議,而tcp是乙個複雜 可靠的位元組流協議。icmp 含義 icmp是 internet control message protocol internet控制報文協議。它是tcp ip協議族的乙個子協議,用於在ip主機 路...

第二章 傳輸層 TCP UDP和SCTP 1

1.tcp ip協議族總圖 ipv4 網際協議版本4 internet protocol version 4 使用32位位址。ipv4給tcp udp sctp icmp和igmp提供分組遞送服務。ipv6 網際協議版本6 internet protocol version 6 使用128位位址。給...

UNP讀書筆記第二章

unp讀書筆記第二章 傳輸層 tcp udp sctp 1.使用者資料報協議udp tcp是乙個位元組流服務,udp是無連線的,udp客戶和伺服器之間不存在任何長期的關係 2.傳輸控制協議tcp tcp是可靠地,傳送對端乙個資料時要求對端必須返回確認tcp提供流量控制 tcp的連線是全雙工的 3.六...