1. 程式人生 > >【WLAN從入門到精通-基礎篇】第11期——WLAN接入認證-Portal

【WLAN從入門到精通-基礎篇】第11期——WLAN接入認證-Portal

【轉自】http://support.huawei.com/huaweiconnect/enterprise/thread-149867.html

1.1 無處不在的Portal認證

場景一:北京國際機場,巖鬆開啟iPhone搜尋Wi-Fi訊號,看到機場Wi-Fi登入頁面,輸入手機號獲取密碼,輸入密碼後連線Internet刷微博。

場景二:某餐館,顧客小e拿出手機掃了餐桌上的二維碼,彈出“連線網路”頁面,單擊“連線網路”後以匿名方式連線Internet,在朋友圈和大家分享美食。

場景三:某酒店,出差人員張經理在酒店辦理入住手續時獲得以房間號為帳號和一個隨機密碼。通過手機連線酒店提供的Wi-Fi

,輸入帳號和密碼後下載出差地的離線地圖。

這幾種連線Internet的認證方式有一個共同點,就是都會彈出登入頁面,術語稱之為Portal認證頁面。

Portal認證有如下優點:

l不需要安裝客戶端。使用Web頁面認證,使用方便,減少客戶端的維護工作量。

l便於運營。可以在Portal頁面上開展業務拓展,如廣告展示、責任公告、企業宣傳等。

l提供計費功能,通過計費功能來限制終端接入網路的時長。

Portal認證優勢明顯,故此無處不在。

1.2 什麼是Portal認證

根據國家接入網際網路的相關規定,在接入網際網路之前必須通過身份認證。考慮到移動終端的複雜性,在終端上安裝認證客戶端進行身份認證是不現實的。而幾乎全部的智慧終端都裝有

Web瀏覽器。身份認證最好是能夠通過Web頁面的方式進行。

Portal認證(也稱為Web認證)能夠基於網頁的形式向用戶提供身份認證和個性化的資訊服務。

Portal認證系統的典型組網方式由四個基本要素組成:認證客戶端、接入裝置、Portal伺服器與AAA伺服器。

5698bcfce2de0.png

l認證客戶端:執行HTTP協議的瀏覽器或執行Portal客戶端軟體的主機。

l接入裝置:交換機、路由器或ACAccess Controller)等寬頻接入裝置的統稱。如果把網路看成一棟高樓,那接入裝置就是門衛,要進屋必須由門衛放行。接入裝置主要有三方面的作用:

在認證之前,將認證網段內使用者的所有HTTP請求都重定向到

Portal伺服器。

在認證過程中,與Portal伺服器、AAA伺服器互動,完成身份認證/授權的功能。

在認證通過後,允許使用者訪問被管理員授權的網際網路資源。

lPortal伺服器:接收Portal客戶端認證請求的伺服器端系統,提供免費門戶服務和基於Web認證的介面,與接入裝置互動認證客戶端的認證資訊。

Portal伺服器可分為內建Portal伺服器和外接Portal伺服器兩種。通常交換機/AC會內建Portal伺服器,帳號和密碼儲存在交換機/AC。受限於接入裝置儲存空間、功能和效能,內建Portal伺服器只適合功能簡單、接入人數少的場景。例如小型餐館提供的連線Internet服務。

如果需要實現微信接入、簡訊接入等複雜的功能,考慮到接入裝置效能和認證體驗,內建Portal伺服器恐怕難以勝任,需要具有獨立於接入裝置之外的硬體伺服器來承載Portal認證業務。

受益於獨立的硬體伺服器提供充足的儲存空間和效能保證,外接Portal伺服器在功能上可獲得充分的擴充套件。例如華為Agile Controller伺服器中的Portal伺服器元件,可在體育館、機場、地鐵、大型商場等使用者密集場館提供可靠的認證和接入服務。

lAAA伺服器:與接入裝置進行互動,完成對使用者的認證、計費和授權。

不同的使用者接入網路的許可權可能會不一樣。例如訪客認證後只允許訪問Internet,而員工認證能夠訪問內部的業務系統。終端認證後訪問網路的許可權大小,是由AAA伺服器說了算。

Portal認證可同時應用於有線終端認證和無線終端認證,在網路中可打造有線無線一體化接入方案。有線終端的Portal認證可由交換機負責接入,而無線終端Portal認證可由無線接入裝置來完成。Portal認證技術成熟,被廣泛應用於運營商、連鎖快餐、酒店、學校等網路。

1.3 常見部署方案

1.3.1 資源劃分

網路中的各種資源對企業的重要程度是不一樣的。為了對不同級別的網路資源進行區別對待,可以把整個網路劃分成2個區域:

l認證前域

終端在認證前允許訪問的網路資源。認證過程需要依賴的網路資源都需要在認證前域開放。例如認證伺服器(Portal伺服器、AAA伺服器)、DHCP伺服器、DNS伺服器。

認證前域是整個網路唯一的,所有的終端使用者共享一個認證前域。

l認證後域

需要由Portal閘道器保護的網路資源。在終端使用者通過認證的情況下才允許訪問的網路資源。例如ERP系統、財務系統。

與認證前域的唯一性不同,不同的終端使用者的認證後域可能會不一樣。例如訪客認證通過後只能訪問Internet,而員工認證通過後除了能夠訪問Internet,還能訪問內部網路資源。

1.3.2 組網方式

如下圖所示,為減輕單點裝置壓力、減少出錯機率,有線終端與無線終端的認證點分開部署:

l匯聚層交換機作為有線終端Portal認證的接入裝置。

lAC以旁路方式部署在核心層裝置的旁邊,作為無線終端Portal認證的接入裝置。

5698bd137fa9b.png

此種方案下,要求ACAP之間採用隧道轉發模式,同時匯聚層交換機需放行CAPWAP

5698bd26acf8f.png

AC之所以選擇以旁路方式部署在核心層而不是匯聚層,是基於如下考慮:

l如果AC部署在匯聚層,部署位置過低,難以實現對整個網路的AP進行統一的管理。

l如果AC採取直連方式部署,AC容易成為網路效能瓶頸,並且容易造成單點故障。

對於有線終端,選擇將認證點部署在匯聚層交換機,是由於以下幾點原因:

l在匯聚層部署接入裝置,數量比在接入層部署接入裝置要少,減輕管理員維護裝置的壓力。

l接入裝置的部署位置比在核心層部署要低,能夠在網路的更低的位置對非授權終端進行隔離,安全性比核心層Portal認證要高。

Portal認證的匯聚層部署方式較為普遍,適用於大、中、小各種園區組網。如果園區組網較小或者網路改造場景,為減少管理員維護量或者為減少企業**、避免大規模更換裝置時,也可以選擇把認證點部署在核心層。

1.4 認證原理

1.4.1 認證方式

根據使用者需求和網路現狀,Portal認證可以部署在網路的各個層次,例如,上例中無線終端Portal認證部署在核心層、有線終端Portal認證部署在匯聚層。由於位於不同網路層次的裝置能夠獲取到的終端資訊不同,所以Portal認證是採用的認證方式也不一樣:

l當終端與接入裝置之間為二層網路時,接入裝置可以獲取到終端的MAC地址,則接入裝置可以利用IPMAC地址來識別終端,此時可配置Portal認證為二層認證方式。

l當終端與接入裝置之間包含三層網路時,即終端與接入裝置之間存在三層轉發裝置時,接入裝置不一定能獲取到終端的MAC地址,只能以IP地址唯一標識使用者,此時需要將Portal認證配置為三層認證方式。

其中,二層認證方式認證流程簡單,安全性較高,但是組網不靈活;三層認證方式組網較為靈活,容易實現遠端控制,但是由於只能通過IP地址來標識使用者,導致安全性相對不高。

1.4.2 認證上線

有線、無線Portal無論在哪種組網場景下,基本流程都類似。下面以機場候機旅客接入網際網路,RADIUS伺服器和Portal伺服器使用華為Agile Controller為例,說明Portal認證的上線流程。

l客戶端與Portal伺服器之間互動使用HTTP協議。

lPortal伺服器與接入裝置之間互動使用Portal V2協議,Portal協議用了CHAPPAP認證。

l接入裝置與RADIUS伺服器之間互動使用RADIUS協議。

5698bd4929b76.png

旅客開啟手機Wi-Fi,選擇機場提供的免費網路熱點,獲取由機場分配的IP地址。

旅客訪問網際網路,HTTP報文經過接入裝置。接入裝置發現該終端處於未上線狀態,於是通過Web重定向技術向終端傳送Portal認證連結。

5698bd5dce6a6.png

手機的IP地址是10.20.238.199,使用TCP埠號47502(隨機埠)。

Portal伺服器的IP地址是10.20.5.51,使用TCP埠號8080(固定埠)。

連結http://10.20.5.51:8080/PortalServer/portal.jsp?url=http://comm.inner.bbk.com,“http://10.20.5.51:8080/PortalServer/portal.jsp”是Portal認證頁面的地址。“http://comm.inner.bbk.com”是終端在認證前訪問的原始地址,記錄這個地址是為了在認證後自動跳轉到客戶在認證前在Web瀏覽器位址列輸入的原始網址。

雖說旅客訪問的是http://comm.inner.bbk.com,但實際顯示的是Portal認證的頁面。

1.旅客輸入手機號,單擊“獲取密碼”。旅客手機收到驗證碼簡訊,在認證頁面輸入手機號和密碼,單擊“認證”,對應上面流程圖的(1),下面的步驟以此類推。

5698bd7b8eea3.png 

2.Portal伺服器根據終端的IP地址查詢負責接入控制的裝置。

3.Portal伺服器與接入裝置建立可靠連線之前,Portal伺服器會與接入裝置核對Portal金鑰,對應於“REQ_CHALLENGE”訊息。

4.如果兩邊的Portal金鑰配置一致,則校驗通過,接入裝置會回覆“ACK_CHALLENGE”訊息。

5698bd8a9b861.png

Portal伺服器的IP地址是10.20.5.51,使用UDP埠號50200(固定埠)。

ACIP地址是10.20.5.254,使用UDP埠號2000(固定埠)。

從報文分析結果可看出來,本次Portal伺服器與接入裝置之間互動使用CHAP

5.Portal金鑰校驗通過後,Portal伺服器向接入裝置傳送終端上線請求訊息“REQ_AUTH”,訊息中包含使用者資訊。

5698bdb24d871.png

6.接入裝置收到上線請求訊息後把使用者資訊和加密後的密碼封裝在RADIUS報文,通過“Access_Request”發給RADIUS伺服器。

ACIP地址是10.20.5.254,使用UDP埠號1812(固定埠)。

RADIUSIP地址是10.20.5.51(與Portal伺服器安裝在同一臺PC伺服器),使用UDP埠號1812(固定埠)。

7.如果帳號和密碼,與RADIUS伺服器上儲存的帳號和密碼一致,則RADIUS伺服器回覆Access_Accept(以下發ACL為例)。

5698be109f879.png

Access_Accept訊息可以看到,ACL ID是在RADIUS11號屬性Filter-Id,認證通過後下發給接入裝置的ACL ID3001

8.RADIUS伺服器需要通過Accounting_Request訊息通知接入裝置開始計費請求,表示手機在RADIUS伺服器開始上線。

9.接入裝置向RADIUS伺服器回覆Accounting_Response訊息,手機已經開始計費,在RADIUS伺服器上線成功。

5698be2c7ce73.png

計費使用UDP埠,ACRADIUS伺服器分別使用18121813埠。

5698be4a65158.png

華為Agile Controller的計費不是真實意義上的計費,只是通過計費報文記錄旅客的上下線時間,維護旅客的線上狀態。

機場接待旅客的人數和Internet連線服務都是有限制的。為了避免RADIUS伺服器和Portal伺服器資源耗盡,管理員會限制旅客的線上時長。例如旅客只能上網衝浪4小時,超時後自動斷開連線。

10.ACPortal伺服器回覆ACK_AUTH,表示終端認證成功。

11.Portal伺服器通知手機認證成功,在一個新的瀏覽器視窗推出 http://comm.inner.bbk.com頁面(旅客在認證前訪問的頁面),旅客可以上網衝浪。

1.4.3 離線檢測

Portal使用者離線檢測是為確保接入裝置上或伺服器上的使用者線上資訊正確有效。檢測方式常用的有ARP探測方式和心跳報文方式。

1.4.3.1 ARP探測

ARP探測就是利用接入裝置定期向已經通過認證的客戶端傳送單播ARP請求報文。由於接入裝置和客戶端之間是一個二層網路,因此在網路正常的情況下,客戶端一旦收到來自接入裝置的ARP請求報文則必定會響應一個ARP應答報文。如果接入裝置連續若干次沒有收到來自客戶端的ARP應答報文,則接入裝置會主動切斷使用者並通知Portal伺服器。

5698be6090f88.png

僅二層Portal認證方式支援ARP探測。

1.4.3.2 心跳報文

心跳報文的方法就是在使用者認證通過後,推送給使用者一個連線保持頁面,表示該使用者處於認證狀態。使用者與Portal伺服器之間通過心跳報文進行檢測,當Portal伺服器連續若干次都沒有收到使用者發出的心跳報文,則可以認為該使用者異常離線並通知接入裝置切斷使用者。

以上即是Portal認證的基本原理,實現Portal認證的完整配置請參見。接下來我們看一下Portal認證中常見的配置和故障。

1.5 常見配置和故障

1.5.1 如何配置MAC優先的Portal認證?

MAC優先的Portal認證是指終端使用者第一次通過Portal認證接入網路後,RADIUS伺服器記錄終端裝置的MAC地址。此後,在MAC地址有效期內,終端使用者在認證已斷開的情況下再次訪問網路時,能夠直接上線,無需輸入帳號和密碼重新進行認證。

例如,手機使用者Portal認證成功,鎖屏一段時間,再次上網時需要重新輸入帳號和密碼進行認證。啟用MAC帳號優先後,再次上網時無需重新認證。

在正常Portal認證的基礎上,啟用MAC帳號優先,需要進行如下設定:

1.AC上的配置(以V200R005C10版本為例)

[AC] interface wlan-ess X

[AC-Wlan-EssX] web-authentication first-mac

2.伺服器上的配置(以Agile Controller為例)

選擇“系統 > 終端引數配置 > 全域性引數”,啟用MAC優先的Portal認證,然後輸入MAC帳號的有限期。

5698bce8d67bf.png

1.5.2 如何配置主備Portal伺服器?

配置主備Portal伺服器能夠提高Portal認證的可靠性,避免因Portal伺服器故障導致使用者無法上網的問題。

1.AC上的配置需要注意:

1)配置兩個Portal伺服器模板,並且:

lPortal伺服器模板中的server-ipurl分別為主備Portal伺服器的IP地址和URL

lPortal伺服器模板下必須開啟Portal伺服器探測功能,探測主備Portal伺服器的狀態。當探測到主用Portal伺服器的狀態由Up變為Down時,將會啟用備用Portal伺服器。

2)VLANIF介面下繫結Portal伺服器模板,主在前、備在後。

配置檔案如下(以V200R005C10版本為例):

#

web-auth-server test1

server-ip 10.10.1.128 //主用Portal伺服器的IP地址

port 50200

shared-key cipher %@%@VYNv5Pr$:8l5A/[email protected]%@%@

url http://192.168.1.1:8080/portal

server-detect //開啟Portal伺服器探測功能

#

web-auth-server test2//備用Portal伺服器的IP地址

server-ip 10.10.1.129

port 50200

shared-key cipher %@%@VYNv5Pr$:8l5A/[email protected]%@%@

url http://192.168.1.2:8080/portal

server-detect//開啟Portal伺服器探測功能

#

interface Vlanif10

web-auth-server test1 test2 direct//繫結Portal伺服器模板,主在前、備在後

#

2.伺服器上的配置(以Agile Controller為例)

選擇“資源 > 裝置 > 裝置管理”,點選“增加”新增接入裝置。勾選“啟用接入裝置與Portal伺服器的心跳”,在“Portal伺服器IP地址列表”中新增主備Portal伺服器的IP地址。

5698bcce3a8bb.png

1.5.3 為什麼能夠直接開啟Portal認證頁面,但無法重定向到Portal認證頁面?

故障原因

處理步驟

客戶端上安裝多個網絡卡,訪問重定向前的網址的HTTP報文不能充配置認證的網絡卡傳送。

客戶端配置路由,使HTTP報文能夠發往接入裝置上認證的埠。

客戶端DNS伺服器不可達,無法實現域名解析,只能使用IP地址做重定向。

接入裝置配置免認證規則,放行到DNS伺服器的IP地址,使到DNS伺服器可達。

接入裝置上已有使用者線上資訊,不能再做重定向。

接入裝置上執行cut acess-user命令,強制使用者下線。

1.5.4 為什麼免認證規則不能生效?

AC上能夠配置的免認證規則rule-id的取值範圍是0-127,但僅編號為0-63的免認證規則能夠下發到AP,並使其在AP上生效。

1.5.5 為什麼配置了MAC優先的Portal認證,但終端再次訪問網路時仍會推送Portal認證頁面?

AC為了保證使用者的密碼安全,預設開啟了帳號鎖定功能。在30分鐘內連續認證失敗的次數超過30次時,AC將帳號鎖定一段時間,鎖定時間內禁止該帳號的使用者進行認證。

一些終端關聯上SSID後,沒有及時進行Portal認證,而是發起了多次MAC認證(例如手機後臺應用程式在瞬間發起多條TCP請求)。由於終端MAC地址並沒有錄入到AAA伺服器中,在30分鐘內認證失敗的次數超過30次,AC就會將以終端MAC地址為使用者名稱的帳號鎖定,因此MAC認證失敗,彈出Portal認證頁面。

可以在AAA檢視下,執行命令undo remote-aaa-user authen-fail,關閉帳號鎖定功能。


相關推薦

WLAN入門精通-基礎11——WLAN接入認證-Portal

【轉自】http://support.huawei.com/huaweiconnect/enterprise/thread-149867.html 1.1 無處不在的Portal認證 場景一:北京國際機場,巖鬆開啟iPhone搜尋Wi-Fi訊號,看到機場Wi-Fi登入

WLAN入門精通-基礎2——WLAN射頻和通道

【轉自】http://support.huawei.com/huaweiconnect/enterprise/thread-257291.html 有這樣一個段子“嫁到俺村吧,俺村條件不賴,穿衣基本靠紡,吃飯基本靠黨,致富基本靠搶,娶妻基本靠想,交通基本靠走,通訊基本靠吼

WLAN入門精通-基礎7——AP上線過程

【轉自】http://support.huawei.com/huaweiconnect/enterprise/thread-218201.html 話說AP家有兄弟倆,哥哥胖AP(FAT AP)身強體健,單打獨鬥,無人能出其右,弟弟瘦AP(FIT AP)天生體質薄弱,獨自

C#入門到遛彎十一章 · 裡式轉換與常用類的使用

1、里氏轉換 1)、子類可以賦值給父類 2)、如果父類中裝的是子類物件,那麼可以講這個父類強轉為子類物件。   2、 子類物件可以呼叫父類中的成員,但是父類物件永遠都只能呼叫自己的成員。   3、 is:表示型別轉換,如果能夠轉換成功,則返回一個true,否

Kotlin入門到深坑基礎型別

簡介 本篇部落格主要是介紹Kotlin語法中的【基礎型別】相關的知識,幫助各位更快的掌握Kotlin,如果有疏漏或者錯誤,請在留言中指正,謝謝。 系列彙總地址 準備 在學習之前我們先有點基礎知識上的認識,如下: Kotlin和java程式碼可以混合

嵌入式Linux驅動程式-基礎- 驅動與硬體層間的通訊

驅動與硬體層間的通訊 1 IO埠和IO記憶體 目前大多數處理器外設都是通過讀寫暫存器操作晶片外設,這些暫存器處於記憶體地址或者I/O地址上。從硬體角度考慮,記憶體和IO區域沒有概念上的區別,均是通過地址匯流排、資料匯流排和控制匯流排(讀寫訊號)來進行讀寫操作。 並非所有

C++入門到熟練練習題000 VS2015新建程式及輸出Hello World

一、前言 大學很多計算機相關專業的基礎課都會有C++,C++是比較經典的程式語言,程式語言一定不是看出來的,而是敲程式碼敲出來的。所以會給大家不定期分享一些C++練習題。在下一次的練習題中,會給出這次的答案,希望大家能夠喜歡,也希望大家能夠多提意見,一起學習。 作為第一篇部落格,因為有很

Kotlin入門到深坑之類的覆蓋屬性和方法以及抽象類

簡介 本篇部落格主要是介紹Kotlin語法中的【類的覆蓋屬性和方法以及抽象類】相關的知識,幫助各位更快的掌握Kotlin,如果有疏漏或者錯誤,請在留言中指正,謝謝。 系列彙總地址 上一篇部落格中我們詳細介紹了類的繼承和構造,下面我們來講一下,在繼承時如何

最長公共子序列ccf中學計算機程式設計 基礎

#include<cmath> #include<iostream> #include<limits.h> #include<ctime> using n

Leetcode 做題學演算法週刊

首發於微信公眾號《前端成長記》,寫於 2019.11.21 背景 本文記錄刷題過程中的整個思考過程,以供參考。主要內容涵蓋: 題目分析設想 編寫程式碼驗證 查閱他人解法 思考總結 目錄 67.二進位制求和 69.x的平方根 70.爬樓梯 83.刪除排序連結串列中的重複元素 88.合併兩個有序陣列

Leetcode 做題學演算法週刊

首發於微信公眾號《前端成長記》,寫於 2020.01.15 背景 本文記錄刷題過程中的整個思考過程,以供參考。主要內容涵蓋: 題目分析設想 編寫程式碼驗證 查閱他人解法 思考總結 目錄 121.買賣股票的最佳時機 122.買賣股票的最佳時機Ⅱ 125.驗證迴文串 136.只出現一次的數字 141.環

JavaScript入門精通第一課

函數名 暫時 upload mouseover out 相等 為什麽 將在 調用函數 第一課 初探JavaScript魅力-01 JavaScript是什麽 如今我們打開一個大型的網站,都會有很多JS效果的功能和應用。對於學過CSS+HTML的同學,即使是像淘寶那

JavaScript入門精通第二課

代碼 文件 eight 修改元素 情況下 屬性 背景顏色 天氣 添加 第二課 初探JavaScript魅力-02 變量 說起變量,我們不得不提起我們有一部比較古老的電視劇叫《包青天》。包青天有一把非常厲害的寶劍叫“尚方寶劍”,見到尚方寶劍有如見到皇帝。某種程度來說,

002java面試筆記——java基礎團800失敗面試總結的java面試題

6、java io流      1)java io流相關概念 輸出流:   輸入流: 因此輸入和輸出都是從程式的角度來說的。 位元組流:一次讀入或讀出是8位二進位制。 字元流:一次讀入或讀出是16位二進位制。 位元組流和字元流的原理是相同的,只不過處

3、非線性結構--樹與二叉樹——數據結構基礎

位置 enter 深度 基礎 表達式 左右 -a 基礎篇 先序遍歷 非線性結構--樹與二叉樹 二叉樹的基礎知識:         二叉樹的特點:             1、每個結點的度<=2             2、二叉樹是有序樹         二叉樹的五種不

Java框架型項目入門到裝逼第一節 - Spring框架 IOC的喪心病狂解說

ng- turn ins int 代碼 入門到 extends comm min 大家好,好久不見,今天我們來一起學習一下關於Spring框架的IOC技術。 控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象

Python之路十六:Django基礎

web框架 imp self. tap resp 默認 進行 頁面 終端 Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其他WEB框架其優勢為:大而全,框架本身集成了ORM、模型綁定、模板引擎、緩存、Session等諸

Inline Hook基礎框架搭建

Windows程式設計師對於HOOK技術應該都很熟悉,HOOK俗稱:鉤子。即將自己想實現的功能,掛鉤到系統的函式上,達到呼叫系統的函式時能自動執行我們實現的功能。 對於HOOK,也分為:訊息鉤子,API鉤子,核心鉤子。訊息鉤子和API鉤子都是在應用層(Ring3

Inline Hook基礎掛鉤系統API

對於怎麼掛鉤系統API的實現,網上對此的解釋有很多也很詳細。這邊暫不進行長篇大論,就簡單的說明下原理:修改系統API的前幾個位元組,並寫入 JMP 0x15a123 彙編指令,實現呼叫系統API自動跳轉到我們的API的過程。 對於API HOOK的實現,現成的有MHOOK、

Shell基礎Shell 變數

1.shell變數 注意不能有空格 由字母、下劃線和數字組成shell變數,不能由數字開頭 有效:_var, ersa, my_var 無效:12a, a+a 2.Shell字串 單引號、雙引號 單引號一般用於一條字串原樣輸出,變數無效 雙引號使用較為靈活,可以使用轉義字元,可以