Ethereal TCP/UDP 1,2

가지가지 2006. 5. 21. 18:56

Ethereal TCP/UDP 1,2

1. TCP와 UDP를 사용하는 애플리케이션과 전송 프로토콜

2. Ethereal 사용

2.1 Ethereal Capture Options

2.2 Coloring Rules

2.3 Display Filters

2.4 Follow TCP Stream

2.5 Statistics




1. TCP와 UDP를 사용하는 애플리케이션과 전송 프로토콜


전자메일, 원격 터미널 접속, 웹, 파일 전송은 TCP에서 동작한다. 이러한 모든 애플리케이션은 TCP의 신뢰적인 데이터 전송 서비스를 필요로 한다. 그렇지만 많은 중요한 애플리케이션은 TCP보다 UDP에서 동작한다. 그리고 UDP는 RIP 라우팅 테이블 갱신에 사용된다. RIP갱신(대체로 5분마다)은 주기적으로 전송되므로, 손실된 갱신은 좀 더 최근 생신에 의해 교체될 수 있게 하여 손실되거나 시간이 지난 갱신이 필요 없게 만든다. 또한 UDP는 네트워크 관리 데이터를 전달하는 데 사용된다. 네트워크 관리 애플리케이션은 네트워크가 혼잡한 상태에 있을 때 자주 동작해야하므로 이러한 경우에는 UDP가 TCP보다 더 좋다.


<인터넷 애플리케이션과 해당 전송 프로토콜>

애플리케이션

애플리케이션 계층프로토콜

하위 트랜스포트 프로토콜

전자메일

SMTP

TCP

원격터미널 접속

Telnet

TCP

HTTP

TCP

파일전송

FTP

TCP

원격 파일 서버

NFS

일반적으로 UDP

스트리밍 멀티미디어

비공개

일반적으로 UDP

인터넷 전화

비공개

일반적으로 UDP

네트워크 관리

SNMP

일반적으로 UDP

라우팅 프로토콜

RIP

일반적으로 UDP

이름 변환

DNS

일반적으로 UDP




2. Ethereal 사용

2.1 Ethereal Capture Options

Capture menu

그림 과 같이 [Capture] 메뉴에서 패킷캡쳐를 위한 메뉴들이 있으며 [Interfaces]메뉴는 랜카드만을 선택하기 때문에 [Options]메뉴를 선택하여 세부설정을 보도록한다.

Capture Option Dialog


이 그림은 [Options]메뉴를 선택했을시 나오는 Dialog로 설명을 위해 각 설정마다 ①~⑥의 번호를 표시하였다.

영역 ①은 유저의 컴퓨터에서 사용가능한 인터페이스를 보여주며 캡쳐에 사용할 적절한 인터페이스를 선택하면 아래 보이는 “IP address: unknown"이 해당 인터페이스의 IP주소로 바뀐다.

영역 ②에서 ”Capture packets in promiscuous mode“는 무작위 모드의 사용여부를 결정하며 이 모드를 사용하면 유저와 통신하려는 패킷이외에도 유저에게 질의하는 모든 패킷을 캡쳐한다. 즉, 어떤 질의자 A가 통신할 다른 개체 B를 찾을 때 ARP처럼 이곳저곳에 질의를 할때 당신은 B가 아니지만 A는 B를 찾기위해 당신에게도 질의한다면 이 모드는 그런 패킷도 캡쳐하는 것이다. 단, 무선랜 사용시엔 무작위 모드를 끄지않으면 캡쳐가 이루어지지 않는다. -적어도 나의 경우엔 그랬다. 하지만 유선랜을 사용할땐 정상적으로 작동했다.- 두 번째 "Limits each packet to []bytes"는 패킷의 용량에 따라 캡쳐패킷을 제한한다. 마지막으로 "Capture Filter"를 누르면 필터문법을 도와줄 Capture Filter 창이 뜨며 input란에 적용할 필터 형식을 직접 기입하여 원하는 조건에 해당하는 패킷만을 캡쳐할 수 있다. 공란으로 둘 경우 모든 패킷을 캡쳐한다. 여기서 필터의 사용법을 살표보겠다. 다음 표에서 필터에서 사용하는 수식과 사용예를 간단하게 정리하였다.


<비교 연산자>

영문표기

C표현식(기호)

사 용 예

eq

==

같은(Equal)

ip.addr==192.168.10.68

(192.168.10.68의 IP를 가진 패킷)

ne

!=

이것이 아닌(Not equal)

ip.addr==192.168.10.68

(192.168.10.68을 제외한 패킷)

gt

>

보다 큰(Greater than)

frame.pkt_len>1500

(1500바이트보다 큰 패킷)

lt

<

보다 작은(Less than)

frame.pkt_len<64

(64바이트보다 작은 패킷)

ge

>=

보다 크거나 같은(Greater than or equal to)

frame.pkt_len>=128

(128바이트보다 크거나 같은 패킷)

le

<=

보다 작거나 같은(Less than or equal to)

frame.pkt_len<=48

(48바이트보다 작거나 같은 패킷)

<논리 연산자>

영문표기

C표현식(기호)

사 용 예

and

&&

논리 AND

ip.addr==192.168.1.156 and tcp.flags.fin

(IP어드레스가 192.168.1.156이며 TCP 플래그 값이 fin으로 설정된 패킷)

or

||

논리 OR

ip.addr==192.168.1.156 or ip.addr==192.168.1.155

(IP어드레스가 192.168.1.156 또는 155인 패킷)

xor

^^

논리 XOR

A XOR B

(A, B 두 항목끼리의 논리 연산값과 같은 패킷)

not

!

논리 NOT

not llc

(LLC 프로토콜이 아닌 패킷)


위의 표에서와 같이 영문표기와 C표현식을 혼용하여 사용할 수 있으며 익숙하지 않은 사용자를 위해 아래 그림과 같이 Filter사용을 위한 창을 제공하여 클릭만으로 원하는 표현식을 만들 수 있다.


Capture Filter Dialog


필터의 사용은 Etheral에서 가장 강력한 도구이므로 익숙하게 사용할 필요성이 있다. 아래 표에서 간단한 filter사용 예문과 설명을 적어놓았다. 필터 사용법의 이해에 매우 도움이 되리라 생각된다.


Filter Example

tcp port 23 and not host 219.144.59.152

:23번 포트를 가진 패킷들을 캡처하고 이중 219.144.59.152의 IP가 출발지/목적지인 패킷은 제외

gateway host <host>

:게이트웨이로 설정된 호스트에 대한 패킷들을 캡처하는 필터명령 구문

src net 192.168.0.0 mask 255.255.255.0

:출발지 네트워크가 192.168.0.0 네트워크(C 클래스)에 포함되는 패킷 캡쳐

udp src port 135

:지나가는 패킷 중에 UDP 프로토콜에 포트 번호가 135번인 패킷 캡쳐

ether proto 802.1

:이더넷 프로토콜 중 802.1을 캡쳐

arp

:arp 프로토콜 패킷만을 추출

ip.addr==192.168.10.68

:출발지나 목적지중에서 IP 프로토콜의 어드레스가 192.168.10.68인것만 추출

tcp.flags.ack

:캡쳐한 패킷중에 tcp의 플래그 값이 ack로 세팅된 패킷들만을 살핀다.

eth.src[0:3]==00:0d:bd

:이더넷의 출발지 혹은 목적지 MAC 어드레스의 오프셋 0에서 3일때까지의 주소만 비교해 같은 패킷을 보여준다(11:22:33:44:55:66에서 11~33까지 의미)

icmp and ip[2:2] = 92

:icmp이면서 IP 헤더 중에 2바이트(16bit)부터 2byte(16bit)까지가 92인 ip주소를 갖는 패킷을 보여준다.

ether host 08:00:08:15:ca:fe

:08:00:08:15:ca:fe 라는 MAC을 가진 호스트에서 사용하는 패킷만 캡처

host 192.168.0.10

:192.168.0.10라는 IP 주소에서 오는 패킷이나 그쪽으로 향하는 패킷 캡처

tcp port 80

:TCP 프로토콜 중 포트 80을 사용하는 패킷 캡처

host 192.168.0.10 and not tcp port 80

:IP 주소가 192.168.0.10이면서 TCP 포트 80을 사용하지 않는 패킷 캡처


이어서 영역 ③은 캡처한 패킷을 저장할지를 결정하며 여러개의 파일로도 저장 가능하다. 영역 ④는 자동으로 캡쳐가 중단될 조건을 설정하며 패킷수, 용량, 시간의 조건을 사용할 수 있다. 영역 ⑤는 캡쳐도중 화면에 표시할 패킷정보에 대한 옵션으로 “Update list of packets in real time"은 실시간으로 캡쳐되는 패킷을 화면에 표시할지를 선택하고 선택시 ”Automatic scrolling in live capture"가 활성화 된다. 활성화된 이 옵션은 캡쳐되는 패킷이 화면에 표시될 때 현재 캡쳐한 패킷목록이 보이도록 자동 스크롤링을 지원해준다. “Hide capture info dialog"옵션은 캡쳐시 나타나는 캡쳐 상태창을 표시하지 않겠다는 옵션이다.

Caption State Dialog


마지막으로 영역 ⑥인 Name Resolution에서 “Enable MAC name resolution", “Enable network name resolution", “Enable transport name resolution"는 각각의 표현을 주소형식이나 16진수가 아닌 보기 편하게 문자로된 이름으로 바꿔서 보여준다.

위에서 살펴본 옵션들중 몇몇 부가적인 기능들은 편한면도 있지만 대량의 패킷을 캡쳐할시 연산을 증가시켜 부하를 일으킬 수 있으므로 사용하지 않는것이 좋다.


패킷을 캡쳐하면 프로토콜이나 메시지에따라 목록의 색깔이 다르게 나오는것을 볼 수 있다. 이것은 사전에 정의된 색이며 [View]메뉴의 [Coloring Rules...]에서 사용자의 임의데로 변경하고나 추가/삭제가 가능하다.



2.2 Coloring Rules

View menu


[Coloring Rules...]메뉴를 선택하면 아래와 같이 해당 다이알로그 창이 뜨며 사전에 정의되어있는 규칙을 볼 수 있다. Edit이나 New로 추가할 수 있으며 여기서도 Filter를 사용하여 원하는 패킷에 대한 글자색과 배경색을 지정할수 있으며 규칙전체를 파일로 저장하여 여러 가지 패턴을 적용시킬 수 있다.


Coloring Rules Dialog




2.3 Display Filters

그 외에 자주 사용하게 될 메뉴로 [Analyze]의 [Display Filters...]메뉴가 있다.


Analyze menu


[Display Filters...]는 패킷을 캡쳐한 상태에서 Filter를 통해 원하는 조건의 패킷만을 화면에 표시한다. 이미 캡쳐된 패킷중 원하는것만 화면에 표시하는것이므로 캡쳐한 패킷이 삭제되거나 수정되지는 않는다. 아래 그림은 [Display Filters...]메뉴를 선택할 때 나오는 창이며 Filter부분에 Ethereal에서 미리 정의해둔 몇몇 필터형식을 볼 수 있다. 물론 직접 타이핑하며 필터를 만들 수 있으며 필터목록에 새로 추가 할수 있다. [Expression...]버튼을 누르면 사용 가능한 필터 문법을 선택하는 창이 나온다.

DIsplay Filter Dialog




2.4 Follow TCP Stream

위의 [Analyze]메뉴 그림에선 비활성화 되어있지만 TCP에 대한 패킷을 캡쳐하면 [Follow TCP Stream]메뉴가 활성화 된다. 사용법은 간단하다. 문자형식으로 내용을 보길 원하는 TCP 패킷중 하나를 선택한구 [Follow TCP Stream]메뉴를 클릭하면 관련 패킷들의 데이터를 모아 그 내용을 표시하여준다. 아래 그림은 인터넷 웹페이지를 열였을 때 캡쳐한 패킷에 대한 정보를 보여주며 붉은색은 사용자가 보낸 정보를 나타내며 파란색부분은 서버측에서 보내온 정보를 나타내고 있다. 내용을 보면 google 사이트에 접속한 정보이기에 Host로 google.co.kr이 나타남을 볼 수 있다. 두 번째 그림은 Ethereal 홈페이지의 sample 파일로 telnet 사용시 캡쳐한 내용을 보여준다. 로그인 과정부터 유닉스에서의 핑테스트를 하였음을 알 수 있다. 이처럼 패킷마다 나뉘어 전송된 정보를 한눈에 볼 수 있도록 도와주며 그 내용을 보기쉽게 나타내 준다.


Google : Follow TCP Stream Dialog

Telnet : Follow TCP Stream Dialog



2.5 Statistics

다음은 캡쳐한 패킷에 대한 통계를 볼수 있는 [Statistics]메뉴이다.

Statistics menu


이 메뉴는 기본적으로 캡쳐한 패킷에 대한 통계를 보여주며 캡쳐가 이루어지지 않았을땐 위의 그림처럼 [Summary]와 [Protocol Hierachy]메뉴가 비활성화 되어 있는 것을 볼 수 있다. 다음그림은 간단한 패킷 캡쳐후 [Summary]를 실행한 창이다. 파일과 시간, 캡쳐에 대한 인터페이스 정보등이 표시되며 전체 캡쳐된 패킷의 평균 수와 사이즈, 크기, 바이트등이 표시되며 Display Filter 사용시 Display된 패킷에 대한 정보가 Displayed 영역에 표시된다. 이를 통해 캡쳐에 대한 전체적인 정보를 볼 수 있다.

Summary Dialog


다음 그림은 [Protocol Hierachy]에 대한 통계로 캡쳐된 패킷의 프로토콜에 따른 점유율과 그에따른 용량등을 수치적으로 확인할 수 있으며 대량의 네트워크 캡쳐시 해당 네트워크의 프로토콜 흐름을 짐작할 수 있도록 해준다. 아래 그림에선 ARP(Address Resolution Protocol)가 64.15%로 대다수를 차지하고 있음을 보여준다. 사실 이것은 학교 도서관의 무선인터넷지역에서 캡쳐를 수행하였으며 약 38초동안 구글사이트에 잠시 접속하여 캡쳐한 것이다. 캡쳐한 네트워크 환경을 고려하여 보면 인터넷 사용자가 많은곳이라 ARP가 대다수이며 구글사이트 접속만을 수행하였으므로 TCP와 UDP의 사용이 대다수임을 볼 수 있다.


Protocol Hierarchy Statistics Dialog



다음으로 시간에 따른 패킷의 개수를 그래프로 확인 할 수 있는 [IO Graphs]매뉴가 있다. 앞의 메뉴와 달리 이것은 시각적인 그래프를 통해 직관적으로 네트워크의 패킷 흐름을 볼 수 있으며 Filter를 제공하여 해당 조건을 갖는 패킷을 다른색의 그래프로 표현하여 구분하여 볼 수 있다. 아래 그림은 간단하게 tcp 패킷은 검은색 udp 패킷은 빨간색으로 표시하여 구분하였다.


IO Graphs Dialog

'가지가지' 카테고리의 다른 글

UDP  (0) 2006.06.19
Motor Position (Modeling, PID, Root Locus)  (0) 2006.06.16
Qt 실행시 "세그멘테이션 오류" 잡기  (0) 2006.05.23
linux에서 DHCPd사용시 인터넷이 안될때 설정  (0) 2006.05.23
Sendmail 사용 - 2004년 2학기  (0) 2006.05.23
APM 설치 - 2004년 학기  (0) 2006.05.23
NTFS Mount  (0) 2006.05.22
Ethereal TCP/UDP 3,4,5  (0) 2006.05.21