先寫寫個人心得吧:從新幫我複習了下TCP/IP四層協議,此次我很好理解了下應用層,TCP層— 端口號相關, IP層 — ip地址相關,硬件層— 二進制轉爲電子信號的。同時,TCP負責了分片的功能。固然 文章前面還介紹了路由,DNS服務。網絡總體的架構層級。不過我以爲第四章和第五章有點重複,估計我還沒理解透這兩章的關係吧。
想一想,網絡主要是 協議棧,數據包,路由器,DNS,還有不少不少的局域網一塊兒組成的吧。
目錄:
1.介紹
2.從Internet地址開始
3.協議棧和包
4.網絡基礎設施
5.Internet基礎設施
6.Internet路由層級
7.域名和地址解析
8.Internet 協議再次回顧
9.應用協議:HTTP和World Wide Web www
10.應用協議:SMTP和電子郵件
11.傳輸控制協議
12.Internet 協議
13.包裹
14.資源
15.參考文獻
1.介紹:
本文介紹了因特網底層的基礎設施和技術,不會很深刻,可是保護了足夠的知識來基礎理解涉及到其中的概念。
2.從Internet地址開始
因爲Internet是一個全球性的網絡聯合在一塊兒的,因此必須有一個獨一無二的地址。IP的形式是:
nnn.nnn.nnn.nnn 而
nnn範圍是0-255。
目前能夠看到圖一是這樣的,隨着後面的解釋,Internet部分還會繼續改變。
若是你經過ISP(Internet Service Provider 互聯網服務提供商)來連接互聯網,你可能會短暫的得到一個臨時的IP地址在你撥號期間。若是你經過一個局域網LAN(local area network )來連接網絡,你可能會有一個固定的IP地址,或者你會有一個經過DHCP(Dynamic Host Configuration Protocol)服務器動態分派的IP。
ping 命令是發送一個ICMP請求到指定的機器,被ping的機器會返回一個回覆。這個程序會計算迴應的時間。若是你輸入了一個域名地址而不是一個IP地址如:www.baidu.com ping將會解析域名名字而且展現計算機的IP地址。
3.協議棧和包
好比你的Ip是 1.2.3.4 須要給你目標機器 5.6.7.8 來發送消息,這些消息須要從文字信息轉換爲電子信號而後在Internet上傳輸,最後再從電子信號轉換爲文字信息。這個過程是由協議棧來完成的。協議棧一般是內建在操做系統中的,常常在網絡上用的協議棧被稱爲TCP/IP由於這兩個協議經常被使用。
Protocol Layer |
Comments |
Application Protocols Layer 應用協議層 |
Protocols specific to applications such as WWW, e-mail, FTP, etc. 協議對特定應用好比:WWW,e-mail,FTP |
Transmission Control Protocol Layer 傳輸控制協議層 |
TCP directs packets to a specific application on a computer using a port number. TCP將數據包根據計算機上特定端口發送到特定的應用中。 |
Internet Protocol Layer 網絡協議層 |
IP directs packets to a specific computer using an IP address. IP將特定的包根據IP地址發送到特定的計算機中。 |
Hardware Layer 硬件層 |
Converts binary packet data to network signals and back. (E.g. ethernet network card, modem for phone lines, etc.) 轉換二進制數據包到網絡信號而且傳回。 |
若是咱們根據一條信息「你好 電腦 5.6.7.8!」從咱們電腦傳到另一臺電腦上,流向以下圖:
1.消息是從你的計算機最頂層協議棧開始的,而後向下。
2.若是這個消息是很長的,這個消息走過的棧層也許會將這條信息切片爲更小的數據塊。這是由於數據在互聯網中發送是在可控的塊的。這些數據塊被稱爲包。— 切塊
3.這個數據包會從應用層到TCP層。每個數據包被標記一個端口號。端口會在後續解釋。咱們須要知道的事目標端的程序須要監聽特定的端口來得到消息。— 標記目標端端口號
4.走過了TCP層後,這些包知道他們的目標IP地址 5.6.7.8 — 得到IP地址
5.如今你的數據包有端口號和IP地址,它們準備好經過Internet來發送了。硬件層將咱們文字信息轉化爲電子信號經過電話線傳輸。
6.在你的網絡提供商的另外一端是直接和Internet相聯的。ISPs的路由解釋了每一個包中的目標地址而且決定如何發送它。一般數據包的下一站是另一個路由。
7最終這些數據包到達了5.6.7.8.這些數據開始從計算機TCP/IP棧往上處理。
8.隨着包一層層往上,全部的由發送計算機棧添加的路由信息被從數據包中剝離出來。
9.當數據到達協議棧頂部,這個包已經被從新組裝爲它原來的形式了「你好 電腦 5.6.7.8!」。
4.網絡基礎設施
是什麼組成了因特網了,讓咱們來看下圖:
如今咱們能夠看到圖片一被從新添加了不少細節。
ISP爲她們撥入的用戶維護了一個調制解調器池。這個經過某種形式的計算機來管理,一般是控制數據流從調制解調器池到骨幹或專用線路路由器。這一步也許被稱爲端口服務器,由於它服務連接到網絡。賬單和使用信息一般收集在這裏。
在你的數據包經過了電話網絡和你的ISP本地裝置後,她們被路由到ISP的主幹或者ISP買帶寬的主幹上。經過這,數據包會通過一些路由器和ISP的主幹,專用線路已經其餘的網絡直到她們到達目的地。有一方法來查看咱們的數據包在網絡上通過了什麼:
Traceroute Program
Traceroute www.baidu.com
上圖也只是一個簡單的網絡結構,網絡更加複雜。
可能要看下這些分別是表明了什麼。
5.Internet基礎設施
Internet的主幹是由不少大型網絡互相鏈接而組成。這些大型網絡被稱爲網絡服務提供商(
Network Service Providers or
NSPs)。每一個NSP須要鏈接三個網絡接入點或稱爲NAPs(
Network Access Points)。在NAPs中,數據包在一個NSP的主幹傳輸到另一個NSP的主幹。NSPs一樣經過城域交換(
Metropolitan Area Exchanges or
MAEs)。MAEs和NAPs由相同的目的可是是私有的。NAPs是最原始的交換點。MAES和NAPs都被稱爲互聯網交換點或者IXs(Internet Exchange Points)。NSPs也會買帶寬給小的網絡好比ISPs和小的帶寬提供商。
我想查查咱們國家的NSP和ISP還有MAE分別有哪些,哪些是買帶寬的?
上圖只是一個抽象的概念,沒有實際的主幹架構,咱們能夠本身去NSP的網站上找着她們的網絡架構。
6.Internet路由層級
沒有電腦知道其餘的計算機所在的地方,同時數據包也不會送給每個電腦。數據包到達它們的目的地是經過每一個路由器中所存儲的路由表來獲取的。
路由器是分組交換的。一個路由一般是在網絡之間來路由數據包的。每個路由器知道它們的自網絡以及那些子網絡所用的IP地址。這個路由器一般不知道它上面的IP地址。以下圖,黑色的盒子鏈接主幹網絡的就是路由器。大型的NSP直接使用NSP來鏈接的。而後就是一層層來的。
當一個數據包到一個路由器上時,這個路由器檢查它由IP層放上的IP地址。這個路由器檢查他的路由表,若是包含這個IP地址的網絡被找到,那麼這個數據包就發送到這個網絡上,若是沒有找到,那麼這個路由器發送數據包到默認的路由上,一般是這個主幹層級下的下一個路由,但願它能夠找到。若是沒有找到,那麼這個數據包繼續被路由直到找到一個NSP主幹上。和NSP相連的主幹路由有最大的路由表,在這數據包將會被路由到正確的主幹上,而後它將會開始一層層的向更小的網絡傳輸。
7.域名和地址解析
可是若是你不知道你想要鏈接的計算機的IP地址了?
你怎麼經過www.baidu.com 來訪問到正確的計算機的?
這些都是由於有域名解析器(DNS
Domain Name Service)
DNS 是一個分佈式的數據庫,保持記錄計算機的名字和他對應的在互聯網上的IP地址
不少計算機鏈接到DNS數據庫的互聯網主機部分同時這個軟件運行其餘人來訪問它。這些計算機被認爲是DNS服務器。沒有DNS服務器有所有的數據庫,他們只有其中的子集。若是一個DNS服務器沒有包含被請求的域名,DNS將會將這個請求重定向到另一臺DNS服務器上。
域名服務的架構和IP路由層級有些相同。一些常見的,好久的域名靠近頂端。圖片中沒有展現的是衆多的在世界上的DNS來組成其餘的層級。
當一個網絡鏈接創建的時候,一個主要的和多個次要的DNS服務器也會在安裝的時候啓動。這樣任何一個須要域名解析服務的應用才能很好的工做。好比,在你輸入一個網絡地址在瀏覽器中時,這個瀏覽器會首先鏈接你的主要的DNS來獲取IP地址,而後瀏覽器纔會請求你想要的網絡頁面。
8.Internet 協議再次回顧
就像前面暗示的關於協議棧的信息,有不少協議在路由器上使用。有很通信的協議被因特網要求來完成功能。這些包括有TCP, IP,路由協議,媒體訪問控制協議,應用級協議等。下面章節介紹一些普遍應用的很重要的協議。高層級的協議先被討論,而後是低層級的協議。
9.應用協議:HTTP和World Wide Web www
一個最廣泛用到的服務就是萬維網WWW(World Wide Web)。是網頁工做的協議是HTTP協議(
Hypertext Transfer Protocol )。HTML(Hypertext Markup Language)是超文本標記語言,和她沒有什麼關係,是用來寫網頁的。HTTP是網頁瀏覽器和服務器用來溝通的協議。它是一個應用層的協議由於它是在TCP層之上,被一些特定的應用來和其餘的機器通信的。在這個例子中就是網頁瀏覽器和網頁服務器了。
HTTP是基於文本的協議鏈接。客戶端發送請求到服務器請求一些網頁元素,好比網頁或者圖片。在這個請求被服務器服務後,這個在客戶端和服務器之間的鏈接就會斷開。每次請求都要從新開始一次新的鏈接。不少協議都是面向鏈接的。這意味着兩個計算機通信時須要一直開着鏈接。HTTP並無。一旦一個客戶端開始HTTP請求,一個新的鏈接就要從新向服務器。
當你輸入一個URL到一個web瀏覽器的時候,發生了下面這些事情:
1.若是URL包含域名,瀏覽器先鏈接一個域名服務器,而後得到網絡服務的對應的IP地址
2.網頁瀏覽器鏈接網頁服務器而後發送一個HTTP請求(經過協議棧)來獲取須要的網頁。
3.網頁服務器得到請求而且檢查須要的頁面,若是頁面存在,服務器發送它,若是不能找到請求的頁面,它會發送一個HTTP 404的錯誤信息。(404 表明頁面不存在。)
4.網頁瀏覽器受到頁面而且鏈接中斷。
5.瀏覽器而後解析頁面並切查找其餘它須要的頁面元素來完整整個頁面。這裏包括圖片,小應用程序等。
6.對每一個須要元素,瀏覽器另外創建鏈接以及HTTP請求。
7.當瀏覽器完成了載入圖片,小程序等,頁面會徹底的在瀏覽器中載入。
使用Telnet客戶端來獲取一個頁面經過HTTP
telnet www.cnblogs.com 80
而後輸入
GET / HTTP/1.0
固然,它通常是不會返回有東西的頁面的,由於還差些元素沒有送。
可是不知道爲啥百度的就不能這樣了,不知道是否是https的關係。
大部分的因特網協議是由互聯網文件RFC(
Request For Comments)指定的。HTTP 1.0是由RFC1945所指定的。
10.應用協議:SMTP和電子郵件
另一個經常使用的網絡服務是電子郵件服務。E-mail使用應用層的SMTP協議。SMTP一樣也是基於文本的協議,可是不像HTTP,SMTP是面向鏈接的。SMTP也比HTTP更加複雜。SMTP有更多的命令和注意事項比起HTTP來。
當你打開你的郵箱客戶端來讀取你的郵件,下面是一般會發生的:
1.郵箱客戶端打開一個鏈接到它默認的郵箱服務器,這個郵箱服務器的域名或者IP地址一般會在客戶端安裝的時候安裝。
2.郵箱服務器經常傳輸第一條信息來認證它本身。
3.客戶端會發送一個SMTP HELO的命令同時服務器會響應一個250 ok的信息。
4.取決於客戶端是不是在檢查郵箱,發送郵件等,對應的SMTP命令將會發送給服務器,而且會得到對應的迴應。
5.這個請求/迴應的事物將會一直繼續知道客戶端發送一個SMTP QUIT的命令。這個服務器而後會說再見而且這個鏈接將會關閉。
一個簡單的SMTP客戶端和服務器的對話以下:R表示服務器發送的信息 S表示客戶端發送的信息。
上面的事物是從RFC821獲取的,定義SMTP的。
11.傳輸控制協議
在應用層下是TCP層。當一個應用和另一個計算機開啓一個鏈接時,它們發送的信息(使用的是特定的應用層協議)會傳輸到協議棧下一層TCP層。
TCP是負責路由應用協議到目的計算機的正確的應用。爲了達到這個目的,會使用到端口號。端口能夠被考慮爲一個獨立的頻道在每一個計算機上。這是由於不一樣的應用會使用不一樣的端口號。當一個包到一個電腦的時候,同時經過協議棧,這個TCP層決定哪個應用接受包經過端口號。
TCP像這樣工做:
當TCP層從應用層接受到數據的時候,它分片這些數據,而且分解爲能夠控制的大小,而且添加特定的TCP信息給每塊。TCP頭包含的信息包括這些數據須要傳送給到對應應用的端口號。
當TCP層收到一個從IP層傳上來的數據包是,TCP剝掉TCP頭,而且若是須要作一些數據的重構,而後發送數據到正確的應用使用TCP頭中的端口號。
TCP不是文本協議。TCP是一個面向鏈接的,可靠的字節流服務。面向鏈接意味着兩個使用TCP協議的應用必須先創建一個鏈接在交換數據以前。TCP是可靠的由於每個數據包收到的時候,一個得到信息將會發送給發送方來確認此次發送。TCP也有一個CheckSum來檢查傳輸的數據是否正確。TCP頭數據結構以下:
注意到這裏沒有任何IP地址信息,由於TCP並不知道任何關於IP地址的信息。TCP是爲了可靠的從應用層獲取數據傳到另一個應用。
12.Internet 協議 IP協議
不像TCP,IP是一個不可靠的,無鏈接的協議。IP不在意一個數據包是否到達目的地。一樣IP也不知道鏈接和端口號。
IP的任務是發送和路由數據包到其餘的計算機。IP數據包是獨立的實體,而且也許會不按照順序到達。這是TCP的工做來保證數據按照正確的順序到達。它和TCP相同的地方是它也會增長一個IP頭到報文中。
以上咱們看到IP地址在IP頭中。在以後就將數據傳輸到網絡上了。
13.包裹
如今你知道了互聯網是怎麼工做的。可是這種形式會保持多久了?目前IPV4只容許2的32次方個地址。目前已經有IPV6了,----話說從我知道有開始到如今感受還沒普及,誰知道會怎麼發生。
嗯 這個文章是2002年的,15年了,tcp什麼的仍是這些。
14.資源
不翻譯了,留着我本身想看的時候看下:
http://www.ietf.org/ is the home page of the Internet Engineering Task Force. This body is greatly responsible for the development of Internet protocols and the like. html
15.參考文獻
TCP和網絡的相關書籍:
- TCP/IP Illustrated, Volume 1, The Protocols.
W. Richard Stevens.
Addison-Wesley, Reading, Massachusetts. 1994.
- Encyclopedia of Networking.
Tom Sheldon.
Osbourne McGraw-Hill, New York. 1998
其餘比較好的書:
- Firewalls and Internet Security; Repelling the Wiley Hacker.
William R. Cheswick, Steven M. Bellovin.
Addison-Wesley, Reading, Massachusetts. 1994.
- Data Communications, Computer Networks and Open Systems. Fourth Edition.
Fred Halsall.
Addison-Wesley, Harlow, England. 1996.
- Telecommunications: Protocols and Design.
John D. Spragins with Joseph L. Hammond and Krzysztof Pawlikowski.
Addison-Wesley, Reading, Massachusetts. 1992.
題外話,這篇文章過久了,不過如今看來仍是介紹的很全。參考資料能夠找找最新版的看看。