TCP協議靈魂12問

2021-10-09 21:42:00 字數 748 閱讀 8427

tcp 作為傳輸層的協議,是乙個軟體工程師素養的體現,也是面試中經常被問到的知識點。在此,我將 tcp 核心的一些問題梳理了一下,希望能幫到各位。

首先概括一下基本的區別:

tcp是乙個面向連線的、可靠的、基於位元組流的傳輸層協議。

udp是乙個面向無連線的傳輸層協議。(就這麼簡單,其它tcp的特性也就沒有了)。

具體來分析,和udp相比,tcp有三大核心特性:

面向連線。所謂的連線,指的是客戶端和伺服器的連線,在雙方互相通訊之前,tcp 需要三次握手建立連線,而 udp 沒有相應建立連線的過程。

可靠性。tcp 花了非常多的功夫保證連線的可靠,這個可靠性體現在哪些方面呢?乙個是有狀態,另乙個是可控制。

tcp 會精準記錄哪些資料傳送了,哪些資料被對方接收了,哪些沒有被接收到,而且保證資料報按序到達,不允許半點差錯。這是有狀態

當意識到丟包了或者網路環境不佳,tcp 會根據具體情況調整自己的行為,控制自己的傳送速度或者重發。這是可控制

相應的,udp 就是無狀態,不可控的。

面向位元組流。udp 的資料傳輸是基於資料報的,這是因為僅僅只是繼承了 ip 層的特性,而 tcp 為了維護狀

TCP靈魂之問 介紹一下 TCP 報文頭部的字段

如何標識唯一標識乙個連線?答案是 tcp 連線的四元組 源 ip 源埠 目標 ip 和目標埠。那 tcp 報文怎麼沒有源 ip 和目標 ip 呢?這是因為在 ip 層就已經處理了 ip tcp 只需要記錄兩者的埠即可。序列號在 tcp 通訊的過程中有兩個作用 在 syn 報文中交換彼此的初始序列號。...

DNS 靈魂三問 why,when,how

dns 是 domain name system 的縮寫,作用很簡單,根據網域名稱查詢對應的 ip 位址。tcp ip 約定每個網路請求包根據 ip 位址確認接收方。這和你打 需要知道對方 號碼一樣。因為 ip 位址不好記憶,所以有了一層網域名稱對映。為什麼不設計成直接根據網域名稱確認接收方呢?在 ...

python入門靈魂5問

對於剛接觸python程式設計或者想學習python自動化的人來說,基本都會有以下python入門靈魂5問 python學習路線,python教程,python學哪些,python怎麼學,python學到什麼程度?需要學習哪些內容才能征服python這條蟒蛇呢?前言 python分為2.x和3.x之...