又到了金三銀四的時間,阿粉也是有點蠢蠢欲動,想要準備面試一下,檢驗一下自己的工作水平了,于是阿粉就開始了改改簡歷,然后想著準備面試一下,結果在面試的第一家就遭遇了滑鐵盧,直接是涼涼收尾。為什么呢?那就是面試官按著協議就開始懟,HTTP協議、TCP/IP協議、SSL協議、MQTT協議,反正就是各種懟,導致阿粉就不得不好好看看這些協議的內容。阿粉今天就給大家分析一下這個TCP協議。
什么是TCP/IP協議TCP/IP協議,中文名傳輸控制協議。是指能夠在多個不同網絡間實現信息傳輸的協議簇。
如果你覺得 TCP/IP 協議只是指的TCP和IP鞋油的話,那么阿粉就得給你安排一下了,TCP/IP 協議不僅僅指的是 TCP 和 IP 兩個協議,而是指一個由 FTP、SMTP、TCP、UDP、IP 等協議構成的協議簇, 只是因為在 TCP/IP 協議中 TCP 協議和IP協議最具代表性,所以被稱為 TCP/IP 協議。
也就是說,TCP/IP 協議是由很多構成的,而不僅僅是 TCP 和 IP 這兩塊的內容。
TCP/IP協議的組成在上面阿粉已經把圖給大家放到了上面,實際上圖中已經給大家畫出來這個TCP協議的分層了,實際上TCP/IP傳輸協議是嚴格來說是一個四層的體系結構,應用層、傳輸層、網絡層和數據鏈路層都包含其中。
而根據OSI參考模型的分類,又有很多人稱他為七層,而不同的層級又分別對應不同的內容。
實際上OSI七層模型中 應用層,表示層,會話層,對應的都是四層模型中的應用層,因為應用層、表示層、會話層三個層次提供的服務相差不是很大,所以都給他合并了。
而數據鏈路層和物理層都是歸屬于網絡接口層,又稱之為鏈路層。這是因為數據鏈路層和物理層的內容相差不多,所以在TCP/IP協議中它們被歸并在網絡接口層(鏈路層)一個層次里。
TCP/IP協議分層介紹分層既然都是四層了,我們就來分別的介紹一下這四層都是代表了什么,以及他們主要完成的功能情況。
自上而下:
1. 應用層應用層是TCP/IP協議的第一層,是直接為應用進程提供服務的。
加密、解密、格式化數據.可以建立或解除與其他節點的聯系,這樣可以充分節省網絡資源.對不同種類的應用程序它們會根據自己的需要來使用應用層的不同協議,郵件傳輸應用使用了SMTP協議、萬維網應用使用了HTTP協議、遠程登錄服務應用使用了有TELNET協議.2. 運輸層運輸層也有人喜歡稱之為傳輸層,實際上就是提供了進程間的邏輯通信,運輸層向高層用戶屏蔽了下面網絡層的核心細節,使應用程序看起來像是在兩個運輸層實體之間有一條端到端的邏輯通信信道。
而傳輸層包含了兩部分的協議:
TCP(傳輸控制協議):應用程序之間通信UDP(用戶數據報協議):應用程序之間的簡單通信作用都是用來在程序之間通信的,但是 UDP 相對于 TCP 來說,是不具備可靠性的。
UDP只是做了運輸協議能夠做的最少工作,除了復用/分解功能及少數的差錯檢驗外,它幾乎沒有對ip增加別的東西。
既然說 TCP 相對于 UDP 協議來說,他是具備可靠性的,那么為什么他是可靠的呢?
TCP可靠性來自于:
當TCP發送一個段之后,啟動一個定時器,等待目的點確認收到報文,如果不能及時收到一個確認,將重發這個報文。當TCP收到連接端發來的數據,就會推遲幾分之一秒發送一個確認。TCP將保持它首部和數據的檢驗和,這是一個端對端的檢驗和,目的在于檢測數據在傳輸過程中是否發生變化。(有錯誤,就不確認,發送端就會重發)TCP是以IP報文來傳送,IP數據是無序的,TCP收到所有數據后進行排序,再交給應用層IP數據報會重復,所以TCP會去重TCP能提供流量控制,TCP連接的每一個地方都有固定的緩沖空間。TCP的接收端只允許另一端發送緩存區能接納的數據。而 UDP 不可靠的因素則是:
不保證消息交付:不確認,不重傳,無超時不保證交付順序:不設置包序號,不重排,不會發生隊首阻塞不跟蹤連接狀態:不必建立連接或重啟狀態機不需要擁塞控制:不內置客戶端或網絡反饋機制既然 UDP 都是不可靠的了,那么為什么還有人是用呢?
其實最主要的原因有幾點:
第一,UDP 協議簡單,在使用 TCP 協議傳輸數據時,如果一個數據段丟失或者接收端對某個數據段沒有確認,發送端會重新發送該數據段,而 TCP 重新發送數據會帶來傳輸延遲和重復數據,降低了用戶的體驗,而 UDP 協議雖然不能保證這個數據傳輸的確認,但是他能數據丟失呀(強行解釋他的low,阿粉都有點無地自容),實際上就是這樣,因為用戶的體驗,結果只能犧牲掉消息可靠性了,丟了就丟了,我為了用戶體驗,我不要了,這種方式切記,寫代碼的時候絕對不可取。
第二,UDP適合于實時數據傳輸,如語音和視頻通信,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響,就比如早期的QQ,是用的就是 UDP 的協議。
3. 網絡層網絡層在TCP/IP協議中的位于第三層。在TCP/IP協議中網絡層可以進行網絡連接的建立和終止以及IP地址的尋找等功能。實際上網絡層是為運輸層提供服務的,傳送的協議數據單元稱為數據包或分組。
(1) 而網絡層協議的代表包括:IP、IPX、RIP、OSPF等
我們以經典的 IP 協議為例:
規定網絡地址的協議叫ip協議,它定義的地址稱之為ip地址,廣泛采用的v4版本即ipv4,它規定網絡地址由32位2進制表示范圍0.0.0.0-255.255.255.255一個ip地址通常寫成四段十進制數,例:172.16.10.1(2) IP地址分類
IP地址根據網絡ID的不同分為5種類型,A類地址、B類地址、C類地址、D類地址和E類地址。
A類IP地址 地址范圍從1.0.0.0 到126.0.0.0B類IP地址 地址范圍從128.0.0.0到191.255.255.255C類IP地址 范圍從192.0.0.0到223.255.255.255D類地址用于多點廣播(Multicast)一般這些內容都是在我們學計算機基礎的時候就學到的 IP 協議的地址取值范圍。
而 IP 地址的主要作用就是:
尋址與路由分段與重組4. 網絡接口層網絡接口層在 TCP/IP 協議中,網絡接口層位于第四層。由于網絡接口層兼并了物理層和數據鏈路層所以,網絡接口層既是傳輸數據的物理媒介,也可以為網絡層提供一條準確無誤的線路。
網絡接口層在發送端將上層的IP數據報封裝成幀后發送到網絡上;數據幀通過網絡到達接收端時,該結點的網絡接口層對數據幀拆封,并檢查幀中包含的MAC地址。如果該地址就是本機的MAC地址或者是廣播地址,則上傳到網絡層,否則丟棄該幀。
其實阿粉覺得網絡接口層實際上就是相當于一個網卡的功能,數據包從一個網卡到另一個網卡一樣。
而這些協議,其實往往都是靠個人理解,有些人喜歡交數據鏈路層,有些人喜歡叫網絡接口層,只能說個人喜好吧,到時候面試的時候,就看你的表現了。
X 關閉
X 關閉