網路基礎概念
- Client & Server
- TCP(Transmission Control Protocol)
- HTTP (Hypertext Transfer Protocol)
Client & Server
一般來說傳輸資料的兩端會分為 客戶端 ( Client ) 跟 伺服器端 ( Server ) - Client: 以網頁來說就是你的瀏覽器、電腦,主要會發送 「 請求 request 」到 Server 端
- Server: 收到 request 開始處理資料,完成後會回傳 「回應 response 」到 Client 端
以下為簡易程序:
- 瀏覽器發送 HTTP request 到 Server
- request 包含 head 跟 body
- Server 回傳 response 到瀏覽器
- response 包含 head 跟 body
- 瀏覽器進行解析 html、css、js、圖片檔案…等等,渲染成可讀性高的網頁內容
再詳細一點的request(但還是很簡易):
- 一開始先發送 request 到副檔名為 .html 的 url
- DNS(域名系統) 解析成 IP 位置
- Server 接收到 request、 回傳 response
- 瀏覽器解析 html 檔案
- 根據 html 內容,一但發現有 CSS、JS、圖片檔案,再發送各檔案的 request(這裡就1.2.3步驟那邊)
- 發送完包含在 html 所有資源的 request
- 開始下載資源 ( CSS、JS、圖片檔 )
- 進行渲染網頁
TCP(Transmission Control Protocol)
三項交握(Three-way handshake)
舉個A(Client),B(Server)互相傳遞資料的例子:
- A先傳給B資料 — A傳送功能正常
- B接收到資料 — B接收功能正常
- B回傳A資料(告知已收到) — B傳送功能正常
- A接收到資料(知道B接收功能正常) — A接收功能正常
- A再回傳資料給B,讓B知道他傳送的資料已收到
- B接收到資料(知道A接收功能正常) — B傳送功能正常
A–>B, B–>A, A–>B
以上為三次的傳遞動作,這樣A,B都知道雙方的接收跟傳送功能都正常,就可以正常互傳遞資料,不過次數不是一定,也可以三次以上,但三次算最低限度
TCP為通訊協定,必須制定一些協定,才可以保證資料傳送接收正常
網路分層:
1 | - 保證收發正常(TCP) --- 如何傳送資料 |
HTTP (Hypertext Transfer Protocol)
應用在HTTP的網路分層:
這裡加上了HTTP協定
1 | - 訂機票(HTTP) --- 實際應用 |
HTTP通訊協議:
- 標準化內容格式
- html分為header & body
- 狀態碼(status code)顯示傳送接收結果
- 200成功,3XX重新導向,4XX客戶端錯誤,5XX伺服器端錯誤
- 請求資料方法(HTTP method)
- GET接收,POST傳送,DELETE刪除,PUT更新(覆蓋資料),PATCH更新(針對現有資料更新)
Port(連線埠): 服務代碼
- 傳送到指定的Server IP : Port ,才能使用那個網頁的服務
- EX. server IP:80 — HTTP伺服器服務代碼(瀏覽器就是80,默認碼)
- EX. server IP:21 — FTP伺服器服務代碼
我們把上面的HTTP網路再分詳細一點
網路分層:
1 | - 訂機票(HTTP) / 訂食物(FTP) --- 實際應用 |
另外,傳送資料協定也有其他種:
UDP(User Datagram Protocol)用戶數據報協議,用於即時性傳送資料
EX. live直播.即時通話或是即時視訊,因為重點在傳輸速度,但不可保證收發資料正常
最後把上面分層整理一下,變成下面這樣:
TPC/IP 四層模型
1 | - 訂機票(HTTP) / 訂食物(FTP) --- 實際應用 應用層 |
網域名稱系統(DNS:Domain Name System)
輸入網址後利用DNS查詢對應的IP位址,也就是把網址轉換成IP位址,或可以逆向操作
網域層級表示:
DNS 的查詢流程:
- client side 先向DNS伺服器查詢網址的IP位址
- DNS會先查詢自己記憶體內有沒有暫存這網址
- 沒有就轉向Root domain查詢
- Root domain沒查詢到在往Top level domain查詢
- 以此類推直到找到此網址IP
- 如果我們查尋同一個網站,電腦就會再hosts將這網站的IP位址紀錄下來,這樣一來以後只要重新查找相同網站就會從hosts找到並馬上連到那個網站,但假如查找沒搜尋過的網站,電腦就會找尋比較久,這段時間其實就是電腦再向DNS伺服器查尋IP位址