互聯網的分層html
1. 實體層(Physical Layer)服務器
2. 連接層(Link Layer)網絡
3. 網絡層(Network Layer)socket
4. 傳輸層(Transport Layer)ui
5. 應用層(Application Layer)spa
越下面的層,越靠近用戶;越上面的層,越靠近硬件。htm
互聯網協議blog
每一層都是爲了完成一種功能。爲了實現這些功能,就須要你們都遵照共同的規則。你們都遵照的規則,就叫作"協議"(protocol)。接口
互聯網的每一層,都定義了不少協議。這些協議的總稱,就叫作"互聯網協議"(Internet Protocol Suite)。它們是互聯網的核心。進程
各分層的定義和做用
"實體層",就是把電腦鏈接起來的物理手段,例如光纜、電纜、雙絞線、無線電波等方式。它主要規定了網絡的一些電氣特性,做用是負責傳送0和1的電信號。
"連接層",它在"實體層"的上方,肯定了0和1的分組方式。單純的0和1沒有任何意義,必須規定解讀方式:多少個電信號算一組?每一個信號位有何意義?
①以太網協議:
以太網規定,一組電信號構成一個數據包,叫作"幀"(Frame)。每一幀分紅兩個部分:標頭(Head)和數據(Data)。
"標頭"包含數據包的一些說明項,好比發送者、接受者、數據類型等等;"數據"則是數據包的具體內容。
②MAC地址
以太網規定,連入網絡的全部設備,都必須具備"網卡"接口。數據包必須是從一塊網卡,傳送到另外一塊網卡。網卡的地址,就是數據包的發送地址和接收地址,這叫作MAC地址。(每塊網卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,一般用12個十六進制數表示。前6個十六進制數是廠商編號,後6個是該廠商的網卡流水號。有了MAC地址,就能夠定位網卡和數據包的路徑了。)
網絡層
①IP協議
規定網絡地址的協議,叫作IP協議。它所定義的地址,就被稱爲IP地址。
目前,普遍採用的是IP協議第四版,簡稱IPv4。這個版本規定,網絡地址由32個二進制位組成。(IP協議的做用主要有兩個,一個是爲每一臺計算機分配IP地址,另外一個是肯定哪些地址在同一個子網絡。)
由於IP數據包是放在以太網數據包裏發送的,因此咱們必須同時知道兩個地址,一個是對方的MAC地址,另外一個是對方的IP地址。
②ARP協議
有了ARP協議,咱們就能夠獲得同一個子網絡內的主機MAC地址,就能夠把數據包發送到任意一臺主機之上。
傳輸層
①由來
爲了區分數據包是提供給哪一個程序用的,除了mac地址和ip地址,還須要一個參數,表示這個數據包到底供哪一個程序(進程)使用。這個參數就叫作"端口"(port),它實際上是每個使用網卡的程序的編號。每一個數據包都發到主機的特定端口,因此不一樣的程序就能取到本身所須要的數據。
"端口"是0到65535之間的一個整數,正好16個二進制位。0到1023的端口被系統佔用,用戶只能選用大於1023的端口。不論是瀏覽網頁仍是在線聊天,應用程序會隨機選用一個端口,而後與服務器的相應端口聯繫。
"傳輸層"的功能,就是創建"端口到端口"的通訊。相比之下,"網絡層"的功能是創建"主機到主機"的通訊。只要肯定主機和端口,咱們就能實現程序之間的交流。所以,Unix系統就把主機+端口,叫作"套接字"(socket)。有了它,就能夠進行網絡應用程序開發了。
②UDP協議
針對端口定義的新的協議。
UDP數據包,也是由"標頭"和"數據"兩部分組成。"標頭"部分主要定義了發出端口和接收端口,"數據"部分就是具體的內容。而後,把整個UDP數據包放入IP數據包的"數據"部分,而前面說過,IP數據包又是放在以太網數據包之中的,因此整個以太網數據包如今變成了下面這樣:
Head - Head - Head - Data
③TCP協議
UDP協議的優勢是比較簡單,容易實現,可是缺點是可靠性較差,一旦數據包發出,沒法知道對方是否收到。爲了解決這個問題,提升網絡可靠性,TCP協議就誕生了。
這個協議很是複雜,但能夠近似認爲,它就是有確認機制的UDP協議,每發出一個數據包都要求確認。若是有一個數據包遺失,就收不到確認,發出方就知道有必要重發這個數據包了。
應用層
應用程序收到"傳輸層"的數據,接下來就要進行解讀。數據必須事先規定好格式,不然根本沒法解讀。"應用層"的做用,就是規定應用程序的數據格式。
(舉例來講,TCP協議能夠爲各類各樣的程序傳遞數據,好比Email、WWW、FTP等等。那麼,必須有不一樣協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了"應用層"。)
這是最高的一層,直接面對用戶。它的數據就放在TCP數據包的"數據"部分。
總結:
網絡通訊就是交換數據包。電腦A向電腦B發送一個數據包,後者收到了,回覆一個數據包,從而實現兩臺電腦之間的通訊。數據包的結構,基本上是下面這樣:
發送這個包,須要知道兩個地址:
* 對方的MAC地址
* 對方的IP地址
(1)最前面的"以太網標頭",設置發出方(本機)的MAC地址和接收方(DHCP服務器)的MAC地址。前者就是本機網卡的MAC地址,後者這時不知道,就填入一個廣播地址:FF-FF-FF-FF-FF-FF。
(2)後面的"IP標頭",設置發出方的IP地址和接收方的IP地址。這時,對於這二者,本機都不知道。因而,發出方的IP地址就設爲0.0.0.0,接收方的IP地址設爲255.255.255.255。
(3)最後的"TCP 標頭",設置發出方的端口和接收方的端口。這一部分是DHCP協議規定好的,發出方是68端口,接收方是67端口。
參考:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html