# 作業系統(三)basic of network services ###### tags: `作業系統` :::info 請多加運用GOOGLE ::: ## ports 網路port是一個虛擬的通訊端口,用於在計算機之間進行通訊和數據傳輸。在TCP/IP協議中,每個通訊端口都與一個特定的應用程序或服務相關聯。透過端口,計算機可以識別發送到哪個應用程序或服務的數據,從而確保數據能夠準確地到達目的地。網路port通常用一個16位的數字表示,範圍從0到65535, ## 常用service 1. SSh SSH(Secure Shell,安全外殼協定)是一種用於安全遠程登錄或遠程管理計算機的協定。它允許用戶通過網絡對遠程計算機進行加密的遠程登錄和指令操作,並安全地傳輸敏感資訊。SSH使用加密技術來確保通信的保密性和完整性,從而有效防止敏感資訊在傳輸過程中被竊取或竄改。通常,SSH用於遠程登錄和文件傳輸,並且被廣泛應用於管理遠程伺服器和網絡設備,如運營商的路由器、交換機、Web伺服器等。SSH的使用者身份驗證方式包括密碼驗證、公鑰驗證等,其中公鑰驗證方式提供了更高的安全性。SSH通常運行在TCP的22端口上。 3. HTTP HTTP(Hypertext Transfer Protocol,超文本傳輸協定)是一種用於在網際網路上傳輸超文本的應用層協定。它是一種客戶端-服務器協定,用於從網頁伺服器傳輸超文本到用戶的瀏覽器。HTTP的基本功能是允許瀏覽器向伺服器發出請求,然後伺服器返回相應的資源。這些資源可以是HTML檔案、圖片、音頻檔案等等。HTTP是建立在TCP/IP協定上的,通常使用TCP的80端口進行通信。HTTP是一種無狀態協定,這意味著每個單獨的請求之間沒有記憶。 3. HTTPS HTTPS(Hypertext Transfer Protocol Secure,安全超文本傳輸協定)是HTTP的加密版本,用於安全地傳輸資訊。它使用SSL(Secure Sockets Layer,安全套接層)或TLS(Transport Layer Security,傳輸層安全性)協定來加密資料傳輸。HTTPS的主要目的是確保在網絡上傳輸的資訊不會被攔截、竊取或竄改,從而提供更高的安全性和隱私保護。HTTPS的使用在網際網路上越來越普遍,特別是在需要保護用戶敏感資訊(如信用卡號碼、密碼等)的網站上,如銀行、電子商務平台等。HTTPS通常使用TCP的443端口進行通信。 4. DNS DNS(Domain Name System,域名系統)是互聯網上用於將域名轉換為IP地址的分散式命名系統。它允許人們使用易於記憶的域名(example.com)來訪問互聯網上的各種服務和資源,而不必記住它們的IP地址。DNS的運作原理大致如下:當用戶在瀏覽器中輸入一個域名時,瀏覽器會向本地DNS伺服器發送一個DNS查詢請求。如果本地DNS伺服器已經緩存了該域名的IP地址,則直接返回結果;否則,它會向其他DNS伺服器發送請求,直到找到包含該域名對應IP地址的DNS伺服器。一旦找到,本地DNS伺服器將結果返回給瀏覽器,瀏覽器便可以通過該IP地址訪問相應的網站或服務。 DNS的分散式架構使其具有高度的可靠性和可擴展性,同時也提供了域名解析的快速性。  ## SSH實作 openssh server安裝 ``` sudo apt install ssh ```  ssh 連接 ``` ssh user@127.0.0.1 ``` or ``` ssh -l user 127.0.0.1 ```  ## HTTP實作 在實作上實現 HTTP 伺服器可以使用多種工具和框架,其中兩個最常見的是 Nginx 和 Apache2。 Nginx 是一個輕量級、高效的 Web 伺服器,也是一個反向代理伺服器。它的特點包括低記憶體消耗、高並發處理能力和事件驅動架構。以下是在 Debian 上使用 Nginx 實現 HTTP 伺服器的步驟: 1. 安裝 Nginx:在 Debian 中,你可以使用 apt package manager 安裝 Nginx。輸入以下命令: ``` sudo apt update sudo apt install nginx ``` 2. 啟動 Nginx 服務:安裝完成後,啟動 Nginx 服務: ``` sudo systemctl start nginx ``` 3. 設定 Nginx:Nginx 的設定文件位於 /etc/nginx/nginx.conf 和 /etc/nginx/sites-available/。你可以根據你的需求編輯這些文件,例如配置伺服器區塊、虛擬主機和代理設定。 4. 測試伺服器:當你完成設定後,重新載入 Nginx 以使設定生效: ``` sudo systemctl reload nginx ``` 5. 檢查 Nginx 狀態:可以使用以下命令檢查 Nginx 服務的運行狀態: ``` sudo systemctl status nginx ```  6. 建立http連線 ``` sudo apt install curl #安裝curl curl 127.0.0.1 ```  在瀏覽器輸入伺服器IP  ### NGINX 進階設定 1. 修改檔案 NGINX 預設html檔案路徑在 /var/www/html, 可修改底下檔案改變網站內容  2. 代理伺服器 網頁代理伺服器是一種位於客戶端和網頁伺服器之間的中介軟體,負責處理來自客戶端的請求,並將其轉發到適當的網頁伺服器,然後將伺服器的回應返回給客戶端。這種架構可以提高網路安全性、性能和可擴展性,並允許在後端伺服器之間進行負載平衡。  經入 /etc/nginx/sites-enabled/ ``` cd /etc/nginx/sites-enabled/ ``` 刪除預設檔案 ``` sudo rm default ``` 新建檔案如下 ``` server { listen 80; location / { proxy_pass http://example.com; } } ``` 重啟NGINX伺服器 ``` sudo systemctl restart nginx.service ```  ## HTTPS實作 ### SSl #### Self-Signed SSL ``` sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfsigned.key -out selfsigned.crt ```  provide information below  #### set ssl nginx ``` sudo mkdir /etc/nginx/ssl # create ssl folder sudo cp * /etc/nginx/ssl # copy key and crt to nginx ssl folder ``` config /etc/nginx/site-enable/  ## DNS實作 在Debian 12上實作DNS伺服器需要安裝和配置BIND(Berkeley Internet Name Domain)軟體。以下是在Debian 12上設置DNS伺服器的步驟: install bind9 server ``` sudo apt update sudo apt install bind9 ``` config bind9 server named.conf.local ``` zone "test.tw" { type master; file "/etc/bind/test.tw.zone"; }; ``` create /etc/bind/test.tw.zone ``` $TTL 86400 @ IN SOA ns1.test.tw. admin.test.tw. ( 2022042901 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Negative Cache TTL @ IN NS ns1.test.tw. ns1 IN A 192.168.4.99 vmtest IN A 192.168.4.99 ``` restart bind9 server ``` sudo systemctl restart bind9 restart service sudo systemctl status bind9 # show status ``` test dns server ``` nslookup vmtest.test.tw 192.168.4.99 ```  config forwarding /etc/bind/named.conf.options ``` forwarders { 8.8.8.8; }; // forwards unknown dns query to 8.8.8.8(google dns server) ```
×
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