?雖然說web也學了很久了,也嘗試寫過一些小項目,但是越往后面學我就感覺自己的基礎真的很差,很多東西都只停留在只會用的階段,對于其中的道理是完全懵逼的,趁著這個寒假,好好的補一補以前的基礎課程。我就先從復習HTTP開始,哦,不,應該說是從零開始。
TCP/IP協議族
?首先,我們都知道web是建立在HTTP上進行通信的,至于HTTP的歷史來源就不聊了,百度一下很容易就知道了的。在學習HTTP之前必須要先了解一下TCP/IP協議族,畢竟HTTP就是它的一個子集。TCP/IP協議族有個分層的概念,如下:應用層、傳輸層、網絡層和數據鏈路層。如果互聯網只由一個協議統籌時,某個地方需要改變時就得換整體,分層的話就只需替換變動的層就行了,而且分層將設計變得更簡單。
一、鏈路層
?用來處理網絡的硬件部分。
二、網絡層
?該層規定了通過怎樣的路徑到達對方的計算機,并將數據包傳送給對方。
三、傳輸層
?提供了處于網絡連接的兩臺計算機之間的數據傳輸。在傳輸層兩個性質不同的協議,TCP和UDP。
四、應用層
?應用層決定了向用戶提供應用服務時通信的活動。這句話有點難以理解,我在網上看到一篇博客是這樣說的,我覺得說得十分好。
通過上面的幾層協議,我們已經可以在任意兩個人(進程)之間進行通信。然而每個人實際上從事的是不同的行業。有的人是律師,有的人外交官。比如說律師之間的通信,會用嚴格的律師術語,以免產生糾紛。再比如外交官之間的通信,必須符合一定的外交格式,以免發生外交誤會。再比如間諜通過暗號來傳遞加密信息。應用層協議是對信件內容進一步的用語規范。應用層的協議包括用于Web瀏覽的HTTP協議,用于傳輸文件的FTP協議,用于Email的IMAP等等。
TCP/IP通信傳輸流
?發送端在層與層之間傳輸數據時,每經過一層時必會被打上一個該層所屬的首部信息。反之,接受層在層與層之間傳輸數據時,每經過一層時會吧對應的首部消去。將數據信息包裝起來的做法稱為封裝。
IP、TCP、DNS
一、IP
?IP協議位于網絡層,作用是將各種數據包傳送給對方。在非局域網的網絡中,通常是經過多臺計算機和網絡設備中轉才能連接對方的。會利用下一站中轉設備的MAC地址來搜索下一個中轉目標,這時就需要ARP協議來將IP反查出對應的MAC地址。如下圖
二、TCP
?TCP位于傳輸層,提供可靠的字節流傳輸服務。TCP協議為了更容易傳輸大數據將數據分割,而且TCP能確認數據最終是否送達到對方。為了準確將數據送達目標處,建立TCP需要三次握手才能建立,而斷開需要四次揮手。具體的話這篇博客我覺得講得挺好的https://www.cnblogs.com/myvin/p/4862167.html
如果還不好理解,我在知乎上看到一個非常有趣的形容。
怎樣生動描述 TCP 的「三次握手」? - 吳毅凡的回答 - 知乎
https://www.zhihu.com/question/20879359/answer/88768186
三、DNS
?DNS是一個位于應用層的協議,提供域名到IP之間的解析服務。這個很好理解,就是IP地址一串數字不好記憶,可以通過訪問對應的域名,然后通過DNS來將域名轉為IP來訪問相應的服務器。
附一個各種協議與HTTP協議的關系圖
URI和URL
以前的我,一直對著兩個東西傻傻分不清楚,URL倒是經常用,URI到底是什么呢?URI(Uniform Resource Identifier)-統一資源標識符;URL(Uniform Resource Locator)-統一資源定位符。URI用字符串標識某一互聯網資源,而URL表示資源的地點,URL是URI的子集。如下全是URI:
ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of the protocol)
http://www.ietf.org/rfc/rfc2396.txt (also a URL because of the protocol)
ldap://[2001:db8::7]/c=GB?objectClass?one (also a URL because of the protocol)
mailto:John.Doe@example.com (also a URL because of the protocol) news:comp.infosystems.www.servers.unix (also a URL because of the protocol)
tel:+1-816-555-1212
telnet://192.0.2.16:80/ (also a URL because of the protocol)
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
由例子可以看出,提供的具體網絡地址的可以稱為URL。
參考博客URI與URL的區別:https://www.cnblogs.com/hust-ghtao/p/4724885.html
今天學習內容如上。\( ̄︶ ̄)/
參考資料:《圖解HTTP》+無所不知的度娘+各位大佬的博客