原文:互聯(lián)網是如何運作的
以下是我的總結
介紹
互聯(lián)網所有的傳輸都通過TCP/IP協(xié)議族來傳輸,TCP/IP是面向連接的可靠字節(jié)流服務協(xié)議
TCP/IP協(xié)議棧
您的計算機已連接到 Internet 并具有唯一的地址。它如何與連接到 Internet 的其他計算機“交談”?
這里應該有一個例子:假設您的 IP 地址是 1.2.3.4,并且您想向計算機 5.6.7.8 發(fā)送一條消息。您要發(fā)送的消息是“Hello computer 5.6.7.8!”。顯然,消息必須通過將您的計算機連接到 Internet 的任何類型的線路傳輸。假設您已從家里撥入您的 ISP,并且消息必須通過電話線傳輸。必須將消息從字母文本翻譯成電子信號,通過互聯(lián)網傳輸,然后再翻譯回字母文本。 這是如何實現(xiàn)的?
通過使用協(xié)議棧。每臺計算機都需要一臺在 Internet 上進行通信,它通常內置于計算機的操作系統(tǒng)(即 Windows、Unix 等)中。由于使用了兩種主要的通信協(xié)議,Internet 上使用的協(xié)議棧被稱為 TCP/IP 協(xié)議棧。TCP/IP 堆棧如下所示:
- 應用層:提供特定于應用程序的協(xié)議 HTTP FTP IMAP(郵件)
- 網絡控制層(TCP):發(fā)送數(shù)據包到計算機上使用特定的端口號的應用程序
- 網絡層(IP):使用IP地址將數(shù)據包發(fā)送到特定的計算
- 鏈路層:將二進制數(shù)據包與網絡信號相互之間轉換(例如以太網網卡、電話線調制解調器等)
HTTP
HTTP 是 Web 瀏覽器和 Web 服務器用于通過 Internet 相互通信的協(xié)議。它是一種應用程序級協(xié)議,因為它位于協(xié)議棧中 TCP 層的頂部,并被特定應用程序用于相互通信。在這種情況下,應用程序是 Web 瀏覽器和 Web 服務器。
HTTP是一種基于無連接文本的協(xié)議??蛻舳耍╓eb 瀏覽器)向 Web 服務器發(fā)送對 Web 元素(例如網頁和圖像)的請求。請求被服務器服務后,客戶端和服務器之間通過 Internet 的連接斷開。必須為每個請求建立一個新連接。大多數(shù)協(xié)議都是面向連接的。這意味著相互通信的兩臺計算機通過 Internet 保持連接打開。然而,HTTP 沒有。在客戶端發(fā)出 HTTP 請求之前,必須建立到服務器的新連接。
當您在 Web 瀏覽器中鍵入 URL 時,會發(fā)生以下情況:
- 如果 URL 包含域名,則瀏覽器首先連接到域名服務器并為 Web 服務器檢索相應的 IP 地址。
- Web 瀏覽器連接到 Web 服務器并為所需的網頁發(fā)送 HTTP 請求(通過協(xié)議棧)。
- Web 服務器接收請求并檢查所需頁面。如果頁面存在,則 Web 服務器發(fā)送它。如果服務器找不到請求的頁面,它將發(fā)送 HTTP 404 錯誤消息。(404 的意思是“找不到頁面”,任何瀏覽過網絡的人都可能知道。)
- Web 瀏覽器接收回頁面并關閉連接。
- 然后瀏覽器解析頁面并查找完成網頁所需的其他頁面元素。這些通常包括圖像、小程序等。
- 對于每個需要的元素,瀏覽器會為每個元素向服務器發(fā)出額外的連接和 HTTP 請求。
- 當瀏覽器加載完所有圖像、小程序等后,頁面將完全加載到瀏覽器窗口中。
TCP(傳輸控制協(xié)議)
在協(xié)議棧的應用層之下是TCP層。當應用程序打開與 Internet 上另一臺計算機的連接時,它們發(fā)送的消息(使用特定的應用程序層協(xié)議)會沿堆棧向下傳遞到 TCP 層。TCP 負責將應用程序協(xié)議路由到目標計算機上的正確應用程序。 為此,使用端口號。端口可以被認為是每臺計算機上的獨立通道。例如,您可以在閱讀電子郵件時上網。這是因為這兩個應用程序(Web 瀏覽器和郵件客戶端)使用了不同的端口號。當數(shù)據包到達計算機并沿協(xié)議棧向上時,TCP 層根據端口號決定哪個應用程序接收數(shù)據包。
TCP 是這樣工作的:
- 當 TCP 層從上面接收到應用層協(xié)議數(shù)據時,它會將其分段為可管理的“塊”,然后將帶有特定 TCP 信息的 TCP 標頭添加到每個“塊”。TCP 頭中包含的信息包括數(shù)據需要發(fā)送到的應用程序的端口號。
- 當 TCP 層接收到來自其下方 IP 層的數(shù)據包時,TCP 層會從數(shù)據包中剝離 TCP 頭數(shù)據,必要時進行一些數(shù)據重構,然后使用從 TCP 獲取的端口號將數(shù)據發(fā)送到正確的應用程序標題。
這就是 TCP 將通過協(xié)議棧移動的數(shù)據路由到正確應用程序的方式。
TCP 不是文本協(xié)議。TCP 是面向連接的、可靠的字節(jié)流服務。面向連接意味著兩個使用 TCP 的應用程序在交換數(shù)據之前必須先建立連接。TCP 是可靠的,因為對于收到的每個數(shù)據包,都會向發(fā)送方發(fā)送確認以確認交付。TCP 還在其標頭中包含一個校驗和,用于對接收到的數(shù)據進行錯誤檢查。
tcp在建立連接會進行三次握手,每個收到的數(shù)據包都會向發(fā)送方發(fā)送ack確認,已確保發(fā)送成功
IP(互聯(lián)網協(xié)議)
與 TCP 不同,IP 是一種不可靠的無連接協(xié)議。IP 不關心數(shù)據包是否到達目的地。IP 也不知道連接和端口號。 IP 的工作也是將數(shù)據包發(fā)送和路由到其他計算機。IP 數(shù)據包是獨立的實體,可能無序到達或根本沒有到達。TCP 的工作是確保數(shù)據包到達并以正確的順序。IP 與 TCP 的唯一共同點是它接收數(shù)據并將其自己的 IP 標頭信息添加到 TCP 數(shù)據。
IP是不可靠的無連接協(xié)議,它并不關心數(shù)據包是否到達目的地,也不關系連接和端口號,目的是連接到目標IP
Ip是一種協(xié)議 有兩種標準 IPv4 2^32次方和IPv6 2^128
TCP傳輸?shù)馁|量和順序
當數(shù)據包過大,在網絡層會進行分包,分包后傳輸?shù)逆溌凡灰粯?,到達的時間不一樣,TCP會根據數(shù)據包上攜帶序列號來進行排序重組,如果發(fā)送方在一個特定時間內(也就是重試時間)沒有接受到接收方的ack確認,會再次重新發(fā)送
網絡傳輸
- 個人電腦
- 貓(調制解調器)
- local ISP 互聯(lián)網服務提供商
- regional ISP 經過多個主干網絡
- NSP 網絡服務提供商 大型網絡 賣帶寬給ISP
- NAP 每個NSP連接到至少三個網絡訪問點
- ISP NSP 所有網絡提供都攜帶路由器,每個路由有當前子網絡ip的路由表,當?shù)讓酉蛏蠈影l(fā)送數(shù)據時候,找不到會依次向上找,可能由一個主干網絡跳到另外一個主干網絡。
DNS服務
存在意義是IP別名,不讓公司丟客戶,也容易記,DNS是一個分布式數(shù)據庫,存儲了域名和IP的對應關系