當前位置:首頁 > 公眾號精選 > 玩轉(zhuǎn)嵌入式
[導(dǎo)讀]CSDN TCP/IP不是一個協(xié)議,而是一個協(xié)議族的統(tǒng)稱。里面包括IP協(xié)議、IMCP協(xié)議、TCP協(xié)議。本文總結(jié)了幾個需要注意的知識點。

素材來源:CSDN
TCP/IP不是一個協(xié)議,而是一個協(xié)議族的統(tǒng)稱。里面包括IP協(xié)議、IMCP協(xié)議、TCP協(xié)議。
這里有幾個需要注意的知識點:
  • 互聯(lián)網(wǎng)地址:也就是IP地址,一般為網(wǎng)絡(luò)號+子網(wǎng)號+主機號
  • 域名系統(tǒng):通俗的來說,就是一個數(shù)據(jù)庫,可以將主機名轉(zhuǎn)換成IP地址
  • RFC:TCP/IP協(xié)議的標準文檔
  • 端口號:一個邏輯號碼,IP包所帶有的標記
  • 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é)議

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取
IP協(xié)議頭當中,最重要的就是TTL(IP允許通過的最大網(wǎng)段數(shù)量)字段(八位),規(guī)定該數(shù)據(jù)包能穿過幾個路由之后才會被拋棄。

IP路由選擇

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取

ARP協(xié)議工作原理

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取

ICMP協(xié)議(網(wǎng)絡(luò)控制文協(xié)議)
將IP數(shù)據(jù)包不能傳送的錯誤信息傳送給主機
查詢報文
  1. ping查詢:主機是否可達,通過計算間隔時間和傳送多少個包的數(shù)量
  2. 子網(wǎng)掩碼
  3. 時間戳:獲得當前時間
差錯報文
不產(chǎn)生的情況:
  1. ICMP差錯報文不產(chǎn)生差錯報文
  2. 源地址為零地址、環(huán)目地址、廣播地址、多播地址

IP路由器選擇協(xié)議
靜態(tài)路由選擇

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取

靜態(tài)路由選擇
  1. 配置接口以默認方式生成路由表項,或者使用route add手動添加表項
  2. ICMP報文(ICMP重定向報文)更新表項
  3. 動態(tài)路由選擇(只使用在路由之間)


RIP(路由信息協(xié)議)
分布式的基于距離向量(路由器到每一個目的網(wǎng)絡(luò)的距離記錄)的路由選擇協(xié)議
router承擔的工作:
  1. 給每一個已知路由器發(fā)送RIP請求報文,要求給出完整的路由表
  2. 如果接受請求,就將自己的路由表交給請求者;如果沒有,就處理IP請求表項(自己部分+跳數(shù)/沒有的部分+16)
  3. 接受回應(yīng),更新路由表
  4. 定期更新路由表(一般為30s,只能說太頻繁~)


OSPF(開放最短路徑優(yōu)先協(xié)議)
分布式鏈路狀態(tài)(和這兩個路由器都有接口的網(wǎng)絡(luò))協(xié)議
  1. 當鏈路狀態(tài)發(fā)生變化時,采用可靠的洪泛法,向所有的路由器發(fā)送信息(相鄰的所有路由器的鏈路狀態(tài))
  2. 最終會建立一個全網(wǎng)的拓撲結(jié)構(gòu)圖

TCP/IP的三次握手,四次分手
首先我們先來了解TCP報文段

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取
重要的標志我在圖中也有標記,重點了解標志位
ACK:確認序號有效
RST:重置連接
SYN:發(fā)起了一個新連接
FIN:釋放一個連接

三次握手的過程(客戶端我們用A表示,服務(wù)器端用B表示)
前提:A主動打開,B被動打開

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取
  1. 在建立連接之前,B先創(chuàng)建TCB(傳輸控制塊),準備接受客戶進程的連接請求,處于LISTEN(監(jiān)聽)狀態(tài)
  2. A首先創(chuàng)建TCB,然后向B發(fā)出連接請求,SYN置1,同時選擇初始序號seq=x,進入SYN-SEND(同步已發(fā)送)狀態(tài)
  3. B收到連接請求后向A發(fā)送確認,SYN置1,ACK置1,同時產(chǎn)生一個確認序號ack=x+1。同時隨機選擇初始序號seq=y,進入SYN-RCVD(同步收到)狀態(tài)
  4. A收到確認連接請求后,ACK置1,確認號ack=y+1,seq=x+1,進入到ESTABLISHED(已建立連接)狀態(tài)。向B發(fā)出確認連接,最后B也進入到ESTABLISHED(已建立連接)狀態(tài)。
簡單來說,就是
  1. 建立連接時,客戶端發(fā)送SYN包(SYN=i)到服務(wù)器,并進入到SYN-SEND狀態(tài),等待服務(wù)器確認
  2. 服務(wù)器收到SYN包,必須確認客戶的SYN(ack=i+1),同時自己也發(fā)送一個SYN包(SYN=k),即SYN+ACK包,此時服務(wù)器進入SYN-RECV狀態(tài)
  3. 客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認報ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED狀態(tài),完成三次握手
在此穿插一個知識點就是SYN攻擊,那么什么是SYN攻擊?發(fā)生的條件是什么?怎么避免?
在三次握手過程中,Server發(fā)送SYN-ACK之后,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),此時Server處于SYN_RCVD狀態(tài),當收到ACK后,Server轉(zhuǎn)入ESTABLISHED狀態(tài)。SYN攻擊就是 Client在短時間內(nèi)偽造大量不存在的IP地址,并向Server不斷地發(fā)送SYN包,Server回復(fù)確認包,并等待Client的確認,由于源地址 是不存在的,因此,Server需要不斷重發(fā)直至超時,這些偽造的SYN包將產(chǎn)時間占用未連接隊列,導(dǎo)致正常的SYN請求因為隊列滿而被丟棄,從而引起網(wǎng) 絡(luò)堵塞甚至系統(tǒng)癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接狀態(tài)且源IP地址是隨機的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現(xiàn)行:
#netstat -nap | grep SYN_RECV


四次分手的過程(客戶端我們用A表示,服務(wù)器端用B表示)
由于TCP連接時是全雙工的,因此每個方向都必須單獨進行關(guān)閉。這一原則是當一方完成數(shù)據(jù)發(fā)送任務(wù)后,發(fā)送一個FIN來終止這一方向的鏈接。收到一個FIN只是意味著這一方向上沒有數(shù)據(jù)流動,既不會在收到數(shù)據(jù),但是在這個TCP連接上仍然能夠發(fā)送數(shù)據(jù),知道這一方向也發(fā)送了FIN,首先進行關(guān)閉的一方將執(zhí)行主動關(guān)閉,而另一方則執(zhí)行被動關(guān)閉。
前提:A主動關(guān)閉,B被動關(guān)閉

更多C/C++學(xué)習(xí)資料,請私信我“代碼”,即可獲取
有人可能會問,為什么連接的時候是三次握手,而斷開連接的時候需要四次揮手?
這是因為服務(wù)端在LISTEN狀態(tài)下,收到建立連接請求的SYN報文后,把ACK和SYN放在一個報文里發(fā)送給客戶端。而關(guān)閉連接時,當收到對方的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進入FIN_WAIT_1狀態(tài)。
  2. B收到FIN后,發(fā)送一個ACK給A,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),B進入CLOSE_WAIT狀態(tài)。
  3. B發(fā)送一個FIN,用來關(guān)閉B到A的數(shù)據(jù)傳送,B進入LAST_ACK狀態(tài)。
  4. A收到FIN后,A進入TIME_WAIT狀態(tài),接著發(fā)送一個ACK給B,確認序號為收到序號+1,B進入CLOSED狀態(tài),完成四次揮手。
簡單來說就是
  1. 客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報文段4)。
  2. 服務(wù)器B收到這個FIN,它發(fā)回一個ACK,確認序號為收到的序號加1(報文段5)。和SYN一樣,一個FIN將占用一個序號。
  3. 服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A(報文段6)。
  4. 客戶端A發(fā)回ACK報文確認,并將確認序號設(shè)置為收到序號加1(報文段7)。
A在進入到TIME-WAIT狀態(tài)后,并不會馬上釋放TCP,必須經(jīng)過時間等待計時器設(shè)置的時間2MSL(最長報文段壽命),A才進入到CLOSED狀態(tài)。為什么?
  1. 為了保證A發(fā)送的最后一個ACK報文段能夠到達B
  2. 防止“已失效的連接請求報文段”出現(xiàn)在本連接中
OK~是不是很難懂的感覺?那我們來說的“人性化點的”吧


三次握手流程
  1. 客戶端發(fā)個請求“開門吶,我要進來”給服務(wù)器
  2. 服務(wù)器發(fā)個“進來吧,我去給你開門”給客戶端
  3. 客戶端有很客氣的發(fā)個“謝謝,我要進來了”給服務(wù)器
四次揮手流程
  1. 客戶端發(fā)個“時間不早了,我要走了”給服務(wù)器,等服務(wù)器起身送他
  2. 服務(wù)器聽到了,發(fā)個“我知道了,那我送你出門吧”給客戶端,等客戶端走
  3. 服務(wù)器把門關(guān)上后,發(fā)個“我關(guān)門了”給客戶端,然后等客戶端走(尼瑪~矯情?。?/span>
  4. 客戶端發(fā)個“我知道了,我走了”,之后自己就走了
OK,先到這吧

精彩推薦:

【1】 編過SPI的程序嗎?時鐘相位和時鐘極性是什么? 【2】I2C操作筆記-以 AT24C04為例 【3】RS485是硬件接口,那么他是怎么實現(xiàn)數(shù)據(jù)通訊的呢?Modbus-RTU協(xié)議解析
【4】 主流協(xié)議族TCP/IP協(xié)議,對此你了解多少

免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉