實(shí)驗(yàn)一
實(shí)驗(yàn)1 網(wǎng)絡(luò)服務(wù)和端口的掃描一、實(shí)驗(yàn)?zāi)康耐ㄟ^ping 等命令了解目標(biāo)主機(jī)的可訪問性;通過使用網(wǎng)絡(luò)掃描軟件,了解目標(biāo)主機(jī)端口和服務(wù)的開放情況,從而進(jìn)一步獲取系統(tǒng)信息,找出系統(tǒng)安全漏洞;通過本次實(shí)驗(yàn),讀
實(shí)驗(yàn)1 網(wǎng)絡(luò)服務(wù)和端口的掃描
一、實(shí)驗(yàn)?zāi)康?/p>
通過ping 等命令了解目標(biāo)主機(jī)的可訪問性;
通過使用網(wǎng)絡(luò)掃描軟件,了解目標(biāo)主機(jī)端口和服務(wù)的開放情況,從而進(jìn)一步獲取系統(tǒng)信息,找出系統(tǒng)安全漏洞;
通過本次實(shí)驗(yàn),讀者可以了解到端口與服務(wù)開放的風(fēng)險(xiǎn),增強(qiáng)在網(wǎng)絡(luò)安全防護(hù)方面的意識(shí)。
二、實(shí)驗(yàn)原理
常用掃描探測(cè)命令:ping 、tracert
掃描工具:Superscan 和Nmap
1. Ping以及tracert
·ping
ping 命令首先會(huì)構(gòu)建一個(gè)固定格式的ICMP 請(qǐng)求數(shù)據(jù)包echo request,發(fā)給遠(yuǎn)端計(jì)算機(jī) ;
遠(yuǎn)端計(jì)算機(jī)收到后,構(gòu)造一個(gè)ICMP 應(yīng)答包echo reply,發(fā)送回本機(jī); 本機(jī)收到應(yīng)答包后,即可判斷出目的主機(jī)是否開機(jī),并根據(jù)發(fā)送包和應(yīng)答包攜帶的時(shí)間信息計(jì)算出網(wǎng)絡(luò)延遲。
·tracert
源主機(jī)將構(gòu)造并向目標(biāo)主機(jī)發(fā)送不同TTL 值的ICMP 請(qǐng)求數(shù)據(jù)包,tracert 診斷程序根據(jù)ICMP 的回應(yīng)數(shù)據(jù)包來確定到目標(biāo)所采取的路由;
Tracert 程序首先發(fā)送 TTL 為1的請(qǐng)求數(shù)據(jù)包,該包經(jīng)過第一個(gè)路由設(shè)備后TTL 減1為0,第一個(gè)路由設(shè)備就將給源主機(jī)發(fā)回“ICMP 已超時(shí)”的消息;
源主機(jī)的tracert 命令通過該消息中的IP 信息就獲得了第一個(gè)路由設(shè)備的IP ;
在隨后的每次發(fā)送過程將TTL 依次遞增1,直到目標(biāo)響應(yīng)或TTL 達(dá)到最大值,從而確定從源主機(jī)到目的主機(jī)中間的路由。
2 端口掃描的原理
掃描的過程就是向目標(biāo)主機(jī)的端口發(fā)送請(qǐng)求數(shù)據(jù)包,希望建立“連接”,根據(jù)目標(biāo)主機(jī)的回應(yīng)判斷其端口是否開放;
通過掃描判斷目標(biāo)主機(jī)端口是否打開的一個(gè)最簡(jiǎn)單的方法,是利用TCP 協(xié)議的三次握手機(jī)制;
只要和目標(biāo)主機(jī)的端口能建立TCP 的三次握手,說明目標(biāo)主機(jī)的端口是開的,反之則沒有打開。
,·三次握手
第一次握手:
主機(jī)A 的某個(gè)端口向主機(jī)B 的某個(gè)端口發(fā)出TCP 連接請(qǐng)求數(shù)據(jù)包,其TCP 包頭的標(biāo)志位設(shè)置為SYN=1,ACK=0,同時(shí)選擇一個(gè)序號(hào)x ,表明在后面?zhèn)魉蛿?shù)據(jù)時(shí)的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)是x ,這個(gè)過程稱為第一次握手。
第二次握手:
主機(jī)B 的相應(yīng)端口收到連接請(qǐng)求數(shù)據(jù)包后,如端口是開放的,則發(fā)回確認(rèn)數(shù)據(jù)包。在確認(rèn)數(shù)據(jù)包中,TCP 包頭的標(biāo)志位設(shè)置為SYN=1,ACK=1,確認(rèn)序號(hào)為x 1,同時(shí)B 主機(jī)也會(huì)生成一個(gè)自己的序號(hào)y ,這個(gè)過程稱為第二次握手。 第三次握手:
主機(jī)A 收到此數(shù)據(jù)包后,還要向B 給出確認(rèn)數(shù)據(jù)包,其TCP 包頭的標(biāo)志位設(shè)置為ACK=1,其確認(rèn)序號(hào)為y 1,這個(gè)過程稱為第三次握手。
3 掃描分類
1)全TCP 連接
這種掃描方法使用三次握手,與目標(biāo)計(jì)算機(jī)建立標(biāo)準(zhǔn)的TCP 連接;
攻擊者首先向目的端口發(fā)送一個(gè)SYN 數(shù)據(jù)包,如果收到來自該端口的SYN/ACK數(shù)據(jù)包,就可以判定該端口是開放的;然后攻擊者再發(fā)送一個(gè)ACK 數(shù)據(jù)包;
如果目標(biāo)端口是關(guān)閉的,攻擊者就會(huì)收到一個(gè)直接返回的RST/ACK數(shù)據(jù)包;
2)半打開式掃描(SYN 掃描)
在這種掃描技術(shù)中,掃描主機(jī)同樣向目標(biāo)計(jì)算機(jī)的指定端口發(fā)送SYN 數(shù)據(jù)包,表示希望建立連接。
a .當(dāng)端口開放時(shí),目標(biāo)計(jì)算機(jī)回應(yīng)SYN/ACK數(shù)據(jù)包,這和全TCP 連接掃描類似。但是掃描主機(jī)接著發(fā)送一個(gè)RST=1的數(shù)據(jù)包給目標(biāo)主機(jī),RST 數(shù)據(jù)包將對(duì)TCP 連接進(jìn)行重置,目標(biāo)計(jì)算機(jī)因?yàn)闆]有接到相應(yīng)ACK 數(shù)據(jù)包,從而不會(huì)建立三次握手。
b .如果端口是關(guān)閉的,則按照TCP
協(xié)議中端口未開規(guī)則處理,由目標(biāo)主機(jī)
,發(fā)送RST/ACK數(shù)據(jù)包給掃描主機(jī),此時(shí)TCP 連接依然沒有建立。
掃描主機(jī)根據(jù)目標(biāo)計(jì)算機(jī)的回應(yīng)數(shù)據(jù)包是SYN/ACK數(shù)據(jù)包,還是RST/ACK數(shù)據(jù)包即可判斷端口是否打開。
3)秘密掃描
這種方法的優(yōu)點(diǎn)在于沒有涉及TCP 連接的部分,所以比前2種都要安全,所以也被稱做秘密掃描;缺點(diǎn)就是不夠準(zhǔn)確,不能完全識(shí)別開放的端口。 FIN 標(biāo)記掃描:
攻擊者發(fā)送一個(gè)FIN=1的TCP 報(bào)文到目標(biāo)主機(jī):
端口關(guān)閉時(shí),該報(bào)文會(huì)被丟掉,并返回一個(gè)RST 報(bào)文。
端口開放時(shí),該報(bào)文只是簡(jiǎn)單的丟掉,不會(huì)返回任何回應(yīng)。
三、實(shí)驗(yàn)環(huán)境
兩臺(tái)運(yùn)行win7的計(jì)算機(jī),通過網(wǎng)絡(luò)連接。使用Superscan 和nmap 作為練習(xí)工具。
四、實(shí)驗(yàn)內(nèi)容
1、Ping 以及Tracert
2、使用Superscan 進(jìn)行掃描
首先安裝Superscan3.0,安裝完畢后,雙擊程序,進(jìn)入其主界面。
域名(主機(jī)名)和IP 相互轉(zhuǎn)換
這個(gè)功能的作用就是取得域名比如:163.com 的IP ;或者根據(jù)IP :
192.168.1.156取得域名。(如下圖)
在SuperScan 里面,有兩種方法來實(shí)現(xiàn)此功能:
1)通過Hostname Lookup來 實(shí)現(xiàn)
在Hostname Lookup的輸入框輸入需要轉(zhuǎn)換的域名或者IP ,按【LookUp 】就可以取得結(jié)果。如果需要取得自己計(jì)算機(jī)的IP ,可以點(diǎn)擊【Me 】按鈕來取得;
同時(shí),也可以取得自己計(jì)算機(jī)的IP 設(shè)置情況,點(diǎn)擊【InterFaces 】取得本地IP 設(shè)置情況
2)通過Extract From File實(shí)現(xiàn)
這個(gè)功能通過一個(gè)域名列表來轉(zhuǎn)換為相應(yīng)IP 地址。
選擇【Extract from file】,點(diǎn)擊【->】按鈕,選擇域名列表,進(jìn)行轉(zhuǎn)換。
Ping 功能的使用
Ping主要目的在于檢測(cè)目標(biāo)計(jì)算機(jī)是否在線和通過反應(yīng)時(shí)間判斷網(wǎng)絡(luò)狀況。
如下圖,在【IP 】的【Start 】填入起始IP ,在【Stop 】填入結(jié)束IP ,然后,在【Scan Type】選擇【Ping only】,按【Start 】就可以檢測(cè)了。
在以上的設(shè)置中,我們可以使用以下按鈕達(dá)到快捷設(shè)置目的:選擇
【Ignore IP zreo】可以屏蔽所有以0結(jié)尾的IP ;選擇【Ignore IP 255】可以屏蔽所有以255結(jié)尾的IP ;點(diǎn)擊【PrevC 】可以直接轉(zhuǎn)到前一個(gè)C 網(wǎng)段;選擇【NextC 】可以直接轉(zhuǎn)到后一個(gè)C 網(wǎng)段;選擇【1..254】直接選擇整個(gè)網(wǎng)段。同樣,也可以在【Extract From File】通過域名列表取得IP 列表。
在Ping 的時(shí)候,可以根據(jù)網(wǎng)絡(luò)情況在【Timeout 】設(shè)置相應(yīng)的反應(yīng)時(shí)間。一般采用默認(rèn)就可以了,而且,SuperScan 速度非???,結(jié)果也很準(zhǔn)確,一般沒有必要改變反應(yīng)時(shí)間設(shè)置。
端口檢測(cè)
端口檢測(cè)可以取得目標(biāo)計(jì)算機(jī)提供的服務(wù),同時(shí),也可以檢測(cè)目標(biāo)計(jì)算機(jī)是否有木馬。現(xiàn)在,我們來看看端口檢測(cè)的具體使用。
(1)檢測(cè)目標(biāo)計(jì)算機(jī)的所有端口
如果檢測(cè)的時(shí)候沒有特定的目的,只是為了了解目標(biāo)計(jì)算機(jī)的一些情況,可以對(duì)目標(biāo)計(jì)算機(jī)的所有端口進(jìn)行檢測(cè)。一般不提倡這種檢測(cè),因?yàn)椋?/p>
1)它會(huì)對(duì)目標(biāo)計(jì)算機(jī)的正常運(yùn)行造成一定影響,同時(shí),也會(huì)引起目標(biāo)計(jì)算機(jī)的警覺;
2)掃描時(shí)間很長(zhǎng);
3)浪費(fèi)帶寬資源,對(duì)網(wǎng)絡(luò)正常運(yùn)行造成影響。
在【IP 】輸入起始IP 和結(jié)束IP ,在【Scan Type】選擇最后一項(xiàng)
【All Ports From 1 to 65535】,如果需要返回計(jì)算機(jī)的主機(jī)名,可以選擇【Resolve Hostnem】,按【Start 】開始檢測(cè)。
上圖是對(duì)一臺(tái)目標(biāo)計(jì)算機(jī)所有端口進(jìn)行掃描的結(jié)果,掃描完成以后,按
【Expand all】展開,可以看到掃描的結(jié)果。我們來解釋一下以上結(jié)果:第一行是目標(biāo)計(jì)算機(jī)的IP 和主機(jī)名;從第二行開始的小圓點(diǎn)是掃描的計(jì)算機(jī)的活動(dòng)端口號(hào)和對(duì)該端口的解釋。【Active hosts】顯示掃描到的活動(dòng)主機(jī)數(shù)量,這里只掃描了一臺(tái),為1;【Open ports】顯示目標(biāo)計(jì)算機(jī)打開的端口數(shù),這里是5。
(2)掃描目標(biāo)計(jì)算機(jī)的特定端口(自定義端口)
其實(shí),大多數(shù)時(shí)候我們不需要檢測(cè)所有端口,我們只要檢測(cè)有限的幾個(gè)端口就可以了,因?yàn)槲覀兊哪康闹皇菫榱说玫侥繕?biāo)計(jì)算機(jī)提供的服務(wù)和使用的軟件。所以,我們可以根據(jù)個(gè)人目的的不同來檢測(cè)不同的端口,大部分時(shí)候,我們只要檢測(cè)80(web 服務(wù))、21(FTP 服務(wù))、23(Telnet 服務(wù))就可以了,即使是攻擊,也不會(huì)有太多的端口檢測(cè)。
點(diǎn)擊【Port list setup】,出現(xiàn)端口設(shè)置界面(如下圖):
以上的界面中,在【Select ports】雙擊選擇需要掃描的端口,端口前面會(huì)有一個(gè)"√"的標(biāo)志;選擇的時(shí)候。
注意左邊的【Change/Add/Delete port info】和【Helper apps in right-click menu 】,這里有關(guān)于此端口的詳細(xì)說明和所使用的程序。我們選擇21、23、80、三個(gè)端口,然后,點(diǎn)擊【save 】按鈕保存選擇的端口為端口列表?!緊k 】回到主界面。在【Scan Type】選擇
【All selected port in list】,按【Start 】開始檢測(cè)。
使用自定義端口的方式有以下有點(diǎn):
1) 選擇端口時(shí)可以詳細(xì)了解端口信息;
2) 選擇的端口可以自己取名保存,有利于再次使用;
3) 可以工具要求有的放矢的檢測(cè)目標(biāo)端口,節(jié)省時(shí)間和資源;
4) 根據(jù)一些特定端口,我們可以檢測(cè)目標(biāo)計(jì)算機(jī)是否被攻擊者利用,種植木馬或者打開不應(yīng)該打開的服務(wù);
3、網(wǎng)絡(luò)掃描軟件Nmap 的使用
(1)簡(jiǎn)介
Nmap 是一個(gè)網(wǎng)絡(luò)連接端掃描軟件,用來掃描網(wǎng)上電腦開放的網(wǎng)絡(luò)連接端。確定哪服務(wù)運(yùn)行在那些連接端,并且推斷哪個(gè)操作系統(tǒng)計(jì)算機(jī)運(yùn)行(這是亦稱 fingerprinting )。它是網(wǎng)絡(luò)管理員必用的軟件之一,以及用以評(píng)估網(wǎng)絡(luò)系統(tǒng)保安。
正如大多數(shù)工具被用于網(wǎng)絡(luò)安全的工具,nmap 也是不少黑客及駭客(又稱腳本小孩)愛用的工具。系統(tǒng)管理員可以利用nmap 來探測(cè)工作環(huán)境中未經(jīng)批準(zhǔn)使用的服務(wù)器,但是黑客會(huì)利用nmap 來搜集目標(biāo)電腦的網(wǎng)絡(luò)設(shè)定,從而計(jì)劃攻擊的方法。
Nmap 常被跟評(píng)估系統(tǒng)漏洞軟件Nessus 混為一談。Nmap 以隱秘的手法,避開闖入檢測(cè)系統(tǒng)的監(jiān)視,并盡可能不影響目標(biāo)系統(tǒng)的日常操作。
(2)描述
nmap 運(yùn)行通常會(huì)得到被掃描主機(jī)端口的列表。nmap 總會(huì)給出well known端口的服務(wù)名(如果可能) 、端口號(hào)、狀態(tài)和協(xié)議等信息。每個(gè)端口的狀態(tài)有:open 、filtered 、unfiltered 。open 狀態(tài)意味著目標(biāo)主機(jī)能夠在這個(gè)端口使用accept()系統(tǒng)調(diào)用接受連接。filtered 狀態(tài)表示:防火墻、包過濾和其它的網(wǎng)絡(luò)安全軟件掩蓋了這個(gè)端口,禁止nmap 探測(cè)其是否打開。unfiltered 表示:這個(gè)端口關(guān)閉,并且沒有防火墻/包過濾軟件來隔離nmap 的探測(cè)企圖。通常情況下,端口的狀態(tài)基本都是unfiltered 狀態(tài),只有在大多數(shù)被掃描的端口處于filtered 狀態(tài)下,才會(huì)顯示處于unfiltered 狀態(tài)的端口。
根據(jù)使用的功能選項(xiàng),nmap 也可以報(bào)告遠(yuǎn)程主機(jī)的下列特征:使用的操作系統(tǒng)、TCP 序列、運(yùn)行綁定到每個(gè)端口上的應(yīng)用程序的用戶名、DNS 名、主機(jī)地址是否是欺騙地址、以及其它一些東西。
(3)Nmap所識(shí)別的6個(gè)端口狀態(tài)。
·open (開放的)
應(yīng)用程序正在該端口接收TCP 連接或者UDP 報(bào)文。發(fā)現(xiàn)這一點(diǎn)常常是端口掃描
,的主要目標(biāo)。安全意識(shí)強(qiáng)的人們知道每個(gè)開放的端口都是攻擊的入口。攻擊者或者入侵測(cè)試者想要發(fā)現(xiàn)開放的端口。而管理員則試圖關(guān)閉它們或者用防火墻保護(hù)它們以免妨礙了合法用戶。非安全掃描可能對(duì)開放的端口也感興趣,因?yàn)樗鼈冿@示了網(wǎng)絡(luò)上那些服務(wù)可供使用。
·closed (關(guān)閉的)
關(guān)閉的端口對(duì)于Nmap 也是可訪問的(它接受Nmap 的探測(cè)報(bào)文并作出響應(yīng)) ,但沒有應(yīng)用程序在其上監(jiān)聽。它們可以顯示該IP 地址上(主機(jī)發(fā)現(xiàn),或者ping 掃描) 的主機(jī)正在運(yùn)行up 也對(duì)部分操作系統(tǒng)探測(cè)有所幫助。
·filtered (被過濾的)
由于包過濾阻止探測(cè)報(bào)文到達(dá)端口,Nmap 無法確定該端口是否開放。過濾可能來自專業(yè)的防火墻設(shè)備,路由器規(guī)則或者主機(jī)上的軟件防火墻。
·unfiltered (未被過濾的)
未被過濾狀態(tài)意味著端口可訪問,但Nmap 不能確定它是開放還是關(guān)閉。只有用于映射防火墻規(guī)則集的ACK 掃描才會(huì)把端口分類到這種狀態(tài)。用其它類型的掃描如窗口掃描,SYN 掃描,或者FIN 掃描來掃描未被過濾的端口可以幫助確定端口是否開放。
·open|filtered(開放或者被過濾的)
當(dāng)無法確定端口是開放還是被過濾的,Namp 就把該端口劃分成這種狀態(tài)。開放的端口不響應(yīng)就是一個(gè)例子。沒有響應(yīng)也可能意味著報(bào)文過濾器丟棄了探測(cè)報(bào)文或者它引發(fā)的任何響應(yīng)。因此Nmap 無法確定該端口是開放的還是被過濾的。UDP ,IP 協(xié)議,F(xiàn)IN ,Null 和Xmas 掃描可能把端口歸入此類。
·closed|filtered(關(guān)閉或者被過濾的)
該狀態(tài)用于Nmap 不能確定端口是關(guān)閉的還是被過濾的。它只可能出現(xiàn)在IPID Idle 掃描中。
(4)語法
Nmap 的語法相當(dāng)簡(jiǎn)單.Nmap 的不同選項(xiàng)和-s 標(biāo)志組成了不同的掃描類型, 比如:一個(gè)Ping-scan 命令就是"-sP". 在確定了目標(biāo)主機(jī)和網(wǎng)絡(luò)之后, 即可進(jìn)行掃描. 如果以root 來運(yùn)行Nmap,Nmap 的功能會(huì)大大的增強(qiáng), 因?yàn)槌?jí)用戶可以創(chuàng)建便于Nmap 利用的定制數(shù)據(jù)包。
一般語法格式:nmap [Scan Type(s)] [Options]
(5)基本掃描類型
可以使用nmap -h快速列出功能選項(xiàng)的列表。
-sT
TCP connect()掃描:這是最基本的TCP 掃描方式。connect()是一種系統(tǒng)調(diào)用,
,由操作系統(tǒng)提供,用來打開一個(gè)連接。如果目標(biāo)端口有程序監(jiān)聽, connect()就會(huì)成功返回,否則這個(gè)端口是不可達(dá)的。這項(xiàng)技術(shù)最大的優(yōu)點(diǎn)是,你勿需root 權(quán)限。任何UNIX 用戶都可以自由使用這個(gè)系統(tǒng)調(diào)用。這種掃描很容易被檢測(cè)到,在目標(biāo)主機(jī)的日志中會(huì)記錄大批的連接請(qǐng)求以及錯(cuò)誤信息。
-sS
TCP 同步掃描(TCP SYN):因?yàn)椴槐厝看蜷_一個(gè)TCP 連接,所以這項(xiàng)技術(shù)通常稱為半開掃描(half-open)。你可以發(fā)出一個(gè)TCP 同步包(SYN),然后等待回應(yīng)。如果對(duì)方返回SYN|ACK(響應(yīng)) 包就表示目標(biāo)端口正在監(jiān)聽;如果返回RST 數(shù)據(jù)包,就表示目標(biāo)端口沒有監(jiān)聽程序;如果收到一個(gè)SYN|ACK包,源主機(jī)就會(huì)馬上發(fā)出一個(gè)RST(復(fù)位) 數(shù)據(jù)包斷開和目標(biāo)主機(jī)的連接。這項(xiàng)技術(shù)最大的好處是,很少有系統(tǒng)能夠把這記入系統(tǒng)日志。
-sP
ping 掃描:若只是想知道此時(shí)網(wǎng)絡(luò)上哪些主機(jī)正在運(yùn)行。通過向你指定的網(wǎng)絡(luò)內(nèi)的每個(gè)IP 地址發(fā)送ICMP echo 請(qǐng)求數(shù)據(jù)包,nmap 就可以完成這項(xiàng)任務(wù),如果主機(jī)正在運(yùn)行就會(huì)作出響應(yīng)。在默認(rèn)的情況下nmap 也能夠向80端口發(fā)送TCP ack 包,如果你收到一個(gè)RST 包,就表示主機(jī)正在運(yùn)行。nmap 使用的第三種技術(shù)是:發(fā)送一個(gè)SYN 包,然后等待一個(gè)RST 或者SYN/ACK包。對(duì)于非root 用戶,nmap 使用connect()方法。在默認(rèn)的情況下(root用戶) ,nmap 并行使用ICMP 和ACK 技術(shù)。實(shí)際上,nmap 在任何情況下都會(huì)進(jìn)行ping 掃描,只有目標(biāo)主機(jī)處于運(yùn)行狀態(tài),才會(huì)進(jìn)行后續(xù)的掃描。如果只是想知道目標(biāo)主機(jī)是否運(yùn)行,而不想進(jìn)行其它掃描,才會(huì)用到這個(gè)選項(xiàng)。
-sU
UDP 掃描:如果想知道在某臺(tái)主機(jī)上提供哪些UDP(用戶數(shù)據(jù)報(bào)協(xié)議,RFC768) 服務(wù),可以使用這種掃描方法。nmap 首先向目標(biāo)主機(jī)的每個(gè)端口發(fā)出一個(gè)0字節(jié)的UDP 包,如果收到端口不可達(dá)的ICMP 消息,端口就是關(guān)閉的,否則我們就假設(shè)它是打開的。
(6)通用選項(xiàng)
這些內(nèi)容不是必需的,但是很有用。
-Pn
在掃描之前,不必ping 主機(jī)。有些網(wǎng)絡(luò)的防火墻不允許ICMP echo請(qǐng)求穿過,使用這個(gè)選項(xiàng)可以對(duì)這些網(wǎng)絡(luò)進(jìn)行掃描。
-O
這個(gè)選項(xiàng)激活對(duì)TCP/IP指紋特征(fingerprinting)的掃描,獲得遠(yuǎn)程主機(jī)的標(biāo)志。換句話說,nmap 使用一些技術(shù)檢測(cè)目標(biāo)主機(jī)操作系統(tǒng)網(wǎng)絡(luò)協(xié)議棧的特征。