原文:互聯(lián)網(wǎng)是如何運(yùn)作的
以下是我的總結(jié)
介紹
互聯(lián)網(wǎng)所有的傳輸都通過(guò)TCP/IP協(xié)議族來(lái)傳輸,TCP/IP是面向連接的可靠字節(jié)流服務(wù)協(xié)議
TCP/IP協(xié)議棧
您的計(jì)算機(jī)已連接到 Internet 并具有唯一的地址茬底。它如何與連接到 Internet 的其他計(jì)算機(jī)“交談”?
這里應(yīng)該有一個(gè)例子:假設(shè)您的 IP 地址是 1.2.3.4阱表,并且您想向計(jì)算機(jī) 5.6.7.8 發(fā)送一條消息贡珊。您要發(fā)送的消息是“Hello computer 5.6.7.8!”最爬。顯然门岔,消息必須通過(guò)將您的計(jì)算機(jī)連接到 Internet 的任何類型的線路傳輸。假設(shè)您已從家里撥入您的 ISP寒随,并且消息必須通過(guò)電話線傳輸。必須將消息從字母文本翻譯成電子信號(hào)互艾,通過(guò)互聯(lián)網(wǎng)傳輸,然后再翻譯回字母文本纫普。 這是如何實(shí)現(xiàn)的好渠?
通過(guò)使用協(xié)議棧昨稼。每臺(tái)計(jì)算機(jī)都需要一臺(tái)在 Internet 上進(jìn)行通信,它通常內(nèi)置于計(jì)算機(jī)的操作系統(tǒng)(即 Windows肴茄、Unix 等)中但指。由于使用了兩種主要的通信協(xié)議寡痰,Internet 上使用的協(xié)議棧被稱為 TCP/IP 協(xié)議棧棋凳。TCP/IP 堆棧如下所示:
- 應(yīng)用層:提供特定于應(yīng)用程序的協(xié)議 HTTP FTP IMAP(郵件)
- 網(wǎng)絡(luò)控制層(TCP):發(fā)送數(shù)據(jù)包到計(jì)算機(jī)上使用特定的端口號(hào)的應(yīng)用程序
- 網(wǎng)絡(luò)層(IP):使用IP地址將數(shù)據(jù)包發(fā)送到特定的計(jì)算
- 鏈路層:將二進(jìn)制數(shù)據(jù)包與網(wǎng)絡(luò)信號(hào)相互之間轉(zhuǎn)換(例如以太網(wǎng)網(wǎng)卡、電話線調(diào)制解調(diào)器等)
HTTP
HTTP 是 Web 瀏覽器和 Web 服務(wù)器用于通過(guò) Internet 相互通信的協(xié)議剩岳。它是一種應(yīng)用程序級(jí)協(xié)議,因?yàn)樗挥趨f(xié)議棧中 TCP 層的頂部拍棕,并被特定應(yīng)用程序用于相互通信。在這種情況下绰播,應(yīng)用程序是 Web 瀏覽器和 Web 服務(wù)器。
HTTP是一種基于無(wú)連接文本的協(xié)議链蕊∶冢客戶端(Web 瀏覽器)向 Web 服務(wù)器發(fā)送對(duì) Web 元素(例如網(wǎng)頁(yè)和圖像)的請(qǐng)求滔韵。請(qǐng)求被服務(wù)器服務(wù)后掌实,客戶端和服務(wù)器之間通過(guò) Internet 的連接斷開(kāi)。必須為每個(gè)請(qǐng)求建立一個(gè)新連接潮峦。大多數(shù)協(xié)議都是面向連接的。這意味著相互通信的兩臺(tái)計(jì)算機(jī)通過(guò) Internet 保持連接打開(kāi)嘱腥。然而拘悦,HTTP 沒(méi)有齿兔。在客戶端發(fā)出 HTTP 請(qǐng)求之前,必須建立到服務(wù)器的新連接添诉。
當(dāng)您在 Web 瀏覽器中鍵入 URL 時(shí),會(huì)發(fā)生以下情況:
- 如果 URL 包含域名栏赴,則瀏覽器首先連接到域名服務(wù)器并為 Web 服務(wù)器檢索相應(yīng)的 IP 地址。
- Web 瀏覽器連接到 Web 服務(wù)器并為所需的網(wǎng)頁(yè)發(fā)送 HTTP 請(qǐng)求(通過(guò)協(xié)議棧)靖秩。
- Web 服務(wù)器接收請(qǐng)求并檢查所需頁(yè)面须眷。如果頁(yè)面存在,則 Web 服務(wù)器發(fā)送它沟突。如果服務(wù)器找不到請(qǐng)求的頁(yè)面花颗,它將發(fā)送 HTTP 404 錯(cuò)誤消息。(404 的意思是“找不到頁(yè)面”惠拭,任何瀏覽過(guò)網(wǎng)絡(luò)的人都可能知道扩劝。)
- Web 瀏覽器接收回頁(yè)面并關(guān)閉連接。
- 然后瀏覽器解析頁(yè)面并查找完成網(wǎng)頁(yè)所需的其他頁(yè)面元素职辅。這些通常包括圖像棒呛、小程序等。
- 對(duì)于每個(gè)需要的元素罐农,瀏覽器會(huì)為每個(gè)元素向服務(wù)器發(fā)出額外的連接和 HTTP 請(qǐng)求条霜。
- 當(dāng)瀏覽器加載完所有圖像催什、小程序等后涵亏,頁(yè)面將完全加載到瀏覽器窗口中。
TCP(傳輸控制協(xié)議)
在協(xié)議棧的應(yīng)用層之下是TCP層蒲凶。當(dāng)應(yīng)用程序打開(kāi)與 Internet 上另一臺(tái)計(jì)算機(jī)的連接時(shí)气筋,它們發(fā)送的消息(使用特定的應(yīng)用程序?qū)訁f(xié)議)會(huì)沿堆棧向下傳遞到 TCP 層旋圆。TCP 負(fù)責(zé)將應(yīng)用程序協(xié)議路由到目標(biāo)計(jì)算機(jī)上的正確應(yīng)用程序潭袱。 為此呻待,使用端口號(hào)。端口可以被認(rèn)為是每臺(tái)計(jì)算機(jī)上的獨(dú)立通道。例如逾礁,您可以在閱讀電子郵件時(shí)上網(wǎng)。這是因?yàn)檫@兩個(gè)應(yīng)用程序(Web 瀏覽器和郵件客戶端)使用了不同的端口號(hào)阐污。當(dāng)數(shù)據(jù)包到達(dá)計(jì)算機(jī)并沿協(xié)議棧向上時(shí)溺忧,TCP 層根據(jù)端口號(hào)決定哪個(gè)應(yīng)用程序接收數(shù)據(jù)包。
TCP 是這樣工作的:
- 當(dāng) TCP 層從上面接收到應(yīng)用層協(xié)議數(shù)據(jù)時(shí)敏弃,它會(huì)將其分段為可管理的“塊”卦羡,然后將帶有特定 TCP 信息的 TCP 標(biāo)頭添加到每個(gè)“塊”。TCP 頭中包含的信息包括數(shù)據(jù)需要發(fā)送到的應(yīng)用程序的端口號(hào)。
- 當(dāng) TCP 層接收到來(lái)自其下方 IP 層的數(shù)據(jù)包時(shí)绿饵,TCP 層會(huì)從數(shù)據(jù)包中剝離 TCP 頭數(shù)據(jù)欠肾,必要時(shí)進(jìn)行一些數(shù)據(jù)重構(gòu),然后使用從 TCP 獲取的端口號(hào)將數(shù)據(jù)發(fā)送到正確的應(yīng)用程序標(biāo)題拟赊。
這就是 TCP 將通過(guò)協(xié)議棧移動(dòng)的數(shù)據(jù)路由到正確應(yīng)用程序的方式刺桃。
TCP 不是文本協(xié)議。TCP 是面向連接的吸祟、可靠的字節(jié)流服務(wù)虏肾。面向連接意味著兩個(gè)使用 TCP 的應(yīng)用程序在交換數(shù)據(jù)之前必須先建立連接。TCP 是可靠的欢搜,因?yàn)閷?duì)于收到的每個(gè)數(shù)據(jù)包封豪,都會(huì)向發(fā)送方發(fā)送確認(rèn)以確認(rèn)交付。TCP 還在其標(biāo)頭中包含一個(gè)校驗(yàn)和炒瘟,用于對(duì)接收到的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查吹埠。
tcp在建立連接會(huì)進(jìn)行三次握手,每個(gè)收到的數(shù)據(jù)包都會(huì)向發(fā)送方發(fā)送ack確認(rèn)疮装,已確保發(fā)送成功
IP(互聯(lián)網(wǎng)協(xié)議)
與 TCP 不同缘琅,IP 是一種不可靠的無(wú)連接協(xié)議。IP 不關(guān)心數(shù)據(jù)包是否到達(dá)目的地廓推。IP 也不知道連接和端口號(hào)刷袍。 IP 的工作也是將數(shù)據(jù)包發(fā)送和路由到其他計(jì)算機(jī)。IP 數(shù)據(jù)包是獨(dú)立的實(shí)體樊展,可能無(wú)序到達(dá)或根本沒(méi)有到達(dá)呻纹。TCP 的工作是確保數(shù)據(jù)包到達(dá)并以正確的順序。IP 與 TCP 的唯一共同點(diǎn)是它接收數(shù)據(jù)并將其自己的 IP 標(biāo)頭信息添加到 TCP 數(shù)據(jù)专缠。
IP是不可靠的無(wú)連接協(xié)議雷酪,它并不關(guān)心數(shù)據(jù)包是否到達(dá)目的地,也不關(guān)系連接和端口號(hào)涝婉,目的是連接到目標(biāo)IP
Ip是一種協(xié)議 有兩種標(biāo)準(zhǔn) IPv4 2^32次方和IPv6 2^128
TCP傳輸?shù)馁|(zhì)量和順序
當(dāng)數(shù)據(jù)包過(guò)大哥力,在網(wǎng)絡(luò)層會(huì)進(jìn)行分包,分包后傳輸?shù)逆溌凡灰粯佣胀洌竭_(dá)的時(shí)間不一樣吩跋,TCP會(huì)根據(jù)數(shù)據(jù)包上攜帶序列號(hào)來(lái)進(jìn)行排序重組,如果發(fā)送方在一個(gè)特定時(shí)間內(nèi)(也就是重試時(shí)間)沒(méi)有接受到接收方的ack確認(rèn)渔工,會(huì)再次重新發(fā)送
網(wǎng)絡(luò)傳輸
- 個(gè)人電腦
- 貓(調(diào)制解調(diào)器)
- local ISP 互聯(lián)網(wǎng)服務(wù)提供商
- regional ISP 經(jīng)過(guò)多個(gè)主干網(wǎng)絡(luò)
- NSP 網(wǎng)絡(luò)服務(wù)提供商 大型網(wǎng)絡(luò) 賣(mài)帶寬給ISP
- NAP 每個(gè)NSP連接到至少三個(gè)網(wǎng)絡(luò)訪問(wèn)點(diǎn)
- ISP NSP 所有網(wǎng)絡(luò)提供都攜帶路由器锌钮,每個(gè)路由有當(dāng)前子網(wǎng)絡(luò)ip的路由表,當(dāng)?shù)讓酉蛏蠈影l(fā)送數(shù)據(jù)時(shí)候涨缚,找不到會(huì)依次向上找轧粟,可能由一個(gè)主干網(wǎng)絡(luò)跳到另外一個(gè)主干網(wǎng)絡(luò)策治。
DNS服務(wù)
存在意義是IP別名,不讓公司丟客戶兰吟,也容易記通惫,DNS是一個(gè)分布式數(shù)據(jù)庫(kù),存儲(chǔ)了域名和IP的對(duì)應(yīng)關(guān)系