互連網協議入門

來源:互聯網
上載者:User

標籤:

我們每天使用互連網,它是如何?的呢?

互連網的核心是一系列的協議,總稱“互連網協議” internet protocol suite.

1:概述

1.1 五層模型

互連網的實現,分好幾層,每一層都有自己的功能,每一層都靠下一層支援

如何分層有不同的模型,有的分七層,但是分5層還是比較容易理解

  • 應用程式層(application layer)
  • 傳輸層(transport layer)
  • 網路層(network layer)
  • 連結層(link layer)
  • 物理層(physical layer)

越是下層,越靠近硬體,越是上層,越靠近使用者!

1.2 層與協議

互連網的每一層,都定義了好多協議,這些協議叫做“互連網協議” internet protocol.

  1. 物理層,physical layer

就是把電腦串連起來的物理手段,他主要規定了網路的一些電氣特性,作用是負責0,1的電訊號

      2. 連結層 link layer

單純的0,1是沒有任何意義,必須規定解讀方式:多少個電訊號算一組,每個訊號的意義?

這就是連結層的功能,它在物理層上面,確定了0和1的分組方式

乙太網路協議:

乙太網路規定,一組電訊號構成一個資料包,叫做“幀” (frame),每一個幀都分成2部分, 標題(head)和資料(data)

"標題“包含資料包的一些說明項,比如寄件者,接受者,資料類型等等,”資料“包含具體內容

”標題“的長度,固定為18位元組,”資料“的長度,最短為46位元組,最長為1500位元組,so ,整個frame的最短為64個位元組,最長為1518個位元組,如果資料很長,就必須分割成多個frame來發送

MAC地址

上面提到,每個資料frame都是由head & data,head中包換了寄件者和接受者的資訊,就是MAC地址,每個網卡的都是獨一無二的,通常用12個16進位數表示。00-B0-D0-86-BB-F7,長度為48個二進位

廣播(broadcast)

定義地址是第一步,一個網卡如何知道另外一個網卡的MAC地址?主要是通過ARP協議,乙太網路資料包必須知道對方的mac地址才能發送,

其次,有個mac地址,系統怎麼才能把資料包準確發送給接收方?

乙太網路採用廣播的方式去把自己的資料frame發送出去,整個區域網路的電腦都會收到,然後讀取標題的資訊,以確定自己是否為接收方,是的話就接收,不是的話就丟棄

有了資料包的定義,網卡的MAC地址,廣播的發送,串連層就可以在多台電腦直接傳送資料

4:網路層

如果2台電腦不再同一個區域網路裡面,通過廣播的方式是不能傳輸出去的,因此必須找到一種方法,如何區分哪些MAC地址屬於同一個網路,哪些不是,如果在同一個區域網路就採用廣播,如果不是就採用路由的方式。,

in this case, 為了使我們能夠區分不同電腦是否屬於同一子網路,這個地址就做 網路地址,簡稱網址

so ,each computer must owns 2 different address :MAC and IP address .網路地址幫我們確定電腦所在的子網路,MAC地址則將資料包送到該子網路的目標網卡,thus ,in logically,network address is priority to be handled .

5:IP 協議

IPV4 。由32個二進位組成,分4段的十進位來表示IP地址。如何判斷2台電腦是否在同一個子網呢?這裡就是要用另外一個概念子網路遮罩“ subnet mask",if you know the subnet mask,it‘s easy to identify theirs network .

6:IP 資料包

根據IP協議發送的資料,就叫做IP資料包。不難想像,裡面必須包括IP地址資訊

但是前面說過,乙太網路資料中只包含MAC地址,沒有IP地址的欄位,那怎麼辦?我們可以把IP資料包直接放到乙太網路資料包的資料部分,

具體來說IP資料包也分為標題和資料2個部分

head + data

標題主要包括版本,長度,IP地址等資訊,資料 則是IP資料包的具體內容,他放進乙太網路資料包,乙太網路資料包就變成;

head + head + data

IP 資料包“HEAD”部分的長度為20-69位元組,整個資料包的總長度最大為65535個位元組, so ,theoretically,一個IP資料包的資料部分最大為65515個位元組,前面講過,一個乙太網路包的資料部分最大了1500個位元組,所以,如果IP資料包超過了1500個位元組,就要分割為幾個frame 發送

7:ARP協議

因為IP資料包時放在乙太網路的資料包發送的,所以我們必須知道2個地址,對方的IP地址和MAC地址,通常情況,對方的IP地址是已知的,MAC地址是未知的

因此我們需要一種機制通過IP地址來得到MAC地址。

如果在同一個子網,我們可以通過ARP協議得到對方的MAC地址,ARP協議也是發一個資料包,包含在乙太網路資料包中,其中包含了所查詢的主機的IP地址,對方的MAC地址欄填的是FF:FF:FF:FF:FF:FF表示廣播位址,他所在的網路的所有主機,都會受到這個資料包,重中取出IP地址,與自身IP地址進行比較,如果相同則做出回應

如果不在同一子網,只能把資料包傳到2個子網的串連處“vgetway”

  1. 傳輸層

有個MAC地址和IP地址,我們已經可以在互連網上任意2台主機上建立通訊

接下來的問題是,同一台主機上有許多程式要串連網路,比如,你一遍瀏覽網頁,一遍和朋友聊天,當一個資料包重互連網發來的時候,你怎麼知道,它是表示網頁的內容,還是表示聊天的內容。

也就是說,我們還需要一個參數,表示這個資料包到底供哪個進程使用。這個參數就叫做連接埠。port

他其實是每一個使用網卡的程式的編號。每個資料包都發送到主機的特定連接埠,所以不同的程式就能娶到自己所需要的資料。

連接埠是0-65535之間的一個整數,16個二進位,0-1023連接埠被系統佔用,使用者只能選用1023後面的連接埠。no matter you are surfing or chating on line ,there will be  a port selected to match with server port .

傳輸層的功能就是建立,連接埠到連接埠的通訊。相比之下,網路層的功能就是建立主機要主機的通訊,只要確定主機的連接埠,我們就能實現程式之間的交流。因此,unix系統就是把主機+連接埠 叫做 通訊端,socket.,有了它,就可以進行網路應用程式開發了

UDP協議

現在我們必須在資料包中加入連接埠資訊,這就需要新的協議,最簡單的實現就叫做UDP協議,他 的 格式幾乎就是在資料前面加上連接埠號碼

UDP資料包,也是由標題和資料群組成

 Head  + data

"head"部分主要定義了連接埠和接收埠,“data"就是具體內容,然後把整個UDP資料包放到IP資料包的資料部分,而前面也提過IP資料包又是放在乙太網路資料包之中,所以整個乙太網路資料變成了

head + head + head +data

TCP協議

UDP協議有點比較簡單,容易實現,但是可靠性差。

為了提高網路可靠性,TCP協議就誕生了,沒發出一個資料包都要求確認,如果有一個包遺失,就說不到確認,發出方就知道有必要重發這個資料包了

TCP資料包和UDP資料包都一樣,都是內嵌在IP資料包的資料部分,TCP資料包沒有長度限制.Theoretical no limited ,in general ,the lenght of TCP is no longer than the lenght of IP package to ensure singal TCP package don‘t need to be divided .

應用程式層,

應用程式收到傳輸層的資料,接下來就要進行解讀。由於互連網是開放架構,資料來源五花八門,必須事先規定好格式,否則無法解讀

“應用程式層”作用 就是規定應用程式的資料格式

舉例來說,TCP協議可以為各種各樣的程式傳遞資料,比如email,www.ftp.必須有不同的協議來規定電子郵件,網頁,FTP資料格式,這些應用程式就構成了 應用程式層

這是最高一層,直接面對使用者,他的資料放在TCP資料包的資料部門,因此,乙太網路的資料包變成了

Head   +     Head  +    Head  +    data

乙太網路標題    IP標題     TCP標題     應用程式層資料

 小結:

我們已經知道,網路通訊就是交換資料包,電腦A向電腦B發送一個資料包,後者收到了,回複一個資料包,從而實現2台電腦之間的通訊,

發送這個包,我們需要知道對方的IP地址和MAC地址。有了這2個地址,資料包才能準確送到接受者手中,但是前面說過,MAC地址有局限性,如果2個電腦 不再同一個子網中,就要通過gateway轉寄。網關通過路由協議,發現電腦位於網路B, 又把資料包發給網關B,網關B在轉寄給對應電腦

同一個字網路   ----〉對方的MAC地址,對方 IP地址

非同一個 ----〉網關MAC地址,對方IP地址

8: 使用者上網設定

手動IP,DHCP

DHCP是一種應用程式層協議,建立在UDP協議之上

head     +       head    +    head   + data

乙太網路    IP      UDP  DHCP SERVER

最前面的乙太網路標題設定原生MAC地址和接受方DHCP伺服器的MAC地址,後者不知道就填FF-FF-FF-FF-FF-FF

後面的IP標題,設定原生IP地址和接受發的IP地址,本地不知道0.0.0.0 ,接收方 255.255.255.255

UDP標題,設定發出方的連接埠68 和接收方連接埠67

這個資料包構造完成就可以發出,乙太網路是廣播發送,同一個子網的沒台電腦都接收到了,還必須分析其IP地址才能確定是否發給自己的,DHCP看到發出方的0.0.0.,接收方是255.255.255.255就知道是給我的,其它的PC就丟棄這個包

接下來DHCP讀取包的內容,分配好IP地址,發送回去DHCP響應,這個包夜類似

9:執行個體,訪問網頁

本機:192.168.1.100

255.255.255.0

192.168.1.1

8.8.8.8

 

然後開啟瀏覽器,訪問google.com  這就意味著瀏覽器要向 google發送一個網頁請求

DNS協議

發送資料包,必須要知道對方的IP地址,但是我們只知道網址,DNS協議可以協助我們把網址轉換成IP

已知DNS伺服器8.8.8.8,於是我們向這個地址發送一個DNS資料包

head    +   head    + head     +     data

乙太網路  IP    udp    DNS資料包

然後DNS做出相應,告訴我們GOOGLE的地址是172.194.72.105

子網路遮罩判斷是否在同一個子網

通過已經知道的子網路遮罩255.255.255.0 和IP地址作and 運算

因此我們要向google發送資料包,必須通過網關轉寄,也就是說接受的MAC地址就是網關地址

 

應用程式層協議

瀏覽網頁用的是HTTP協議,他的整個資料包構造

head      +       head     +     head    +     data

乙太網路    IP      TCP    HTTP

 

Http 部分的內容,

GET / HTTP /1.1

host: www.google.com

connection :  keep-alive

user-agent :mozilla5.0 (windwos NT)

accept:

text/html,applicaiton/xhtml,applicaiton/xml;1=0.9,*/*;1=0.8

accept-encoding;gzip,deflate,sdch

accept-language:zh-cn,zh;q=0.8

accept-charset: GBK,utf-9;q=0.7,*;q=0.3

cookie;... ...

我們假定這個部分長度為4960位元組,他會被封裝在TCP資料包之中

 

TCP協議

TCP資料包需要設定連接埠,google的http port 80,發送方的連接埠是隨機產生的1024-65535 之間,假定51755

TCP資料包的標題長度20位元組,加上嵌入的http資料包,總長度4980

IP協議

TCP資料包再嵌入IP資料包,ip資料包為雙方IP地址,

ip的標題為20位元組,加上嵌入的TCP資料包為5000位元組

 

乙太網路協議

最後IP資料包嵌入乙太網路資料包,乙太網路資料包需要設定雙方的MAC地址,原生MAC地址和接收方網管的MAC地址,(通過ARP得到)

乙太網路資料部分最大1500位元組,而現在IP的資料包長度5000,因此,IP資料包必須分割4個包,因為每個包都有自己的IP標題(20 位元組)所以4個包的IP資料包長度分別為1500 1500 1500 560

head    head    data

head   head  data

head    head   data

head   head   data

乙太網路  ip    TCP DATA

 

 伺服器端響應

經過多個網關轉寄google伺服器收到了這4個乙太網路資料包

根據IP標題的序號,google將4個包平起來,取得完整的TCP資料包,然後讀取裡面的HTTP請求在作出回應,在同TCP協議,發回來

本機受到HTTP,就可以將網頁顯示出來,完成一次完整 的網路通訊

 

互連網協議入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.