網絡數據收發操作

網絡數據收發操作

首先服務器在程序啓動時就會創建好套接字,並處於等待狀態。

客戶端則是用戶觸發特定動作,需要訪問服務器的時候創建套接字。

創建套接字後,客戶端會向服務器發起連接操作。首先客戶端會生成SYN爲1的TCP包(包含客戶端向服務端發送數據時使用的初始序號)併發送給服務器。當包達到服務器後,服務器會返回一個SYN爲1的包(也包含序號,同時也包含確認已收到客戶端發過來的包的ACK號)。當這個包到達客戶端後,客戶端會返回一個確認的ACK號的TCP包。這裏連接就完成了。

 

數據收發結束後,會執行斷開操作。以服務器先發起斷開過程爲例,首先服務器發起一個FIN爲1的包,然後客戶端返回一個表示確認收到的ACK號的包。接下來,客戶端會向服務端發送一個FIN爲1的包,同時服務器接收到包後,會返回包含ACK號的包。

 

 

 

DNS工作

客戶端向DNS發送查詢消息,會包含3種信息:

域名

Class(以前用在識別網絡上,現在只有互聯網,沒有其他網絡,則固定爲IN代表互聯網)

記錄類型(A時對應IP地址,MX對應郵件服務器)

然後DNS服務器會從域名與ip地址的對照表中查找相應的記錄,並返回IP地址。

 

域名的層級(在域名中,靠近右邊表示其層級越高)

 

互聯網中有數萬臺DNS服務器,肯定是不能一臺一臺的去找的。將負責管理下級域的DNS服務器的IP地址註冊到它們上級DNS服務器中,然後將上級DNS服務器的IP地址再註冊到更上級的DNS服務器中,由此便形成一套DNS服務器網絡層級架構。

 

這樣的話,就會遇到一個根域DNS服務器,並且任何DNS服務器都要求能夠訪問到根域DNS服務器。目前分配給根域DNS服務器的IP地址僅有13個,而且這些地址幾乎不發生改變。實際上根域DNS服務器的信息已經包含着DNS服務器程序的配置文件中了,因此只要安裝了DNS服務器程序,信息便自動配置好了。這樣就可以通過任意一臺DNS服務器找到根域DNS服務器,從而能夠從頂至下找到目標服務器。

具體流程如下圖:

  1. 找最近的DNS服務器
  2. 沒找到域名對於的IP,於是最近的DNS服務器請求根域DNS服務器
  3. 根域DNS服務器查詢到com域的DNS服務器的ip地址,返回給最近的DNS服務器
  4. 最近的DNS服務器查詢com域DNS服務器
  5. com域DNS服務器找到baidu域DNS服務器的IP地址,返回給最近的DNS服務器
  6. 最近的DNS服務器查詢baidu域DNS服務器
  7. baidu域DNS服務器找到www.baidu.com的域名對於的ip地址,返回給最近的DNS服務器
  8. 最近的DNS服務器將www.baidu.com對應的ip地址返回給客戶端
  9. 客戶端根據得到的ip地址查詢web服務器
  10. Web服務器返回結果。

 

另外DNS服務器有緩存功能,這樣就可以先查緩存,緩存沒有,再從根域DNS查。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章