日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > CPP開發(fā)者
[導讀]這是一道我秋招面試字節(jié)遇到的真題。這篇文章我會首先結合我們日常的軟件系統(tǒng)開發(fā)介紹?「“為什么網(wǎng)絡要分層”?」?,隨后我會介紹?「“OSI7層模型”」?以及?「“TCP/IP4層模型”」。我會詳細介紹目前廣泛使用的?「“TCP/IP4層模型”」?包括每一層做的事情以及相關的協(xié)議介紹...


這是一道我秋招面試字節(jié)遇到的真題。


這篇文章我會首先結合我們日常的軟件系統(tǒng)開發(fā)介紹 「“為什么網(wǎng)絡要分層”?」 ,隨后我會介紹 「“OSI 7 層模型”」 以及 「“ TCP/IP 4層模型 ”」。我會詳細介紹目前廣泛使用的 「“ TCP/IP 4層模型 ”」 包括每一層做的事情以及相關的協(xié)議介紹。


01 為什么網(wǎng)絡要分層?

說到分層,我們先從我們平時使用框架開發(fā)一個后臺程序來說,我們往往會按照每一層做不同的事情的原則將系統(tǒng)分為 三層(復雜的系統(tǒng)分層可能會更多):


  • Repository(數(shù)據(jù)庫操作)


  • Service(業(yè)務操作)


  • Controller(前后端數(shù)據(jù)交互)


  • 「復雜的系統(tǒng)需要分層,因為每一層都需要專注于一類事情。我們的網(wǎng)絡分層的原因也是一樣,每一層只專注于做一類事情?!?/span>


    「為什么計算機網(wǎng)絡要分層呢?」 ,我們再來較為系統(tǒng)的說一說:


  • 「各層之間相互獨立」:各層之間相互獨立,各層之間不需要關心其他層是如何實現(xiàn)的,只需要知道自己如何調用下層提供好的功能就可以了(可以簡單理解為接口調用)「。這個和我們對開發(fā)時系統(tǒng)進行分層是一個道理?!?/span>


  • 「提高了整體靈活性」 :每一層都可以使用最適合的技術來實現(xiàn),你只需要保證你提供的功能以及暴露的接口的規(guī)則沒有改變就行了。「這個和我們平時開發(fā)系統(tǒng)的時候要求的高內聚、低耦合的原則也是可以對應上的?!?/span>


  • 「大問題化小」 :分層可以將復雜的網(wǎng)絡間題分解為許多比較小的、界線比較清晰簡單的小問題來處理和解決。這樣使得復雜的計算機網(wǎng)絡系統(tǒng)變得易于設計,實現(xiàn)和標準化。 「這個和我們平時開發(fā)的時候,一般會將系統(tǒng)功能分解,然后將復雜的問題分解為容易理解的更小的問題是相對應的,這些較小的問題具有更好的邊界(目標和接口)定義?!?/span>


  • 說到計算機網(wǎng)絡分層,我想到了計算機世界非常非常有名的一句話,這里分享一下:


    「計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決,計算機整個體系從上到下都是按照嚴格的層次結構設計的?!?/span>


    大白:如果一層不夠那就加兩層吧!


    「為了更好地去了解網(wǎng)絡分層,我們先來看一個雖然失敗,但是卻提供了很多不錯的理論基礎的OSI七層模型。」


    02 OSI七層模型

    OSI七層模型的大體結構以及每一層提供的功能如下。「每一層都專注做一件事情,并且每一層都需要使用下一層提供的功能比如傳輸層需要使用網(wǎng)絡層提供的路有和尋址功能,這樣傳輸層才知道把數(shù)據(jù)傳輸?shù)侥睦锶?。?/span>



    OSI七層模型「OSI的七層體系結構概念清楚,理論也很完整,但是它比較復雜而且不實用,而且有些功能在多個層中重復出現(xiàn)?!?/span>


    上面這種圖可能比較抽象,再來一個比較生動的圖片。下面這個圖片是我在國外的一個網(wǎng)站上看到的,非常贊!



    在這里順帶提一下:「為什么最開始的時候一直被一些大公司甚至一些國家政府支持的OSI七層模型會失敗呢?」


  • OSI的專家缺乏實際經(jīng)驗,他們在完成OSI標準時缺乏商業(yè)驅動力


  • OSI的協(xié)議實現(xiàn)起來過分復雜,而且運行效率很低


  • OSI制定標準的周期太長,因而使得按OSI標準生產的設備無法及時進入市場(20世紀90年代初期,雖然整套的OSI國際標準都已經(jīng)制定出來,但基于TCP/IP的互聯(lián)網(wǎng)已經(jīng)搶先在全球相當大的范圍成功運行了)


  • OSI的層次劃分不太合理,有些功能在多個層次中重復出現(xiàn)。


  • 03 TCP/IP 4層模型

    這是目前被廣泛采用的一種模型,我們可以將 TCP / IP 模型看作是 OSI 7層模型的精簡版本,由以下4層組成:


  • 應用層


  • 傳輸層


  • 網(wǎng)絡層


  • 網(wǎng)絡接口層


  • 需要注意的是,我們并不能將 TCP/IP4層模型 和OSI7層模型完全精確地匹配起來,不過可以簡單將兩者對應起來,如下圖所示:



    TCP-IP-4-model

    04 TCP/IP 4層模型網(wǎng)絡協(xié)議概覽


    network-protocol-overview
    「應用層協(xié)議」 :


    • HTTP 協(xié)議(超文本傳輸協(xié)議,網(wǎng)頁瀏覽常用的協(xié)議)


    • DHCP 協(xié)議(動態(tài)主機配置)


    • DNS 系統(tǒng)原理(域名系統(tǒng))


    • FTP 協(xié)議(文件傳輸協(xié)議)


    • Telnet協(xié)議(遠程登陸協(xié)議)


    • 電子郵件協(xié)議等(SMTP、POP3、IMAP)


    • ......


    「傳輸層協(xié)議」 :


    • TCP 協(xié)議


      • 報文段結構


      • 可靠數(shù)據(jù)傳輸


      • 流量控制


      • 擁塞控制


    • UDP 協(xié)議


      • 報文段結構


      • RDT(可靠數(shù)據(jù)傳輸協(xié)議)


    「網(wǎng)絡層協(xié)議」 :


    • IP 協(xié)議(TCP/IP 協(xié)議的基礎,分為 IPv4 和 IPv6)


    • ARP 協(xié)議(地址解析協(xié)議,用于解析 IP 地址和 MAC 地址之間的映射)


    • ICMP 協(xié)議(控制報文協(xié)議,用于發(fā)送控制消息)


    • NAT 協(xié)議(網(wǎng)絡地址轉換協(xié)議)


    • RIP 協(xié)議、OSPF 協(xié)議、BGP 協(xié)議(路由選擇協(xié)議)


    • ......


    「網(wǎng)絡接口層」 :


    • 差錯檢測技術


    • 多路訪問協(xié)議(信道復用技術)


    • CSMA/CD 協(xié)議


    • MAC 協(xié)議


    • 以太網(wǎng)技術


    • ......


    應用層(Application layer)

    應用層的任務是通過應用進程間的交互來完成特定網(wǎng)絡應用,我們把應用層交互的數(shù)據(jù)單元稱為報文。「應用層協(xié)議定義的是應用進程(進程:主機中正在運行的程序,比如微信、QQ)間的通信和交互的規(guī)則。對于不同的網(wǎng)絡應用需要不同的應用層協(xié)議。」 在互聯(lián)網(wǎng)中應用層協(xié)議很多,如域名系統(tǒng)DNS,支持Web應用的HTTP協(xié)議,支持電子郵件的SMTP協(xié)議等等。


    簡單總結一下當今使用的一些最常見的應用層協(xié)議:


    HTTP:超文本傳輸協(xié)議

    「超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)主要是為 Web 瀏覽器與 Web 服務器之間的通信而設計的?!?/span>


    當我們使用瀏覽器瀏覽網(wǎng)頁的時候,我們網(wǎng)頁就是通過 HTTP 請求進行加載的,整個過程如下圖所示。



    HTTP請求過程「HTTP 協(xié)議是基于 TCP協(xié)議的」,發(fā)送 HTTP 請求之前首先要建立 TCP 連接也就是要經(jīng)歷 3 次握手。目前使用的 HTTP 協(xié)議大部分都是 1.1。在 1.1 的協(xié)議里面,默認是開啟了 Keep-Alive 的,這樣的話建立的連接就可以在多次請求中被復用了。


    另外, 「HTTP 協(xié)議是”無狀態(tài)”的協(xié)議,它無法記錄客戶端用戶的狀態(tài)」 一般我們都是通過 Session 來記錄客戶端用戶的狀態(tài)。


    SMTP:簡單郵件傳輸(發(fā)送)協(xié)議

    「簡單郵件傳輸協(xié)議(SMTP,Simple Mail Transfer Protocol)的縮寫,基于 TCP 協(xié)議,用來發(fā)送電子郵件?!?/span>


    注意??:「接受郵件的協(xié)議不是 SMTP 而是POP3協(xié)議。」


    SMTP 協(xié)議這塊后面不會花費太多篇幅來講解,直接提一下兩個比較重要的問題:


  • 電子郵件的發(fā)送過程


  • 如何判斷郵箱是真正存在的?


  • 「電子郵件的發(fā)送過程?」


    比如我的郵箱是“dabai@cszhinan.com”,我要向“xiaoma@qq.com”發(fā)送郵件,整個過程可以簡單分為下面幾步:


  • 通過 「SMTP」 協(xié)議,我將我寫好的郵件交給163郵箱服務器(郵局)。


  • 163郵箱服務器發(fā)現(xiàn)我發(fā)送的郵箱是qq郵箱,然后它使用 SMTP協(xié)議將我的郵件轉發(fā)到 qq郵箱服務器。


  • qq郵箱服務器接收郵件之后就通知郵箱為“xiaoma@qq.com”的用戶來收郵件,然后用戶就通過 「POP3/IMAP」 協(xié)議將郵件取出。


  • 一個電子郵件被發(fā)送的過程「如何判斷郵箱是真正存在的?」


    很多場景(比如郵件營銷)下面我們需要判斷我們要發(fā)送的郵箱地址是否真的存在,這個時候我們可以利用 SMTP 協(xié)議來檢測。這里就不多扯,再扯的話,估計這篇文章的內容會很多,這并不是我的一貫風格。推薦幾個在線郵箱是否有效檢測工具:


  • https://verify-email.org/


  • http://tool.chacuo.net/mailverify


  • https://www.emailcamel.com/


  • POP3/IMAP:郵件接收的協(xié)議

    這兩個協(xié)議不多做闡述,只需要了解 「POP3 和 IMAP 兩者都是負責郵件接收的協(xié)議」即可。另外,需要注意不要將這兩者和 SMTP 協(xié)議搞混淆了。SMTP 協(xié)議只負責郵件的發(fā)送,真正負責接收的協(xié)議是POP3/IMAP?!?/span>


    IMAP 協(xié)議相比于POP3更新一點,為用戶提供的可選功能也更多一點,幾乎所有現(xiàn)代電子郵件客戶端和服務器都支持IMAP。大部分網(wǎng)絡郵件服務提供商都支持POP3和IMAP。


    FTP:文件傳輸協(xié)議

    「文件傳輸協(xié)議 FTP(File Transfer Protocol),提供文件傳輸服務,基于 TCP 實現(xiàn)可靠的傳輸。使用 FTP 傳輸文件的好處是可以屏蔽操作系統(tǒng)和文件存儲方式。」


    FTP 是基于客戶—服務器(C/S)模型而設計的,在客戶端與 FTP 服務器之間建立兩個連接。如果我們要基于 FTP 協(xié)議開發(fā)一個文件傳輸?shù)能浖脑?,首先需要搞清?FTP 的原理。關于 FTP 的原理,很多書籍上已經(jīng)描述的非常詳細了:


    FTP 的獨特的優(yōu)勢同時也是與其它客戶服務器程序最大的不同點就在于它在兩臺通信的主機之間使用了兩條 TCP 連接(其它客戶服務器應用程序一般只有一條 TCP 連接):


  • 控制連接:用于傳送控制信息(命令和響應)


  • 數(shù)據(jù)連接:用于數(shù)據(jù)傳送;


  • 這種將命令和數(shù)據(jù)分開傳送的思想大大提高了 FTP 的效率。


    FTP工作過程

    DNS:域名系統(tǒng)

    「域名系統(tǒng)(DNS,Domain Name System)將人類可讀的域名 (例如,www.baidu.com) 轉換為機器可讀的 IP 地址 (例如,220.181.38.148)?!?/span> 我們可以將其理解為專為互聯(lián)網(wǎng)設計的電話薄。



    dns-overviewIP 地址是一個網(wǎng)卡再網(wǎng)絡世界中的通訊地址,我們可以把它理解為我們現(xiàn)實世界中的家庭地址。


    「DNS 解析的完整流程是怎樣的呢?」


    DNS 解析的完整流程

    Telnet:遠程登陸協(xié)議

    遠程登陸協(xié)議,通過一個終端登陸到其他服務器,建立在可靠的傳輸協(xié)議 TCP 之上。


    「Telnet協(xié)議的最大缺點之一是所有數(shù)據(jù)(包括用戶名和密碼)均以明文形式發(fā)送,這有潛在的安全風險。這就是為什么如今很少使用Telnet并被一種稱為SSH的非常安全的協(xié)議所取代的主要原因?!?/span>


    SSH:安全的網(wǎng)絡傳輸協(xié)議

    SSH( Secure Shell)是目前較可靠,專為遠程登錄會話和其他網(wǎng)絡服務提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題。SSH 建立在可靠的傳輸協(xié)議 TCP 之上。


    「Telnet 和 SSH 之間的主要區(qū)別在于 SSH 協(xié)議會對傳輸?shù)臄?shù)據(jù)進行加密保證數(shù)據(jù)安全性?!?/span>


    傳輸層(Transport layer)

    「傳輸層的主要任務就是負責向兩臺主機進程之間的通信提供通用的數(shù)據(jù)傳輸服務」。應用進程利用該服務傳送應用層報文?!巴ㄓ玫摹笔侵覆⒉会槍δ骋粋€特定的網(wǎng)絡應用,而是多種應用可以使用同一個運輸層服務。


    「運輸層主要使用以下兩種協(xié)議:」


  • 「傳輸控制協(xié)議TCP」(Transmisson Control Protocol)--提供「面向連接」的,「可靠的」數(shù)據(jù)傳輸服務。


  • 「用戶數(shù)據(jù)協(xié)議UDP」(User Datagram Protocol)--提供「無連接」的,盡最大努力的數(shù)據(jù)傳輸服務(「不保證數(shù)據(jù)傳輸?shù)目煽啃浴?/span>)。


  • 網(wǎng)絡層(Network layer)


    網(wǎng)絡層負責為分組交換網(wǎng)上的不同主機提供通信服務。在發(fā)送數(shù)據(jù)時,網(wǎng)絡層把運輸層產生的報文段或用戶數(shù)據(jù)報封裝成分組和包進行傳送。在TCP/IP體系結構中,由于網(wǎng)絡層使用IP協(xié)議,因此分組也叫IP數(shù)據(jù)報,簡稱數(shù)據(jù)報。


    注意??:「不要把運輸層的“用戶數(shù)據(jù)報UDP”和網(wǎng)絡層的“IP數(shù)據(jù)報”弄混」


    「網(wǎng)絡層的還有一個任務就是選擇合適的路由,使源主機運輸層所傳下來的分株,能通過網(wǎng)絡層中的路由器找到目的主機?!?/span>


    這里強調指出,網(wǎng)絡層中的“網(wǎng)絡”二字已經(jīng)不是我們通常談到的具體網(wǎng)絡,而是指計算機網(wǎng)絡體系結構模型中第三層的名稱.


    互聯(lián)網(wǎng)是由大量的異構(heterogeneous)網(wǎng)絡通過路由器(router)相互連接起來的?;ヂ?lián)網(wǎng)使用的網(wǎng)絡層協(xié)議是無連接的網(wǎng)際協(xié)議(Intert Prococol)和許多路由選擇協(xié)議,因此互聯(lián)網(wǎng)的網(wǎng)絡層也叫做「網(wǎng)際層」「IP層」。


    網(wǎng)絡接口層

    我們可以把網(wǎng)絡接口層看作是數(shù)據(jù)鏈路層和物理層的合體。


  • 數(shù)據(jù)鏈路層(data link layer)通常簡稱為鏈路層( 兩臺主機之間的數(shù)據(jù)傳輸,總是在一段一段的鏈路上傳送的)。「數(shù)據(jù)鏈路層的作用是將網(wǎng)絡層交下來的 IP 數(shù)據(jù)報組裝成幀,在兩個相鄰節(jié)點間的鏈路上傳送幀。每一幀包括數(shù)據(jù)和必要的控制信息(如同步信息,地址信息,差錯控制等)。」


  • 「物理層的作用是實現(xiàn)相鄰計算機節(jié)點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸介質和物理設備的差異」


  • 最后再分享一個關于OSI 七層模型非常不錯的總結圖片!






  • - EOF -


    本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
    換一批
    延伸閱讀

    LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

    關鍵字: 驅動電源

    在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

    關鍵字: 工業(yè)電機 驅動電源

    LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

    關鍵字: 驅動電源 照明系統(tǒng) 散熱

    根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

    關鍵字: LED 設計 驅動電源

    電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

    關鍵字: 電動汽車 新能源 驅動電源

    在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

    關鍵字: 發(fā)光二極管 驅動電源 LED

    LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

    關鍵字: LED 驅動電源 功率因數(shù)校正

    在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

    關鍵字: LED照明技術 電磁干擾 驅動電源

    開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

    關鍵字: LED 驅動電源 開關電源

    LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

    關鍵字: LED 隧道燈 驅動電源
    關閉