午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

淺談TCP/IP

 太極混元天尊 2018-05-28

每個(gè)人每天都在依賴(lài)網(wǎng)絡(luò)通信,那么這些設(shè)備之間究竟是如何通信的?我在這里寫(xiě)下這篇文章,你卻能在千山萬(wàn)水之外閱讀它。今天簡(jiǎn)要談一下通信協(xié)議。

網(wǎng)絡(luò)通信協(xié)議

網(wǎng)絡(luò)通信協(xié)議主要是對(duì)信息的傳輸速率、傳輸代碼、代碼結(jié)構(gòu)、傳輸控制步驟、差錯(cuò)控制等做出的規(guī)定并制訂的標(biāo)準(zhǔn)。

協(xié)議主要由以下三個(gè)部分組成:

  • 語(yǔ)義:需要的控制信息以及執(zhí)行的動(dòng)作

  • 語(yǔ)法:交換的數(shù)據(jù)或控制信息的格式與結(jié)構(gòu)

  • 時(shí)序:雙方的應(yīng)答關(guān)系,包括速度的匹配和順序

OSI參考模型

OSI不是規(guī)范,準(zhǔn)確的來(lái)說(shuō),是一個(gè)抽象的參考模型,他沒(méi)有提供任何具體的實(shí)現(xiàn)標(biāo)準(zhǔn)?,F(xiàn)有網(wǎng)絡(luò)大多數(shù)可以通過(guò)OSI模型來(lái)進(jìn)行分析,了解OSI模型有助于分析和管理網(wǎng)絡(luò)。

OSI是一個(gè)分層結(jié)構(gòu),共有七層:

TCP/IP協(xié)議簇

介紹

TCP/IP協(xié)議簇先于OSI參考模型開(kāi)發(fā),因此層次無(wú)法完全和OSI模型對(duì)應(yīng)起來(lái)。他將不同的通信功能集成到不同的網(wǎng)絡(luò)層次,形成了一個(gè)具有四層的體系結(jié)構(gòu)。


有人也將其分為5層,將鏈路層從網(wǎng)絡(luò)接口層剝離出來(lái)。

各層的職責(zé)

  • 網(wǎng)絡(luò)接口層:主要負(fù)責(zé)向網(wǎng)絡(luò)物理介質(zhì)發(fā)送/接收數(shù)據(jù)包。因?yàn)門(mén)CP/IP沒(méi)有對(duì)物理層和鏈路層進(jìn)行定義,所以它支持各種底層的網(wǎng)絡(luò)技術(shù)和標(biāo)準(zhǔn)。


  • 網(wǎng)絡(luò)層:負(fù)責(zé)處理IP數(shù)據(jù)包的傳輸、路由選擇、流量控制和擁塞控制。ARP/RARP協(xié)議用于將IP地址與底層物理地址進(jìn)行相互轉(zhuǎn)換。IP協(xié)議既是網(wǎng)絡(luò)層的核心協(xié)議,也是整個(gè)TCP/IP協(xié)議簇的核心協(xié)議。


  • 傳輸層:為兩臺(tái)主機(jī)提供端到端的通信。傳輸層主要包括傳輸控制協(xié)議TCP(提供可靠的面向連接的傳輸服務(wù)),用戶(hù)數(shù)據(jù)報(bào)協(xié)議UDP(簡(jiǎn)單高效的無(wú)連接的服務(wù))??梢愿鶕?jù)上層應(yīng)用的實(shí)際需求來(lái)選擇


  • 應(yīng)用層:直接為特定的應(yīng)用程序提供服務(wù),如文件傳輸協(xié)議FTP,簡(jiǎn)單郵件傳輸協(xié)議SMTP,超文本傳輸協(xié)議HTTP。

重要概念

面向連接與無(wú)連接:

想要通過(guò)面向連接的協(xié)議在兩臺(tái)主機(jī)之間通信,需要兩臺(tái)主機(jī)之間首先建立連接,才能通信。如何建立/斷開(kāi)連接?這就涉及到三次握手和四次揮手。后續(xù)再講。

而無(wú)連接的協(xié)議在通信前不需要建立連接,就像寄信,只需要知道目的地地址就行了(請(qǐng)注意,這只是一個(gè)比喻,發(fā)郵件并不是使用的無(wú)連接協(xié)議,因?yàn)闊o(wú)連接的協(xié)議通常是不可靠的)

可靠與不可靠

可靠的協(xié)議保證數(shù)據(jù)能傳輸?shù)侥康牡兀覂?nèi)容不會(huì)發(fā)生變化。TCP就是一種可靠的協(xié)議。

不可靠的協(xié)議不能保證將數(shù)據(jù)傳送到目的地,但是它會(huì)盡力而為,還會(huì)檢驗(yàn)送到目的地的數(shù)據(jù)是否完整。UDP就是一種不可靠的協(xié)議。

那么有人可能會(huì)說(shuō)了?既然有了可靠的協(xié)議,還需要不可靠的協(xié)議干什么?不是多此一舉嗎?非也,下面詳細(xì)說(shuō)說(shuō)TCP和UDP的優(yōu)缺點(diǎn)。

字節(jié)流與數(shù)據(jù)報(bào)


字節(jié)流協(xié)議表示可以將發(fā)送方傳輸給接收方的數(shù)據(jù)看作是字節(jié)流。先發(fā)出的數(shù)據(jù)將會(huì)被先接收到。TCP屬于字節(jié)流協(xié)議。

數(shù)據(jù)報(bào)協(xié)議是將數(shù)據(jù)一個(gè)個(gè)傳送,沒(méi)有順序。UDP就是一種數(shù)據(jù)報(bào)協(xié)議。

套接字(Socket)

網(wǎng)絡(luò)層中,IP利用協(xié)議號(hào)來(lái)指定傳輸協(xié)議,傳輸層中,TCP/UDP使用端口號(hào)來(lái)區(qū)分應(yīng)用程序。將一個(gè)IP地址和一個(gè)端口號(hào)結(jié)合,就形成了一個(gè)套接字(也稱(chēng)為插座),套接字用來(lái)標(biāo)明網(wǎng)絡(luò)中的唯一網(wǎng)絡(luò)進(jìn)程。

TCP與UDP的優(yōu)缺點(diǎn)

TCP:

  • 優(yōu)點(diǎn): 可靠,穩(wěn)定 TCP的可靠體現(xiàn)在TCP在傳遞數(shù)據(jù)之前,會(huì)有三次握手來(lái)建立連接,而且在數(shù)據(jù)傳遞時(shí),有確認(rèn)、窗口、重傳、擁塞控制機(jī)制,在數(shù)據(jù)傳完后,還會(huì)斷開(kāi)連接用來(lái)節(jié)約系統(tǒng)資源。


  • 缺點(diǎn):慢,效率低,占用系統(tǒng)資源高,易被攻擊 TCP在傳遞數(shù)據(jù)之前,要先建連接,這會(huì)消耗時(shí)間,而且在數(shù)據(jù)傳遞時(shí),確認(rèn)機(jī)制、重傳機(jī)制、擁塞控制機(jī)制等都會(huì)消耗大量的時(shí)間,而且要在每臺(tái)設(shè)備上維護(hù)所有的傳輸連接,事實(shí)上,每個(gè)連接都會(huì)占用系統(tǒng)的CPU、內(nèi)存等硬件資源。 而且,因?yàn)門(mén)CP有確認(rèn)機(jī)制、三次握手機(jī)制,這些也導(dǎo)致TCP容易被人利用,實(shí)現(xiàn)DOS、DDOS、CC等攻擊。

UDP:

  • 優(yōu)點(diǎn): 快,比TCP稍安全 UDP沒(méi)有TCP的握手、確認(rèn)、窗口、重傳、擁塞控制等機(jī)制,UDP是一個(gè)無(wú)狀態(tài)的傳輸協(xié)議,所以它在傳遞數(shù)據(jù)時(shí)非常快。沒(méi)有TCP的這些機(jī)制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無(wú)法避免攻擊的,比如:UDP Flood攻擊。


  • 缺點(diǎn):不可靠,不穩(wěn)定 因?yàn)閁DP沒(méi)有TCP那些可靠的機(jī)制,在數(shù)據(jù)傳遞時(shí),如果網(wǎng)絡(luò)質(zhì)量不好,就會(huì)很容易丟包。


那么,哪些場(chǎng)景使用TCP,哪些場(chǎng)景使用UDP?

TCP:郵件,遠(yuǎn)程登錄等等。UDP:NDS,廣播,即時(shí)通訊,視頻電話等等。

TCP的三次握手和四次揮手

三次握手建立連接


TCP建立連接在理論上似乎只要一次請(qǐng)求和一次響應(yīng)就可以了,但是在實(shí)際情況中,請(qǐng)求或者響應(yīng)可能會(huì)丟失,此時(shí)需要重傳來(lái)建立連接。假如只通過(guò)一次請(qǐng)求和一次響應(yīng),可能會(huì)出現(xiàn)以下問(wèn)題(圖片轉(zhuǎn)自知乎用戶(hù)@大閑人柴毛毛):


針對(duì)這個(gè)問(wèn)題,連接時(shí)的“三次握手”可以有效解決。(其實(shí)無(wú)論握手多少次,都不能完全保證一條信道是完全可靠的,只能說(shuō)明其是可用的,三次握手是能互相明確對(duì)方,同時(shí)開(kāi)銷(xiāo)是最小的,所以常用三次握手建立連接)

下面我還是畫(huà)一張圖來(lái)描述這個(gè)流程:

四次揮手?jǐn)嚅_(kāi)連接


分層分析和排查故障

之前一次電話面試的時(shí)候,面試官問(wèn)我:假如在調(diào)用第三方服務(wù)時(shí),沒(méi)有返回?cái)?shù)據(jù),可能是什么問(wèn)題?我當(dāng)時(shí)回答說(shuō)通過(guò)返回的狀態(tài)碼來(lái)判斷,他補(bǔ)充狀態(tài)碼也沒(méi)返回。我一時(shí)語(yǔ)塞,不知道面試官想要考察什么,只好尷尬地跳過(guò)。(我比較菜)

后來(lái),才想到通過(guò)對(duì)協(xié)議簇的分層分析可以較為有效地排查故障。

一般有兩種排查方式:

  • 從低層開(kāi)始,首先檢查物理層,比如查看網(wǎng)絡(luò)線纜是否松動(dòng)損壞。這一般用于剛組建網(wǎng)絡(luò)或者調(diào)整了網(wǎng)絡(luò)線纜的情況。否則效率太低了。


  • 從高層開(kāi)始,首先檢查應(yīng)用層,比如查看瀏覽器是否正常配置,這一般用于網(wǎng)絡(luò)環(huán)境比較穩(wěn)定的情況下。


為了高效解決問(wèn)題,在實(shí)際應(yīng)用中,往往會(huì)從中間層開(kāi)始檢測(cè),這似乎也有點(diǎn)像二分查找思想。

那么回到一開(kāi)始的一個(gè)問(wèn)題:

假如在調(diào)用第三方服務(wù)時(shí),沒(méi)有返回?cái)?shù)據(jù),可能是什么問(wèn)題?

1、ping目標(biāo)遠(yuǎn)程計(jì)算機(jī)

若成功則說(shuō)明網(wǎng)絡(luò)是正常的,可以去考慮更高層的事,需要去測(cè)試服務(wù)或應(yīng)用程序。

若失敗,則繼續(xù)2.

2、ping同一子網(wǎng)的網(wǎng)關(guān),確認(rèn)正在使用的這臺(tái)主機(jī)是否連接到了本地網(wǎng)絡(luò)。

若成功,說(shuō)明本地網(wǎng)關(guān)和遠(yuǎn)程目標(biāo)計(jì)算機(jī)之間的連通有問(wèn)題,可以跟蹤測(cè)試路由。

若失敗,則繼續(xù)3.

3、ping環(huán)回地址127.0.0.1。


若成功,說(shuō)明本地網(wǎng)關(guān)和當(dāng)前計(jì)算機(jī)之間通信有問(wèn)題。

若失敗,檢查IP是否有問(wèn)題,若有問(wèn)題,再檢查本地TCP/IP協(xié)議軟件是否有問(wèn)題等等。


(作者的公眾號(hào))

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多