什麼是TCP/IP協議?三次握手指的是什麼?

1.背景介紹

要想了解什麼是TCP/IP協議,就要知道什麼是網絡協議。書本上的定義:網絡協議是為計算機網絡中進行數據交換而建立的規則、標準或約定的集合。

中國人之間交流使用漢語,要遵循漢語的語法結構和發音;那如果我們跟英國人交流的話,就要使用英語的語法結構和發音;我們人與人之間交流所用的語言就是一種協議。對於計算機來說,兩臺機器之間的通信就要制定各種各樣的協議,例如:文件傳輸使用TCP協議,域名系統使用DNS協議。數據根據協議規定的內容進行傳輸,這樣就實現了兩臺機器之間的通信。

總的來說:網絡協議就是人為規定的一套通信規範,只要雙方都遵循這個規範,就能實現交流。

TCP/IP具體含義:從字面意義上講,可能會認為 TCP/IP 是指 TCP 和 IP 兩種協議。然而多數情況下,它只是利用ip進行通信時所必須用到的協議群的統稱。具體來說,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都屬於 TCP/IP 協議。他們與 TCP 或 IP 的關係緊密,是互聯網必不可少的組成部分。TCP/IP 一詞泛指這些協議,因此,有時也稱 TCP/IP 為網際協議群。

2.知識剖析

TCP/IP協議族中有一個重要的概念是分層,TCP/IP協議按照層次分為以下四層:

應用層、傳輸層、網絡層、數據鏈路層。提到協議分層,通常會聯想到OSI的七層協議經典架構,但是TCP/IP協議族的結構則稍有不同。如圖所示

TCP/IP協議族按照層次由上到下,層層包裝。

(1)最上面的就是應用層了,這裡面有http,ftp,等等我們熟悉的協議。

TCP/IP的分層中,將OSI參考模型中的會話層、表示層和應用層的功能都集中到了應用程序中實現。

TCP/IP應用的架構絕大多數屬於客戶端/服務器模型。

應用層的主要應用場景:

瀏覽器和服務端之間通信所用的協議是HTTP協議,所傳輸數據的主要格式為HTML。

發送電子郵件時用到的協議是SMTP。

文件傳輸(FTP)

遠程登錄常用TELNET與SSH兩種協議。遠程登錄是指登錄到遠程的計算機上,使那臺計算機上的程序得以運行的一種功能。

網絡管理(SNMP)

(2)第二層則是傳輸層,著名的TCP和UDP協議就在這個層次。

傳輸層最主要的功能是能夠讓應用程序之間實現通信,並且定義了兩種服務質量不同的協議,即:傳輸控制協議TCP和用戶數據報協議UDP。

TCP協議是一個面向連接的、可靠的協議。它可以保證兩端通信主機之間的通信可達。在發送端,它負責把上層傳送下來的字節流分成報文段並傳遞給下層。在接收端,它負責把收到的報文進行重組後遞交給上層。TCP協議還要處理端到端的流量控制,以避免緩慢接收的接收方沒有足夠的緩衝區接收發送方發送的大量數據.

UDP傳送數據前並不與對方建立連接,對接收到的數據也不發送確認信號,發送端不知道數據是否會正確接收,當然也不用重發,所以說UDP是無連接的、不可靠的一種數據傳輸協議。

UDP常用在分組數據較少或多播、廣播通信以及視頻通信等多媒體領域(即時通信)。

(3)第三層是網絡層,IP協議就在這裡,它負責對數據加上IP地址和其他的數據以確定傳輸的目標。

也稱作互聯網層,是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網絡或主機。同時,為了儘快地發送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發送的順序可能不同,這就需要上層必須對分組進行排序。

網絡層定義了分組格式和協議,即IP協議(Internet Protocol)。另外的還有ICMP協議(Internet互聯網控制報文協議),以及IGMP協議(Internet組管理協議)。

IP是一種網絡層協議,提供的是一種不可靠的服務,它只是儘可能快地把分組從一端送到另一端,但是並不提供任何可靠性保證。同時被TCP和UDP使用。TCP和UDP的每組數據都通過端系統和每個中間路由器中的IP層在互聯網中進行傳輸。

ICMP是IP協議的附屬協議。IP層用它來與其他主機或路由器交換錯誤報文和其他重要信息。

IGMP是Internet組管理協議。它用來把一個UDP數據報多播到多個主機。

(4)第四層是叫數據鏈路層,也稱作網絡接口層,通常包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。鏈路層為待傳送的數據加入一個以太網協議頭,並進行CRC編碼,為最後的數據傳輸做準備。

3.常見問題

4.解決方案

5.編碼實戰

6.擴展思考

詳細介紹IP、TCP和DNS。

IP協議:IP協議的作用在於把各種數據包準確無誤的傳遞給對方,其中兩個重要的條件是IP地址,和MAC地址。由於IP地址是稀有資源,不可能每個人都擁有一個IP地址,所以我們通常的IP地址是路由器給我們生成的IP地址,路由器裡面會記錄我們的MAC地址。而MAC地址是全球唯一的,除去人為因素外不可能重複。

TCP協議:如果說IP協議是找到對方的詳細地址。那麼TCP協議就是把安全的把東西帶給對方。各有分工,互不衝突。

按層次分,TCP屬於傳輸層,提供可靠的字節流服務。所謂的字節流服務是指,為了方便傳輸,將大塊數據分割成以報文段(segment)為單位的數據包進行管理。而可靠的傳輸服務是指,能夠把數據準確可靠地傳給對方。總之,TCP 協議為了更容易傳送大數據才把數據分割,而且 TCP 協議能夠確認數據最終是否送達到對方。

DNS:(Domain names System)

和HTTP協議一樣是處於應用層的服務,提供域名到IP地址之間的解析服務。互聯網之間是通過IP地址通信的,但是IP地址並不符合認得記憶習慣,人喜歡記憶有意義的字詞。所以DNS服務就為了解決這個問題而生的。

7.更多討論

1,TCP/IP協議通信的過程?

2,如何建立TCP/IP連接?

3,為什麼要三次握手?

4,IP包如何路由至目標地址?

解決方案:

1,TCP/IP協議通信的過程

通信的過程其實就對應著數據裝包與拆包的過程。裝包的過程,數據發送方每層不斷地封裝首部,添加一些信息用於傳輸,確保能傳輸到目的地。拆包的過程,數據接收方每層不斷地拆除首部,得到最終傳輸的數據。(圖例)

什麼是TCP/IP協議?三次握手指的是什麼?

每個分層中,都會對所發送的數據附加一個首部,在這個首部中包含了該層必要的信息,如發送的目標地址以及協議相關信息。通常,為協議提供的信息為包首部,所要發送的內容為數據。在下一層的角度看,從上一層收到的包全部都被認為是本層的數據。

2,如何建立TCP/IP連接?

TCP傳輸控制協議,是一個面向連接的協議。在TCP/IP協議中,TCP協議提供可靠的連接服務,連接是通過三次握手進行初始化的。所謂三次握手是指建立一個 TCP 連接時需要客戶端和服務器端總共發送三個包以確認連接的建立。三次握手的目的是同步連接雙方的序列號和確認號並交換 TCP窗口大小信息。

TCP報文格式(圖)

什麼是TCP/IP協議?三次握手指的是什麼?

(1)序列號:Sql序號,用來標識數據包,發起方發送數據時對此進行標記。

(2)確認序號:Ack序號,只有ACK標誌位為1時,確認序號字段才有效,Ack=Seq+1。

(3)標誌位:共6個,即SYN、ACK、PSH、RST、URG、FIN

1)SYN:發起一個請求。 2)ACK:確認序號有效(表示對請求的響應)。

3)URG:緊急指針(urgent pointer)有效。 4)PSH:接收方應該儘快將這個報文交給應用層。

5)RST:重置連接。 6)FIN:釋放一個連接。

需要注意的是: (A)不要將確認序號Ack與標誌位中的ACK搞混了。

(B)確認方Ack=發起方Seq+1,兩端配對。

什麼是TCP/IP協議?三次握手指的是什麼?

第一次握手:客戶端發送一個TCP標誌位SYN=1,ACK=0的數據包給服務端,並隨機會產生一個Seq=J.當服務端接收到這個數據後,服務端由SYN=1可知客戶端是想要建立連接;

第二次握手:服務端要對客戶端的聯機請求進行確認,向客戶端發送應答號ACK=1、SYN=1 確認號Ack=J+1,此值是客戶端的序列號加1,還會產生一個隨機的序列號Seq=K,這樣就告訴客戶端可以進行連接;

第三次握手:客戶端收到數據後檢查Ack是否為J+1,以及標誌位ACK的值是否為1,若為1,則會發送ACK=1、確認號碼Ack=K+1,告訴服務端,你的請求連接被確認,連接可以建立,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。

3,為什麼要三次握手?

為了防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤。

三次握手是在安全可靠的基礎上,握手次數最少的方案。兩次握手並不能保證可靠性。四次握手又浪費了效率,當然,有的需要更高安全性的地方,是可以有N次握手協議的,但那是特殊情況。

4,IP包如何路由至目標地址?

IP包有固定的報文格式,報頭有所需要參數。如:源端口、目標端口、確認序號和標誌域等。

今天的分享就到這裡啦,歡迎大家點贊、轉發、留言、喜歡的話,點個關注,點個贊,謝謝啦,

相關推薦

推薦中...