五層協議詳解


1. osi七層協議

  • 簡單串聯每層協議以及作用

    互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層img

    我們將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議就理解了整個互聯網通信的原理。

    首先,用戶感知到的只是最上面一層應用層,自上而下每層都依賴於下一層,所以我們從最下一層開始切入,比較好理解每層都運行特定的協議,越往上越靠近用戶,越往下越靠近硬件。

    接下來我們自下往上進行詳細的分析。

    • 物理層

      物理層就是網線,交換機,路由器等一堆物理連接介質,他連接就是你的網卡。

       

       

      我在這發一堆010101011110 高低高低高高高高電平他在那邊會啊啊啊啊啊啊啊啊收到一堆 010101011110 ,單純的電信號沒有意義,物理層只是發一堆01010101,但是你應該對數據進行分組、划分,(類比與二進制8bit == 1bytes)這個就不是物理層干的,物理層只是發一堆0101010.

      要想讓二進制有真正的意義就必須對二進制進行分組,分組不是物理層做的事兒,分組是數據鏈路層做的事情。

    • 數據鏈路層

      數據鏈路層就是對這些二進制數據也就是比特流進行分組,早期的時候各個公司都有自己的分組方式,后來形成了統一的標准。對數據進行分組有什么意義?

      我們都寫過信么?寫信除去寫信的內容之外,還要注意什么?你要寫寄信人,收信人的地址。網絡通信同理,我們要發數據,數據從哪里來,發到哪里去?我們一定要有注明。所以數據鏈路層是給你的數據進行分組,

      共同遵守的這個分組協議就是以太網協議ethernet

      一組電信號為一幀,構成一個數據報,

      每一組數據報分為報頭和數據兩部分。

      head | data

      head包含:(固定18個字節)

      • 發送者/源地址,6個字節

      • 接收者/目標地址,6個字節

      • 數據類型,6個字節

        data包含:(最短46字節,最長1500字節)

      數據包的具體內容

      head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送。

      頭要固定長度:為什么?這就是標准的一種體現。

      發過去一幀,我會按照固定長度切出head ,data部分。先取出18個字節,再取出前六個,在取出后六個,確實是他 在讀取數據。

      我們知道數據鏈路層做的事情了,還有一個問題,寫信的時候,你知道通過具體某個省市門牌號確定寄信人,發信人地址,計算機如何確定地址呢?

      head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡,發送端和接收端的地址便是指網卡的地址,即mac地址

      mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進制,通常由12位16進制數表示(前六位是廠商編號,后六位是流水線號)

      既然有了源地址,目標地址以及數據,那么數據是如何准確的發給對方呢?

      在同一個局域網中,計算機的通信方式為廣播

      什么叫廣播? 村里如果通知什么事情,都是村長進行全村的廣播,只要他一廣播,全村的每家每戶都可以接收到信息。計算機都是瞎的,他是通過廣播的方式。非常原始。有了以太網的標准,和廣播的方式,全世界機器全部都能聽見。

      以我舉例: 我是太白金星,數據今天晚上請我吃飯。 在班級吼出來。

      然后你們找到這個包,拆包,發現不是自己,是不是就丟掉了。有了以太網和廣播的方式,理論上就能實現通信。但是 我吼,你們吼不吼? 全世界都丟一份,數據量太大了。比廣播風暴還要大。那么我要是吼一嗓子,通過交換機是不是能傳播很多,但是不能讓全世界都聽到? 不切合實際,假如我把所有的交換機放到本教室,那么我通過數據發送,全世界能收到,但是這樣的話,數據太大,所以有了局域網這一說:我從班里吼一嗓子,其他班能聽到么?不能聽到,我們班就好比一個局域網,在一個局域網之內計算機是通過廣播+以太網協議進行通信的。好,那么現在 如果你一個服務端,客戶端同在一個教室,通過以太網加上吼的方式能否傳到,可以,這是一個局域網。但是你想在訪問百度,是不是通過瀏覽器 客戶端,訪問百度這個服務端,那么你需要將百度客戶端一個服務器放到你的旁邊供你瀏覽么? 不可能。mac地址只能在局域網中用,如果跨局域網怎么辦?這個就是上一層網絡層做的事情了。

    • 網絡層

      網絡層由來:有了ethernet、mac地址、廣播的發送方式,世界上的計算機就可以彼此通信了,問題是世界范圍的互聯網是由一個個彼此隔離的小的局域網組成的,那么如果所有的通信都采用以太網的廣播方式,那么一台機器發送的包全世界都會收到,這就不僅僅是效率低的問題了,這會是一種災難

       

       

      上圖結論:必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,如果是就采用廣播的方式發送,如果不是,就采用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關

      網絡層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址。

      IP協議

      IP協議就是確定對方局域網的位置(具體的我們下一節詳細說明),所以:ip + mac + 廣播的方式 就能讓你找到全世界所有的計算機的位置。沒問題吧?但是這樣你就可以通信了么?沒有! 互聯網之間通信本質是:客戶端的應用軟件與服務端的應用軟件的通信,只是找到計算機的位置是不夠的,你應該需要找到具體的軟件的位置。你的計算機上軟件很多,每一個軟件都有一個對應的端口用於專門收發數據的,這個端口就是下一層的事情了。

    • 傳輸層

      傳輸層就是TCP/UDP協議也叫做端口工作協議。這樣我們就可以找到計算機具體軟件的位置。

      所以:現在是ip+mac+端口 就可以確定全世界任何一個計算機上的任何一個軟件的位置。

    • 應用層

      這個協議是每個軟件自定義的一些協議。

      那么基本上我們就了解了以上這些協議以及每個協議具體的功能,簡單的從上至下捋順一遍。

       

       

       

  • 對每層協議進行詳細講解補充

    • 數據鏈路層

      • 交換機的學習功能

        我要進行數據通信,我要吼一嗓子,將我的數據包發到交換機上,然后交換機將所有的數據包都發到你們的網卡上,進行查找。找到之后拿到了數據各種拆包,然后回包。我繼續進行數據通信,然后又吼一嗓子,交換機發到所有的計算機上,周而復始。這樣有什么問題?交換機每次都要通過廣播的方式尋找目標計算機,消耗太大了。其實針對這個問題交換機給我們提供了一個mac地址學習功能:

        • 工作原理

          你的計算機連接的是網口5,目標計算機連接的是網口1,你現在要給目標計算機發送數據。你要先以單播的方式發給交換機:

          網口號 mac地址
          網口1: FF-FF-FF-FF-FF-FF
          網口2: FF-FF-FF-FF-FF-FF
          網口3: FF-FF-FF-FF-FF-FF
          網口4: FF-FF-FF-FF-FF-FF
          網口5: FF-FF-FF-FF-FF-FF

          交換機接受到你的消息之后,馬上將你的網口與mac地址對應上:

          網口號 mac地址
          網口1: FF-FF-FF-FF-FF-FF
          網口2: FF-FF-FF-FF-FF-FF
          網口3: FF-FF-FF-FF-FF-FF
          網口4: FF-FF-FF-FF-FF-FF
          網口5: 1C-39-47-C2-9E-0F

          然后交換機再以廣播的方式將消息數據發送,交換機所連接的所有的計算機都會接受到消息數據,只有目標計算機會接受數據,其余的計算機發現不是找自己的全部將數據丟掉。當目標計算機進行回消息時,交換機就會將目標計算機的網口(網口1)與目標計算機的mac地址對應上。

          網口號 mac地址
          網口1: 1D-25-F3-43-9A-E3
          網口2: FF-FF-FF-FF-FF-FF
          網口3: FF-FF-FF-FF-FF-FF
          網口4: FF-FF-FF-FF-FF-FF
          網口5: 1C-39-47-C2-9E-0F

          這樣以來,以后同一個交換機下的計算機再次發送消息時,交換機先去查看此表有無記錄如果可以查詢到,則以單薄的形式發到目標計算機,如果沒有對應則以廣播的形式發送給所有計算機(不包含源計算機)。

           

      • ARP協議

        ARP協議他的定位不是很明確,在osi七層模型中,ARP協議屬於數據鏈路層,而在TCP/UDP模型中,人們往往將ARP協議歸納在網絡層。我們這里主要講的就是OSI七層模型,所以將APR協議划歸到數據鏈路層。

        ARP協議(Address Resolution Protocol)地址解析協議,根據目標IP地址獲取目標物理地址的協議。

        ARP協議需要分兩種情況討論:

        1. 同一個局域網(網段,子網)。

        2. 不同的局域網(網段,子網)。

        本節我們先說在同一個局域網下的ARP協議是如何工作的。 上面我們說過,在同一個局域網內,計算機如何通信?計算機是通過廣播的方式+以太網協議進行通信的。mac地址是計算機的物理地址,它可以確定計算機在一個局域網內的具體位置。
        但是真實情是:如果兩台計算機之間要想通信,如下圖計算機1想將數據發送給計算機5,那么他可能不知道計算機5的mac地址,但是必須要知道計算機5的IP地址

        所以我們就得借助ARP協議,通過對方的IP地址獲取到其mac地址,然后在同一個局域網內通過廣播+以太網協議在進行通信。那么ARP協議的工作原理是什么呢?

        例如:主機172.16.10.10 訪問 172.16.10.11 前提條件:在同一個局域網。

      • 源mac 目標mac 源ip 目標ip 源端口號 目的端口號 數據部分
        1C-39-47-C2-9E-0F FF-FF-FF-FF-FF-FF 172.16.10.10 172.16.10.11 8080 10342 數據
        1.  計算機1會以廣播的形式在局域網發送一個ARP請求:請求信息為上面顯示信息(詢問IP地址為172.16.10.11的計算機,告訴我172.16.10.10 你的mac地址!!)。

        2. 同一個局域網內的所有計算機都會接受到這個消息,當目標IP從屬於的計算機接受到我的信息之后,檢查發現這個信息是給我的,然后將自己的mac地址以單播的形式回給我。

        其實ARP協議還有個功能,他在每個計算機都有一個ARP緩沖區,這里面有一個ARP列表:這個列表就是記錄的IP地址和MAC地址的對應關系,但是這個緩存區是有生存期的,一段時間之后就會清空,如果清空了那么在重復此操作。

        IP地址 MAC地址
        172.16.10.11 1D-25-F3-43-9A-E3
        168.16.12.36 1A-5D-B3-43-3D-5F
        172.14.15.107 1B-23-A3-43-9A-6A
        127.36.1.18 1B-25-E1-43-2B-4C

        同一個局域網內,ARP協議真正的流程是這樣: 主機172.16.10.10 訪問 172.16.10.11

        1. 計算機1會先查詢自己的ARP緩存區的ARP列表,如果有對應mac地址則直接發送數據。如果沒有或者ARP列表清空了則進行下面步驟:

          1. 計算機1會以廣播的形式在局域網發送一個ARP請求:請求信息為上面顯示信息(詢問IP地址為172.16.10.11的計算機,告訴我172.16.10.10 你的mac地址!!)。

          2. 同一個局域網內的所有計算機都會接受到這個消息,當目標IP從屬於的計算機5接受到我的信息之后,檢查發現這個信息是給我的,然后將自己的mac地址以單播的形式回給我。

        2. 計算機1接收到計算機5的消息之后,將對應關系補充至ARP列表,然后與計算機5開始通信。

    • 網絡層

      • IP協議

        規定網絡地址的協議叫ip協議,它定義的地址稱之為ip地址,廣泛采用的v4版本即ipv4,它規定網絡地址由32位2進制表示

        范圍0.0.0.0-255.255.255.255

        一個ip地址通常寫成四段十進制數,例:172.16.10.1

        ip地址分成兩部分

        • 網絡部分:標識子網

        • 主機部分:標識主機

        注意:單純的ip地址段只是標識了ip地址的種類,從網絡部分或主機部分都無法辨識一個ip所處的子網

        例:172.16.10.1與172.16.10.2並不能確定二者處於同一子網

        子網掩碼

        所謂”子網掩碼”,就是表示子網絡特征的一個參數。它在形式上等同於IP地址,也是一個32位二進制數字,它的網絡部分全部為1,主機部分全部為0。比如,IP地址172.16.10.1,如果已知網絡部分是前24位,主機部分是后8位,那么子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。

        知道”子網掩碼”,我們就能判斷,任意兩個IP地址是否處在同一個子網絡。方法是將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都為1,運算結果為1,否則為0),然后比較結果是否相同,如果是的話,就表明它們在同一個子網絡中,否則就不是。

        比如,已知IP地址172.16.10.1和172.16.10.2的子網掩碼都是255.255.255.0,請問它們是否在同一個子網絡?兩者與子網掩碼分別進行AND運算,

        172.16.10.1: 10101100.00010000.00001010.00000001

        255255.255.255.0:11111111.11111111.11111111.00000000

        AND運算得網絡地址結果:10101100.00010000.00001010.000000001->172.16.10.0

         

        172.16.10.2: 10101100.00010000.00001010.00000010

        255255.255.255.0:11111111.11111111.11111111.00000000

        AND運算得網絡地址結果:10101100.00010000.00001010.00000001->172.16.10.0

        結果都是172.16.10.0,因此它們在同一個子網絡。

        總結一下,IP協議的作用主要有兩個,一個是為每一台計算機分配IP地址,另一個是確定哪些地址在同一個子網絡。

         

    • 傳輸層

      傳輸層的由來:網絡層的ip幫我們區分子網,以太網層的mac幫我們找到主機,然后大家使用的都是應用程序,你的電腦上可能同時開啟qq,暴風影音,等多個應用程序,那么我們通過ip和mac找到了一台特定的主機,如何標識這台主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。

      傳輸層功能:建立端口到端口的通信

      補充:端口范圍0-65535,0-1023為系統占用端口

      傳輸層也有協議叫‘端口’協議,這兩個協議包含兩種:UDP協議,TCP協議,下面我們會詳細討論。

    • 應用層

      應用層由來:用戶使用的都是應用程序,均工作於應用層,互聯網是開放的,大家都可以開發自己的應用程序,數據多種多樣,必須規定好數據的組織形式

      應用層功能:

      1. 選擇一個合適的網絡應用體系結構;

      2. 根據所選的網絡應用體系結構,確定客戶進程和服務器進程;

      3. 確定客戶進程和服務器進程的端口號

      4. 確定客戶進程和服務器進程的IP地址

      5. 選擇一個合適的應用層協議

      6. 考慮網絡應用所需的服務。

      從上面我們可以得知應用層要獲取客戶端服務端的端口號以及ip協議,還有就是選擇一個合適的應用層協議,封裝我的數據,目前存在的應用層協議有:

      DNS,FTP,HTTP,telnet,HTTP,SMTP,POP3,SNMP等。

      我們使用的應用程序都會根據其本身的性質選擇其中的某個協議作為傳輸數據的規范。

      舉個例子比如FTP協議,FTP協議就是文件傳輸協議,FTP是因特網上使用得最廣泛的文件傳送協議。FTP提供交互式的訪問,允許客戶指明文件類型與格式,並允許文件具有存取權限。

      比如我們利用百度雲盤上傳一個文件,文件讀取出來就是一堆二進制的數據,它不只是上傳一堆這樣的二進制數據,我們上傳文件時肯定需要驗證文件的完整性,獲取源文件名,獲取源文件的大小等,所以我們假如file_content代表文件的內容,我們應用程序可以按照一定規范對其進行加工:

      原本我們只需要上傳file_content數據即可,現在我們要上傳一個字典:

      dic = {
        "md5": 'ec623e4013d9e87a367ea086b8392563',
        "filename": '太白金星.md',
        "file_size": 7676565,
        "file_content": file_content,
      }

      這樣百度雲盤接受到我的數據之后,就可以獲取到相應的數據信息了。

    • 小結

      現在你的計算機A想要向一個計算機B發送數據,你需要知道什么信息?

      1. 應用層獲取你的IP地址(包含子網掩碼)、端口,和對方的IP地址(包含子網掩碼)、端口。

      2. 通過ARP協議拿到對方的mac地址(無論在不在同一個局域網都可以)。

      3. 通過對方的IP地址和子網掩碼去判斷,計算機A與計算機B是否在同一個局域網。

        • 如果是在同一個局域網則通過廣播+以太網協議找到計算機B的位置,然后在通過端口號確定軟件的位置,從而進行通信。

        • 如果不是在同一個局域網怎么辦?

          那你就將數據傳給路由器就行了,路由器遵從路由協議通過對方的IP地址(包含子網掩碼)確定對方的網段,將數據發送到目標計算機從屬於的路由器上然后通過廣播+以太網協議最終發送到目標計算機,最后通過端口傳輸到目標軟件上。

      這只是一個簡單的描述,下一節會給大家做一個詳細的過程分析。

      所以說,我要通過計算機A給計算機B發送數據,只要知道對方的IP地址和端口(mac地址會通過ARP協議自動獲取)即可,也就是說,IP地址+端口就可以定位世界上任意一台計算機上的目標軟件。

       

2.TCP,UDP協議

由於tcp協議與udp協議比較重要,我們單獨的把傳輸層的兩個協議拿出來進行詳細的說明。

  • UDP協議

    UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,它是不可靠的無連接協議,面相數據報,相對不安全,但是他的傳輸效率高,盡最大努力服務,無擁塞控制。一般用於即時通信:qq聊天,微信,在線視頻,網絡語音電話,對數據准確性和丟包要求比較低,但是速度必須快。

    ”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。

    以太網頭 ip頭 udp頭 數據
           
  • TCP協議

    TCP協議是Transmission Control Protocol的簡稱,中文名是傳輸控制協議,它是可靠的面相連接的流式協議。相對安全,但是傳輸效率相對低,一般用於文件傳輸,發送或者接受郵件,遠程登錄等等。

    可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。總長度也是不超過65535字節。

    以太網頭 ip頭 TCP頭 數據
           

    IP數據報就是一個抽象概念,是對數據包的結構進行分析,由首部和數據兩部分組成,總長度不超過65535個字節。

tcp報文

img

 

3.TCP協議的三次握手、四次揮手

比如客戶端與服務端基於TCP協議這種面相連接的網絡通信,通過OSI七層模型的層層封裝,然后廣播、在通過ARP協議獲取mac地址,經由路由協議終於找到了計算機B對應的軟件上,這就好比唐僧師徒四人經歷九九八十一最終取得真經一樣,如果每次通信都是這么艱辛,不僅效率低,而且各個硬件設備處理的事務重復繁瑣,產生的內耗是巨大的。所以如果讓我們去設計網絡通信的方式應該怎么去做?

比如,如果回到沒有導航的年代,我想跑保定到濟南的運輸線,你怎么做? 第一次的時候,你應該參考紙質版地圖,經過路標等提示信息、沿路的詢問最終到達濟南。那么下一次你在從保定跑濟南,你還用這么麻煩么? 最優路線你已經記住了,下一次你就直接按照上一次走的路線送貨就可以了。

所以,我們網絡通信也是基於這個原理,當客戶端與服務端第一次建立鏈接時,他先要建立最優路線的專屬管道,管道建立完畢之后,我的客戶端想要給服務端發送消息了,直接將數據向管道一丟,數據就會順着管道傳輸到服務端上,非常的快速方便。同理,服務端要想與客戶端回消息,也一定要先建立最優路線的專屬管道,消息順着管道就會快速的到達客戶端,這樣省去了每次發送數據不必要的操作,重復的工作,提高了效率。

  • TCP協議的三次握手

    所以客戶端要與服務端通信之前,先要建立鏈接,兩條通道修好之后,兩邊各自在利用通道收發消息,方便快捷。那么TCP協議第一次建立鏈接需要經歷三次握手。

     

    • 思路:

       

       

      這是幾次握手?哪來的三次握手呢?這不是四次握手么?對,建立鏈接時理應是四次握手,但是這里的2、3次握手是可以整合到一起的,服務端可以發送一個回應既包含同意客戶端與我建立鏈接,又包含我也向客戶端建立鏈接的申請。

       

       

       

    • 規范版本:

       

       

       

      圖解:

      SYN就是請求,seq是一個隨機的序列號。

      第一次握手:客戶端發送SYN=1 隨機序列號seq到服務端,服務端接受到消息。

      第二次握手:客戶端回一個ack=1+x,並且也發送了一個SYN=1,隨機序列號seq=y,這個說明服務端同意了(客戶端到服務端的通道建立完畢),並且服務端也給客戶端發送了一個建立通道的請求。

      第三次握手:客戶端接受到消息之后,回復了一個ack=1+y,消息到達服務端(服務端到客戶端的通道建立完畢)。

      至此兩條通道建立完畢,接下來客戶端與服務端就可以沿着兩條通道互相收發消息了。

       

  • TCP協議的四次揮手

    當客戶端向服務端消息發送完畢,應該將通道關閉(通道一直開啟會占用資源),此時就涉及到了TCP協議斷開鏈接的四次揮手。

    • 思路:

       

       

      為什么斷開鏈接需要四次揮手呢?2、3整合成一次不行么?(面試題經常會問到

      這個與建立鏈接時不太一樣,客戶端向服務端發起斷開鏈接的請求時,證明客戶端已經向服務端數據發送完畢了,所以我請求斷開鏈接,但是此時服務端向客戶端端發送的數據完成與否不確定,服務端需要等待向客戶端發送的數據全部完成之后,才可以發起斷開鏈接的請求,所以不能整合到一起。

    • 規范版本:

       

       

       

    • 圖解:

      第一次揮手:客戶端向服務端的數據發送完畢之后,會向服務端發送一個FIN=1 seq=u的請求,服務端接受到這個請求。

      第二次揮手:服務端接受到這個請求之后,會向客戶端發送一個ack=1+u的請求,同意客戶端斷開鏈接,客戶端接受到這個請求,斷開了通往服務端的通道。

      第三次揮手:服務端向客戶端的數據發送完畢之后,會向客戶端發送一個FIN=1 seq=w的請求,客戶端接受到這個請求。

      第四次揮手:客戶端接受到這個請求之后,會向服務端發送一個ack=1+w的請求,同意服務端斷開鏈接,服務端接受到這個請求,斷開了通往客戶端的通道。

     

    相關面試題:

    1. 為什么斷開鏈接需要四次揮手呢?

      這個與建立鏈接時不太一樣,客戶端向服務端發起斷開鏈接的請求時,證明客戶端已經向服務端數據發送完畢了,所以我請求斷開鏈接,但是此時服務端向客戶端端發送的數據完成與否不確定,服務端需要等待向客戶端發送的數據全部完成之后,才可以發起斷開鏈接的請求,所以不能整合到一起。

    2. 如果已經建立了連接,但是客戶端突然出現故障了怎么辦?

      TCP設有一個保活計時器,顯然,客戶端如果出現故障,服務器不能一直等下去,白白浪費資源。服務器每收到一次客戶端的請求后都會重新復位這個計時器,時間通常是設置為2小時,若兩小時還沒有收到客戶端的任何數據,服務器就會發送一個探測報文段,以后每隔75秒鍾發送一次。若一連發送10個探測報文仍然沒反應,服務器就認為客戶端出了故障,接着就關閉連接。

    3. 什么是SYN洪水攻擊?

      TCP協議也稱為"好人"協議,什么叫好人?因為TCP協議不會拒絕任何客戶端來鏈接我,只有我客戶端來鏈接我,我就給他回一個ack然后向客戶端發送SYN請求,等待客戶端同意,在客戶端沒有同意之前,服務器會維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明服務器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在服務器處於Syn_RECV狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入ESTABLISHED狀態。

       

       

      SYN洪水攻擊:利用TCP協議缺陷,通過發送大量的半連接請求,耗費CPU和內存資源,配合IP欺騙,SYN攻擊能達到很好的效果,通常,客戶端在短時間內偽造大量不存在的IP地址,向服務器不斷地發送syn包,服務器回復確認包,並等待客戶的確認,由於源地址是不存在的,服務器需要不斷的重發直至超時,這些偽造的SYN包將長時間占用未連接隊列,正常的SYN請求被丟棄,目標系統運行緩慢,嚴重者引起網絡堵塞甚至系統癱瘓。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM