1. 程式人生 > >網路訪問流程 與 http流程

網路訪問流程 與 http流程

        IE瀏覽器向本機DNS模組發出DNS請求,DNS模組生成相關的DNS報文;

        DNS模組將生成的DNS報文傳遞給傳輸層的UDP協議單元;

        UDP協議單元將該資料封裝成UDP資料報,傳遞給網路層的IP協議單元;

        IP協議單元將該資料封裝成IP資料包,其中目的IP地址為DNS伺服器的IP地址;

        封裝好的IP資料包將傳遞給資料鏈路層的協議單元進行傳送;

        傳送時如果ARP快取中沒有相關資料,則傳送ARP廣播請求,等待ARP迴應;

        得到ARP迴應後,將IP地址與路由下一跳MAC地址對應的資訊寫入ARP快取表;

        寫入快取後,以路由下一跳地址填充目的MAC地址,並以資料幀形式轉發;

        這個轉發過程可能會進行多次,這取決於DNS伺服器在校園網中的位置;

        DNS請求被髮送到DNS伺服器的資料鏈路層協議單元;

        DNS伺服器的資料鏈路層協議單元解析收到的資料幀,將其內部所含有的IP資料包傳遞給網路層IP協議單元;

        DNS伺服器的IP協議單元解析收到的IP資料包,將其內部所含有的UDP資料報傳遞給傳輸層的UDP協議單元;

        DNS伺服器的UDP協議單元解析收到的UDP資料包,將其內部所含有的DNS報文傳遞給該伺服器上的DNS服務單元;

        DNS服務單元收到DNS請求,將域名解析為對應的IP地址,產生DNS迴應報文;

        (所有應用層報文必須通過傳輸層、網路層和資料鏈路層,因此在下面的敘述中,我將簡化這一過程的敘述,簡化形式如下面的樣子,其中單箭頭為本機內部傳遞,雙箭頭為網路上的傳送)

        DNS迴應報文→UDP→IP→MAC→→請求域名解析的主機;

        請求域名解析的主機收到資料幀,該資料幀→IP→UDP→DNS→IE瀏覽器;

        將域名解析的結果以域名和IP地址對應的形式寫入DNS快取表。

2.IE瀏覽器與www.sina.com.cn建立TCP連線:

        IE瀏覽器向www.sina.com.cn發出TCP連線請求報文;

        該請求TCP報文中的SYN標誌位被設定為1,表示連線請求;

        該TCP請求報文→IP(DNS)→MAC(ARP)→→校園閘道器→→www.sina.com.cn主機;

        該TCP請求報文經過IP層時,填入的目的IP地址就是上面DNS過程獲得的IP地址;

        經過資料鏈路層時,若MAC地址不明,還要進行上面所敘述的ARP過程;

        www.sina.com.cn收到的資料幀→IP→TCP,TCP協議單元會迴應請求應答報文;

        該請求應答TCP報文中的SYN和ACK標誌位均被設定為1,表示連線請求應答;

        該TCP請求應答報文→IP→MAC(ARP)→→校園閘道器→→請求主機;

        請求主機收到資料幀→IP→TCP,TCP協議單元會迴應請求確認報文;

        該請求應答TCP報文中的ACK標誌位被設定為1,表示連線請求確認;

        該TCP請求確認報文→IP→MAC(ARP)→→校園閘道器→→www.sina.com.cn主機;

        www.sina.com.cn收到的資料幀→IP→TCP,連線建立完成;

        在這個過程中,任何一個報文出錯或超時,都要進行重傳;

        這個過程被稱為TCP建立連線的三次握手。

3.IE瀏覽器開始HTTP訪問過程

        IE瀏覽器向www.sina.com.cn發出HTTP-GET方法報文;

        該HTTP-GET方法報文→TCP→IP→MAC→→校園閘道器→→www.sina.com.cn主機;

        www.sina.com.cn收到的資料幀→IP→TCP→HTTP,HTTP協議單元會迴應HTTP協議格式封裝好的HTML超文字形式資料;

        HTTP-HTML資料→TCP→IP→MAC(ARP)→→校園閘道器→→請求主機;

        請求主機收到的資料幀→IP→TCP→HTTP→IE瀏覽器,瀏覽器會以網頁形式顯示HTML超文字,就是我們所看到的網頁。

4.斷開TCP連線

        IE瀏覽器向www.sina.com.cn發出TCP連線結束請求報文;

        該請求TCP報文中的FIN標誌位被設定為1,表示結束請求;

        該TCP結束請求報文→IP→MAC(ARP)→→校園閘道器→→www.sina.com.cn主機;

        www.sina.com.cn收到的資料幀→IP→TCP,TCP協議單元會迴應結束應答報文;

        該結束應答TCP報文中的FIN和ACK標誌位均被設定為1,表示結束應答;

        該TCP結束應答報文→IP→MAC(ARP)→→校園閘道器→→請求主機;

        這個過程需要雙向進行,因此www.sina.com.cn主機也會按上述流程再做一次;

        整個過程被稱為TCP斷開連線的四次握手

        .1.255                     255.255.255.255       192.168.1.101       192.168.1.101           10

 224.0.0.0                            240.0.0.0                   192.168.1.101       192.168.1.101           10

255.255.255.255                 255.255.255.255       192.168.1.101       192.168.1.101           1

Default Gateway:                192.168.1.2

Network Destination 目的網段 

Netmask 子網掩碼 

Gateway 下一跳路由器入口的ip,路由器通過interface和gateway定義一調到下一個路由器的鏈路,通常情況下,interface和gateway是同一網段的。

Interface 到達該目的地的本路由器的出口ip(對於我們的個人pc來說,通常由機算機A的網絡卡,用該網絡卡的IP地址標識,當然一個pc也可以有多個網絡卡)。

閘道器這個概念,主要用於不同子網間的互動,當兩個子網內主機A,B要進行通訊時,首先A要將資料傳送到它的本地閘道器,然後閘道器再將資料傳送給B所在的閘道器,然後閘道器再發送給B。

預設閘道器,當一個數據包的目的網段不在你的路由記錄中,那麼,你的路由器該把那個資料包傳送到哪裡!預設路由的閘道器是由你的連線上的default gateway決定的,也就是我們通常在網路連線裡配置的那個值。

通常interface和gateway處在一個子網內,對於路由器來說,因為可能具有不同的interface,當資料包到達時,根據Network Destination尋找匹配的條目,如果找到,interface則指明瞭應當從該路由器的那個接口出去,gateway則代表了那個子網的閘道器地址。

第一條      0.0.0.0  0.0.0.0   192.168.1.2    192.168.1.101   10

0.0.0.0代表了預設路由。該路由記錄的意思是:當我接收到一個數據包的目的網段不在我的路由記錄中,我會將該資料包通過192.168.1.101這個介面傳送到192.168.1.2這個地址,這個地址是下一個路由器的一個介面,這樣這個資料包就可以交付給下一個路由器處理,與我無關。該路由記錄的線路質量 10。當有多個條目匹配時,會選擇具有較小Metric值的那個。

第三條      192.168.1.0   255.255.255.0  192.168.1.101   192.168.1.101  10

直聯網段的路由記錄:當路由器收到發往直聯網段的資料包時該如何處理,這種情況,路由記錄的interface和gateway是同一個。當我接收到一個數據包的目的網段是192.168.1.0時,我會將該資料包通過192.168.1.101這個介面直接傳送出去,因為這個埠直接連線著192.168.1.0這個網段,該路由記錄的線路質量 10 (因interface和gateway是同一個,表示資料包直接傳送給目的地址,不需要再轉給路由器)。

一般就分這兩種情況,目的地址與當前路由器介面是否在同一子網。如果是則直接傳送,不需再轉給路由器,否則還需要轉發給下一個路由器繼續進行處理。

查詢到下一跳ip地址後,還需要知道它的mac地址,這個地址要作為鏈路層資料裝進鏈路層頭部。這時需要arp協議,具體過程是這樣的,查詢arp緩衝,windows下執行arp-a可以檢視當前arp緩衝內容。如果裡面含有對應ip的mac地址,則直接返回。否則需要發生arp請求,該請求包含源的ip和mac地址,還有目的地的ip地址,在網內進行廣播,所有的主機會檢查自己的ip與該請求中的目的ip是否一樣,如果剛好對應則返回自己的mac地址,同時將請求者的ip mac儲存。這樣就得到了目標ip的mac地址。

鏈路層

將mac地址及鏈路層控制資訊加到資料包裡,形成Frame,Frame在鏈路層協議下,完成了相鄰的節點間的資料傳輸,完成連線建立,控制傳輸速度,資料完整。

物理層

物理線路則只負責該資料以bit為單位從主機傳輸到下一個目的地。

下一個目的地接受到資料後,從物理層得到資料然後經過逐層的解包 到鏈路層 到 網路層,然後開始上述的處理,在經網路層 鏈路層 物理層將資料封裝好繼續傳往下一個地址。

在上面的過程中,可以看到有一個路由表查詢過程,而這個路由表的建立則依賴於路由演算法。也就是說路由演算法實際上只是用來路由器之間更新維護路由表,真正的資料傳輸過程並不執行這個演算法,只檢視路由表。這個概念也很重要,需要理解常用的路由演算法。而整個tcp協議比較複雜,跟鏈路層的協議有些相似,其中有很重要的一些機制或者概念需要認真理解,比如編號與確認,流量控制,重發機制,傳送接受視窗。

tcp/ip基本模型及概念

物理層

裝置,中繼器(repeater),集線器(hub)。對於這一層來說,從一個埠收到資料,會轉發到所有埠。

鏈路層

協議:SDLC(Synchronous Data Link Control)HDLC(High-level Data Link Control) ppp協議獨立的鏈路裝置中最常見的當屬網絡卡,網橋也是鏈路產品。集線器MODEM的某些功能有人認為屬於鏈路層,對此還有些爭議認為屬於物理層裝置。除此之外,所有的交換機都需要工作在資料鏈路層,但僅工作在資料鏈路層的僅是二層交換機。其他像三層交換機、四層交換機和七層交換機雖然可對應工作在OSI的三層、四層和七層,但二層功能仍是它們基本的功能。

因為有了MAC地址表,所以才充分避免了衝突,因為交換機通過目的MAC地址知道應該把這個資料轉發到哪個埠。而不會像HUB一樣,會轉發到所有滴埠。所以,交換機是可以劃分衝突域滴。

網路層

四個主要的協議:  

網際協議IP:負責在主機和網路之間定址和路由資料包。    

地址解析協議ARP:獲得同一物理網路中的硬體主機地址。    

網際控制訊息協議ICMP:傳送訊息,並報告有關資料包的傳送錯誤。    

互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。

該層裝置有三層交換機,路由器。

傳輸層

兩個重要協議 TCP 和 UDP 。

埠概念:TCP/UDP 使用 IP 地址標識網上主機,使用埠號來標識應用程序,即 TCP/UDP 用主機 IP 地址和為應用程序分配的埠號來標識應用程序。埠號是 16 位的無符號整數, TCP 的埠號和 UDP 的埠號是兩個獨立的序列。儘管相互獨立,如果 TCP 和 UDP 同時提供某種知名服務,兩個協議通常選擇相同的埠號。這純粹是為了使用方便,而不是協議本身的要求。利用埠號,一臺主機上多個程序可以同時使用 TCP/UDP 提供的傳輸服務,並且這種通訊是端到端的,它的資料由 IP 傳遞,但與 IP 資料報的傳遞路徑無關。網路通訊中用一個三元組可以在全域性唯一標誌一個應用程序:(協議,本地地址,本地埠號)。

也就是說tcp和udp可以使用相同的埠。

可以看到通過(協議,源埠,源ip,目的埠,目的ip)就可以用來完全標識一組網路連線。

應用層

基於tcp:Telnet FTP SMTP DNS HTTP

基於udp:RIP NTP(網落時間協議)和DNS (DNS也使用TCP)SNMP TFTP