我自己寫的隨筆一般是偏學習筆記性質的,或者一點個人理解,適合新人,大牛可以忽略這個。。。。。。
參考書籍——《圖解http》
當我們在瀏覽器的地址欄中輸入網址,然后點擊回車,接着,瀏覽器就會呈現出我們需要的web界面,那么,這個界面是怎么產生的?
web的界面是根據我們輸入的URL(網址、地址),瀏覽器從服務器端獲取對應的文件資源等信息,然后顯示在瀏覽器上面。
像這種通過發送請求獲取服務器資源的web瀏覽器等,都可以稱之為客戶端(client)
web使用http(超文本傳輸協議)協議作為規范,來完成從客戶端到服務端等一系列的運作流程,而協議指的就是規則的約定,可以說,web是建立在http協議上進行通信的
關於http的產生和發展,這里就不贅述了,有興趣的童鞋可以百度。。。。。。
為了理解http,有必要簡單介紹下tcp/ip協議族
計算機與網絡設備之間互相通信,雙方就必須基於同樣的方法。比如:如何發現通信目標、由誰發起通信、使用什么語言通信、怎么結束通信都需要事先確定,所有這些都需要一種規則,
這就是協議。協議中存在多種的內容;從電纜的規格到ip地址的選定方法,尋找異地用戶的方法,建立通信的順序,以及web頁面顯示需要處理的步驟等等
像這樣把與互聯網相關聯的協議集合起來統稱為tcp/ip。
tcp/ip的分層
tcp/ip很重要的一個特點就是分層。按照層次分為以下四層:應用層,傳輸層,網絡層和數據鏈路層
分層的好處:如果互聯網只由一個協議統籌,那么某一地方出問題,整體都會出現問題,無法使用;分層后,只需替換出現問題的或者需要修改的即可,而且分層后針對具體的設計也變得更為簡單
應用層:體系的最高層,應用進程間通信交互的規則
tcp/ip協議族預存了各類通用的應用服務,比如:
ftp:文件傳輸協議
dns:域名系統協議
http:萬維網應用協議
smtp:電子郵件協議
以上幾種是常用的幾種,還有很多其他的協議,感興趣的可以找找其他專業的書籍看看
傳輸層:提供處於網絡連接中的兩台計算機間的數據傳輸,其中包括tcp和udp兩種性質不同的協議
tcp:傳輸控制協議,傳輸的單位為報文段,提供面向連接的,可靠的數據傳輸服務
udp:傳輸單位為用戶數據報,它是盡最大努力的提供數據傳輸服務,不保證可靠性
網絡層:又名網絡連接層
用來處理在網絡上流動的數據包(封裝)。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑到達對方計算機並把數據包傳給對方
鏈路層:又名數據鏈路層,網絡接口層
處理連接網絡的硬件部分。比如控制操作系統、硬件的驅動、網絡適配器、光釺等
數據的封裝:
用戶端發送一個請求,從應用層開始,一直到鏈路層,每一層都會被打上該層所屬的首部信息;反之,接收端在層與層之間傳輸時,每經過一層會去掉該層的首部信息,這種做法叫做封裝
與http密切相關的協議
IP協議:位於網絡層,作用是把各種數據包傳送給對方,而要准確的把數據傳送給對方,就需要滿足各類條件,其中有2個很重要的條件:ip地址和mac地址
ip地址相信有點基礎的人都知道,就是節點被分配到的地址,mac地址則是指網卡所屬的固定地址,ip和mac地址可以進行配對
ip間的通信依賴於mac地址,在信息傳輸中,有時候由於中轉太多,因此會采用ARP協議,這是個用來解析地址的協議,通過ip地址就可以反查出對應的mac地址
tcp協議:位於傳輸層,確保傳輸的可靠性
數據傳輸中為了傳輸方便,會將大塊數據分割成報文段,而tcp協議能確認數據最終是否傳送給對方
為了准確傳輸,傳輸中采用了三次握手策略(這種手段可以理解為多次確認,來確保數據傳輸的可靠性)
dns協議:負責域名解析,位於應用層,提供域名到ip地址間的解析
通過域名查找ip地址,或者逆向從ip地址反查域名
URL和URI
URL:統一資源定位符:表示資源的地點,具體指向(門牌號)
URI:統一資源標識符:用字符串標識某些互聯網資源(該門牌號的地方具體有什么資源)
URL是URI的子集