1. 程式人生 > >伺服器相關

伺服器相關

本文主要講述以下內容:

  • 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)個埠,每個埠提供一種服務。

  1. 0 到 1023(2的10次方減1)號埠是留給系統使用的,你只有擁有了管理員許可權後(以管理員身份開啟git bash),才能使用這 1024 個埠。

  2. 其他埠可以給普通使用者使用

  3. 如果一個埠正在提供服務,也就是被佔用了,那麼就不能再使用這個埠。除非你先停掉正在佔用這個埠的服務。以後會經常遇到這個問題。

使用 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!