udp需要arp请求吗_当你随便浏览一个网页时,你知道背后做了多少工作吗?
點擊藍字關注我
?假定工作條件
?假定小A在某大學內讀書,當他將便攜機(筆記本電腦)通過網線連接到宿舍網口,該網口與學校的以太網交換機相連,交換機又與學校的路由器相連。
?學校的這臺路由器與一個ISP相連,這里假定為Comcast.net;Comcast.net為學校提供了DNS服務,即DNS服務器駐留在Comcast網絡中而不是學校網絡中;DHCP仍運行在學校的路由器上。
小A點擊瀏覽器訪問www.baidu.com頁面時發生如下事件:
一、獲取一個IP地址
當小A的便攜機與網絡相連時,沒有IP地址它就不能做任何事情。該PC采取的第一個網絡相關的動作是運行DHCP協議,以從本地DHCP服務器上獲得一個IP地址以及其他信息。1. PC的操作系統生成一個DHCP請求報文,將這個報文放入具有目的地端口67(DHCP服務器)和源端口68(DHCP客戶)的UDP報文段;該報文段被放置在一個具有廣播IP目的地地址(255.255.255.255)和源IP地址(0.0.0.0)的IP數據報中。
2. 該IP數據報被放置在以太網幀中,該以太網幀具有的目的MAC地址為FF:FF:FF:FF:FF:FF,使該幀將廣播到與交換機連接的所有設備中(其中包括DHCP服務器)。該幀的源MAC地址是小A的PC固有的MAC地址00:18:F5:54:81:A8。
3. 路由器在它的固有MAC地址00:25:B4:41:F1:C2的接口接收到該廣播以太網幀,該幀中包含DHCP請求,并且從該以太網幀中抽取出IP數據報。該IP數據報的載荷(UDP)報文被分解,傳輸到運輸層UDP協議,DHCP請求報文從此UDP報文段中抽取出來。此時DHCP服務器有了DHCP請求報文。
4. 假定運行在路由器中的DHCP服務器能夠CIDP塊68.85.4.0/24分配IP地址。假定DHCP服務器分配地址68.85.4.35給小A的PC。DHCP服務器生成包含這個IP地址以及DNS服務器的IP地址(68.87.71.101)、默認網關路由器的IP地址(68.85.4.1)和子網塊(68.85.4.0/24)(等價為"網絡掩碼")的一個DHCP ACK報文段,以同樣的分層方式打包到一個以太網幀中,這個以太網幀的源MAC地址是路由器連到歸屬網絡時接口的MAC地址(00:25:B4:41:F1:C2),目的MAC地址是小A的PC機MAC地址(00:18:F5:54:81:A8)。
5. 小A的PC機接收到包含DHCP ACK的以太網幀,抽取出DHCP ACK報文。PC機的DHCP客戶記錄下IP地址和DNS服務器的IP地址。它還在其IP轉發表中安裝默認網關的地址。小A的PC機向該默認網關發送目的地址為其子網68.85.4.0/24以外的所有數據報。至此,PC機已經初始化好它的網絡組件。
二、DNS和ARP
當小A將www.baidu.com的URL鍵入其Web瀏覽器時,它開啟了一長串事件,這將導致百度網頁最終顯示在其Web瀏覽器上。小A的Web瀏覽器通過生成一個TCP套接字開始了該過程,套接字用于向www.baidu.com發送THHP請求。為了生成該套接字,小A的PC機器需要知道www.baidu.com的IP地址,使用DNS協議提供這種名字到IP地址的轉換服務。6. 小A的PC機操作系統生成一個DNS查詢報文,將字符串www.baidu.com放入DNS報文的問題段中。該DNS報文放置在一個具有53號目的端口的UDP報文中。該DUP報文段則被放入具有IP目的地址68.87.71.101和源IP地址68.85.4.35的IP數據報中。
7. 小A的PC機將包含DNS請求報文的數據報放入一個以太網幀中,該幀將發送到學校網絡中的網關路由器。然后此時小A的PC機并不知道學校網關路由器的MAC地址(因為以太網幀的傳輸所需要的是MAC地址而非IP地址),為了獲取該網關路由器的MAC地址,PC機需要使用ARP協議。
8. 小A的PC機生成一個具有目的IP地址為68.85.4.1(默認網關)的ARP查詢報文,將該ARP報文放置在一個具有廣播目的地址(FF:FF:FF:FF:FF:FF)的以太網幀中,并向交換機發送該以太網幀,交換機將該幀發送給所有連接的設備,包括網關路由器。
9. 在網關路由器接收到該幀后,它準備一個ARP應答,指示它的MAC地址為00:25:B4:41:F1:C2對應IP地址68.85.4.1。它將ARP應發放入一個以太網幀中,其目的地址為小A的PC機的MAC地址00:18:F5:54:81:A8。
10. 小A的PC機收到該幀后,最終能夠將DNS查詢的以太網幀尋址到網關路由器的MAC地址。注意:此時該PC機發出的DNS查詢報文的MAC地址為網關路由器地址00:25:B4:41:F1:C2,而目的IP地址為DNS服務器IP地址68.87.71.101。
三、域內路由選擇到DNS服務器
11. 網關路由器接收到該幀并抽取包含DNS查詢的IP數據報。路由器查找該數據包的目的地址(68.87.71.101),并根據其轉發表決定該數據報應該發送到對應的下一跳路由器,該路由器為連接DNS服務器的路由器。
12. 在連接DNS服務器的路由器接收到該幀后,抽取IP數據報,檢查該數據報的目的地址(68.87.71.101),并根據其轉發表確定出接口,經過該接口朝著DNS服務器轉發數據報,該轉發表已根據Comcast的域內協議(如RIP、OSPF或IS-IS)以及因特網的域間協議BGP所填寫。
13. 最后包含DNS查詢的IP數據報到達了DNS服務器。DNS服務器抽出DNS查詢報文,在它的DNS數據庫中查找名字www.baidu.com,找到對應包含www.baidu.com的IP地址202.108.22.5的DNS源記錄。該DNS服務器形成了一個包含主機名到IP地址映射的DNS回答報文,將該DNS回答報文放入UDP報文段中送到小A的PC機上。
14. 小A的PC機從DNS回答報文中抽取出服務器www.baodu.com的IP地址。到這里,小A的PC機終于準備接觸www.baidu.com的服務器。
四、Web客戶-服務器交互:TCP和HTTP
15. 小A的PC機有了www.baidu.com的IP地址后,它能夠生成TCP套接字,該套接字用于向www.baidu.com發送HTTP GET報文。當小A的PC機生成TCP套接字時,操作系統的TCP必須首先與www.baidu.com中的TCP執行三次握手。因此PC機首先生成一個具有目的端口80(針對HTTP)的TCP SYN報文段,將該TCP報文段放置在具有目的IP地址202.108.22.5的IP數據報中,將該數據報放置在MAC地址為00:25:B4:41:F1:C2(網關路由器)的幀中,并向交換機發送該幀。
16. 該幀沿著學校網絡、Comcast網絡和谷歌網絡中的路由器朝著www.baidu.com轉發包含TCP SYN的數據報,使用每臺路由器中的轉發表。
17. 最終包含TCP SYN的數據報到達www.baidu.com。從數據報抽取出TCP SYN報文并分解到與端口80相聯系的歡迎套接字。在百度服務器和小A的PC機之間的TCP連接生成一個連接套接字,產生一個TCP SYNACK報文段,之后該把報文段被放入鏈路層幀中,最終到達小A的PC機以太網卡。
18. 借助于小A的PC機上的套接字,現在終于準備向www.baidu.com發送字節了。小A的瀏覽器生成包含要獲取的URL的HTTP GET報文。HTTP GET報文則寫入套接字,其中GET報文成為一個TCP報文段的載荷,之后通過該套接字傳送到www.baidu.com的HTTP服務器端。
19. 在www.baidu.com的HTTP服務器從TCP套接字中讀取HTTP GET報文,生成一個HTTP響應報文,將請求的Web內容放入HTTP響應體中,并將報文發送進TCP報文段中。
20. 包含HTTP回答報文的數據報通過百度、Comcast和學校網絡轉發,到達小A的PC機。小A的Web瀏覽器程序從套接字的讀取HTTP響應,從HTTP響應體中抽取Web網頁的html,并最終顯示了Web頁面。
小結一下
我們可以看到,當我們平時在Surf The Internet時并未察覺到,訪問一個百度主頁竟然在計算機網絡中做了如此復雜的操作。當然以上的20個步驟僅僅考慮了基本的必要操作,忽略了一些可能的附加協議比如無線接入、數據報加密、Web緩存等。這些底層實現操作對于我們使用者來講是并不需要知道的。可能目前在一些網絡不佳的條件下訪問頁面仍會有肉眼可見的時延,但將來5G的普及或許使得我們再也不會感受到瀏覽器時延的存在。附專有名詞縮寫及全稱
ISP(Internet Service Provider) 互聯網服務提供商;
DNS(Domain Name System) 域名系統服務協議;
DHCP(Dynamic Host Configuration Protoocol) 動態主機配置協議;
IP(Internet Protocol) 網際協議;
UDP(User Datagram Protocol) 用戶數據報協議;
TCP(TransmissionControl Protocol) 傳輸控制協議;
MAC(Media Access Control) 局域網地址/以太網地址/物理地址;
ARP(Address Resolution Protocol) 地址解析協議;
RIP(Routing Information Protocol) 路由信息協議;
OSPF(Open Shortest Path First) 開放式最短路徑優先;
HTTP(Hyper Text Transfer Protocol) 超文本傳輸協議;
HTLM(Hyper Text Markup Language) 超級文本標記語言
總結
以上是生活随笔為你收集整理的udp需要arp请求吗_当你随便浏览一个网页时,你知道背后做了多少工作吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python与c语言有什么区别_Pyth
- 下一篇: 以下属于4nf的分解为_中科院电工所张国