當(dāng)前位置:
首頁 >
TCP/IP协议-概念、应用、开发、Hack
發(fā)布時(shí)間:2025/4/14
35
豆豆
生活随笔
收集整理的這篇文章主要介紹了
TCP/IP协议-概念、应用、开发、Hack
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
TCP/IP協(xié)議
? ? Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。
? ? TCP/IP 定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。協(xié)議采用了4層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求。通俗而言:TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡亍6鳬P是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個(gè)地址。
? ??
? ? 數(shù)據(jù)幀:幀頭+IP數(shù)據(jù)包+幀尾 (幀頭包括源和目標(biāo)主機(jī)MAC地址及類型,幀尾是校驗(yàn)字)
? ? IP數(shù)據(jù)包:IP頭部+TCP數(shù)據(jù)信息(IP頭包括源和目標(biāo)主機(jī)IP地址、類型、生存期等)
? ? TCP數(shù)據(jù)信息:TCP頭部+實(shí)際數(shù)據(jù) (TCP頭包括源和目標(biāo)主機(jī)端口號、順序號、確認(rèn)號、校驗(yàn)字等)
2 IP地址
? ? 在Internet上連接的所有計(jì)算機(jī),從大型機(jī)到微型計(jì)算機(jī)都是以獨(dú)立的身份出現(xiàn),我們稱它為主機(jī)。為了實(shí)現(xiàn)各主機(jī)間的通信,每臺主機(jī)都必須有一個(gè)唯一的網(wǎng)絡(luò)地址。就好像每一個(gè)住宅都有唯一的門牌一樣,才不至于在傳輸資料時(shí)出現(xiàn)混亂。
? ? Internet的網(wǎng)絡(luò)地址是指連入Internet網(wǎng)絡(luò)的計(jì)算機(jī)的地址編號。所以,在Internet網(wǎng)絡(luò)中,網(wǎng)絡(luò)地址唯一地標(biāo)識一臺計(jì)算機(jī)。
? ? 我們都已經(jīng)知道,Internet是由幾千萬臺計(jì)算機(jī)互相連接而成的。而我們要確認(rèn)網(wǎng)絡(luò)上的每一臺計(jì)算機(jī),靠的就是能唯一標(biāo)識該計(jì)算機(jī)的網(wǎng)絡(luò)地址,這個(gè)地址就叫做IP(Internet Protocol的簡寫)地址,即用Internet協(xié)議語言表示的地址。
? ? 在Internet里,IP地址是一個(gè)32位的二進(jìn)制地址,為了便于記憶,將它們分為4組,每組8位,由小數(shù)點(diǎn)分開,用四個(gè)字節(jié)來表示,而且,用點(diǎn)分開的每個(gè)字節(jié)的數(shù)值范圍是0~255,如202.116.0.1,這種書寫方法叫做點(diǎn)數(shù)表示法。
3 OSI參考模型
? ? OSI參考模型是ISO的建議,它是為了使各層上的協(xié)議國際標(biāo)準(zhǔn)化而發(fā)展起來的。OSI參考模型全稱是開放系統(tǒng)互連參考模型(Open System Interconnection Reference Model)。這一參考模型共分為七層:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層;
? ? 物理層(Physical Layer)主要是處理機(jī)械的、電氣的和過程的接口,以及物理層下的物理傳輸介質(zhì)等。
? ? 數(shù)據(jù)鏈路層(Data Link Layer)的任務(wù)是加強(qiáng)物理層的功能,使其對網(wǎng)絡(luò)層顯示為一條無錯(cuò)的線路。
? ? 網(wǎng)絡(luò)層(Network Layer)確定分組從源端到目的端的路由選擇。路由可以選用網(wǎng)絡(luò)中固定的靜態(tài)路由表,也可以在每一次會(huì)話時(shí)決定,還可以根據(jù)當(dāng)前的網(wǎng)絡(luò)負(fù)載狀況,靈活地為每一個(gè)分組分別決定。
? ? 傳輸層(Transport Layer)從會(huì)話層接收數(shù)據(jù),并傳輸給網(wǎng)絡(luò)層,同時(shí)確保到達(dá)目的端的各段信息正確無誤,而且使會(huì)話層不受硬件變化的影響。通常,會(huì)話層每請求建立一個(gè)傳輸連接,傳輸層就會(huì)為其創(chuàng)建一個(gè)獨(dú)立的網(wǎng)絡(luò)連接。但如果傳輸連接需要一個(gè)較高的吞吐量,傳輸層也可以為其創(chuàng)建多個(gè)網(wǎng)絡(luò)連接,讓數(shù)據(jù)在這些網(wǎng)絡(luò)連接上分流,以提高吞吐量。而另一方面,如果創(chuàng)建或維持一個(gè)獨(dú)立的網(wǎng)絡(luò)連接不合算,傳輸層也可將幾個(gè)傳輸連接復(fù)用到同一個(gè)網(wǎng)絡(luò)連接上,以降低費(fèi)用。除了多路復(fù)用,傳輸層還需要解決跨網(wǎng)絡(luò)連接的建立和拆除,并具有流量控制機(jī)制。
? ? 會(huì)話層(Session Layer)允許不同機(jī)器上的用戶之間建立會(huì)話關(guān)系,既可以進(jìn)行類似傳輸層的普通數(shù)據(jù)傳輸,也可以被用于遠(yuǎn)程登錄到分時(shí)系統(tǒng)或在兩臺機(jī)器間傳遞文件。
? ? 表示層(Presentation Layer)用于完成一些特定的功能,這些功能由于經(jīng)常被請求,因此人們希望有通用的解決辦法,而不是由每個(gè)用戶各自實(shí)現(xiàn)。
? ? 應(yīng)用層(Application Layer)中包含了大量人們普遍需要的協(xié)議。不同的文件系統(tǒng)有不同的文件命名原則和不同的文本行表示方法等,不同的系統(tǒng)之間傳輸文件還有各種不兼容問題,這些都將由應(yīng)用層來處理。此外,應(yīng)用層還有虛擬終端、電子郵件和新聞組等各種通用和專用的功能。
1 協(xié)議測試
全面的測試應(yīng)包括局域網(wǎng)和互聯(lián)網(wǎng)兩個(gè)方面,因此應(yīng)從局域網(wǎng)和互聯(lián)網(wǎng)兩個(gè)方面測試,以下是在實(shí)際工作中利用命令行測試TCP/IP配置步驟:
1). 單擊“開始”/“運(yùn)行”,輸入CMD按回車,打開命令提示符窗口。
2).首先檢查IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器地址是否正確,輸入命令ipconfig /all,按回車。此時(shí)顯示了你的網(wǎng)絡(luò)配置,觀查是否正確。
3).輸入ping 127.0.0.1,觀查網(wǎng)卡是否能轉(zhuǎn)發(fā)數(shù)據(jù),如果出現(xiàn)“Request timed out”(請求超時(shí)),表明配置出錯(cuò)或網(wǎng)絡(luò)有問題。
4).Ping一個(gè)互聯(lián)網(wǎng)地址,看是否有數(shù)據(jù)包傳回,以驗(yàn)證與互聯(lián)網(wǎng)的連接性。
5). Ping 一個(gè)局域網(wǎng)地址,觀查與它的連通性。
6).用nslookup測試DNS解析是否正確,輸入如nslookup ,查看是否能解析。
如果你的計(jì)算機(jī)通過了全部測試,則說明網(wǎng)絡(luò)正常,否則網(wǎng)絡(luò)可能有不同程度的問題。在此不展開詳述。不過,要注意,在使用 ping命令時(shí),有些公司會(huì)在其主機(jī)設(shè)置丟棄ICMP數(shù)據(jù)包,造成你的ping命令無法正常返回?cái)?shù)據(jù)包,不防換個(gè)網(wǎng)站試試。
2 協(xié)議重置
如果需要重新安裝 TCP/IP 以使TCP/IP 堆棧恢復(fù)為原始狀態(tài)。可以使用NetShell 實(shí)用程序重置TCP/IP 堆棧,使其恢復(fù)到初次安裝操作系統(tǒng)時(shí)的狀態(tài)。具體操作如下:
1).單擊 開始--> 運(yùn)行,輸入"CMD" 后單擊"確定";
2).在命令行模式輸入命令
netsh int ip reset C:\resetlog.txt
(其中,Resetlog.txt記錄命令結(jié)果的日志文件,一定要指定,這里指定了Resetlog.txt 日志文件及完整路徑。)
運(yùn)行結(jié)果可以查看C:\resetlog.txt
運(yùn)行此命令的結(jié)果與刪除并重新安裝TCP/IP 協(xié)議的效果相同。
注意
本操作具有一定的風(fēng)險(xiǎn)性,請?jiān)诓僮髑皞浞葜匾獢?shù)據(jù),并根據(jù)操作熟練度酌情使用。
? ? SYN(synchronous)是TCP/IP建立連接時(shí)使用的握手信號。在客戶機(jī)和服務(wù)器之間建立正常的TCP網(wǎng)絡(luò)連接時(shí),客戶機(jī)首先發(fā)出一個(gè)SYN消息,服務(wù)器使用SYN+ACK應(yīng)答表示接收到了這個(gè)消息,最后客戶機(jī)再以ACK消息響應(yīng)。這樣在客戶機(jī)和服務(wù)器之間才能建立起可靠的TCP連接,數(shù)據(jù)才可以在客戶機(jī)和服務(wù)器之間傳遞。
? ? TCP連接的第一個(gè)包,非常小的一種數(shù)據(jù)包。
2 ACK
? ? Acknowledgement,即確認(rèn)字符,在數(shù)據(jù)通信中,接收站發(fā)給發(fā)送站的一種傳輸類控制字符。表示發(fā)來的數(shù)據(jù)已確認(rèn)接收無誤。
? ? 在TCP/IP協(xié)議中,如果接收方成功的接收到數(shù)據(jù),那么會(huì)回復(fù)一個(gè)ACK數(shù)據(jù)。通常ACK信號有自己固定的格式,長度大小,由接收方回復(fù)給發(fā)送方。其格式取決于采取的網(wǎng)絡(luò)協(xié)議。當(dāng)發(fā)送方接收到ACK信號時(shí),就可以發(fā)送下一個(gè)數(shù)據(jù)。如果發(fā)送方?jīng)]有收到信號,那么發(fā)送方可能會(huì)重發(fā)當(dāng)前的數(shù)據(jù)包,也可能停止傳送數(shù)據(jù)。具體情況取決于所采用的網(wǎng)絡(luò)協(xié)議。
? ? TCP報(bào)文格式中的控制位由6個(gè)標(biāo)志比特構(gòu)成,其中一個(gè)就是ACK,ACK為1表示確認(rèn)號有效,為0表示報(bào)文中不包含確認(rèn)信息,忽略確認(rèn)號字段。
? ? ACK也可用于AT24cxx這一系列的EEPROM中。
? ? 在USB傳輸中,ACK事務(wù)包用來向主機(jī)/設(shè)備報(bào)告包正確的傳輸。
3 FIN
? ? FIN(ISH)為TCP報(bào)頭的碼位字段,該位置為1的含義為發(fā)送方字節(jié)流結(jié)束,用于關(guān)閉連接。
? ? 當(dāng)兩端交換帶有FIN標(biāo)志的TCP報(bào)文段并且每一端都確認(rèn)另一端發(fā)送的FIN包時(shí),TCP連接將會(huì)關(guān)閉。FIN位字面上的意思是連接一方再也沒有更多新的數(shù)據(jù)發(fā)送。然而,那些重傳的數(shù)據(jù)會(huì)被傳送,直到接收端確認(rèn)所有的信息。
? ? SYN 攻擊包括大量此類的包,由于這些包看上去來自實(shí)際不存在的站點(diǎn),因此無法有效進(jìn)行處理。每個(gè)機(jī)器的欺騙包都要花幾秒鐘進(jìn)行嘗試方可放棄提供正常響應(yīng)。
攻擊性質(zhì)
? ? SYN攻擊屬于DDoS攻擊的一種,它利用TCP協(xié)議缺陷,通過發(fā)送大量的半連接請求,耗費(fèi)CPU和內(nèi)存資源。SYN攻擊除了能影響主機(jī)外,還可以危害路由器、防火墻等網(wǎng)絡(luò)系統(tǒng),事實(shí)上SYN攻擊并不管目標(biāo)是什么系統(tǒng),只要這些系統(tǒng)打開TCP服務(wù)就可以實(shí)施。服務(wù)器接收到連接請求(syn= j),將此信息加入未連接隊(duì)列,并發(fā)送請求包給客戶(syn=k,ack=j+1),此時(shí)進(jìn)入SYN_RECV狀態(tài)。當(dāng)服務(wù)器未收到客戶端的確認(rèn)包時(shí),重發(fā)請求包,一直到超時(shí),才將此條目從未連接隊(duì)列刪除。配合IP欺騙,SYN攻擊能達(dá)到很好的效果,通常,客戶端在短時(shí)間內(nèi)偽造大量不存在的IP地址,向服務(wù)器不斷地發(fā)送syn包,服務(wù)器回復(fù)確認(rèn)包,并等待客戶的確認(rèn),由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí),這些偽造的SYN包將長時(shí)間占用未連接隊(duì)列,正常的SYN請求被丟棄,目標(biāo)系統(tǒng)運(yùn)行緩慢,嚴(yán)重者引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。
攻擊原理
? ? 歸納起來,主要有兩大類,一類是通過防火墻、路由器等過濾網(wǎng)關(guān)防護(hù),另一類是通過加固TCP/IP協(xié)議棧防范。
? ? SYN Flood利用TCP協(xié)議缺陷,發(fā)送了大量偽造的TCP連接請求,使得被攻擊方資源耗盡,無法及時(shí)回應(yīng)或處理正常的服務(wù)請求。一個(gè)正常的TCP連接需要三次握手,首先客戶端發(fā)送一個(gè)包含SYN標(biāo)志的數(shù)據(jù)包,其后服務(wù)器返回一個(gè)SYN/ACK的應(yīng)答包,表示客戶端的請求被接受,最后客戶端再返回一個(gè)確認(rèn)包ACK,這樣才完成TCP連接。在服務(wù)器端發(fā)送應(yīng)答包后,如果客戶端不發(fā)出確認(rèn),服務(wù)器會(huì)等待到超時(shí),期間這些半連接狀態(tài)都保存在一個(gè)空間有限的緩存隊(duì)列中;如果大量的SYN包發(fā)到服務(wù)器端后沒有應(yīng)答,就會(huì)使服務(wù)器端的TCP資源迅速耗盡,導(dǎo)致正常的連接不能進(jìn)入,甚至?xí)?dǎo)致服務(wù)器的系統(tǒng)崩潰。
攻擊器
? ? SYN攻擊實(shí)現(xiàn)起來非常的簡單,互聯(lián)網(wǎng)上有大量現(xiàn)成的SYN攻擊工具。
? ? windows系統(tǒng)下的SYN工具
? ? 以synkill.exe為例,運(yùn)行工具,選擇隨機(jī)的源地址和源端囗,并填寫目標(biāo)機(jī)器地址和TCP端囗,激活運(yùn)行,很快就會(huì)發(fā)現(xiàn)目標(biāo)系統(tǒng)運(yùn)行緩慢。如果攻擊效果不明顯,可能是目標(biāo)機(jī)器并未開啟所填寫的TCP端囗或者防火墻拒絕訪問該端囗,此時(shí)可選擇允許訪問的TCP端囗,通常,windows系統(tǒng)開放tcp139端囗,UNIX系統(tǒng)開放tcp7、21、23等端囗。
檢測攻擊
? ? 檢測SYN攻擊非常的方便,當(dāng)你在服務(wù)器上看到大量的半連接狀態(tài)時(shí),特別是源IP地址是隨機(jī)的,基本上可以斷定這是一次SYN攻擊。我們使用系統(tǒng)自帶的netstat 工具來檢測SYN攻擊:
# netstat -n -p TCP
tcp 0 0 10.11.11.11:23 124.173.152.8:25882 SYN_RECV -
tcp 0 0 10.11.11.11:23 236.15.133.204:2577 SYN_RECV -
tcp 0 0 10.11.11.11:23 127.160.6.129:51748 SYN_RECV -
tcp 0 0 10.11.11.11:23 222.220.13.25:47393 SYN_RECV -
tcp 0 0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV -
tcp 0 0 10.11.11.11:23 232.115.18.38:278 SYN_RECV -
tcp 0 0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV -
tcp 0 0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV -
...
上面是在LINUX系統(tǒng)中看到的,很多連接處于SYN_RECV狀態(tài)(在WINDOWS系統(tǒng)中是SYN_RECEIVED狀態(tài)),源IP地址都是隨機(jī)的,表明這是一種帶有IP欺騙的SYN攻擊。
我們也可以通過下面的命令直接查看在LINUX環(huán)境下某個(gè)端囗的未連接隊(duì)列的條目數(shù):
#netstat -n -p TCP | grep SYN_RECV | grep :22 | wc -l
324
顯示TCP端囗22的未連接數(shù)有324個(gè),雖然還遠(yuǎn)達(dá)不到系統(tǒng)極限,但應(yīng)該引起管理員的注意。
防范技術(shù)
? ? 一類是通過防火墻、路由器等過濾網(wǎng)關(guān)防護(hù),另一類是通過加固TCP/IP協(xié)議棧防范
注冊表設(shè)置
? ? 在“開始->運(yùn)行->鍵入regedit”
? ? 啟用 SYN 攻擊保護(hù)的命名值位于注冊表項(xiàng) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters之下。值名稱:SynAttackProtect。推薦值:2。
? ? 以下部分中的所有項(xiàng)和值均位于注冊表項(xiàng) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters 之下。
? ? 指定必須在觸發(fā) SYN flood 保護(hù)之前超過的 TCP 連接請求閾值。值名稱:TcpMaxPortsExhausted。推薦值:5。
? ? 啟用 SynAttackProtect 后,該值指定 SYN_RCVD 狀態(tài)中的 TCP 連接閾值,超過 SynAttackProtect 時(shí),觸發(fā) SYN flood 保護(hù)。值名稱:TcpMaxHalfOpen。推薦值數(shù)據(jù):500。
? ? 啟用 SynAttackProtect 后,指定至少發(fā)送了一次重傳的 SYN_RCVD 狀態(tài)中的 TCP 連接閾值。超過 SynAttackProtect 時(shí),觸發(fā) SYN flood 保護(hù)。值名稱:TcpMaxHalfOpenRetried。推薦值數(shù)據(jù):400
豐富帶寬資源
? ? 不難看出syn攻擊消耗帶寬資源所以要想防御synflood一個(gè)豐富的帶寬資源是必要的,通常的流量攻擊,攻擊者也是利用肉雞的帶寬資源來達(dá)到攻擊堵死網(wǎng)絡(luò)的,所以這個(gè)是一個(gè)前提
防火墻
? ? 利用防火墻來進(jìn)行防護(hù)攻擊是目前最有效的方法,當(dāng)然前提是攻擊在防護(hù)帶寬范圍之內(nèi),也就是為什么第二條推薦帶寬資源,這是保證在防火墻前面不會(huì)造成堵塞,來達(dá)到防火墻的防護(hù)目的。
一 協(xié)議概述
<一> 概念
1 基本概念? ? Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。
? ? TCP/IP 定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。協(xié)議采用了4層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求。通俗而言:TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡亍6鳬P是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個(gè)地址。
? ??
? ? 數(shù)據(jù)幀:幀頭+IP數(shù)據(jù)包+幀尾 (幀頭包括源和目標(biāo)主機(jī)MAC地址及類型,幀尾是校驗(yàn)字)
? ? IP數(shù)據(jù)包:IP頭部+TCP數(shù)據(jù)信息(IP頭包括源和目標(biāo)主機(jī)IP地址、類型、生存期等)
? ? TCP數(shù)據(jù)信息:TCP頭部+實(shí)際數(shù)據(jù) (TCP頭包括源和目標(biāo)主機(jī)端口號、順序號、確認(rèn)號、校驗(yàn)字等)
2 IP地址
? ? 在Internet上連接的所有計(jì)算機(jī),從大型機(jī)到微型計(jì)算機(jī)都是以獨(dú)立的身份出現(xiàn),我們稱它為主機(jī)。為了實(shí)現(xiàn)各主機(jī)間的通信,每臺主機(jī)都必須有一個(gè)唯一的網(wǎng)絡(luò)地址。就好像每一個(gè)住宅都有唯一的門牌一樣,才不至于在傳輸資料時(shí)出現(xiàn)混亂。
? ? Internet的網(wǎng)絡(luò)地址是指連入Internet網(wǎng)絡(luò)的計(jì)算機(jī)的地址編號。所以,在Internet網(wǎng)絡(luò)中,網(wǎng)絡(luò)地址唯一地標(biāo)識一臺計(jì)算機(jī)。
? ? 我們都已經(jīng)知道,Internet是由幾千萬臺計(jì)算機(jī)互相連接而成的。而我們要確認(rèn)網(wǎng)絡(luò)上的每一臺計(jì)算機(jī),靠的就是能唯一標(biāo)識該計(jì)算機(jī)的網(wǎng)絡(luò)地址,這個(gè)地址就叫做IP(Internet Protocol的簡寫)地址,即用Internet協(xié)議語言表示的地址。
? ? 在Internet里,IP地址是一個(gè)32位的二進(jìn)制地址,為了便于記憶,將它們分為4組,每組8位,由小數(shù)點(diǎn)分開,用四個(gè)字節(jié)來表示,而且,用點(diǎn)分開的每個(gè)字節(jié)的數(shù)值范圍是0~255,如202.116.0.1,這種書寫方法叫做點(diǎn)數(shù)表示法。
3 OSI參考模型
? ? OSI參考模型是ISO的建議,它是為了使各層上的協(xié)議國際標(biāo)準(zhǔn)化而發(fā)展起來的。OSI參考模型全稱是開放系統(tǒng)互連參考模型(Open System Interconnection Reference Model)。這一參考模型共分為七層:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層;
? ? 物理層(Physical Layer)主要是處理機(jī)械的、電氣的和過程的接口,以及物理層下的物理傳輸介質(zhì)等。
? ? 數(shù)據(jù)鏈路層(Data Link Layer)的任務(wù)是加強(qiáng)物理層的功能,使其對網(wǎng)絡(luò)層顯示為一條無錯(cuò)的線路。
? ? 網(wǎng)絡(luò)層(Network Layer)確定分組從源端到目的端的路由選擇。路由可以選用網(wǎng)絡(luò)中固定的靜態(tài)路由表,也可以在每一次會(huì)話時(shí)決定,還可以根據(jù)當(dāng)前的網(wǎng)絡(luò)負(fù)載狀況,靈活地為每一個(gè)分組分別決定。
? ? 傳輸層(Transport Layer)從會(huì)話層接收數(shù)據(jù),并傳輸給網(wǎng)絡(luò)層,同時(shí)確保到達(dá)目的端的各段信息正確無誤,而且使會(huì)話層不受硬件變化的影響。通常,會(huì)話層每請求建立一個(gè)傳輸連接,傳輸層就會(huì)為其創(chuàng)建一個(gè)獨(dú)立的網(wǎng)絡(luò)連接。但如果傳輸連接需要一個(gè)較高的吞吐量,傳輸層也可以為其創(chuàng)建多個(gè)網(wǎng)絡(luò)連接,讓數(shù)據(jù)在這些網(wǎng)絡(luò)連接上分流,以提高吞吐量。而另一方面,如果創(chuàng)建或維持一個(gè)獨(dú)立的網(wǎng)絡(luò)連接不合算,傳輸層也可將幾個(gè)傳輸連接復(fù)用到同一個(gè)網(wǎng)絡(luò)連接上,以降低費(fèi)用。除了多路復(fù)用,傳輸層還需要解決跨網(wǎng)絡(luò)連接的建立和拆除,并具有流量控制機(jī)制。
? ? 會(huì)話層(Session Layer)允許不同機(jī)器上的用戶之間建立會(huì)話關(guān)系,既可以進(jìn)行類似傳輸層的普通數(shù)據(jù)傳輸,也可以被用于遠(yuǎn)程登錄到分時(shí)系統(tǒng)或在兩臺機(jī)器間傳遞文件。
? ? 表示層(Presentation Layer)用于完成一些特定的功能,這些功能由于經(jīng)常被請求,因此人們希望有通用的解決辦法,而不是由每個(gè)用戶各自實(shí)現(xiàn)。
? ? 應(yīng)用層(Application Layer)中包含了大量人們普遍需要的協(xié)議。不同的文件系統(tǒng)有不同的文件命名原則和不同的文本行表示方法等,不同的系統(tǒng)之間傳輸文件還有各種不兼容問題,這些都將由應(yīng)用層來處理。此外,應(yīng)用層還有虛擬終端、電子郵件和新聞組等各種通用和專用的功能。
二 應(yīng)用
1 協(xié)議測試
全面的測試應(yīng)包括局域網(wǎng)和互聯(lián)網(wǎng)兩個(gè)方面,因此應(yīng)從局域網(wǎng)和互聯(lián)網(wǎng)兩個(gè)方面測試,以下是在實(shí)際工作中利用命令行測試TCP/IP配置步驟:
1). 單擊“開始”/“運(yùn)行”,輸入CMD按回車,打開命令提示符窗口。
2).首先檢查IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器地址是否正確,輸入命令ipconfig /all,按回車。此時(shí)顯示了你的網(wǎng)絡(luò)配置,觀查是否正確。
3).輸入ping 127.0.0.1,觀查網(wǎng)卡是否能轉(zhuǎn)發(fā)數(shù)據(jù),如果出現(xiàn)“Request timed out”(請求超時(shí)),表明配置出錯(cuò)或網(wǎng)絡(luò)有問題。
4).Ping一個(gè)互聯(lián)網(wǎng)地址,看是否有數(shù)據(jù)包傳回,以驗(yàn)證與互聯(lián)網(wǎng)的連接性。
5). Ping 一個(gè)局域網(wǎng)地址,觀查與它的連通性。
6).用nslookup測試DNS解析是否正確,輸入如nslookup ,查看是否能解析。
如果你的計(jì)算機(jī)通過了全部測試,則說明網(wǎng)絡(luò)正常,否則網(wǎng)絡(luò)可能有不同程度的問題。在此不展開詳述。不過,要注意,在使用 ping命令時(shí),有些公司會(huì)在其主機(jī)設(shè)置丟棄ICMP數(shù)據(jù)包,造成你的ping命令無法正常返回?cái)?shù)據(jù)包,不防換個(gè)網(wǎng)站試試。
2 協(xié)議重置
如果需要重新安裝 TCP/IP 以使TCP/IP 堆棧恢復(fù)為原始狀態(tài)。可以使用NetShell 實(shí)用程序重置TCP/IP 堆棧,使其恢復(fù)到初次安裝操作系統(tǒng)時(shí)的狀態(tài)。具體操作如下:
1).單擊 開始--> 運(yùn)行,輸入"CMD" 后單擊"確定";
2).在命令行模式輸入命令
netsh int ip reset C:\resetlog.txt
(其中,Resetlog.txt記錄命令結(jié)果的日志文件,一定要指定,這里指定了Resetlog.txt 日志文件及完整路徑。)
運(yùn)行結(jié)果可以查看C:\resetlog.txt
運(yùn)行此命令的結(jié)果與刪除并重新安裝TCP/IP 協(xié)議的效果相同。
注意
本操作具有一定的風(fēng)險(xiǎn)性,請?jiān)诓僮髑皞浞葜匾獢?shù)據(jù),并根據(jù)操作熟練度酌情使用。
三 單個(gè)的名詞含義
1 SYN? ? SYN(synchronous)是TCP/IP建立連接時(shí)使用的握手信號。在客戶機(jī)和服務(wù)器之間建立正常的TCP網(wǎng)絡(luò)連接時(shí),客戶機(jī)首先發(fā)出一個(gè)SYN消息,服務(wù)器使用SYN+ACK應(yīng)答表示接收到了這個(gè)消息,最后客戶機(jī)再以ACK消息響應(yīng)。這樣在客戶機(jī)和服務(wù)器之間才能建立起可靠的TCP連接,數(shù)據(jù)才可以在客戶機(jī)和服務(wù)器之間傳遞。
? ? TCP連接的第一個(gè)包,非常小的一種數(shù)據(jù)包。
2 ACK
? ? Acknowledgement,即確認(rèn)字符,在數(shù)據(jù)通信中,接收站發(fā)給發(fā)送站的一種傳輸類控制字符。表示發(fā)來的數(shù)據(jù)已確認(rèn)接收無誤。
? ? 在TCP/IP協(xié)議中,如果接收方成功的接收到數(shù)據(jù),那么會(huì)回復(fù)一個(gè)ACK數(shù)據(jù)。通常ACK信號有自己固定的格式,長度大小,由接收方回復(fù)給發(fā)送方。其格式取決于采取的網(wǎng)絡(luò)協(xié)議。當(dāng)發(fā)送方接收到ACK信號時(shí),就可以發(fā)送下一個(gè)數(shù)據(jù)。如果發(fā)送方?jīng)]有收到信號,那么發(fā)送方可能會(huì)重發(fā)當(dāng)前的數(shù)據(jù)包,也可能停止傳送數(shù)據(jù)。具體情況取決于所采用的網(wǎng)絡(luò)協(xié)議。
? ? TCP報(bào)文格式中的控制位由6個(gè)標(biāo)志比特構(gòu)成,其中一個(gè)就是ACK,ACK為1表示確認(rèn)號有效,為0表示報(bào)文中不包含確認(rèn)信息,忽略確認(rèn)號字段。
? ? ACK也可用于AT24cxx這一系列的EEPROM中。
? ? 在USB傳輸中,ACK事務(wù)包用來向主機(jī)/設(shè)備報(bào)告包正確的傳輸。
3 FIN
? ? FIN(ISH)為TCP報(bào)頭的碼位字段,該位置為1的含義為發(fā)送方字節(jié)流結(jié)束,用于關(guān)閉連接。
? ? 當(dāng)兩端交換帶有FIN標(biāo)志的TCP報(bào)文段并且每一端都確認(rèn)另一端發(fā)送的FIN包時(shí),TCP連接將會(huì)關(guān)閉。FIN位字面上的意思是連接一方再也沒有更多新的數(shù)據(jù)發(fā)送。然而,那些重傳的數(shù)據(jù)會(huì)被傳送,直到接收端確認(rèn)所有的信息。
四 編程
五 黑客攻擊與防御
1 SYN攻擊? ? SYN 攻擊包括大量此類的包,由于這些包看上去來自實(shí)際不存在的站點(diǎn),因此無法有效進(jìn)行處理。每個(gè)機(jī)器的欺騙包都要花幾秒鐘進(jìn)行嘗試方可放棄提供正常響應(yīng)。
攻擊性質(zhì)
? ? SYN攻擊屬于DDoS攻擊的一種,它利用TCP協(xié)議缺陷,通過發(fā)送大量的半連接請求,耗費(fèi)CPU和內(nèi)存資源。SYN攻擊除了能影響主機(jī)外,還可以危害路由器、防火墻等網(wǎng)絡(luò)系統(tǒng),事實(shí)上SYN攻擊并不管目標(biāo)是什么系統(tǒng),只要這些系統(tǒng)打開TCP服務(wù)就可以實(shí)施。服務(wù)器接收到連接請求(syn= j),將此信息加入未連接隊(duì)列,并發(fā)送請求包給客戶(syn=k,ack=j+1),此時(shí)進(jìn)入SYN_RECV狀態(tài)。當(dāng)服務(wù)器未收到客戶端的確認(rèn)包時(shí),重發(fā)請求包,一直到超時(shí),才將此條目從未連接隊(duì)列刪除。配合IP欺騙,SYN攻擊能達(dá)到很好的效果,通常,客戶端在短時(shí)間內(nèi)偽造大量不存在的IP地址,向服務(wù)器不斷地發(fā)送syn包,服務(wù)器回復(fù)確認(rèn)包,并等待客戶的確認(rèn),由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí),這些偽造的SYN包將長時(shí)間占用未連接隊(duì)列,正常的SYN請求被丟棄,目標(biāo)系統(tǒng)運(yùn)行緩慢,嚴(yán)重者引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。
攻擊原理
? ? 歸納起來,主要有兩大類,一類是通過防火墻、路由器等過濾網(wǎng)關(guān)防護(hù),另一類是通過加固TCP/IP協(xié)議棧防范。
? ? SYN Flood利用TCP協(xié)議缺陷,發(fā)送了大量偽造的TCP連接請求,使得被攻擊方資源耗盡,無法及時(shí)回應(yīng)或處理正常的服務(wù)請求。一個(gè)正常的TCP連接需要三次握手,首先客戶端發(fā)送一個(gè)包含SYN標(biāo)志的數(shù)據(jù)包,其后服務(wù)器返回一個(gè)SYN/ACK的應(yīng)答包,表示客戶端的請求被接受,最后客戶端再返回一個(gè)確認(rèn)包ACK,這樣才完成TCP連接。在服務(wù)器端發(fā)送應(yīng)答包后,如果客戶端不發(fā)出確認(rèn),服務(wù)器會(huì)等待到超時(shí),期間這些半連接狀態(tài)都保存在一個(gè)空間有限的緩存隊(duì)列中;如果大量的SYN包發(fā)到服務(wù)器端后沒有應(yīng)答,就會(huì)使服務(wù)器端的TCP資源迅速耗盡,導(dǎo)致正常的連接不能進(jìn)入,甚至?xí)?dǎo)致服務(wù)器的系統(tǒng)崩潰。
攻擊器
? ? SYN攻擊實(shí)現(xiàn)起來非常的簡單,互聯(lián)網(wǎng)上有大量現(xiàn)成的SYN攻擊工具。
? ? windows系統(tǒng)下的SYN工具
? ? 以synkill.exe為例,運(yùn)行工具,選擇隨機(jī)的源地址和源端囗,并填寫目標(biāo)機(jī)器地址和TCP端囗,激活運(yùn)行,很快就會(huì)發(fā)現(xiàn)目標(biāo)系統(tǒng)運(yùn)行緩慢。如果攻擊效果不明顯,可能是目標(biāo)機(jī)器并未開啟所填寫的TCP端囗或者防火墻拒絕訪問該端囗,此時(shí)可選擇允許訪問的TCP端囗,通常,windows系統(tǒng)開放tcp139端囗,UNIX系統(tǒng)開放tcp7、21、23等端囗。
檢測攻擊
? ? 檢測SYN攻擊非常的方便,當(dāng)你在服務(wù)器上看到大量的半連接狀態(tài)時(shí),特別是源IP地址是隨機(jī)的,基本上可以斷定這是一次SYN攻擊。我們使用系統(tǒng)自帶的netstat 工具來檢測SYN攻擊:
# netstat -n -p TCP
tcp 0 0 10.11.11.11:23 124.173.152.8:25882 SYN_RECV -
tcp 0 0 10.11.11.11:23 236.15.133.204:2577 SYN_RECV -
tcp 0 0 10.11.11.11:23 127.160.6.129:51748 SYN_RECV -
tcp 0 0 10.11.11.11:23 222.220.13.25:47393 SYN_RECV -
tcp 0 0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV -
tcp 0 0 10.11.11.11:23 232.115.18.38:278 SYN_RECV -
tcp 0 0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV -
tcp 0 0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV -
...
上面是在LINUX系統(tǒng)中看到的,很多連接處于SYN_RECV狀態(tài)(在WINDOWS系統(tǒng)中是SYN_RECEIVED狀態(tài)),源IP地址都是隨機(jī)的,表明這是一種帶有IP欺騙的SYN攻擊。
我們也可以通過下面的命令直接查看在LINUX環(huán)境下某個(gè)端囗的未連接隊(duì)列的條目數(shù):
#netstat -n -p TCP | grep SYN_RECV | grep :22 | wc -l
324
顯示TCP端囗22的未連接數(shù)有324個(gè),雖然還遠(yuǎn)達(dá)不到系統(tǒng)極限,但應(yīng)該引起管理員的注意。
防范技術(shù)
? ? 一類是通過防火墻、路由器等過濾網(wǎng)關(guān)防護(hù),另一類是通過加固TCP/IP協(xié)議棧防范
注冊表設(shè)置
? ? 在“開始->運(yùn)行->鍵入regedit”
? ? 啟用 SYN 攻擊保護(hù)的命名值位于注冊表項(xiàng) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters之下。值名稱:SynAttackProtect。推薦值:2。
? ? 以下部分中的所有項(xiàng)和值均位于注冊表項(xiàng) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters 之下。
? ? 指定必須在觸發(fā) SYN flood 保護(hù)之前超過的 TCP 連接請求閾值。值名稱:TcpMaxPortsExhausted。推薦值:5。
? ? 啟用 SynAttackProtect 后,該值指定 SYN_RCVD 狀態(tài)中的 TCP 連接閾值,超過 SynAttackProtect 時(shí),觸發(fā) SYN flood 保護(hù)。值名稱:TcpMaxHalfOpen。推薦值數(shù)據(jù):500。
? ? 啟用 SynAttackProtect 后,指定至少發(fā)送了一次重傳的 SYN_RCVD 狀態(tài)中的 TCP 連接閾值。超過 SynAttackProtect 時(shí),觸發(fā) SYN flood 保護(hù)。值名稱:TcpMaxHalfOpenRetried。推薦值數(shù)據(jù):400
豐富帶寬資源
? ? 不難看出syn攻擊消耗帶寬資源所以要想防御synflood一個(gè)豐富的帶寬資源是必要的,通常的流量攻擊,攻擊者也是利用肉雞的帶寬資源來達(dá)到攻擊堵死網(wǎng)絡(luò)的,所以這個(gè)是一個(gè)前提
防火墻
? ? 利用防火墻來進(jìn)行防護(hù)攻擊是目前最有效的方法,當(dāng)然前提是攻擊在防護(hù)帶寬范圍之內(nèi),也就是為什么第二條推薦帶寬資源,這是保證在防火墻前面不會(huì)造成堵塞,來達(dá)到防火墻的防護(hù)目的。
總結(jié)
以上是生活随笔為你收集整理的TCP/IP协议-概念、应用、开发、Hack的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个web左侧菜单例子
- 下一篇: DES算法详解和代码 - IP置换