久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

TCP/IP 協(xié)議詳解內(nèi)容總結(jié)

 昵稱29273511 2015-12-09

作者:Emotiona1106

網(wǎng)址:http://blog.csdn.net/u011318165/article/details/48102939


TCP/IP協(xié)議


TCP/IP不是一個協(xié)議,而是一個協(xié)議族的統(tǒng)稱,。里面包括IP協(xié)議,、IMCP協(xié)議、TCP協(xié)議,。


TCP/IP分層:



這里有幾個需要注意的知識點:


  • 互聯(lián)網(wǎng)地址:也就是IP地址,,一般為網(wǎng)絡(luò)號+子網(wǎng)號+主機(jī)號

  • 域名系統(tǒng):通俗的來說,就是一個數(shù)據(jù)庫,,可以將主機(jī)名轉(zhuǎn)換成IP地址

  • RFC:TCP/IP協(xié)議的標(biāo)準(zhǔn)文檔

  • 端口號:一個邏輯號碼,,IP包所帶有的標(biāo)記

  • Socket:應(yīng)用編程接口


數(shù)據(jù)鏈路層的工作特性:


  • 為IP模塊發(fā)送和接收IP數(shù)據(jù)報

  • 為ARP模塊發(fā)送ARP請求和接收ARP應(yīng)答(ARP:地址解析協(xié)議,將IP地址轉(zhuǎn)換成MAC地址)

  • 為RARP發(fā)送RARP請求和接收RARP應(yīng)答


接下來我們了解一下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ī)


查詢報文


  1. ping查詢:主機(jī)是否可達(dá),,通過計算間隔時間和傳送多少個包的數(shù)量

  2. 子網(wǎng)掩碼

  3. 時間戳:獲得當(dāng)前時間


差錯報文


不產(chǎn)生的情況:


  1. ICMP差錯報文不產(chǎn)生差錯報文

  2. 源地址為零地址、環(huán)目地址,、廣播地址,、多播地址


IP路由器選擇協(xié)議


先來看路由選擇工作流程:



靜態(tài)路由選擇


配置接口以默認(rèn)方式生成路由表項,或者使用route add手動添加表項

ICMP報文(ICMP重定向報文)更新表項

動態(tài)路由選擇(只使用在路由之間)



RIP(路由信息協(xié)議)


分布式的基于距離向量(路由器到每一個目的網(wǎng)絡(luò)的距離記錄)的路由選擇協(xié)議


router承擔(dān)的工作:


  1. 給每一個已知路由器發(fā)送RIP請求報文,,要求給出完整的路由表

  2. 如果接受請求,,就將自己的路由表交給請求者;如果沒有,,就處理IP請求表項(自己部分+跳數(shù)/沒有的部分+16)

  3. 接受回應(yīng),,更新路由表

  4. 定期更新路由表(一般為30s,只能說太頻繁~)


OSPF(開放最短路徑優(yōu)先協(xié)議)


分布式鏈路狀態(tài)(和這兩個路由器都有接口的網(wǎng)絡(luò))協(xié)議


  1. 當(dāng)鏈路狀態(tài)發(fā)生變化時,,采用可靠的洪泛法,,向所有的路由器發(fā)送信息(相鄰的所有路由器的鏈路狀態(tài))

  2. 最終會建立一個全網(wǎng)的拓?fù)浣Y(jié)構(gòu)圖


TCP/IP的三次握手,四次分手


首先我們先來了解TCP報文段



重要的標(biāo)志我在圖中也有標(biāo)記,,重點了解標(biāo)志位


  • ACK:確認(rèn)序號有效

  • RST:重置連接

  • SYN:發(fā)起了一個新連接

  • FIN:釋放一個連接


三次握手的過程(客戶端我們用A表示,,服務(wù)器端用B表示)


前提:A主動打開,,B被動打開



  1. 在建立連接之前,B先創(chuàng)建TCB(傳輸控制塊),,準(zhǔn)備接受客戶進(jìn)程的連接請求,,處于LISTEN(監(jiān)聽)狀態(tài)

  2. A首先創(chuàng)建TCB,然后向B發(fā)出連接請求,,SYN置1,,同時選擇初始序號seq=x,進(jìn)入SYN-SEND(同步已發(fā)送)狀態(tài)

  3. B收到連接請求后向A發(fā)送確認(rèn),,SYN置1,,ACK置1,同時產(chǎn)生一個確認(rèn)序號ack=x+1,。同時隨機(jī)選擇初始序號seq=y,,進(jìn)入SYN-RCVD(同步收到)狀態(tài)

  4. A收到確認(rèn)連接請求后,ACK置1,,確認(rèn)號ack=y+1,,seq=x+1,進(jìn)入到ESTABLISHED(已建立連接)狀態(tài),。向B發(fā)出確認(rèn)連接,,最后B也進(jìn)入到ESTABLISHED(已建立連接)狀態(tài)。


簡單來說,,就是


  1. 建立連接時,,客戶端發(fā)送SYN包(SYN=i)到服務(wù)器,并進(jìn)入到SYN-SEND狀態(tài),,等待服務(wù)器確認(rèn)

  2. 服務(wù)器收到SYN包,,必須確認(rèn)客戶的SYN(ack=i+1),同時自己也發(fā)送一個SYN包(SYN=k),即SYN+ACK包,此時服務(wù)器進(jìn)入SYN-RECV狀態(tài)

  3. 客戶端收到服務(wù)器的SYN+ACK包,,向服務(wù)器發(fā)送確認(rèn)報ACK(ack=k+1),此包發(fā)送完畢,,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手


在此穿插一個知識點就是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)行:


#netstat -nap | grep SYN_RECV


四次分手的過程(客戶端我們用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ā)送,。


  1. A發(fā)送一個FIN,用來關(guān)閉A到B的數(shù)據(jù)傳送,,A進(jìn)入FIN_WAIT_1狀態(tài),。

  2. B收到FIN后,發(fā)送一個ACK給A,,確認(rèn)序號為收到序號+1(與SYN相同,,一個FIN占用一個序號),B進(jìn)入CLOSE_WAIT狀態(tài),。

  3. B發(fā)送一個FIN,,用來關(guān)閉B到A的數(shù)據(jù)傳送,B進(jìn)入LAST_ACK狀態(tài),。

  4. A收到FIN后,,A進(jìn)入TIME_WAIT狀態(tài),接著發(fā)送一個ACK給B,,確認(rèn)序號為收到序號+1,,B進(jìn)入CLOSED狀態(tài),完成四次揮手,。


簡單來說就是


客戶端A發(fā)送一個FIN,,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報文段4)。


  1. 服務(wù)器B收到這個FIN,,它發(fā)回一個ACK,,確認(rèn)序號為收到的序號加1(報文段5)。和SYN一樣,,一個FIN將占用一個序號,。

  2. 服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A(報文段6),。

  3. 客戶端A發(fā)回ACK報文確認(rèn),,并將確認(rèn)序號設(shè)置為收到序號加1(報文段7)。


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~是不是很難懂的感覺?那我們來說的“人性化點的”吧


三次握手流程


  1. 客戶端發(fā)個請求“開門吶,,我要進(jìn)來”給服務(wù)器

  2. 服務(wù)器發(fā)個“進(jìn)來吧,,我去給你開門”給客戶端

  3. 客戶端有很客氣的發(fā)個“謝謝,我要進(jìn)來了”給服務(wù)器


四次揮手流程


  1. 客戶端發(fā)個“時間不早了,,我要走了”給服務(wù)器,,等服務(wù)器起身送他

  2. 服務(wù)器聽到了,,發(fā)個“我知道了,那我送你出門吧”給客戶端,,等客戶端走

  3. 服務(wù)器把門關(guān)上后,,發(fā)個“我關(guān)門了”給客戶端,然后等客戶端走(尼瑪~矯情?。?/p>

  4. 客戶端發(fā)個“我知道了,,我走了”,之后自己就走了


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多