自身總結一些 網路及協議上的細節點
詳細描述一下tcp三次握手和四次揮手的過程和各個階段的狀態機。
假設Clinet為C,Server為S。
TCP三次握手:
在正式握手之前S會進行socket()建立套接字用來通訊,呼叫bind()繫結這個檔案檔案描述符,呼叫listen()監聽埠是否有客戶端請求。
1.C請求連線,傳送一個帶SYN標誌的TCP報文給伺服器,佔用一個隨記序列號seq假設為x。C進入SYN_SENT狀態。
2.S呼叫accept()接受到該報文後短暫時間內迴應客戶端報文,該報文同時帶有ACK和SYN標誌表示對剛才客戶端SYN報文的迴應,同時又標誌SYN給客戶端詢問是否做好準備進行資料通訊。SYN
3.C收到迴應S一個ACK報文,其ack=y+1,seq=x+1。進入Established狀態。S收到後也隨即進入Established狀態。至此完成了三次握手建立TCP連線。
TCP四次揮手:
1.C主動請求關閉連線,向S傳送一個FIN報文,用來關閉客戶端到伺服器的資料傳送,佔用一個隨機序列號seq=i。FIN=1。C進入FIN_WAIT1狀態
2.S收到後該報文後迴應一個ACK報文,表示確認收到客戶端關閉其資料傳送的報文。ack=i+1,seq=j。S進入CLOSE_WAIT狀態,C收到該報文隨即進入
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 狀態,當R1和R2都認識對方(收到hello包鄰居里有自己Router-id)後就會進入Two Way狀態。【路由器收到鄰居發來的hello包】
(2)在Two Way時,將選舉DB/BDR(MA網路)。進入Two way狀態後(即從Exstart開始),表示這兩個路由器已經建立了鄰居關係了。但最終能不能鄰接關係要看最後是不是FULL。【已經建立雙向連線,建立鄰居關係;NBMA和廣播網路選DR/BDR】
(3)Exstart:Exstart是firstDBD, 確認主從關係。雙方互相傳送第一個DBD報文,
選取主從(router-id大的是Master)【確定主從關係Master/Slave】
(4) Exchange: Exchange是通過DBD交換LSA的頭部資訊。
注意:DBD分為FirstDBD和DBD。【通過DBD交換LSA的頭部資訊】
FirstDBD攜帶除LSA頭部外的資訊(I/M/MS,DD SN,Option,MTU等)。
通過firstDBD確認主從關係,從會使用主的Seq Num(同步序號),最後從給主發DBD來隱式確認
DBD只攜帶LSA的Header,沒有攜帶LSA的具體資訊。承載完整LSA是LSU。
(5)Loading:等待M位為0時,才進入loading。
LSR:是不攜帶LSA頭部的,只通過部分欄位(公告ID,LSA 型別,linkID)來請求具體的條目。【根據DBD傳送LSR來更新鏈路狀態資訊】
LSU:含有真正LSA完整資訊的,用來回應LSR。
(6)FULL:完成了鄰接關係的完整建立。
自己寫的,上面是參考答案和個人理解。
過程:Down--init--2-WAY--Exstart--Exchange--Loading--Full。
1.Down狀態,路由器沒有收到鄰居任何訊息。
2.Init狀態,路由器收到了鄰居傳送的hello包。
3.2-Way狀態,說明兩臺路由器之間已經建立了雙向的連結,除廣播和NBMA網路下,Drother之間維持鄰居關係外,其餘將進行下一步建立鄰接關係如選DR/BDR。2-way下雙方僅知道鄰居的存在雙方並無實質性資料的互動。
4.Exstart狀態,根據prority協商主從關係,其他路由器和DR,BDR初始sequence number來形成鄰接。
5.Exchange狀態,OSPF路由器交換DBD包(包含LSA描述鏈路狀態資料庫的內容)。
6.Loading狀態。基於DBD報文提供的資訊路由器會發送鏈路狀態請求報文LSR等來跟新鏈路狀態資訊。
7.Full狀態。路由器間更新同步即完成了資料庫同步的工作。他們鏈路的狀態資訊一致。已建立完成鄰接關係。
自然連線:是一種特殊的等值倆捏,它要求兩個關係中比較的分量必須是相同的屬性組,並且在結果中把重複的屬性列去掉。而等值連線並不會去掉重複的屬性列。
內連線:結果僅包含符合連線條件的兩表中的
外連線:結果包含符合條件的行,同時包含不符合條件的行(分為左外連線、右外連線和全外連線)
左外連線:左表全部行+右表匹配的行,如果左表中某行 在右表中沒有匹配的行,則右表該行顯示NULL。
右外連線:和左外連線相反。
全外連線:不管匹配不匹配,全部顯示出來,左表在右表沒有的顯示NULL,右表在左表沒有的顯示NULL
VLAN標籤問題
- 交換機內部轉發資料幀的時候,均是攜帶vlan tag的。即交換機內部幀一定是有vlan tag的。
- 所以資料幀從交換機的埠發出時必定攜帶vlan tag
報文入方向:在入方向上,交換機的根本任務是決定該報文是否允許進入該埠
根據入報文的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.乙太網埠三種鏈路型別:Access,Hybrid和trunk
Access型別的埠只能屬於1個VLAN,一般用於連線計算機的埠;
Trunk型別的埠可以允許多個VLAN通過,可以接收和傳送多個VLAN的報文,一般用於交換機之間連線的埠;
Hybrid型別的埠可以允許多個VLAN通過,可以接收和傳送多個VLAN的報文,可以用於交換機之間連線,也可以用於連線使用者的計算機。
Hybrid埠和Trunk埠在接收資料時,處理方法是一樣的,唯一不同之處在於傳送資料時:Hybrid埠可以允許多個VLAN的報文傳送時不打標籤,而Trunk埠只允許預設VLAN的報文傳送時不打標籤。
Ping的請求超時和不可達原因的區別:請求超時,路由表存在目標因其他原因到達不了;而不可達,路由表沒有存在到達目標路由。
BGP
- BGP連線是否建立用【show tcp bri】檢視是否建立,一般為本地隨機大埠到目標的179埠。誰發起建立連線,則發起方為隨機埠到目標的179埠
- Ebgp給身後的ibgp需要next-hop-self;Ebgp之間需要ebgp-mutihop 2-255
3.
IPsec VPN
- 【show crypto isakmp sa / show crypto ipsec sa】最直觀檢視是否建立成功
- 【show crypto engine connections active】檢視加密資料包,如果加密成功,那麼可能是對方路由的問題導致回不來。
ACL
- 要刪除ACL中的某條規則,需要進入該ACL配置模式中在刪除某條規則,在全域性下刪除該規則時,會預設將該ACL整條刪除。
#經典、知名埠是目的Destination,如23,80等