# 網路基礎概論 ###### tags: `Lidemy` `note` `網路` `internet` `NET101` [TOC] ---- ## HTTP >**超文本傳輸協定**(英語:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分佈式、協作式和超媒體訊息系統的應用層協定。HTTP是全球資訊網的資料通信的基礎。 > HTTP 就像是網際網路傳輸的說明書。 ### HTTP request ```sequence client->server: request 請求 server->client: response 回應 ``` 開發者工具 >> Network 中有列出所有進行的 request。 1. 瀏覽器傳 HTTP request 到 server 2. server 回傳一個 response ### DNS - Domain Name System ```sequence client->DNS Server: github.com 的位置在哪 DNS Server->client: 13.250.177.223 ``` comment line 的 `nslookup` 可以查 Domain Name 的 IP 位置在哪 發送 request 後,會將網址導到 `/private/etc/hosts[RO]` 檔案中設定的 IP 位置 ---- >安裝 `npm install request` 即可不透過瀏覽器發送 request 及接收 response。 ### HTTP Method | request methods | 功能 | | -- | -- | | `GET` | `GET` 方法請求展示指定資源。使用 `GET` 的請求只應用於取得資料。 | | `HEAD` | `HEAD` 方法請求與 `GET` 方法相同的回應,但它沒有回應主體(response body)。 | | `POST` | `POST` 方法用於提交指定資源的實體,通常會改變伺服器的狀態或副作用(side effect)。 | | `PUT` | `PUT` 方法會取代指定資源所酬載請求(request payload)的所有表現。 | | `DELETE` | `DELETE` 方法會刪除指定資源。 | | `CONNECT` | `CONNECT` 方法會和指定資源標明的伺服器之間,建立隧道(tunnel)。 | | `OPTIONS` | `OPTIONS` 方法描述指定資源的溝通方法(communication option)。 | | `TRACE` | `TRACE` 方法會與指定資源標明的伺服器之間,執行迴路返回測試(loop-back test)。 | | `PATCH` | `PATCH` 方法套用指定資源的部份修改。 | ### HTTP 狀態碼 [維基百科自己查](https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81)  ## TCP / IP ### IP 地址 固定 IP: 1. 位置固定 2. 可直接連線 3. server 一定會有一個固定 IP ---- 浮動 IP: 1. 每次連接的時候 IP 都不一樣 ---- 虛擬 IP: ```graphviz digraph hierarchy { node[shape=record]; rankdir="BT"; subgraph level0{ server [label="{<f0> 數據機|<f1> 20.46.77.58 \n固定 or 浮動}" shape=Mrecord]; } subgraph cluster_level1{ label ="內網"; com1 [label="{<f0> 電腦1|<f1> 192.168.0.20}" shape=Mrecord]; com2 [label="{<f0> 電腦2|<f1> 192.168.0.23}" shape=Mrecord]; com3 [label="{<f0> 電腦3|<f1> 192.168.0.31}" shape=Mrecord]; {rank=same; com1, com2, com3} } com1->server [dir="forward"]; com2->server [dir="forward"]; com3->server [dir="forward"]; } ``` ### Port 連接埠 指定傳送 request 到指定電腦上的哪個服務。 ## API - Application Programming Interface 透過 API 可以讓雙方交換資料。 ### API 與 Web API Web API => HTTP API 透過 HTTP 協定的 API ## 資料格式 ### XML - Extensible Markup Language 利用標籤來標明屬性的格式 ``` <?xml version="1.0" encording="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Reminder body</body> </note> ``` ### JSON - JavaScript Object Notation JavaScript 的物件所產生的資料格式,跟 JavaScript 相容性好,檔案大小也比 XML 小。 目前的資料格式都以 JSON 為主。 ``` "note": { "to": "Tove", "from": "Jani", "heading": "Reminder", "body": "Reminder", } ``` 將 JSON 格式轉換成 JavaScript 的物件。 ``` js const jsonObject = JSON.parse(body) // JavaScript 的物件 ``` 將 JavaScript 的物件轉換成 JSON 格式。 ``` js const jsonString = JSON.stringify(jsonObject) // JSON 格式的字串 ``` ## REATful 他不是一種協定,是一種「風格」。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up