TCP/IP協(xié)議 TCP/IP不是一個協(xié)議,而是一個協(xié)議族的統(tǒng)稱,。里面包括IP協(xié)議,、IMCP協(xié)議、TCP協(xié)議,。 TCP/IP分層: 這里有幾個需要注意的知識點:
數(shù)據(jù)鏈路層的工作特性:
接下來我們了解一下TCP/IP的工作流程: 數(shù)據(jù)鏈路層從ARP得到數(shù)據(jù)的傳遞信息,,再從IP得到具體的數(shù)據(jù)信息 IP協(xié)議 IP協(xié)議頭當(dāng)中,,最重要的就是TTL(IP允許通過的最大網(wǎng)段數(shù)量)字段(八位),規(guī)定該數(shù)據(jù)包能穿過幾個路由之后才會被拋棄,。 IP路由選擇 ARP協(xié)議工作原理 ICMP協(xié)議(網(wǎng)絡(luò)控制文協(xié)議) 將IP數(shù)據(jù)包不能傳送的錯誤信息傳送給主機(jī) 查詢報文
差錯報文 不產(chǎn)生的情況:
IP路由器選擇協(xié)議 先來看路由選擇工作流程: 靜態(tài)路由選擇 配置接口以默認(rèn)方式生成路由表項,或者使用route add手動添加表項 ICMP報文(ICMP重定向報文)更新表項 動態(tài)路由選擇(只使用在路由之間) RIP(路由信息協(xié)議) 分布式的基于距離向量(路由器到每一個目的網(wǎng)絡(luò)的距離記錄)的路由選擇協(xié)議 router承擔(dān)的工作:
OSPF(開放最短路徑優(yōu)先協(xié)議) 分布式鏈路狀態(tài)(和這兩個路由器都有接口的網(wǎng)絡(luò))協(xié)議
TCP/IP的三次握手,四次分手 首先我們先來了解TCP報文段 重要的標(biāo)志我在圖中也有標(biāo)記,,重點了解標(biāo)志位
三次握手的過程(客戶端我們用A表示,,服務(wù)器端用B表示) 前提:A主動打開,,B被動打開
簡單來說,,就是
在此穿插一個知識點就是SYN攻擊,,那么什么是SYN攻擊,?發(fā)生的條件是什么?怎么避免,? 在三次握手過程中,,Server發(fā)送SYN-ACK之后,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),,此時Server處于SYN_RCVD狀態(tài),,當(dāng)收到ACK后,Server轉(zhuǎn)入ESTABLISHED狀態(tài),。SYN攻擊就是 Client在短時間內(nèi)偽造大量不存在的IP地址,,并向Server不斷地發(fā)送SYN包,,Server回復(fù)確認(rèn)包,并等待Client的確認(rèn),,由于源地址 是不存在的,,因此,Server需要不斷重發(fā)直至超時,,這些偽造的SYN包將產(chǎn)時間占用未連接隊列,,導(dǎo)致正常的SYN請求因為隊列滿而被丟棄,從而引起網(wǎng) 絡(luò)堵塞甚至系統(tǒng)癱瘓,。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,,即當(dāng)Server上有大量半連接狀態(tài)且源IP地址是隨機(jī)的,,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現(xiàn)行:
四次分手的過程(客戶端我們用A表示,,服務(wù)器端用B表示) 由于TCP連接時是全雙工的,,因此每個方向都必須單獨進(jìn)行關(guān)閉。這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后,,發(fā)送一個FIN來終止這一方向的鏈接,。收到一個FIN只是意味著這一方向上沒有數(shù)據(jù)流動,既不會在收到數(shù)據(jù),,但是在這個TCP連接上仍然能夠發(fā)送數(shù)據(jù),,知道這一方向也發(fā)送了FIN,首先進(jìn)行關(guān)閉的一方將執(zhí)行主動關(guān)閉,,而另一方則執(zhí)行被動關(guān)閉,。 前提:A主動關(guān)閉,B被動關(guān)閉 有人可能會問,,為什么連接的時候是三次握手,,而斷開連接的時候需要四次揮手? 這是因為服務(wù)端在LISTEN狀態(tài)下,,收到建立連接請求的SYN報文后,,把ACK和SYN放在一個報文里發(fā)送給客戶端。而關(guān)閉連接時,,當(dāng)收到對方的FIN 報文時,,僅僅表示對方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對方了,,所以己方可以立即close,,也可以發(fā)送一些數(shù)據(jù)給對方后,再 發(fā)送FIN報文給對方來表示同意現(xiàn)在關(guān)閉連接,,因此,,己方ACK和FIN一般都會分開發(fā)送,。
簡單來說就是 客戶端A發(fā)送一個FIN,,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報文段4)。
A在進(jìn)入到TIME-WAIT狀態(tài)后,,并不會馬上釋放TCP,,必須經(jīng)過時間等待計時器設(shè)置的時間2MSL(最長報文段壽命),A才進(jìn)入到CLOSED狀態(tài),。為什么,? 為了保證A發(fā)送的最后一個ACK報文段能夠到達(dá)B 防止“已失效的連接請求報文段”出現(xiàn)在本連接中 OK~是不是很難懂的感覺?那我們來說的“人性化點的”吧 三次握手流程
四次揮手流程
|
|
來自: 昵稱29273511 > 《待分類》