複習一下計算機基礎知識,準備春招…
tcp(transmission control protocol,傳輸控制協議)可靠資料傳輸協議(保證資料正確性)、面向連線的、面向位元組流、傳輸慢,安全漏洞多,容易受到攻擊(syn flood 如果在第二次握手後伺服器就分配資源)、tcp 首部開銷20 位元組(tcp 報文段由首部欄位和資料字段組成,首部字段一般 20 位元組,但是由於首部欄位中 tcp 的選項欄位是可變的,所以 tcp 的首部長度是可變的。(選項欄位為空,tcp 首部字段 20 位元組))、要求系統資源較多、用於 web 或者 e-mail。客戶和伺服器交換資料前,必須先在雙方之間建立乙個 tcp 連線,之後才能傳輸資料。並且提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。
tcp 的首部欄位中,序號和確認號是最重要的兩個字段。這對於實現 tcp 的可靠資料傳輸十分重要。其中,序號中存放的是:傳送資料中的第乙個位元組的位元組流編號。確認號中存放的是:希望從對方接受的下乙個位元組的序號。tcp 的首部字段主要包括:源埠號和目的埠號、序號、確認號、首部長度、標誌字段(ack\syn\fin)、接收視窗(用於流量控制,用於指示接收方願意接收的位元組數量)、可
選與變長的選項字段(用於傳送方與接收方協商最大報文長度時、或在告訴網路環境下用視窗調節因子使用)、網際網路檢驗和(差錯檢測)、緊急資料指標(一般不用)。
它不提供可靠性,只是把應用程式傳給運輸層的資料報傳送出去,但是不能保證它們能到達目的地。由於 udp 在傳輸資料報前不用在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,所以傳輸速度很快。
udp 報文段結構:源埠號、目的埠號、長度(指示了在 udp 報文段中的位元組數(首部+資料))、檢驗和(差錯檢測)、應用資料。
tcp syn flood:攻擊者首先偽造位址對伺服器發起 syn 請求(我可以建立連線嗎?),伺服器就會回應乙個 ack+syn(可以+請確認)。而真實的 ip 會認為,我沒有傳送請求,不作回應。伺服器沒有收到回應,會重試 3-5 次並且等待乙個 syn time(一般 30 秒-2 分鐘)後,丟棄這個連線。
如果攻擊者大量傳送這種偽造源位址的 syn 請求,伺服器端將會消耗非常多的資源來處理這種半連線,儲存遍歷會消耗非常多的 cpu 時間和記憶體,何況還要不斷對這個列表中的ip 進行 syn+ack 的重試。tcp 是可靠協議,這時就會重傳報文,預設重試次數為 5 次,重試的間隔時間從 1s 開始每次都翻倍,分別為 1s + 2s + 4s + 8s +16s = 31s,第 5 次發出後還要等 32s 才知道第 5 次也超時了,所以一共是 31 + 32 = 63s。也就是說乙個假的 syn 報文,會占用 tcp 準備佇列 63s 之久,而半連線佇列預設為 1024,系統預設不同,可 cat /proc/sys/net/ipv4/tcp_max_syn_backlog c 檢視。也就是說在沒有任何防護的情況下,每秒傳送 200 個偽造 syn 包,就足夠撐爆半連線佇列,從而使真正的連線無法建立,無法響應正常請求。 最後的結果是伺服器無暇理睬正常的連線請求—拒絕服務。
半連線佇列:伺服器第一次接受到客戶端的 syn 之後,就會處於 syn_rcvd 狀態,此時雙方還沒有完全建立連線,伺服器會把這種狀態下請求連線放在乙個佇列裡,我們把這種佇列稱之為半連線佇列。當然還有全連線佇列,就是已經完成三次握手,建立起連線的就會放在全連線佇列中,如果佇列滿了就會出現丟包現象。
TCP和UDP的區別
tcp transimission control protocol 傳輸控制協議 和udp user datagram protocol 是傳輸層的兩種實現版本!它們之間提供基本的服務又各有所長。因此,根據對特定服務質量的要求,應用層軟體單元可以選擇通過傳輸層的tcp版本或者udp版本來傳輸資料。...
TCP和UDP的區別
tcp和udp都是傳輸層的協議,他們的區別主要如下 1 tcp,全名 傳輸控制協議 是面向連線的,也就是說在傳送方和接收方在傳送資料之前,必須通過三次握手建立連線,相當於現實生活中的打 功能,必須先撥號,接通後才能說話,udp,全名 使用者資料報協議 是無連線的,其中一方向向另一方傳送資料時不需要建...
TCP和UDP的區別
tcp transmission control protocol,傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次 對話 才能建立起來,其中的過程非常複雜,我們這裡只做簡單 形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三...