詳解TCPIP協議總結_第1頁
詳解TCPIP協議總結_第2頁
詳解TCPIP協議總結_第3頁
詳解TCPIP協議總結_第4頁
詳解TCPIP協議總結_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、TCP/IP協議TCP/IP不是一個協議,而是一個協議族的統(tǒng)稱。里面包括IP協議、 IMCP協議、TCP協議。這里有兒個需要注意的知識點:互聯網地址:也就是IP地址,一般為網絡號+子網號+主機號域名系統(tǒng):通俗的來說,就是一個數據庫,可以將主機名轉換成IP地址 RFC: TCP/IP協議的標準文檔端口號:一個邏輯號碼,IP包所帶有的標記 Socket:應用編程接口數據鏈路層的工作特性:為IP模塊發(fā)送和接收IP數據報為ARP模塊發(fā)送ARP請求和接收ARP應答(ARP:地址解析協議,將IP地 址轉換成MAC地址) 為RARP發(fā)送RARP請求和接收RARP應答 接下來我們了解一下TCP/IP的工作流程

2、:數據鏈路層從ARP得到數據的傳遞信息,再從IP得到具體的數據信息 IP協議IP數據報發(fā)送在前版本首部長圍區(qū)分服務總長度標識標志片偏移生存時間協議首部檢驗利源地址目的地址可選字段(長度可變)填充I482431部分1619數 據 部 分固皆定部分IP協議頭當中,最重要的就是TTL (IP允許通過的最大網段數量)字 段(八位),規(guī)定該數據包能穿過兒個路山之后才會被拋棄。IP路由選擇優(yōu)元??M匹配SEE失匹杞同孑協1的跨用器成切發(fā)送冷總民避丿1丿V/、Z、匹配同網號杓路Fh器或6發(fā)送ipSS冕包繪跑國器1丿1丿芨索SKIAB田發(fā)迭IP數據給淫呂器艾敗丟棄擔個ARP協議工作原理(e*AwarWARprs

3、爸旁豐0榜ommeu箝古畫帕igiKMudeuICMP協議(網絡控制文協議)將IP數據包不能傳送的錯誤信息傳送給主機查詢報文1. ping査詢:主機是否可達,通過計算間隔時間和傳送多少個包的數量2. 子網掩碼3. 時間戳:獲得當詢時間差錯報文不產生的悄況:1. ICMP差錯報文不產生差錯報文2. 源地址為零地址、環(huán)U地址、廣播地址、多播地址 IP路由器選擇協議靜態(tài)路由選擇靜態(tài)路由選擇1配置接口以默認方武生成路山表項,或者使用route add手動添加表項2. ICMP報文(ICHPA定向報文)更新表項3. 動態(tài)路山選擇(只使用在路山之間)RIP (路由信息協議)分布式的基于距離向量(路由器到每

4、一個tl的網絡的距離記錄)的路山選 擇協議rout er承擔的工作:1. 給每一個已知路山器發(fā)送RIP請求報文,要求給出完整的路山表2. 如果接受請求,就將自己的路由表交給請求者;如果沒有,就處理IP請 求表項(自己部分+跳數/沒有的部分+16)3. 接受回應,更新路山表4. 定期更新路山表(一般為30s,只能說太頻繁、)OSPF (開放最短路徑優(yōu)先協議)分布式鏈路狀態(tài)(和這兩個路山器都有接口的網絡)協議1. 當鏈路狀態(tài)發(fā)生變化時,釆用可幕的洪泛法,向所有的路山器發(fā)送信息(相鄰的所有路山器的鏈路狀態(tài))2. 最終會建立一個全網的拓撲結構圖TCP/IP的三次握手,四次分手首先我們先來了解TCP報文

5、段首免我們先來了第TCP報文最糠端目的端口序號 wq序毛 啟沏氏53?字節(jié)託_確認號 Ack二 1J7砲 Ackz:;窗口檢驗和緊急指針選項(長度収)TCP%字節(jié)的 國定首都TCP首卻TCP報文段挪!躺分IP首詔IP數據報的數抿咅於重要的標志我在圖中也有標記,重點了解標志位ACK:RST:SYN:FIN:確認丿了:號有效 重置連接發(fā)起了一個新連接 釋放一個連接三次握手的過程(客戶端我們用A表示,服務器端用B表示) 前提:A主動打開,B被動打開前!長:A主動?丁開.B被勁打開&i動門開動桿開svH-a sea”SYN-lCX-l,wx)-v,rx-lcLoseoLISTEHSYN-RCVOEST

6、A9LISHCO1.在建立連接之前,B先創(chuàng)建TCB (傳輸控制塊),準備接受客戶進程的連 接請求,處于LISTEN (監(jiān)聽)狀態(tài)2. A首先創(chuàng)建TCB,然后向B發(fā)出連接請求,SYN置1,同時選擇初始序號 seq=Xr進入SYN-SEND (同步已發(fā)送)狀態(tài)3. B收到連接請求后向A發(fā)送確認,SYN置1, ACK置1,同時產生一個確認 序號ack=x+lo同時隨機選擇初始序號seq=y,進入SYN-RCVD (同步收至IJ)狀態(tài)4. A收到確認連接請求后,ACK置1,確認號ack=y+l, seq=x+l進入到 ESTABLISHED (已建立連接)狀態(tài)。向B發(fā)出確認連接,最后B也進入到 EST

7、ABLISHED (已建立連接)狀態(tài)。簡單來說,就是1. 建立連接時,客戶端發(fā)送SYN包(SYN=i )到服務器,并進入到SYN-SEND 狀態(tài),等待服務器確認2. 服務器收到SYN包,必須確認客戶的SYN (ack=i + l),同時自己也發(fā)送一 個SYN包(SYN=k),即SYN+ACK包,此時服務器進入SYX-RECV狀態(tài)3. 客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認報ACK (ack=k+l) 此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED狀態(tài),完成三次握手 在此穿插一個知識點就是SYN攻擊,那么什么是SYN攻擊?發(fā)生的條件是 什么?怎么避免?在三次握乎過程中,Se

8、rver發(fā)送SYN-ACK之后,收到Client的ACK 之前的TCP連接稱為半連接(half-open connect),此時Server處于 SYN.RCVD狀態(tài),當收到ACK后,Server轉入ESTABLISHED狀態(tài)。SYN攻擊 就是Client在短時間內偽造大量不存在的IP地址,并向Server不斷地 發(fā)送SYN包,Server回復確認包,并等待Client的確認,山于源地址 是 不存在的,因此,Server需要不斷重發(fā)直至超時,這些偽造的SYN包將產 時間占用未連接隊列,導致正常的SYN請求因為隊列滿而被丟弄,從而引 起網 絡堵塞其至系統(tǒng)癱瘓。SYN攻擊時一種典型的DDOS攻擊,

9、檢測SY 攻擊的方式非常簡單,即當Server上有大量半連接狀態(tài)且源IP地址是隨 機的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現行:#netstat -nap I grep SYN_RECV四次分手的過程(客戶端我們用A表示,服務器端用B表示)山于TCP連接時是全雙工的,因此每個方向都必須單獨進行關閉。這 一原則是當一方完成數據發(fā)送任務后,發(fā)送一個FIN來終止這一方向的鏈 接。收到一個FIN只是意味著這一方向上沒有數據流動,既不會在收到數 據,但是在這個TCP連接上仍然能夠發(fā)送數據,知道這一方向也發(fā)送了 FIN.首先進行關閉的一方將執(zhí)行主動關閉,而殲一方則執(zhí)行被動關閉。 詢提:A主動

10、關閉,B被動關閉CLOSEDCLOSED為什么連接的時候是三次握手,而斷開連接的時候需有人可能會問, 要四次揮手?這是因為服務端在LISTEN狀態(tài)下,收到建立連接請求的SY報文 后,把ACK和SYN放在一個報文里發(fā)送給客戶端。而關閉連接時,當收到 對方的FIX報文時,僅僅表示對方不再發(fā)送數據了但是還能接收數據,己 方也未必全部數據都發(fā)送給對方了,所以己方可以立即close,也可以發(fā) 送一些數據給對方后,再 發(fā)送FI報文給對方來表示同意現在關閉連 接,因此,己方ACK和FIN-般都會分開發(fā)送。1. A發(fā)送一個FIN,用來關閉A到B的數據傳送,A進入FIN_WAIT_1狀態(tài)。2. B收到FIX后,

11、發(fā)送一個ACK給A,確認序號為收到序號+ 1 (與SYN相 同,一個FIX占用一個序號),B進入CLOSE_WAIT狀態(tài)。3. B發(fā)送一個FIN,用來關閉B到A的數據傳送,B進入LAST.ACK狀態(tài)。4. A收到FIX后,A進入TIME_WAIT狀態(tài),接著發(fā)送一個ACK給B,確認序號 為收到序號+ 1, B進入CLOSED狀態(tài),完成四次揮手。簡單來說就是用來關閉客戶A到服務器B的數據傳送(報文段1. 客戶端A發(fā)送一個它發(fā)回一個ACK,確認序號為收到的序號加1 (報 一個FIX將占用一個序號。4) O2. 服務器B收到這個FIX,文段5) C和SYN樣,3. 服務器B關閉與客戶端A的連接,發(fā)送一

12、個FIX給客戶端A (報文段6) O4. 客戶端A發(fā)回ACK報文確認,并將確認序號設置為收到序號加1 (報文段7) OA在進入到TIME-WAIT狀態(tài)后,并不會馬上釋放TCP,必須經過時間 等待訃時器設置的時間2MSL (最長報文段壽命),A才進入到CLOSED狀 態(tài)為什么?1. 話了保證A發(fā)送的最后一個ACK報文段能夠到達B2. 防止“已失效的連接請求報文段出現在本連接中0K是不是很難懂的感覺?那我們來說的“人性化點的”吧 三次握手流程1. 客戶端發(fā)個請求“開門吶,我要進來給服務器2. 服務器發(fā)個“進來吧,我去給你開門給客戶端3. 客戶端有很客氣的發(fā)個“謝謝,我要進來了”給服務器 四次揮手流

13、程1. 客戶端發(fā)個“時間不早了,我要走了”給服務器,等服務器起身送他2. 服務器聽到了,發(fā)個“我知道了,那我送你出門吧給客戶端,等客戶端 走3. 服務器把門關上后,發(fā)個“我關門了給客戶端,然后等客戶端走(尼瑪 、矯悄?。?. 客戶端發(fā)個“我知道了,我走了”,之后自己就走了三次握手置位概念:根據TCP的包頭字段,存在3個巫要的標識ACK、SY廠 FIXACK:表示驗證字段SYN:位數置1,表示建立TCP連接FIN:位數置1,表示斷開TCP連接三次握手過程說明:1山客戶端發(fā)送建立TCP連接的請求報文,其中報文中包含seq序列 號,是山發(fā)送端隨機生成的,并且將報文中的SYN字段置為1,表示需要 建立

14、TCP連接。(SYX=1, seq=x, x為隨機生成數值)2山服務端回復客 戶端發(fā)送的TCP連接請求報文,其中包含seq序列號,是山回復端隨機生 成的,并且將SYN置為1,而且會產生ACK字段,ACK字段數值是在客戶端 發(fā)送過來的序列號seq的基礎上加1進行回復,以便客戶端收到信息時, 知曉自己的TCP建立請求已得到驗證。(SYE, ACK=x+l, seq=y, y為隨 機生成數值)這里的ack加1可以理解為是確認和誰建立連接。3客戶端 收到服務端發(fā)送的TCP建立驗證請求后,會使自己的序列號加1表示,并 且再次回復ACK驗證請求,在服務端發(fā)過來的seq加1進行回復。(SYN=1, ACK=

15、y+b seq=x+l)I四次揮手四次揮手過程說明:1客戶端發(fā)送斷開TCP連接請求的報文,其中報文中包含seq序列號,是 山發(fā)送端隨機生成的,并且還將報文中的FIN字段置為1,表示需要斷開 TCP連接。(FIX=1, seq=x, x山客戶端隨機生成)2服務端會回復客戶端 發(fā)送的TCP斷開請求報文,其包含seq序列號,是由回復端隨機生成的, 而且會產生ACK字段,ACK字段數值是在客戶端發(fā)過來的seq序列號基礎 上加1進行回復,以便客戶端收到信息時,知曉自己的TCP斷開請求已經 得到驗證。(FIX=1, ACK=x+l, seq=y, y山服務端隨機生成)3服務端在 回復完客戶端的TCP斷開請

16、求后,不會馬上進行TCP連接的斷開,服務端 會先確保斷開前,所有傳輸到A的數據是否已經傳輸完畢,一旦確認傳輸 數據完畢,就會將回復報文的F叮字段置1,并且產生隨機seq序列號。(FIN=b ACK=x+l, seq=z, z山服務端隨機生成)4客戶端收到服務端的 TCP斷開請求后,會回復服務端的斷開請求,包含隨機生成的seq字段和 ACK字段,ACK字段會在服務端的TCP斷開請求的seq基礎上加1,從而完 成服務端請求的驗證回復。(FIN=1, ACK=z+l, seq二h, h為客戶端隨機生 成)至此TCP斷開的4次揮手過程完畢I 11種狀態(tài)1一開始,建立連接之前服務器和客戶端的狀態(tài)都為CL

17、OSED; 2服務器創(chuàng) 建socket后開始監(jiān)聽,變?yōu)長ISTEN狀態(tài);3客戶端請求建立連接,向服 務器發(fā)送SYN報文,客戶端的狀態(tài)變味SYN_SENT: 4服務器收到客戶端的 報文后向客戶端發(fā)送ACK和SYN報文,此時服務器的狀態(tài)變?yōu)镾YN_RCVD; 5然后,客戶端收到ACK、SYN,就向服務器發(fā)送ACK,客戶端狀態(tài)變?yōu)?ESTABLISHED; 6服務器端收到客戶端的ACK后變?yōu)镋STABLISHED。此時3 次握手完成,連接建立!由于TCF連接是全雙工的,斷開連接會比建立連接麻煩一點點1.;/戶端先向服務器發(fā)送FIX報文,請求斷開連接,其狀態(tài)變?yōu)?FIN.WAITl: 2.服務器收到F

18、IN后向客戶端發(fā)送ACK,服務器的狀態(tài)W邊 CLOSEJVAIT: 3.客戶端收到ACK后就進入FIN_ffAIT2狀態(tài),此時連接已經 斷開7 半了。如果服務器還有數據要發(fā)送給客戶端,就會繼續(xù)發(fā)送;4. 直到發(fā)完數據,就會發(fā)送FI報文,此時服務器進入LAST_ACK狀態(tài);5客 戶端收到服務器的FIN后,馬上發(fā)送ACK給服務器,此時客戶端進入 TIME.WAIT狀態(tài);6.再過了 2MSL長的時間后進入CLOSED狀態(tài)。服務器收 到客戶端的ACK就進入CLOSED狀態(tài)至此,還有一個狀態(tài)沒有出來:CLOSING狀態(tài)。CLOSING狀態(tài)表示; 客戶端發(fā)送了 FIN,但是沒有收到服務器 的ACK,卻收到了服務器的FIN,這種情況發(fā)生在服務器發(fā)送的 ACK丟包的時候,因為網絡傳輸有時會有童外。LISTEN:等待從任何遠端TCP和端口的連接請求。SYN.SENT:發(fā)送完一 個連接請求后等待一個匹配的連接請求。-SYNRECEIVED:發(fā)送連接請求并 且接收到匹配的連接請求以后等待連接請求確認。-ESTABLISHED:表示一 個打開的連接,接收到的數據可以被投遞給用戶。連接的數據傳輸階段的 正常狀態(tài)。FINff

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論