TCP的三握四揮,及與UDP的區別

2021-10-14 16:00:45 字數 3078 閱讀 7131

1.osi模型七層結構

在osi分層 (7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。

每一層的協議如下:

物理層:rj45、clock、ieee802.3 (中繼器,集線器,閘道器)

資料鏈路:ppp、fr、hdlc、vlan、mac (網橋,交換機)

網路層:ip、icmp、arp(位址解析協議)、rarp、ospf、ipx、rip、igrp、 (路由器)

傳輸層:tcp、udp、spx

會話層:nfs、sql、netbios、rpc

表示層:jpeg、mpeg、asii

應用層:ftp、dns、telnet、smtp、http、www、nfs

2.tcp和udp

tcpudp連線性

面向連線

無連線可靠性

可靠【tcp傳送的資料無重複、無丟失、無錯誤、與傳送端順序一致】

不可靠資料型別

面向位元組流

面向報文

協議傳輸控制協議

使用者資料報協議

功能提供超時重發、丟棄重複資料、檢驗資料、流量控制等功能,保證資料能從一端傳到另一端

建立連線,也沒有超時重發機制,不重發,速度快

埠21埠ftp,23埠telnet,smtp服務25埠,http服務80埠

dns的53埠,snmp(簡單網路管理協議)161埠,qq使用的8000和4000埠

通訊方式

一對一通訊

udp支援一對

一、一對多、多對多、多對一通訊

3.tcp三次握手和四次揮手

三次握手可以形象的比喻

a:你可以聽到我說話嗎?

b:我可以聽得到你說話啊,你能聽得到我說話嗎?

a:可以的,我要給你發資訊啦!

在三次握手之後,a和b都能確定這麼一件事: 我說的話,你能聽到; 你說的話,我也能聽到。 這樣,就可以開始正常通訊了,如果是兩次,那將無法確定。

第一次握手:client將標誌位syn置為1,隨機產生乙個值seq=j,並將該資料報傳送給server,client進入syn_sent狀態,等待server確認。

第二次握手:server收到資料報後由標誌位syn=1知道client請求建立連線,server將標誌位syn和ack都置為1,ack=j+1,隨機產生乙個值seq=k,並將該資料報傳送給client以確認連線請求,server進入syn_rcvd狀態。

第三次握手:client收到確認後,檢查ack是否為j+1,ack是否為1,如果正確則將標誌位ack置為1,ack=k+1,並將該資料報傳送給server,server檢查ack是否為k+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client與server之間可以開始傳輸資料了。

四次揮手可以形象的比喻

b:好的,斷吧。

a:好的,斷吧

第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態。

第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態。此時tcp鏈結處於半關閉狀態,即客戶端已經沒有要傳送的資料了,但服務端若傳送資料,則客戶端仍要接收。

第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態。

第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手。

4、為什麼tcp鏈結需要三次握手,兩次不可以麼,為什麼?

為了防止 已失效的鏈結請求報文突然又傳送到了服務端,因而產生錯誤。

客戶端發出的連線請求報文並未丟失,而是在某個網路節點長時間滯留了,以致延誤到鏈結釋放以後的某個時間才到達server。這時,server誤以為這是client發出的乙個新的鏈結請求,於是就向客戶端傳送確認資料報,同意建立鏈結。若不採用「三次握手」,那麼只要server發出確認資料報,新的鏈結就建立了。由於client此時並未發出建立鏈結的請求,所以其不會理睬server的確認,也不與server通訊;而這時server一直在等待client的請求,這樣server就白白浪費了一定的資源。若採用「三次握手」,在這種情況下,由於server端沒有收到來自客戶端的確認,則就會知道client並沒有要求建立請求,就不會建立鏈結。通俗來說就是,在三次握手之後,a和b都能確定這麼一件事: 我說的話,你能聽到; 你說的話,我也能聽到。 這樣,就可以開始正常通訊了,如果是兩次,那將無法確定。

5. 為什麼要四次揮手?

tcp 協議是一種面向連線,可靠,基於位元組流的傳輸層通訊協議。tcp 是全雙工模式(同一時刻可以同時傳送和接收),因此每個方向都必須要單獨進行關閉,這就意味著,當主機1發出 fin 報文段時,只是表示主機1已結沒有資料要傳送了,主機1告訴主機2,它的資料已經全部傳送完畢;但是,這個時候主機1還是可以接受來自主機2的資料;當主機2返回 ack報文段時,這個時候就表示主機2也沒有資料要傳送了,就會告訴主機1,我也沒有資料要傳送了,之後彼此就會中斷這次tcp連線。

6.如果已經建立了連線,但是客戶端突然出現故障了怎麼辦?

tcp還設有乙個保活計時器,顯然,客戶端如果出現故障,伺服器不能一直等下去,白白浪費資源。伺服器每收到一次客戶端的請求後都會重新復位這個計時器,時間通常是設定為2小時,若兩小時還沒有收到客戶端的任何資料,伺服器就會傳送乙個探測報文段,以後每隔75秒鐘傳送一次。若一連傳送10個探測報文仍然沒反應,伺服器就認為客戶端出了故障,接著就關閉連線。

msl(最大報文段生存時間)

tcp三握四揮

第一次握手 客戶端傳送syn包給伺服器,syn 1,序列號seq x,客戶端進入syn sent狀態 第二次握手 伺服器收到syn包以後返回報文,ack x 1,ack 1,syn 1,同時生成序列號seq y,進入syn rcvd狀態 第三次握手 客戶端收到伺服器的報文以後,返回給伺服器ack y...

深入理解TCP三握四揮

面試中被問到不少次tcp的三握四揮,今天特意來做乙個總結 一些資料是很久前找的,忘了參考的鏈結了 首先來看一張圖 最初,客戶機a與伺服器b的tcp程序都處於 closed 狀態。然後由伺服器b先建立tcb 傳輸控制塊 進入到listen 狀態,準備隨時響應客戶請求 下面開始三握 a的tcp程序建立t...

交換機基礎及三握四揮學習筆記

學習筆記 2020 09 03 vlan劃分 管理vlan 訪問交換機管理功能的vlan,不配置則全部可以管理 資料vlan 只傳送使用者資料流量 語音vlan 單獨支撐語音ip保證通話質量 預設vlan 不設定,則全部為預設vlan 三次握手,四次揮手 syn syn ack ack 你好,聽得見...