1. 程式人生 > >自身總結一些 網路及協議上的細節點

自身總結一些 網路及協議上的細節點

詳細描述一下tcp三次握手和四次揮手的過程和各個階段的狀態機。

假設ClinetCServerS

TCP三次握手:

在正式握手之前S會進行socket()建立套接字用來通訊,呼叫bind()繫結這個檔案檔案描述符,呼叫listen()監聽埠是否有客戶端請求。

1.C請求連線,傳送一個帶SYN標誌的TCP報文給伺服器,佔用一個隨記序列號seq假設為xC進入SYN_SENT狀態。

2.S呼叫accept()接受到該報文後短暫時間內迴應客戶端報文,該報文同時帶有ACKSYN標誌表示對剛才客戶端SYN報文的迴應,同時又標誌SYN給客戶端詢問是否做好準備進行資料通訊。SYN

ACK標誌位均置為1ack=x+1,seq=yS進入SYN_RCVD狀態。

3.C收到迴應S一個ACK報文,其ack=y+1,seq=x+1。進入Established狀態。S收到後也隨即進入Established狀態。至此完成了三次握手建立TCP連線。

TCP四次揮手:

1.C主動請求關閉連線,向S傳送一個FIN報文,用來關閉客戶端到伺服器的資料傳送,佔用一個隨機序列號seq=iFIN=1C進入FIN_WAIT1狀態

2.S收到後該報文後迴應一個ACK報文,表示確認收到客戶端關閉其資料傳送的報文。ack=i+1seq=jS進入CLOSE_WAIT狀態,C收到該報文隨即進入

FIN_WAIT2狀態。

3.S端檢視自身是否還有未傳送或待發送的資料。若無,服務端被動關閉連線,向C傳送FIN報文,表示要關閉服務端到客戶端的資料傳輸,FIN=1,seq=k。若有待續傳輸的資料,傳輸完這些資料後執行上述動作。S進入Last_ACK狀態。

4.C收到FIN報文後客戶端隨即發回ACK報文確認。ack=k+1.C進入TIME_WAIT狀態(用於可靠的終止TCP連線,保證讓遲來的TCP報文段有足夠短時間被識別並丟棄),待兩個MSL後進入closed.S收到後進入closed狀態。至此完成四次揮手斷開連線。

 

詳細描述一下ospf協議中從初始化到建立完成的鄰接關係的過程,以及各個階段的狀態機

過程:Down--init--2-WAY--Exstart--Exchange--Loading—Full

1 Init:在Down狀態下路由器發出第一個hello包。當R2收到一個Hello包,並且在這個hello包中看不到自已的ID,則將自已和鄰居的關係轉到Init狀態。Init下一個one way 狀態,當R1R2都認識對方(收到hello包鄰居里有自己Router-id)後就會進入Two Way狀態。【路由器收到鄰居發來的hello包】

2)在Two Way時,將選舉DB/BDRMA網路)。進入Two way狀態後(即從Exstart開始),表示這兩個路由器已經建立了鄰居關係了。但最終能不能鄰接關係要看最後是不是FULL【已經建立雙向連線,建立鄰居關係;NBMA和廣播網路選DR/BDR

3ExstartExstartfirstDBD, 確認主從關係。雙方互相傳送第一個DBD報文,
選取主從(router-id大的是Master【確定主從關係Master/Slave

4 Exchange Exchange是通過DBD交換LSA的頭部資訊。
注意:DBD分為FirstDBDDBD【通過DBD交換LSA的頭部資訊】
FirstDBD攜帶除LSA頭部外的資訊(I/M/MS,DD SN,OptionMTU等)。
通過firstDBD確認主從關係,從會使用主的Seq Num(同步序號),最後從給主發DBD來隱式確認
DBD只攜帶LSAHeader,沒有攜帶LSA的具體資訊。承載完整LSALSU

5Loading:等待M位為0時,才進入loading
LSR:是不攜帶LSA頭部的,只通過部分欄位(公告IDLSA 型別,linkID)來請求具體的條目。【根據DBD傳送LSR來更新鏈路狀態資訊】
LSU:含有真正LSA完整資訊的,用來回應LSR

6FULL:完成了鄰接關係的完整建立。

 

自己寫的,上面是參考答案和個人理解。

過程:Down--init--2-WAY--Exstart--Exchange--Loading--Full

1.Down狀態,路由器沒有收到鄰居任何訊息。

2.Init狀態,路由器收到了鄰居傳送的hello包。

3.2-Way狀態,說明兩臺路由器之間已經建立了雙向的連結,除廣播和NBMA網路下,Drother之間維持鄰居關係外,其餘將進行下一步建立鄰接關係如選DR/BDR2-way下雙方僅知道鄰居的存在雙方並無實質性資料的互動。

4.Exstart狀態,根據prority協商主從關係,其他路由器和DRBDR初始sequence number來形成鄰接。

5.Exchange狀態,OSPF路由器交換DBD包(包含LSA描述鏈路狀態資料庫的內容)。

6.Loading狀態。基於DBD報文提供的資訊路由器會發送鏈路狀態請求報文LSR等來跟新鏈路狀態資訊。

7.Full狀態。路由器間更新同步即完成了資料庫同步的工作。他們鏈路的狀態資訊一致。已建立完成鄰接關係。

 

自然連線:是一種特殊的等值倆捏,它要求兩個關係中比較的分量必須是相同的屬性組,並且在結果中把重複的屬性列去掉。而等值連線並不會去掉重複的屬性列。

內連線:結果僅包含符合連線條件的兩表中的

外連線:結果包含符合條件的行,同時包含不符合條件的行(分為左外連線、右外連線和全外連線)

 

左外連線:左表全部行+右表匹配的行,如果左表中某行 在右表中沒有匹配的行,則右表該行顯示NULL

右外連線:和左外連線相反。

全外連線:不管匹配不匹配,全部顯示出來,左表在右表沒有的顯示NULL,右表在左表沒有的顯示NULL

 

VLAN標籤問題

  1. 交換機內部轉發資料幀的時候,均是攜帶vlan tag的。即交換機內部幀一定是有vlan tag的。
  2. 所以資料幀從交換機的埠發出時必定攜帶vlan tag
  3.  

報文入方向:在入方向上,交換機的根本任務是決定該報文是否允許進入該埠

 根據入報文的tag/untag的屬性以及埠屬性,細分為如下情況:

  • 報文為untag:允許報文進入該埠,並打上PVID的vlan tag,與埠屬性無關。
  • 報文為tag:在這種情況下,需要交換機來判斷是否允許該報文進入埠:

   (1)Access埠:PVID和報文中的vlan tag標明的vlan一致,接受並處理報文。否則丟棄;

   (2)Trunk/Hybrid埠:如果埠允許tag中標明的vlan通過,則接收並處理報文,否則丟棄

報文出方向:在出方向上,交換機已經完成對報文的轉發,其根本任務就是在轉發出埠時,是否攜帶tag轉發出去 

  根據出埠屬性,細分如下情況:

   (1)Access埠:將標籤剝掉,不帶tag轉發。

   (2)Trunk埠:報文所在vlan和PVID相同,則剝掉標籤後報文不帶tag;否則帶tag

   (3)Hybrid埠:報文所在VLAN配置[vlan list]是含有tag的,則報文帶tag,否則不帶tag

4.乙太網埠三種鏈路型別:AccessHybridtrunk

Access型別的埠只能屬於1VLAN,一般用於連線計算機的埠;
Trunk型別的埠可以允許多個VLAN通過,可以接收和傳送多個VLAN的報文,一般用於交換機之間連線的埠;
Hybrid型別的埠可以允許多個VLAN通過,可以接收和傳送多個VLAN的報文,可以用於交換機之間連線,也可以用於連線使用者的計算機。
Hybrid埠和Trunk埠在接收資料時,處理方法是一樣的,唯一不同之處在於傳送資料時:Hybrid埠可以允許多個VLAN的報文傳送時不打標籤,而Trunk埠只允許預設VLAN的報文傳送時不打標籤。

 

Ping的請求超時和不可達原因的區別:請求超時,路由表存在目標因其他原因到達不了;而不可達,路由表沒有存在到達目標路由。

 

BGP

  1. BGP連線是否建立用【show tcp bri】檢視是否建立,一般為本地隨機大埠到目標的179埠。誰發起建立連線,則發起方為隨機埠到目標的179
  2. Ebgp給身後的ibgp需要next-hop-selfEbgp之間需要ebgp-mutihop 2-255

3.

 

IPsec VPN

  1. show crypto isakmp sa / show crypto ipsec sa】最直觀檢視是否建立成功
  2. show crypto engine connections active】檢視加密資料包,如果加密成功,那麼可能是對方路由的問題導致回不來。

 

ACL

  1. 要刪除ACL中的某條規則,需要進入該ACL配置模式中在刪除某條規則,在全域性下刪除該規則時,會預設將該ACL整條刪除。

 

 

#經典、知名埠是目的Destination,如2380