雖然寫代碼也有必定的年頭了,可是對於一些基礎概念,仍是很模糊。這在後來的學習過程當中,帶來了很大的痛苦,因此痛定思痛,決心從新學習這些概念。並把本身的理解和查詢的資料作一些整合,便於之後查閱!html
TCP/IP協議是一個協議集合,包括咱們常見的HTTP協議、IP協議、TCP協議、DNS協議等,都屬於TCP/IP協議。安全
要想知道TCP/IP是什麼,咱們首先要知道爲何要有這個協議?拿一個生活中簡單的例子來講,若是咱們想作一個櫃子,那咱們就要告訴木匠,櫃子要多高、多寬、多長,樣式是什麼樣的、材質是什麼樣的等等,這樣最後作出的櫃子才能和咱們想要的櫃子一致,那麼這些規則就能夠理解爲一種口頭協議。一樣的,兩臺電腦想要在全球億萬臺計算機中完成準確、無誤的通訊,大量的協議支持是必不可少的。性能優化
TCP/IP協議中有一個重要的概念是分層,每一個層級完成不一樣的功能。TCP/IP協議按照層次分爲如下四層:應用層、傳輸層、網絡層、數據鏈路層。爲何要分層?分層的目的就是爲了層級之間的功能相對獨立,互不影響。服務器
TCP/IP通訊數據流網絡
HTTP 是基於 TCP/IP 協議的應用層協議。它不涉及數據包(packet)傳輸,主要規定了客戶端和服務器之間的通訊格式,默認使用80端口。併發
請查看JAVA基礎知識|IP協議高併發
IP協議的做用在於把各類數據包準確無誤的傳遞給對方,其中兩個重要的條件是IP地址,和MAC地址。因爲IP地址是稀有資源,不可能每一個人都擁有一個IP地址,因此咱們一般的IP地址是路由器給咱們生成的IP地址,路由器裏面會記錄咱們的MAC地址。而MAC地址是全球惟一的,除去人爲因素外不可能重複。性能
IP實現兩個基本功能:尋址和分段學習
尋址功能就是在源地址與目標地址之間創建鏈接,這個過程須要使用ARP協議(Address Resolution Protocol)。舉一個現實生活中的例子,若是你想從北京的家裏到上海迪士尼樂園玩,那麼首先你須要走到地鐵站,而後坐車到高鐵站,再坐高鐵到上海火車站,而後再轉地鐵到上海迪士尼樂園。IP協議完成的工做就是在兩臺電腦之間找到一條這樣的路徑,從而完成數據的交互。大數據
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。IP 間的通訊依賴 MAC 地址。在網絡上,通訊的雙方在同一局域網(LAN)內的狀況是不多的,一般是通過多臺計算機和網絡設備中轉才能鏈接到對方。而在進行中轉時,會利用下一站中轉設備的 MAC 地址來搜索下一個中轉目標。這時,會採用 ARP 協議,並根據通訊方的 IP 地址就能夠反查出對應的 MAC 地址,從而進行精肯定位,完成尋址的功能。
分段功能是爲了適應不一樣網絡對包大小的要求,對數據進行從新組裝。
如下是圖示:
若是說IP協議是找到對方的詳細地址。那麼TCP協議就是安全的把東西帶給對方。各有分工,互不衝突。
按層次分,TCP屬於傳輸層,提供可靠的字節流服務。什麼叫字節流服務呢?這個名字聽起來讓人不知因此然,下面聽下我通俗的解釋。所謂的字節流,其實就相似於信息切割。好比你是一個賣自行車的,你要去送貨。安裝好的自行車,太過龐大,又不穩定,容易損傷。不如直接把自行車拆開來,每一個零件上都貼上收貨人的姓名。最後送到後按照把屬於同一我的的自行車再組裝起來,這個拆解、運輸、拼裝的過程其實就是TCP字節流的過程。
咱們看下嚴謹的學術表達是怎樣的:
所謂的字節流服務(Byte Stream Service)是指,爲了方便傳輸,將大塊數據分割成以報文段(segment)爲單位的數據包進行管理。而可靠的傳輸服務是指,可以把數據準確可靠地傳給對方。一言以蔽之,TCP 協議爲了更容易傳送大數據才把數據分割,並且 TCP 協議可以確認數據最終是否送達到對方。
爲了確保信息可以確保準確無誤的到達,TCP採用了著名的三次握手策略(three-way handshaking).下面我寫一段對話來模擬下這三次握手。
TCP在創建鏈接的時候須要三次握手,在關閉鏈接的時候,還須要四次握手。這在http請求的過程當中消耗了大量的時間,當你的程序須要考慮高併發,請求量過大的時候,須要考慮這部分的性能優化。
2.四、DNS協議(Domain names System)
和HTTP協議同樣是處於應用層的服務,提供域名到IP地址之間的解析服務。
互聯網之間是經過IP地址通訊的,可是IP地址並不符合認得記憶習慣,人喜歡記憶有意義的字詞。因此DNS服務就爲了解決這個問題而生了。其實很好理解,形如咱們電腦中host文件。
192.168.1.11 roverliang.com
當咱們訪問roverliang.com 的時候,電腦便不會去外網服務器上查詢了,直接去訪問192.168.1.111。這是一個簡單的域名劫持,足以說明DNS的涵義了。
下面是咱們訪問一個網頁,各類協議在裏面起的做用。