# 餅乾開會!
---
幹訓時有說到,網址會送到DNS轉成IP連過去
所以透過網址,我們已經定位到伺服器了
---
只是這個伺服器可能不只提供網頁服務,還有可能有檔案管理、遊戲運算 8啦888…
而且對伺服器而言,一個伺服器也不可能只連一台用戶端
---
## L4--TCP/UDP:找到應用程式!
---
TCP的好處:
* Connection-Oriented(連結導向)
* Reliable(可靠性)
* Flow Control(流量控制)
UDP的好處:
* 快
---
在網址後面會出現的,冒號後的這串數字

就是埠(ㄅㄨˋ)口號碼(port number)
對於我們用戶端而言,用來確認伺服器的「服務項目」
對伺服器而言,則可以用來確定「應用程式」!
---
* 0~1024 :讓各種協定使用的保留號
* 1025~49151 :可以到IANA(網際網路號碼分配局)註冊
* 49152~65535:是動態分配用的保留號
---
TCP與UDP都有使用埠號、格式/範圍也相同,且同樣由IANA管理
口語上默認講到「埠號」都是先想到tcp埠
---
在傳訊息之前能夠以號碼分辨不同的程式了!
UDP所需要的資訊也大概如此
但如果咱得保證訊息的順序也正確呢…?
---
## 會議(session)
---
建立連線!
TCP--三次握手(3-way handshake)

---
在連線建立後,各種APP就可以透過session ID確定是哪個程式在何時傳了什麼~
---
斷開連結!
TCP--四次分手(4-way handshake)

---
## L7--簡單帶到:關於http
---
至此,我們有一個穩定的連線可以傳「訊息」了
而L7的內容也很直接,就是規定這「訊息」要是什麼格式?
---
而大家都知道http是連接網頁用的
它就是規定了各種的文件tag,最終被包裝成我們熟知的HTML等格式和語言~
---
在連線的部分,L4的TCP/UDP給的port number保留了讓不同應用使用的號碼
而http的預設埠號是:80
---
但基於安全考慮,網頁伺服器通常會用埠口轉發(port forwarding)等等方式,叫伺服器不要直接收:80的資料,而是把連線轉到其他的埠口,再由該埠口傳送資料
---
找得到主機了、找得到程式了、有文件規則了…至此,網路協定5層連線建立完成!
---
## 你是誰--電腦與使用者!
---
現在人手已經不只一個網路設備,一台電腦也甚至可能不只一個使用者會用
在確定連線之上,我們還得處理各個使用者的「個人化」
---
但http是無狀態(stateless)的協定,對任何時候傳送的訊息都一視同仁
所以即使你要的是同一個網站上的不同頁面,在網路上的兩次請求完全是可以分開看待的
---
## 餅乾!
---


---
cookie就是一串文字,可以紀錄你目前建立的session ID、瀏覽記錄、點擊連結…(不及備載)
各種“專屬於你的動作”的資訊,都在cookie裡面!
---
在連到伺服器時,把cookie一起丟出去,這樣伺服器就知道你的設定了
但cookie是不加密直接儲存在瀏覽器裡面的,因此能拒絕盡量拒絕…
---
電腦如何拿到餅乾?

---
# fin.

{"title":"","contributors":"[{\"id\":null,\"add\":70,\"del\":9}]"}