본문 바로가기
IT/네트워크

Wireshark 패킷 분석 (DNS, TCP)

by 신인용 2020. 5. 10.
반응형

 

Wireshark 패킷 분석 (DNS, TCP)

 

 

 이번에 제가 해 볼 것들은 wireshark를 통해

1. DNS request, response message 분석

2. TCP Handshaking

3. Sequence, ACK number 분석

4. persistent, non-persistent connection 확인

 이것들을 간략하게 분석해 보겠습니다.

 

 

 

DNS request, response message 분석

 우선, wireshark의 filter를 port 53 으로 설정했습니다. (port 53 = DNS)

 저는 http://google.com 에 접속해보았습니다. (https가 아닌, http 입니다.)

 

request msg

 구글에 접속하려면, 맨 처음 www.google.com의  의 주소를 알려달라고 request msg (queries)를 날립니다. 이 때 source port number는 55625이고, destination port number는 53입니다. (port num 53 = DNS)

 

 

 

response msg

 그리고 request msg에 대한 response msg가 날라옵니다. 아까와는 반대로 source port number는 53이고 destination port number는 55625 입니다. DNS에서 msg를 날려준 것입니다.

 Answers에는 www.google.com의 의 주소는 216.58.197.164 이라는 것을 담아줍니다. 이렇게 www.google.com의 IP주소를 알 수 있게 되었습니다.

 

 

 

 

 

 

TCP Handshaking

 TCP는 3-way handshake를 사용합니다. 3-way의 순서는 이러합니다.

1. Client가 SYNbit=1 (TCP header의 S)로 Seq num = x 로 connection을 request합니다.

2. Server에서도 SYNbit=1 로 보냅니다. Client가 보낸 것에 대한 ACKnum = x+1 도 보냅니다. Seq num = y 로 보냅니다.

3. Client가 다시 SYNACK에 대한 ACK을 보냅니다. Server가 y를 보냈으니 ACKnum = y+1 로 보냅니다.

 

 이제 직접 capture해서 확인해보겠습니다.

1. Client가 SYNbit = 1 로, Seq num = 0 으로 connection request msg를 보냅니다. (Source port num = 49872, destination port num = 80)

 

 

 

2. Server에서도 SYNbit = 1 로, Client가 보낸 것에 대한 ACK = 1 로, seq num = 0 으로 response msg를 보냅니다. (Source port num = 80, destination port num = 49872)

 이제 Client의 connection이 열렸습니다.

 

 

 

 3. Client가 다시 SYNACK에 대한 ACK을 보냅니다. (Server한테 msg 받았다고 알리는 것) Sequence num = 1 이고, Server가 seq 0 을 보냈으니 ACK num = 1 로 보냅니다.

 이러면 Server의 connection도 열립니다.

 

 

 이렇게 TCP의 3-way handshaking으로 connection이 안정적으로 열리게 되었습니다.

 

 

 

 

 

Sequence, ACK number 분석

 TCP의 전송에서 Sequence # ACK # 을 알아보려면 먼저 이것을 알아야합니다. Client한테 받은 패킷에 대한 ACK num"세그먼트의 크기 + seq num" 이어야 합니다. 그러면 이 ACK numClient가 보낼 다음 Sequence num이 됩니다.

 만약 Client에서 100byte Seq 1 의 패킷을 보냈다면, Server에서는 100+1, ACK 101을 보내야 합니다, 이것은 ACK num을 다음 seq num을 예측해서 보내는 것입니다.

 이것을 알아보기 위해 /main.jsp을 요청했습니다.

 request msg. Client에서 seq 1 로 708 byte의 payload를 가진 패킷을 Server로 전송하였다.

 

 

 

 response msg. Server에서 Seq 73721, ACK1+708 = 709 로 패킷을 Client에게 전송하였습니다.

이렇게 TCPACK num은 다음에 보내야할 seq num을 예측해서 보냅니다. 다음 Client가 보내는 패킷의 seq num 709가 될 것입니다.

 

 

 

 

 

 

persistent, non-persistent connection 확인

 persistent냐 non-persistent 이냐는 HTTP 패킷의 Connection 부분을 분석해보면 알 수 있습니다.

http://www.google.com/doodles 에 접속하였습니다.

 

 HTTP의 Connection 영역이 close 라면 non-persistent connection을 뜻하고, keep-alive는 persistent를 뜻합니다. 그래서 이 HTTP는 persistent connection임을 알 수 있습니다.

 

 

 

 

 

 

 

 

반응형

'IT > 네트워크' 카테고리의 다른 글

[ 네트워크 ] Router  (0) 2020.05.14
[ 네트워크 ] Network layer  (0) 2020.05.13
[ 네트워크 ] Electronic mail (E-mail)  (0) 2020.05.04
[ 네트워크 ] Web Caching (proxy server)  (0) 2020.05.04
[ 네트워크 ] Cookie  (0) 2020.05.04

댓글