트랜잭션 프로세서
프로그래머/개발자라면 한번쯤은 사용해보았을 법한 패킷분석 툴인 Wireshark를 한번 다뤄보려 합니다.
Wireshark는 패킷을 추출하여 분석할 수 있는 기초적인 툴입니다.
이 Wireshark를 사용하여 Packet Capture를 한 뒤, Protocol Packet을 분석하여 각 Protocol Packet Structure에 해당 하는 값을 적고, 각 Protocol Packet Structure의 부분들을 조사하여 어떤 역할을 하는지 살펴보도록 하겠습니다.
(1) wireshark 에서 패킷 캡쳐링을 실시 한 후 , 화면에서 Protocol 영역 중에 TCP 를 찾아서 클릭하면 TCP 에 관한 정보가 나오게 됩니다.
-(Src Port)Source port ( 발신지 포트 필드 ) : 발신지 포트필드는 발신지에서 오픈된 포트입니다 . 위의 패킷을 보면 https 포트 (443) 인 것을 확인할 수 있습니다 .
-(Dst Port)Destination port ( 목적지 포트 필드 ) : 목적지 포트필드는 수신지에서 오픈된 포트입니 다 . 위의 패킷을 보면 51462 포트인 것을 확인할 수 있습니다 .
-(Seq)Sequence number ( 순차 번호 필드 ) : 순차번호필드는 고유한 번호를 가지며 , 이 값으로 TCP 세그먼트에 대한 식별값을 제공하며 , 통신 스트림일부가 분실되면 확인을 위해 수신자를 사용가능하게 합니다 . 이 순차번호는 패킷에 포함되있는 데이터 만큼 증가하게 됩니다 . 화면에서는 15631 의 값을 가집니 Wireshark를 이용한 패킷 분석 다 .
-(Ack)Acknowledgment number ( 확인 응답 번호 필드 ) : 확인 응답 번호 필드는 다음번에 기대되는 순차번호를 표시한다 . ack number 에 관련하여 1078 의 값을 가지게 됩니다 .Wireshark를 이용한 패킷 분석
-Header length ( 데이터 오프셋 필드 ) : 데이터 오프셋필드는 TCP 헤더의 길이를 정의합니 다 . 길이는 4byte 씩 증가되고, 이 필드의 값이 20 이면 80 바이트 길이를 갖는다는 것입니다 . TCP 헤더의 길이가 다양하게 변화시킬 필요가 있으므로 이 필드가 필요하게 Wireshark를 이용한 패킷 분석 Wireshark를 이용한 패킷 분석 됩니다 .
URG (Urgent) : 긴급 포인터
ACK (Acknowledgment) : 확인 응답 패킷
PSH (Push) : 네트워크에서 버퍼링 우회와 데이터 즉시 통과
RST (Reset) : 연결 닫기
SYN (Synchronize) : 동기화 순차번호
FIN (Finish) : 트랜잭션 종료
이 비트는 잘 사용되지는 않습니다 . 만약 이 비트가 1 로 설정 된 경우 긴급 포인터 필드로 정의되는 특정위치에서 시작하는 패킷의 데이터를 알기 위해 발신자가 원하는 수신자를 나타냅니다 .
이 비트가 설정되어 있으면 ( 이 bit 가 ‘1’ 인 경우 ) Wireshark를 이용한 패킷 분석 이 패킷은 확인응답이라는 것을 나타냅니다 .
이 플래그는 TCP 세그먼트가 발신자나 수신자의 측면에서 버퍼에 유지되면 안 된다는 것을 표시합니다 .Wireshark를 이용한 패킷 분석
RST 비트 설정에 대한 TCP 패킷은 TCP 연결을 종료, 즉 접속을 강제로 종료합니다 . 이 패킷은 이상 종료 시 Wireshark를 이용한 패킷 분석 사용됩니다 .
SYN 비트는 송신측과 수신측의 일련번호를 확인할 때 사용되고 이 비트가 1 이면 이 패킷은 TCP 핸드셰이크 프로세스의 SYN 단계라는 뜻입니다 .
Finish 비트는 프로세스가 완료됐고 데이터 스트림이 전송 됐다는 것을 의미합니 다 .
window field : 이 필드는 TCP 수신 버퍼를 바이트 크기로 표시합니 다 . 이 바이트가 0 이라면 수신자가 사용가능한 버퍼 공간을 갖지 않겠다는 말이 됩니다 . 이 필드에 나타낼 수 있는 최대값은 65,535 입니다 .
checksum field : checksum field 는 Wireshark를 이용한 패킷 분석 TCP 헤더와 데이터의 내용뿐만 아니라 IP 헤더로 부터 파생된 의사 헤더에 대한 내용을 수행합니 다 .
: DNS 는 단일 전송 메커니즘을 사용하는 다른 애플리케이션과는 다르게 UDP 와 TCP 를 모두 사용합니 다 . 일반적인 응답 / 요청은 UDP 를 사용하고 전송 대역이 큰 응답 / 요청에는 TCP 를 사용합니다 .
화면에서 Protocol 영역 중에 DNS 를 찾아서 클릭하여 DNS 에 관한 정보를 얻습니다 .
위 그림 을 보면 DNS 가 4 개의 기본 섹션으로 구성되어 있다는 것 을 알 수 있습니다 .
1. 질문 (Questions), 2. 응답 (Answer), 3. 권한 (Authority), 4. 추가 (Additional)
이제 DNS 패킷을 위에서 부터 분석하면,
Transaction ID : DNS 쿼리와 응답에 연관되는데 사용자는 이 필드에서 DNS 에 관련된 모든 것을 보기 위한 값을 필터링 할 수 있습니다 . (dns.id==0x95fd)
Flags : 쿼리 특성을 정의하는 수많은 필드로 구성되어 있습니다 . Flags 의 필드에 대해서 살펴보도록 하겠습니다 .
Response(Query) : 쿼리 / 응답 비트는 요청 (0) Wireshark를 이용한 패킷 분석 인지 응답 (1) 인지 표시합니다 . 위의 패킷은 0 Wireshark를 이용한 패킷 분석 이므로 패킷이 요청 이라는 것을 알 수 있습니다 .
Opcode : Opcode 는 쿼리의 유형을 지정하고 일반적으로 일반적인 요청에 대해 0000 을 포함합니다 .
Truncation : 응답이 길어서 잘렸는지에 대해서 알려주고, 위의 패킷을 보면 잘리지 않았다라고 나오는 것을 볼 수 있습니다 .
Z (Reserved) : 이 필드는 0 으로 설정됩니다 .
Non-authenticated data : 데이터에 권한이 있는지를 보는 필드로 , 이 필드는 0 으로 설정되어 받아들일 수 없다고 나오게 됩니다 .
지금까지 flag 를 보았고 , 이제 밑으로 넘어가서 아래 그림의 부분을 살펴보겠습니다.
Questions Count - 질문의 숫자를 표시하고 일반적으로 한 패킷당 1 개의 질문을 볼 수 있습니다 .
Answer RRs - Answer RRs 수를 표시합니다 .
Authority RRs - Authority RRs 응답 수를 표시합니다 .
Additional RRs - Additional RRs 응답 수를 표시합니다 .
이제 Queries 부분을 살펴보겠습니다.
Name : 이 필드는 결정 중인 이름을 포함합니다 . 형식은 이름에서 영문자 바이트의 숫자를 표시하기 위해 숫자 구분문자를 이용하는 가변길이입니다 .
Type : 쿼리의 유형을 나타내는 필드로써 현재는 A 로 , 호스트주소를 나타내게 됩니다 .
유형은 아래의 표와 같습니다.
Class : TCP/IP 통신에 대한 인터넷 클래스 주소를 표시하기 위해 ‘1’(0x0001) 로 설정됩니다 .
-> UDP 는 통신프로토콜이며 비연결형 전송 서비스를 제공합니다 . 한쪽에서 일방적으로 다른 쪽으로 보내는 프로토콜이다 . 브로드캐스트 와 멀티캐스트 트래픽이 UDP 를 통해 전송됩니다 .
화면에서 Protocol 영역 중에 UDP 를 찾아서 클릭하여 UDP 에 관한 Wireshark를 이용한 패킷 분석 정보를 얻어 보겠습니다 .
-Source port ( 목적지 포트 필드 ) : 이 필드는 응답 패킷에서 수신중인 포트를 열기 위해서 주로 사용되며 프로토콜을 정의하기 위한 목적으로 사용되며 현재 6881 포트를 사용합니다 .
-Destination port ( 발신지 포트 필드 ) : 이 필드는 목적지 애플리케이션이나 프로세스를 정의하고, 일부 경우 발신지와 목적지 포트 번호들은 클라이언트나 서버 프로세스와 같다 . 현재는 목적지 포트와 같은 Wireshark를 이용한 패킷 분석 6881 을 사용합니다 .
-Length ( 길이 필드 ) : 이 필드는 UDP 헤더에서 유효한 데이터의 끝까지 패킷의 길이를 정의하며 , 현재 화면에서 28byte 를 표시합니다 .
-Checksum ( 체크섬 필드 ) : checksum 에 대한 정보를 나타내며 가끔 사용자는 checksum 필드가 모두 0 으로 설정된 것을 볼 수 있는데 이는 체크섬이 인증되지 않았다는 의미입니다 .
화면에서 보다시피 허가가 거부된 것으로 표시되어집니다 .
4. ICMP (Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜 )
-ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜 ) 은 네트워크에서 오류 , 경고 , 알림에 대한 메시지를 전달하는 목적으로 사용됩니다 .
ICMP 패킷은 UDP 나 TCP 헤더를 포함하지 않습니다 . ICMP 패킷은 IP 헤더 다음에 type, code, checksum 으로
0 개 댓글