說明: 通常情況下:乙個正常的tcp連線,都會有三個階段:1、tcp三次握手;2、資料傳送;3、tcp四次揮手
裡面的幾個概念:
客戶端發起乙個和服務建立tcp鏈結的請求,這裡是syn(j)
服務端接受到客戶端的建立請求後,返回兩個資訊: syn(k) + ack(j+1)
客戶端在接受到服務端的ack資訊校驗成功後(j與j+1),返回乙個資訊:ack(k+1)
服務端這時接受到客戶端的ack資訊校驗成功後(k與k+1),不再返回資訊,後面進入資料通訊階段
客戶端/服務端 read/write資料報
客戶端發起關閉請求,傳送乙個資訊:fin(m)
服務端接受到資訊後,首先返回ack(m+1),表明自己已經收到訊息。
服務端在準備好關閉之前,最後傳送給客戶端乙個 fin(n)訊息,詢問客戶端是否準備好關閉了
客戶端接受到服務端傳送的訊息後,返回乙個確認資訊: ack(n+1)
最後,服務端和客戶端在雙方都得到確認時,各自關閉或者**對應的tcp鏈結。
syn_send
syn_received
established
fin_wait1
close_wait
fin_wait2
lask_ack
time_wait
主動關閉方在接收到被動關閉方的fin請求後,傳送成功給對方乙個ack後,將自己的狀態由fin_wait2修改為time_wait,而必須再等2倍的msl(maximum segment lifetime,msl是乙個資料報在internetwork中能存在的時間)時間之後雙方才能把狀態 都改為closed以關閉連線。目前rhel裡保持time_wait狀態的時間為60秒
keepalive策略可以有效的避免進行三次握手和四次關閉的動作
tcpdump [ -adeflnnopqstvx ] [ -c 數量 ] [ -f 檔名 ][ -i 網路介面 ] [ -r 檔名] [ -s snaplen ][ -t 型別 ] [ -w 檔名 ] [表示式 ]
-l 使標準輸出變為緩衝行形式;
-n 不把網路位址轉換成名字;
-c 在收到指定的包的數目後,tcpdump就會停止;
-i 指定監聽的網路介面;
-w 直接將包寫入檔案中,並不分析和列印出來;
-s 指定記錄package的大小,常見 -s 0 ,代表最大值65535,一半linux傳輸最小單元mtu為1500,足夠了
-x 直接輸出package data資料,預設不設定,只能通過-w指定檔案進行輸出
關於型別的關鍵字,主要包括host,net,port
傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src
協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等型別
邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'||'
其他重要的關鍵字如下:gateway, broadcast,less,greater
tcpdump tcp port 80 -n -x -s 0 指定80埠進行輸出
tcpdump tcp port 80 -n -s 0 -w /tmp/tcp.cap
對應的/tmp/tcp.cap基本靠肉眼已經能看一下資訊,比如http header , content資訊等
tcpdump tcp port 80 -n -s 0 -x -l | grep ***x
這樣可以實時對資料報進行字串匹配過濾
線上伺服器apache+jetty,通過apache mod_proxy進行乙個反向**,80 apache埠, 7001 jetty埠
apache埠資料抓包: tcpdump tcp port 80 -n -s 0 -x -i eth0 注意:指定eth0網路介面
jetty埠資料抓包: tcpdump tcp port 7001 -n -s 0 -x -i lo 注意:指定loopback網路介面
tcpdump tcp host 10.16.2.85 and port 2100 -s 0 -x
需要使用tcp表示式的組合,這裡是host指示只監聽該ip
操作:
注意:
李濤 郵件資料
man tcp
(tcpdump)
tcp鏈結的幾種狀態
說明 通常情況下 乙個正常的tcp連線,都會有三個階段 1 tcp三次握手 2 資料傳送 3 tcp四次揮手 裡面的幾個概念 客戶端發起乙個和服務建立tcp鏈結的請求,這裡是syn j 服務端接受到客戶端的建立請求後,返回兩個資訊 syn k ack j 1 客戶端在接受到服務端的ack資訊校驗成功...
TCP常見的幾種狀態
tcp常見的幾種狀態 closed 初始狀態,表示沒有任何連線。listen server端的某個socket正在監聽來自遠方的tcp埠的連線請求。syn sent 傳送連線請求後等待確認資訊。當客戶端socket進行connect連線時,會首先傳送syn包,隨即進入syn sent狀態,然後等待s...
程序的幾種狀態
程序 程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位。程序狀態 乙個程序的生命週期可以劃分為一組狀態,這些狀態刻畫了整個程序。程序狀態即體現乙個程序的生命狀態。程序狀態 一般來說,程序有三個狀態,即就緒狀態,執行狀態 阻塞狀態。執行態 程序占...