青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
 

一個http請求的詳細過程

我們來看當我們在瀏覽器輸入http://www.mycompany.com:8080/mydir/index.html,幕后所發生的一切。

首先http是一個應用層的協議,在這個層的協議,只是一種通訊規范,也就是因為雙方要進行通訊,大家要事先約定一個規范。

1.連接 當我們輸入這樣一個請求時,首先要建立一個socket連接,因為socket是通過ip和端口建立的,所以之前還有一個DNS解析過程,把www.mycompany.com變成ip,如果url里不包含端口號,則會使用該協議的默認端口號。

DNS的過程是這樣的:首先我們知道我們本地的機器上在配置網絡時都會填寫DNS,這樣本機就會把這個url發給這個配置的DNS服務器,如果能夠找到相應的url則返回其ip,否則該DNS將繼續將該解析請求發送給上級DNS,整個DNS可以看做是一個樹狀結構,該請求將一直發送到根直到得到結果。現在已經擁有了目標ip和端口號,這樣我們就可以打開socket連接了。

2.請求 連接成功建立后,開始向web服務器發送請求,這個請求一般是GET或POST命令(POST用于FORM參數的傳遞)。GET命令的格式為:  GET 路徑/文件名 HTTP/1.0
文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本。現在可以發送GET命令:

GET /mydir/index.html HTTP/1.0,

3.應答 web服務器收到這個請求,進行處理。從它的文檔空間中搜索子目錄mydir的文件index.html。如果找到該文件,Web服務器把該文件內容傳送給相應的Web瀏覽器。

為了告知瀏覽器,,Web服務器首先傳送一些HTTP頭信息,然后傳送具體內容(即HTTP體信息),HTTP頭信息和HTTP體信息之間用一個空行分開。
常用的HTTP頭信息有:
  ① HTTP 1.0 200 OK  這是Web服務器應答的第一行,列出服務器正在運行的HTTP版本號和應答代碼。代碼"200 OK"表示請求完成。
  ② MIME_Version:1.0 它指示MIME類型的版本。
  ③ content_type:類型 這個頭信息非常重要,它指示HTTP體信息的MIME類型。如:content_type:text/html指示傳送的數據是HTML文檔。
  ④ content_length:長度值 它指示HTTP體信息的長度(字節)。


4.關閉連接:當應答結束后,Web瀏覽器與Web服務器必須斷開,以保證其它Web瀏覽器能夠與Web服務器建立連接。


下面我們具體分析其中的數據包在網絡中漫游的經歷

在網絡分層結構中,各層之間是嚴格單向依賴的。“服務”是描述各層之間關系的抽象概念,即網絡中各層向緊鄰上層提供的一組操作。下層是服務提供者,上層是請求服務的用戶。服務的表現形式是原語(primitive),如系統調用或庫函數。系統調用是操作系統內核向網絡應用程序或高層協議提供的服務原語。網絡中的n層總要向n+1層提供比n-1層更完備的服務,否則n層就沒有存在的價值。

傳輸層實現的是“端到端”通信,引進網間進程通信概念,同時也要解決差錯控制,流量控制,數據排序(報文排序),連接管理等問題,為此提供不同的服務方式。通常傳輸層的服務通過系統調用的方式提供,以socket的方式。對于客戶端,要想建立一個socket連接,需要調用這樣一些函數socket() bind() connect(),然后就可以通過send()進行數據發送。

現在看數據包在網絡中的穿行過程:

應用層

首先我們可以看到在應用層,根據當前的需求和動作,結合應用層的協議,有我們確定發送的數據內容,我們把這些數據放到一個緩沖區內,然后形成了應用層的報文data

傳輸層

這些數據通過傳輸層發送,比如tcp協議。所以它們會被送到傳輸層處理,在這里報文打上了傳輸頭的包頭,主要包含端口號,以及tcp的各種制信息,這些信息是直接得到的,因為接口中需要指定端口。這樣就組成了tcp的數據傳送單位segment。tcp是一種端到端的協議,利用這些信息,比如tcp首部中的序號確認序號,根據這些數字,發送的一方不斷的進行發送等待確認,發送一個數據段后,會開啟一個計數器,只有當收到確認后才會發送下一個,如果超過計數時間仍未收到確認則進行重發,在接受端如果收到錯誤數據,則將其丟棄,這將導致發送端超時重發。通過tcp協議,控制了數據包的發送序列的產生,不斷的調整發送序列,實現流控和數據完整。

網絡層

然后待發送的數據段送到網絡層,在網絡層被打包,這樣封裝上了網絡層的包頭,包頭內部含有源及目的的ip地址,該層數據發送單位被稱為packet。網絡層開始負責將這樣的數據包在網絡上傳輸,如何穿過路由器,最終到達目的地址。在這里,根據目的ip地址,就需要查找下一跳路由的地址。首先在本機,要查找本機的路由表,在windows上運行route print就可以看到當前路由表內容,有如下幾項:
Active Routes Default Route Persistent Route.

整個查找過程是這樣的:
(1)根據目的地址,得到目的網絡號,如果處在同一個內網,則可以直接發送。
(2)如果不是,則查詢路由表,找到一個路由。
(3)如果找不到明確的路由,此時在路由表中還會有默認網關,也可稱為缺省網關,IP用缺省的網關地址將一個數據傳送給下一個指定的路由器,所以網關也可能是路由器,也可能只是內網向特定路由器傳輸數據的網關。
(4)路由器收到數據后,它再次為遠程主機或網絡查詢路由,若還未找到路由,該數據包將發送到該路由器的缺省網關地址。而數據包中包含一個最大路由跳數,如果超過這個跳數,就會丟棄數據包,這樣可以防止無限傳遞。路由器收到數據包后,只會查看網絡層的包裹數據,目的ip。所以說它是工作在網絡層,傳輸層的數據對它來說則是透明的。

如果上面這些步驟都沒有成功,那么該數據報就不能被傳送。如果不能傳送的數據報來自本機,那么一般會向生成數據報的應用程序返回一個“主機不可達”或 “網絡不可達”的錯誤。

 

以windows下主機的路由表為例,看路由的查找過程
======================================================================
Active Routes:
Network Destination            Netmask                      Gateway              Interface                  Metric
0.0.0.0                                 0.0.0.0                       192.168.1.2           192.168.1.101           10
127.0.0.0                             255.0.0.0                   127.0.0.1               127.0.0.1                   1
192.168.1.0                         255.255.255.0           192.168.1.101       192.168.1.101           10
192.168.1.101                     255.255.255.255       127.0.0.1               127.0.0.1                   10
192.168.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

 

參考文獻:

讀懂本機路由表 http://hi.baidu.com/thusness/blog/item/9c18e5bf33725f0818d81f52.html

Internet 傳輸層協議 http://www.cic.tsinghua.edu.cn/jdx/book6/3.htm 計算機網絡 謝希仁


轉自:
http://blog.chinaunix.net/u2/67780/showart_2065190.html
posted on 2009-10-21 23:05 chatler 閱讀(263) 評論(0)  編輯 收藏 引用 所屬分類: Network
<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美另类在线| 亚洲欧美久久久久一区二区三区| 亚洲欧美日韩系列| 亚洲无限乱码一二三四麻| 欧美无砖砖区免费| 欧美一级视频精品观看| 小黄鸭视频精品导航| 国内精品免费在线观看| 美女国产一区| 欧美黄色影院| 亚洲女同性videos| 欧美一级欧美一级在线播放| 韩日欧美一区| 亚洲国产精品一区二区三区| 欧美片在线观看| 欧美在线不卡| 美女视频黄免费的久久| 一本色道久久综合| 销魂美女一区二区三区视频在线| 亚洲国产精品尤物yw在线观看| 91久久午夜| 国产日韩欧美91| 最新69国产成人精品视频免费| 国产精品欧美经典| 蜜臀久久久99精品久久久久久| 欧美日韩午夜| 久久视频国产精品免费视频在线| 欧美成年人视频| 欧美一区二区三区免费大片| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲与欧洲av电影| 久久男女视频| 午夜精品视频| 欧美精品入口| 久久免费视频一区| 国产精品久久久久久久免费软件| 免费亚洲电影在线观看| 欧美日韩成人综合| 麻豆精品视频| 国产欧美日韩中文字幕在线| 亚洲三级国产| 亚洲国产成人精品久久| 亚洲欧美激情视频| 中文欧美在线视频| 久久亚洲精品视频| 久久久国产精彩视频美女艺术照福利| 欧美精品成人一区二区在线观看 | 亚洲日韩视频| 久久国产精品一区二区| 午夜一级久久| 国产精品盗摄一区二区三区| 亚洲国产乱码最新视频| 亚洲福利视频免费观看| 久久国产99| 欧美在线视频a| 欧美日本一区二区高清播放视频| 久久精品一二三| 国产精品国产三级国产a| 亚洲国产精品悠悠久久琪琪| 在线不卡欧美| 久久久亚洲综合| 久久亚洲色图| 狠狠色狠狠色综合日日tαg| 欧美亚洲一级| 久久精品视频在线播放| 国产亚洲高清视频| 欧美一区二区三区精品| 久久精品人人做人人爽电影蜜月| 国产麻豆视频精品| 亚洲嫩草精品久久| 久久精品国产999大香线蕉| 国产精品一区二区在线观看网站| 亚洲线精品一区二区三区八戒| 亚洲夜晚福利在线观看| 国产精品xvideos88| 亚洲欧美日韩国产一区二区三区| 性欧美精品高清| 国产一区二区精品在线观看| 久久国产精品免费一区| 欧美国产综合视频| 亚洲免费黄色| 国产精品qvod| 欧美专区福利在线| 欧美成人亚洲成人| 在线视频你懂得一区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲欧美电影在线观看| 久久久精品午夜少妇| 亚洲国产高清高潮精品美女| 欧美成人一区二区三区| 亚洲天天影视| 欧美aaa级| 亚洲午夜电影网| 极品少妇一区二区三区| 欧美肥婆bbw| 亚洲午夜女主播在线直播| 久久国产色av| 亚洲精品偷拍| 国产精品系列在线播放| 久久深夜福利免费观看| 一本色道88久久加勒比精品| 久久久久se| 在线综合欧美| 激情亚洲一区二区三区四区| 欧美黄色一级视频| 欧美一区二区日韩| 亚洲精品女av网站| 欧美一区二区三区成人| 亚洲精品一区在线观看| 国产真实久久| 欧美日韩在线一区| 久久久久久9| 这里只有精品丝袜| 欧美成人精品福利| 新67194成人永久网站| 亚洲免费av网站| 国产一区再线| 国产精品视频| 欧美日韩福利视频| 麻豆成人在线| 久久久999国产| 亚洲欧美日本国产有色| 亚洲精品综合| 最近中文字幕日韩精品| 美日韩精品视频| 久久精品免费| 欧美一区二区日韩| 日韩写真在线| 亚洲婷婷综合色高清在线| 欧美成人亚洲成人| 老司机午夜精品视频在线观看| 欧美一区二区视频在线| 亚洲私人黄色宅男| 夜夜精品视频一区二区| 亚洲乱码国产乱码精品精可以看 | 国产精品成人久久久久| 欧美日韩国产小视频| 欧美激情精品久久久久久蜜臀| 久久久亚洲人| 免费人成精品欧美精品| 美女国内精品自产拍在线播放| 久久www成人_看片免费不卡| 欧美影院一区| 久久九九久精品国产免费直播| 先锋影音国产一区| 亚洲欧美另类国产| 性欧美精品高清| 久久精品国产第一区二区三区| 欧美一级理论性理论a| 欧美在线黄色| 久久综合久久久久88| 欧美www视频| 欧美人与禽性xxxxx杂性| 欧美日韩一区二区三区| 欧美性事免费在线观看| 国产亚洲精品aa| 精品99视频| 一本大道久久a久久综合婷婷| av成人免费在线| 香蕉成人久久| 蜜臀av在线播放一区二区三区| 欧美国产专区| 亚洲一区精品电影| 欧美在线观看一区二区三区| 麻豆九一精品爱看视频在线观看免费| 免费一区视频| 国产精品理论片在线观看| 国产一二精品视频| 亚洲精品日韩欧美| 午夜日韩激情| 欧美搞黄网站| 亚洲一区免费看| 久久全球大尺度高清视频| 欧美日本免费一区二区三区| 国产精品毛片va一区二区三区| 国模私拍视频一区| 亚洲精品一区二区三区蜜桃久| 欧美在线免费视频| 亚洲国产欧美不卡在线观看| 亚洲视频香蕉人妖| 免费av成人在线| 国产精品视频免费观看www| 亚洲国产精品精华液2区45| 亚洲视频欧洲视频| 欧美.com| 99在线精品观看| 久久riav二区三区| 日韩香蕉视频| 美日韩精品免费观看视频| 欧美丝袜一区二区三区| 亚洲国产成人在线播放| 亚洲一区综合| 久久综合九色综合网站| 亚洲欧美国产77777| 女仆av观看一区| 欧美日韩在线观看视频| 亚洲福利视频三区| 先锋影音一区二区三区| 久久久蜜臀国产一区二区| 亚洲欧美日韩国产综合在线|