0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP/IP協(xié)議的工作流程

GReq_mcu168 ? 來(lái)源:CSDN博客 ? 作者:溫柔狠角色 ? 2021-11-19 14:11 ? 次閱讀

TCP/IP協(xié)議

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

這里有幾個(gè)需要注意的知識(shí)點(diǎn):

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

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

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

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

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

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

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

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

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

接下來(lái)我們了解一下TCP/IP的工作流程:

數(shù)據(jù)鏈路層從ARP得到數(shù)據(jù)的傳遞信息,再?gòu)腎P得到具體的數(shù)據(jù)信息

IP協(xié)議

IP協(xié)議頭當(dāng)中,最重要的就是TTL(IP允許通過(guò)的最大網(wǎng)段數(shù)量)字段(八位),規(guī)定該數(shù)據(jù)包能穿過(guò)幾個(gè)路由之后才會(huì)被拋棄。

ARP協(xié)議工作原理

a6dcd3ae-41f7-11ec-b939-dac502259ad0.jpg

ICMP協(xié)議(網(wǎng)絡(luò)控制文協(xié)議)

將IP數(shù)據(jù)包不能傳送的錯(cuò)誤信息傳送給主機(jī)

查詢(xún)報(bào)文

ping查詢(xún):主機(jī)是否可達(dá),通過(guò)計(jì)算間隔時(shí)間和傳送多少個(gè)包的數(shù)量

子網(wǎng)掩碼

時(shí)間戳:獲得當(dāng)前時(shí)間

差錯(cuò)報(bào)文

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

ICMP差錯(cuò)報(bào)文不產(chǎn)生差錯(cuò)報(bào)文

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

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

靜態(tài)路由選擇

a75243b4-41f7-11ec-b939-dac502259ad0.jpg

靜態(tài)路由選擇

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

ICMP報(bào)文(ICMP重定向報(bào)文)更新表項(xiàng)

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

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

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

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

給每一個(gè)已知路由器發(fā)送RIP請(qǐng)求報(bào)文,要求給出完整的路由表

如果接受請(qǐng)求,就將自己的路由表交給請(qǐng)求者;如果沒(méi)有,就處理IP請(qǐng)求表項(xiàng)(自己部分+跳數(shù)/沒(méi)有的部分+16)

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

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

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

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

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

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

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

首先我們先來(lái)了解TCP報(bào)文段

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

ACK:確認(rèn)序號(hào)有效

RST:重置連接

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

FIN:釋放一個(gè)連接

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

前提:A主動(dòng)打開(kāi),B被動(dòng)打開(kāi)

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

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

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

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

簡(jiǎn)單來(lái)說(shuō),就是

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

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

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

在此穿插一個(gè)知識(shí)點(diǎn)就是SYN攻擊,那么什么是SYN攻擊?發(fā)生的條件是什么?怎么避免?

在三次握手過(guò)程中,Server發(fā)送SYN-ACK之后,收到Client的ACK之前的TCP連接稱(chēng)為半連接(half-open connect),此時(shí)Server處于SYN_RCVD狀態(tài),當(dāng)收到ACK后,Server轉(zhuǎn)入ESTABLISHED狀態(tài)。SYN攻擊就是 Client在短時(shí)間內(nèi)偽造大量不存在的IP地址,并向Server不斷地發(fā)送SYN包,Server回復(fù)確認(rèn)包,并等待Client的確認(rèn),由于源地址 是不存在的,因此,Server需要不斷重發(fā)直至超時(shí),這些偽造的SYN包將產(chǎn)時(shí)間占用未連接隊(duì)列,導(dǎo)致正常的SYN請(qǐng)求因?yàn)殛?duì)列滿(mǎn)而被丟棄,從而引起網(wǎng) 絡(luò)堵塞甚至系統(tǒng)癱瘓。SYN攻擊時(shí)一種典型的DDOS攻擊,檢測(cè)SYN攻擊的方式非常簡(jiǎn)單,即當(dāng)Server上有大量半連接狀態(tài)且源IP地址是隨機(jī)的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現(xiàn)行:

#netstat -nap | grep SYN_RECV

四次分手的過(guò)程(客戶(hù)端我們用A表示,服務(wù)器端用B表示)

由于TCP連接時(shí)是全雙工的,因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后,發(fā)送一個(gè)FIN來(lái)終止這一方向的鏈接。收到一個(gè)FIN只是意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng),既不會(huì)在收到數(shù)據(jù),但是在這個(gè)TCP連接上仍然能夠發(fā)送數(shù)據(jù),知道這一方向也發(fā)送了FIN,首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉,而另一方則執(zhí)行被動(dòng)關(guān)閉。

前提:A主動(dòng)關(guān)閉,B被動(dòng)關(guān)閉

有人可能會(huì)問(wèn),為什么連接的時(shí)候是三次握手,而斷開(kāi)連接的時(shí)候需要四次揮手?

這是因?yàn)榉?wù)端在LISTEN狀態(tài)下,收到建立連接請(qǐng)求的SYN報(bào)文后,把ACK和SYN放在一個(gè)報(bào)文里發(fā)送給客戶(hù)端。而關(guān)閉連接時(shí),當(dāng)收到對(duì)方的FIN 報(bào)文時(shí),僅僅表示對(duì)方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對(duì)方了,所以己方可以立即close,也可以發(fā)送一些數(shù)據(jù)給對(duì)方后,再 發(fā)送FIN報(bào)文給對(duì)方來(lái)表示同意現(xiàn)在關(guān)閉連接,因此,己方ACK和FIN一般都會(huì)分開(kāi)發(fā)送。

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

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

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

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

簡(jiǎn)單來(lái)說(shuō)就是

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

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

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

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

A在進(jìn)入到TIME-WAIT狀態(tài)后,并不會(huì)馬上釋放TCP,必須經(jīng)過(guò)時(shí)間等待計(jì)時(shí)器設(shè)置的時(shí)間2MSL(最長(zhǎng)報(bào)文段壽命),A才進(jìn)入到CLOSED狀態(tài)。為什么?

為了保證A發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)B

防止“已失效的連接請(qǐng)求報(bào)文段”出現(xiàn)在本連接中

OK~是不是很難懂的感覺(jué)?那我們來(lái)說(shuō)的“人性化點(diǎn)的”吧

三次握手流程

客戶(hù)端發(fā)個(gè)請(qǐng)求“開(kāi)門(mén)吶,我要進(jìn)來(lái)”給服務(wù)器

服務(wù)器發(fā)個(gè)“進(jìn)來(lái)吧,我去給你開(kāi)門(mén)”給客戶(hù)端

客戶(hù)端有很客氣的發(fā)個(gè)“謝謝,我要進(jìn)來(lái)了”給服務(wù)器

四次揮手流程

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

服務(wù)器聽(tīng)到了,發(fā)個(gè)“我知道了,那我送你出門(mén)吧”給客戶(hù)端,等客戶(hù)端走

服務(wù)器把門(mén)關(guān)上后,發(fā)個(gè)“我關(guān)門(mén)了”給客戶(hù)端,然后等客戶(hù)端走(尼瑪~矯情啊)

客戶(hù)端發(fā)個(gè)“我知道了,我走了”,之后自己就走了

OK,先到這吧

原文鏈接:http://blog.csdn.net/qq_25827845/article/details/66975129

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 協(xié)議
    +關(guān)注

    關(guān)注

    2

    文章

    602

    瀏覽量

    39223
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1708

    瀏覽量

    149547
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1353

    瀏覽量

    79073

原文標(biāo)題:詳解TCP/IP協(xié)議總結(jié)(怒噴一口老血)

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    用CPLD控制ADS7229,工作流程是怎么樣的?

    用CPLD控制ADS7229,因?yàn)樾枰玫綘顟B(tài)機(jī),需要了解7229的工作流程是怎么樣的,手冊(cè)上沒(méi)有看懂,望大俠指點(diǎn)! 比如:流程一:通過(guò)SPI接口進(jìn)行寄存器(CFR)配置——》啟動(dòng)轉(zhuǎn)換-——》等待轉(zhuǎn)換完成——》輸出數(shù)據(jù)(sdo)——》啟動(dòng)下一次轉(zhuǎn)換?
    發(fā)表于 12-03 07:50

    什么是socket編程 socket與tcp/ip協(xié)議的關(guān)系

    基于TCP/IP協(xié)議族,這是一組用于網(wǎng)絡(luò)通信的協(xié)議,包括傳輸控制協(xié)議TCP)和互聯(lián)網(wǎng)
    的頭像 發(fā)表于 11-01 16:01 ?335次閱讀

    Modbus RTU協(xié)議與Modbus TCP/IP協(xié)議的區(qū)別

    Modbus RTU和Modbus TCP/IP的本質(zhì)都是Modbus協(xié)議,都是通過(guò)Modbus寄存器地址來(lái)交換數(shù)據(jù)的,那么它們之間有什么區(qū)別呢?今天我們從以下幾個(gè)方面來(lái)探討一下。
    的頭像 發(fā)表于 10-18 17:44 ?602次閱讀

    TCP協(xié)議是什么

    在網(wǎng)絡(luò)通信的廣闊領(lǐng)域中,TCP(Transmission Control Protocol,傳輸控制協(xié)議)扮演著舉足輕重的角色。作為TCP/IP協(xié)議
    的頭像 發(fā)表于 10-09 13:54 ?637次閱讀

    EtherNet/IP轉(zhuǎn)Modbus-TCP協(xié)議網(wǎng)關(guān)(EtherNet/IP轉(zhuǎn)Modbus-TCP

    /IP轉(zhuǎn)Modbus TCP從站協(xié)議網(wǎng)關(guān),可以實(shí)現(xiàn)對(duì)這些設(shè)備的集中管理和控制。 二,典型應(yīng)用拓?fù)鋱D 三,設(shè)備技術(shù)參數(shù) 捷米特JM-EIP-TCP設(shè)備在Et
    的頭像 發(fā)表于 09-04 11:09 ?409次閱讀
    EtherNet/<b class='flag-5'>IP</b>轉(zhuǎn)Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>網(wǎng)關(guān)(EtherNet/<b class='flag-5'>IP</b>轉(zhuǎn)Modbus-<b class='flag-5'>TCP</b>)

    一文了解TCP/IP協(xié)議

    TCP/IP協(xié)議是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)通信的基礎(chǔ),是互聯(lián)網(wǎng)及局域網(wǎng)廣泛使用的一套協(xié)議。TCP/IP
    的頭像 發(fā)表于 08-07 15:38 ?1943次閱讀
    一文了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>

    華納云:TCP IP協(xié)議的發(fā)展和優(yōu)勢(shì)

    如何被組織、傳輸和路由。TCP/IP協(xié)議集包含了許多協(xié)議,每個(gè)協(xié)議負(fù)責(zé)網(wǎng)絡(luò)通信過(guò)程中的不同方面。下面是對(duì)
    的頭像 發(fā)表于 07-25 16:49 ?501次閱讀

    TCP IP協(xié)議屬性設(shè)置中的IP配置

    在現(xiàn)代網(wǎng)絡(luò)中,TCP/IP協(xié)議是基礎(chǔ)架構(gòu)的重要組成部分。掌握TCP/IP協(xié)議屬性設(shè)置中的
    的頭像 發(fā)表于 07-23 10:10 ?517次閱讀

    TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)_中文

    電子發(fā)燒友網(wǎng)站提供《TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)_中文.pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:28 ?4次下載

    LwIP協(xié)議棧源碼詳解—TCP/IP協(xié)議的實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《LwIP協(xié)議棧源碼詳解—TCP/IP協(xié)議的實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:22 ?3次下載

    無(wú)線模塊通過(guò)TCP/IP協(xié)議實(shí)現(xiàn)與PC端的數(shù)據(jù)傳輸解析

    在當(dāng)今的信息時(shí)代,無(wú)線通信技術(shù)的發(fā)展日新月異,為我們的工作和生活帶來(lái)了極大的便利。其中,無(wú)線通信模塊通過(guò)TCP/IP協(xié)議向PC端傳送數(shù)據(jù)已經(jīng)成為了一種常見(jiàn)的通信方式。 無(wú)線通信模塊是一
    的頭像 發(fā)表于 06-15 16:16 ?465次閱讀

    從表象到本質(zhì):深入探究TCP/IP協(xié)議

    在信息技術(shù)飛速發(fā)展的今天,網(wǎng)絡(luò)已成為人類(lèi)社會(huì)不可或缺的部分。實(shí)現(xiàn)網(wǎng)絡(luò)中計(jì)算機(jī)相互通信的關(guān)鍵之一便是TCP/IP協(xié)議。作為互聯(lián)網(wǎng)的基礎(chǔ),TCP/IP
    的頭像 發(fā)表于 06-15 09:12 ?527次閱讀
    從表象到本質(zhì):深入探究<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>

    Microchip TCP/IP 協(xié)議棧應(yīng)用筆記

    電子發(fā)燒友網(wǎng)站提供《Microchip TCP/IP 協(xié)議棧應(yīng)用筆記.pdf》資料免費(fèi)下載
    發(fā)表于 04-17 14:16 ?1次下載

    TCP/IP協(xié)議數(shù)據(jù)的處理流程

    TCP/IP協(xié)議的設(shè)計(jì)目標(biāo)是提供一種通用、靈活且可擴(kuò)展的協(xié)議體系,使得不同種類(lèi)的設(shè)備和系統(tǒng)能夠互相通信,實(shí)現(xiàn)互聯(lián)網(wǎng)的互聯(lián)互通。
    發(fā)表于 02-03 16:30 ?1604次閱讀
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>數(shù)據(jù)的處理<b class='flag-5'>流程</b>

    SOLIDWORKS 2024通過(guò)自動(dòng)化和縮短工作流程來(lái)實(shí)現(xiàn)智能工作

    隨著科技的快速發(fā)展,工程設(shè)計(jì)和制造業(yè)正在經(jīng)歷變革。在這個(gè)過(guò)程中,SOLIDWORKS 2024的發(fā)布為我們提供了一個(gè)全新的視角,以實(shí)現(xiàn)更智能的工作流程。本文將探討SOLIDWORKS 2024如何通過(guò)自動(dòng)化和縮短工作流程來(lái)實(shí)現(xiàn)智能工作
    的頭像 發(fā)表于 01-10 11:37 ?554次閱讀
    SOLIDWORKS 2024通過(guò)自動(dòng)化和縮短<b class='flag-5'>工作流程</b>來(lái)實(shí)現(xiàn)智能<b class='flag-5'>工作</b>