伺服器相關
本文主要講述以下內容:
TCP 面試題
IP 初步瞭解
埠的理解
伺服器與客戶端的溝通流程
一.TCP 傳輸控制協議(Transmission Control Protocol)
簡答:TCP 可靠(我發一個請求,成功不成功我是知道的,比如訪問谷歌,如果成功,我就顯示搜尋框頁面 ,如果失敗,我就顯示一個錯誤頁面)、面向連線、相對 UDP 較慢;UDP 不可靠,不面向連線、相對 TCP 較快。搞定。
簡答:每次建立連線前,客戶端和服務端之前都要先進行三次對話才開始正式傳輸內容,三次對話大概是這樣的:
1. 客戶端:我要連線你了,可以嗎
2.服務端:嗯,我準備好了,連線我吧
3. 客戶端:那我連線你咯。
4. 開始後面步驟
二.IP網路協議(Internet Protocol)
1.從電信買來寬頻,電信為你提供DNS服務,接著你買了一個路由器提供wifi,只要路由器連上電信的伺服器,路由器就會有一個外網IP,這是你在網際網路的地址
2.同時路由器在你家為你建立了一個內網,它為自己分配一個內網IP,併為每臺裝置分配不同的IP,IP格式一般為192.168.xxx.xxx,
3.所謂IP協議就是為計算機網路相互連線進行通訊而設計的協議。內網之間可以互相訪問,外網之間可以互相訪問,但是內網必須通過路由器才能訪問外網,因為路由器同時具有內網IP和外網IP,所以路由器充當一個閘道器的作用,必不可少。
4.每臺裝置都有本地IP地址為127.0.0.1 ,永遠表示裝置自己,
5.host可以設定任何域名對應的IP, hosts 檔案裡會有一行127.0.0.1 localhost,意思就是 localhost 指向 127.0.0.1,所以 localhost 也表示裝置自己
三.埠Port
如果想要訪問一個裝置(前提是你使用的是 TCP 或 UDP 協議),只指定IP 還不行,還必須指定埠,比如指定 80 使用HTTP服務,指定443使用HTTPS服務,一臺裝置共有 65535(2的16次方減1)個埠,每個埠提供一種服務。
-
0 到 1023(2的10次方減1)號埠是留給系統使用的,你只有擁有了管理員許可權後(以管理員身份開啟git bash),才能使用這 1024 個埠。
-
其他埠可以給普通使用者使用
-
如果一個埠正在提供服務,也就是被佔用了,那麼就不能再使用這個埠。除非你先停掉正在佔用這個埠的服務。以後會經常遇到這個問題。
使用 HTTP 協議訪問另一個 IP 時,必須同時提供 IP 和埠號,缺一不可。
瀏覽器預設80埠(http),所以一般在網頁上http請求輸入地址可以不指定埠號
四.伺服器與瀏覽器的溝通過程
伺服器:一臺電腦就是一臺伺服器,並且要聯網,CPU要高,記憶體要大,是一個沒有顯示器的主機,使用伺服器需用SSH遠端登入進行連線。
1.當瀏覽器輸入url,缺協議,給你加http,缺埠,給你80,缺路徑,給你一個/,湊成一個完整的url,
2.瀏覽器向 DNS服務傳送詢問得到伺服器IP地址,
3.瀏覽器向這個IP地址發起HTTP請求,
4.伺服器接受到請求,分析http請求報文返回http響應報文,瀏覽器下載返回報文中的內容
5.如果檔案是html,瀏覽器進行解析html,遇到靜態檔案img,css,js,依次傳送請求,瀏覽器繼續下載,最終將頁面呈現給使用者
HTTP 路徑不是檔案路徑!!!/xxx.html 不一定對應 xxx.html 檔案,檔案格式由http頭的Content-type 決定,中文解析錯誤是因為沒有使用編碼方式,node新增請求頭如下:response.setHeader('Content-Type', 'text/html; charset=utf-8')
尼瑪邪門!哈哈哈哈哈哈 惡搞一下
END!