1. 程式人生 > >TCP/IP協議詳解內容總結(怒噴一口老血)

TCP/IP協議詳解內容總結(怒噴一口老血)

TCP/IP協議

TCP/IP不是一個協議,而是一個協議族的統稱。裡面包括IP協議、IMCP協議、TCP協議。 TCP/IP分層:
這裡有幾個需要注意的知識點:
  • 網際網路地址:也就是IP地址,一般為網路號+子網號+主機號
  • 域名系統:通俗的來說,就是一個數據庫,可以將主機名轉換成IP地址
  • RFC:TCP/IP協議的標準文件
  • 埠號:一個邏輯號碼,IP包所帶有的標記
  • Socket:應用程式設計介面
資料鏈路層的工作特性:
  • 為IP模組傳送和接收IP資料報
  • 為ARP模組傳送ARP請求和接收ARP應答(ARP:地址解析協議,將IP地址轉換成MAC地址)
  • 為RARP傳送RARP請求和接收RARP應答
接下來我們瞭解一下TCP/IP的工作流程:
資料鏈路層從ARP得到資料的傳遞資訊,再從IP得到具體的資料資訊

IP協議


IP協議頭當中,最重要的就是TTL(IP允許通過的最大網段數量)欄位(八位),規定該資料包能穿過幾個路由之後才會被拋棄。

IP路由選擇


ARP協議工作原理


ICMP協議(網路控制文協議)

將IP資料包不能傳送的錯誤資訊傳送給主機 查詢報文
  1. ping查詢:主機是否可達,通過計算間隔時間和傳送多少個包的數量
  2. 子網掩碼
  3. 時間戳:獲得當前時間
差錯報文 不產生的情況:
  1. ICMP差錯報文不產生差錯報文
  2. 源地址為零地址、環目地址、廣播地址、多播地址

IP路由器選擇協議

靜態路由選擇

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

靜態路由選擇

  1. 配置介面以預設方式生成路由表項,或者使用route add手動新增表項
  2. ICMP報文(ICMP重定向報文)更新表項
  3. 動態路由選擇(只使用在路由之間)

RIP(路由資訊協議)

分散式的基於距離向量(路由器到每一個目的網路的距離記錄)的路由選擇協議 router承擔的工作:
  1. 給每一個已知路由器傳送RIP請求報文,要求給出完整的路由表
  2. 如果接受請求,就將自己的路由表交給請求者;如果沒有,就處理IP請求表項(自己部分+跳數/沒有的部分+16)
  3. 接受迴應,更新路由表
  4. 定期更新路由表(一般為30s,只能說太頻繁~)

OSPF(開放最短路徑優先協議)

分散式鏈路狀態(和這兩個路由器都有介面的網路)協議
  1. 當鏈路狀態發生變化時,採用可靠的洪泛法,向所有的路由器傳送資訊(相鄰的所有路由器的鏈路狀態)
  2. 最終會建立一個全網的拓撲結構圖

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

首先我們先來了解TCP報文段
重要的標誌我在圖中也有標記,重點了解標誌位 ACK:確認序號有效 RST:重置連線 SYN:發起了一個新連線 FIN:釋放一個連線

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

前提:A主動開啟,B被動開啟
  1. 在建立連線之前,B先建立TCB(傳輸控制塊),準備接受客戶程序的連線請求,處於LISTEN(監聽)狀態
  2. A首先建立TCB,然後向B發出連線請求,SYN置1,同時選擇初始序號seq=x,進入SYN-SEND(同步已傳送)狀態
  3. B收到連線請求後向A傳送確認,SYN置1,ACK置1,同時產生一個確認序號ack=x+1。同時隨機選擇初始序號seq=y,進入SYN-RCVD(同步收到)狀態
  4. A收到確認連線請求後,ACK置1,確認號ack=y+1,seq=x+1,進入到ESTABLISHED(已建立連線)狀態。向B發出確認連線,最後B也進入到ESTABLISHED(已建立連線)狀態。
簡單來說,就是
  1. 建立連線時,客戶端傳送SYN包(SYN=i)到伺服器,並進入到SYN-SEND狀態,等待伺服器確認
  2. 伺服器收到SYN包,必須確認客戶的SYN(ack=i+1),同時自己也傳送一個SYN包(SYN=k),即SYN+ACK包,此時伺服器進入SYN-RECV狀態
  3. 客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認報ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手
在此穿插一個知識點就是SYN攻擊,那麼什麼是SYN攻擊?發生的條件是什麼?怎麼避免? 在三次握手過程中,Server傳送SYN-ACK之後,收到Client的ACK之前的TCP連線稱為半連線(half-open connect),此時Server處於SYN_RCVD狀態,當收到ACK後,Server轉入ESTABLISHED狀態。SYN攻擊就是 Client在短時間內偽造大量不存在的IP地址,並向Server不斷地傳送SYN包,Server回覆確認包,並等待Client的確認,由於源地址 是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間佔用未連線佇列,導致正常的SYN請求因為佇列滿而被丟棄,從而引起網 絡堵塞甚至系統癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連線狀態且源IP地址是隨機的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現行:
  #netstat -nap | grep SYN_RECV

四次分手的過程(客戶端我們用A表示,伺服器端用B表示)

由於TCP連線時是全雙工的,因此每個方向都必須單獨進行關閉。這一原則是當一方完成資料傳送任務後,傳送一個FIN來終止這一方向的連結。收到一個FIN只是意味著這一方向上沒有資料流動,既不會在收到資料,但是在這個TCP連線上仍然能夠傳送資料,知道這一方向也傳送了FIN,首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。
前提:A主動關閉,B被動關閉
有人可能會問,為什麼連線的時候是三次握手,而斷開連線的時候需要四次揮手? 這是因為服務端在LISTEN狀態下,收到建立連線請求的SYN報文後,把ACK和SYN放在一個報文裡傳送給客戶端。而關閉連線時,當收到對方的FIN 報文時,僅僅表示對方不再發送資料了但是還能接收資料,己方也未必全部資料都發送給對方了,所以己方可以立即close,也可以傳送一些資料給對方後,再 傳送FIN報文給對方來表示同意現在關閉連線,因此,己方ACK和FIN一般都會分開發送。

  1. A傳送一個FIN,用來關閉A到B的資料傳送,A進入FIN_WAIT_1狀態。
  2. B收到FIN後,傳送一個ACK給A,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),B進入CLOSE_WAIT狀態。
  3. B傳送一個FIN,用來關閉B到A的資料傳送,B進入LAST_ACK狀態。
  4. A收到FIN後,A進入TIME_WAIT狀態,接著傳送一個ACK給B,確認序號為收到序號+1,B進入CLOSED狀態,完成四次揮手。
簡單來說就是
  1. 客戶端A傳送一個FIN,用來關閉客戶A到伺服器B的資料傳送(報文段4)。
  2. 伺服器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1(報文段5)。和SYN一樣,一個FIN將佔用一個序號。
  3. 伺服器B關閉與客戶端A的連線,傳送一個FIN給客戶端A(報文段6)。
  4. 客戶端A發回ACK報文確認,並將確認序號設定為收到序號加1(報文段7)。
A在進入到TIME-WAIT狀態後,並不會馬上釋放TCP,必須經過時間等待計時器設定的時間2MSL(最長報文段壽命),A才進入到CLOSED狀態。為什麼?
  1. 為了保證A傳送的最後一個ACK報文段能夠到達B
  2. 防止“已失效的連線請求報文段”出現在本連線中
OK~是不是很難懂的感覺?那我們來說的“人性化點的”吧 三次握手流程
  1. 客戶端發個請求“開門吶,我要進來”給伺服器
  2. 伺服器發個“進來吧,我去給你開門”給客戶端
  3. 客戶端有很客氣的發個“謝謝,我要進來了”給伺服器
四次揮手流程
  1. 客戶端發個“時間不早了,我要走了”給伺服器,等伺服器起身送他
  2. 伺服器聽到了,發個“我知道了,那我送你出門吧”給客戶端,等客戶端走
  3. 伺服器把門關上後,發個“我關門了”給客戶端,然後等客戶端走(尼瑪~矯情啊)
  4. 客戶端發個“我知道了,我走了”,之後自己就走了
OK,先到這吧,還有後續喲~~~

相關推薦

TCP/IP協議內容總結

TCP/IP協議 TCP/IP不是一個協議,而是一個協議族的統稱。裡面包括IP協議、IMCP協議、TCP協議。 TCP/IP分層: 這裡有幾個需要注意的知識點: 網際網路地址:也就是IP地址,

TCP/IP協議

分片 現在 子網 相同 lis 端口 拒絕 mes 客戶端程序 TCP/IP協議 Transmission Control Protocol /Internet Protocol 傳輸控制協議/英特爾互聯協議 TCP/IP是一個Protocol Stack,包括TCP

TCP/IP協議 卷1》--- Ping程式

Ping程式由Mike Muuss編寫,目的是為了測試另一臺主機是否可達。該程式傳送一份ICMP回顯請求報文給主機,並等待返回ICMP回顯應答。不用經過傳輸層(TCP/UDP)。 一般來說,如果不能Ping到某臺主機,那麼就不能Telnet或者FTP到那臺主機

TCP/IP協議 卷1》--- IP:網際協議

IP:不可靠–不保證IP資料報能成功到達目的地;無連線—不維護任何關於後續資料報的狀態資訊,可能無序。 IP首部 最高位在左端,為0bit,最低位為右端,為31bit。傳輸次序為大端。 目前的協議版本號是4,因此IP有時也稱作IPv4。 首部長度指的

TCP/IP協議 卷1》--- 鏈路層

鏈路層主要有三個目的: (1)為IP模組傳送和接收IP資料報; (2)為ARP模組傳送ARP請求和接收ARP應答; (3)為RARP傳送RARP請求和接收RARP應答。 乙太網鏈路層協議包含:序

http,tcp,ip,協議

一,HTTP請求行中的方法用於HTTP的動作方式,常用的方法有GET、HEAD和POST。 不同的請求物件對應GET的結果是不同的,對應關係如下: 物件                           GET的結果檔案                          

TCP/IP協議 卷1》--- ARP:地址解析協議

當一臺主機把乙太網資料幀傳送到位於同一區域網上的另一臺主機時,是根據 48 bit的乙太網地址來確定目的介面的。裝置驅動程式從不檢查 IP資料報中的目的IP地址。 ARP為IP地址到對應的硬體地址之間提供動態對映。之所以用動態這個詞是因為這個過程是自動完成的,

TCP/IP協議 --- 轉載的

原文地址:https://www.jianshu.com/p/ef892323e68f為什麼會有TCP/IP協議在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算

網絡通信協議三之TCP/IP模型

udp protocol bubuko 傳遞 alt 公司 技術 png 代名詞 TCP/IP模型 註:PDU:Protocol Date Unit:表示對等層之間傳遞的數據單位 TCP:Transmission Control Protocol:傳輸控制協議 UD

第二章、IP協議

32位 匹配 重新 連續 檢測 tcp crc校驗 變化 同步傳輸 一、IP服務的的特點 IP協議是TCP/IP協議族的動力,他為上層協議提供的無狀態無連接,不可靠的服務。   無狀態是指IP通信雙方不同步傳輸數據的狀態信息,因此所有的ip數據報的發送,傳出和接受都是相互獨

TCP/IP協議模型:傳輸層TCP/UDP

TCP協議主要資訊: (1)TCP頭部資訊。TCP頭部資訊出現在每個TCP報文段中,用於指定通訊的源端埠號,目的端埠號,管理TCP連線,控制兩個方向的資料流。 (2)TCP狀態轉移過程。TCP連線的任意一端都是一個狀態機。在TCP連線從建立到斷開整個過程中,連線

配置計算機名、TCP/IP協議及配置--------新手必修課NSD NETWORK DAY01

Top NSD NETWORK DAY01 案例1:配置計算機名及工作組 案例2:TCP/IP地址配置 案例3:網路連通性測試 1 案例1:配置計算機名及工作組 1.1 問題 本例要求為修改計算機名並加入工作組: 1)設定計算機名:姓名拼音 2)設定工作組名:T

基於TCP/IP協議的C++網路程式設計API函式版

原始碼:http://download.csdn.net/detail/nuptboyzhb/4169959 基於TCP/IP協議的網路程式設計 定義變數——獲得WINSOCK版本——載入WINSOC

IP協議

目錄 Internet地址結構 表示IP地址 目前的IP版本有4和6。 目前最流行的就是IPv4,有十進位制和二進位制兩種表示方法。分別是: 點分四組十進位制。每一組範圍是[0~255],如:255.255.255.255 二進位制。如:11111111 11

IP協議---Linux學習筆記

網路層概述: IP服務的特點: IP協議為上層協議提供無狀態、無連線、不可靠的服務。 無狀態:IP通訊雙方不同步傳輸狀態的資訊,因此所有IP資料報傳送、傳輸、接收都是相互獨立的,沒有上下文關係。這樣同時也暴露了IP協議的缺點:無法處理亂序和重複的IP資料報

java enum(列舉)使用總結

enum 的全稱為 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。     下面是我在使用 enum 過程中的一些經驗和總結,主要包括如下內容: 1. 原始的介面定義常量 2. 語法(定義) 3. 遍歷、switch 等常用

Cookie 紀要vue.cookie,jquery.cookie簡化

處理 概念 理解 ssid 退出 核心 .com 安全協議 .net 今天看到一篇cookie的文章,寫的特別詳細,感謝 晚晴幽草軒 的分享,原文鏈接http://www.jeffjade.com/2016/10/31/115-summary-of-cooki

機器學習中的概率模型和概率密度估計方法及VAE生成式模型之七第4章 之 梯度估算

.com 概率 roc 生成 詳解 time 學習 style BE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?機器學習中的概率模型和概率密度估計方法及V

ZCU106開發之AXI_Bram重磅推出,進階必備

感謝大家兩週的等待!!本週連發兩篇!!!!  最近團隊事情比較多,在忙ZCU106的視訊處理方面的開發實現了編解碼,RTSP視訊流,影象疊加等應用。如果有朋友想了解更多相關資訊請加QQ群836535064。我們會將相關資料釋出於QQ群中。 歡迎有需求的朋友深度合作。本團隊

ZCU106開發之AXI_HP重磅推出,進階必備

感謝大家的等待!! 如果有朋友想了解更多相關資訊請加QQ群836535064。我們會將相關資料釋出於QQ群中。 歡迎有需求的朋友深度合作。本團隊專注於高速視訊編解碼,高速訊號採集處理方案提供。同樣也請入群加管理員。 ZCU106開發詳解之AXI_Bram(重磅推