본문 바로가기
Computer Science

[네트워크] Wireshark를 통해 TCP/UDP 패킷 알아보기

by st-og 2023. 7. 22.

오늘은 TCP/UDP 통신을 할 때 실제 어떤 패킷이 오고 가는지 확인해 볼 것이다.

 

 

먼저 칼리 리눅스에서 wireshark를 실행해 보자

 

처음 wireshark를 실행하면 이러한 화면이 나온다.

 

여기서 eth0, tun0과 같은 것들은 각각의 네트워크 인터페이스의 식별자를 뜻한다.

 

eth0 :  유선 랜카드의 0번째 즉 처음 랜카드를 가리킨다.
tun0 : VPN에 사용되는 가상 터널 인터페이스이다.

 

오늘은 tryhackme.com의 room 기능을 활용해 VPN설정 후 ssh로 접속을 할 것 이기에 tun0을 선택해 준다.

 

 

처음 tun0을 선택하고 들어오게 되면 아무것도 뜨지 않는다. 아직 접속을 안 했기 때문에 그렇다.

VPN을 설정하고 ssh를 통해 접속을 하게 되면

 

이러한 화면을 볼 수 있다. 이때 Protocol을 보게 되면  TCP와 SSH를 볼 수 있는데

SSH를 통한 통신은 신뢰성이 필요한 통신이기에 TCP 통신을 하는 것을 알 수 있다.

 

보다 쉽게 TCP의 흐름을 보기 위해 wireshark를 켜둔 상태로 웹사이트에 들어가 보자

 

처음 웹사이트에 접속 후 wireshark를 확인하면 이러한 화면을 볼 수 있다.

우리는 NO. 1,3,4에 주목해 보자

 

여기서 알 수 있는 정보를 다 정리해 보자

 

NO.1

1. 10.18.52.42 : 57474에서 10.10.191.181 : 80으로 패킷을 보냈다
2. 보낸 패킷은 SYN패킷이다

 

NO.3

1. 10.10.191.181 : 80에서 10.18.52.42 : 57474으로 패킷을 보냈다.
2. 보낸 패킷은 SYN , ACK 패킷이다.

 

NO.4

1. 10.18.52.42 :57474에서 10.10.191.181:80으로 패킷을 보냈다
2. 보낸 패킷은 ACK 패킷이다.

 

위의 정리를 통해 알 수 있는 것은 TCP통신을 시작하면 제일 먼저 하는 것은 SYN 패킷을 주고 SYN, ACK 패킷을 받은 다음

ACK 패킷을 다시 주는 일을 한다는 것을 알게 된다.

 

우리는 이러한 행위를 3 way-handshake라고 부른다.

이것은 TCP 통신을 하기 위해 제일 우선적으로 행해지는 일이며 상대방과의 신뢰성 있는 연결을 하기 위한 작업이다.

자세한 건 https://st-together.tistory.com/33 에 정리해 두었다.

 

 

이번엔 UDP통신을 하면 어떤 패킷이 오가는지 확인해 보자

먼저 UDP 통신을 하기 위해 해당 ip에 데이터를 보낼 것이다.

UDP로 데이터를 보내기 위해선 nc 명령어의 -u 옵션을 사용하면 된다.

 

nc -u [전송할 IP] [포트 번호]

 

 

해당 아이피의 999번 포트에 hello라는 데이터를 UDP방식으로 전송했다.

이것을 wireshark에서 확인을 해보면

 

2개의 패킷만 오고 갔다는 것을 확인할 수 있다.

(여기서 2번 패킷은 연결할 수 없는 포트번호라는 알림을 보내기 위해 사용된 것이다. UDP와 상관 X)

 

UDP는 TCP와는 다르게 바로 데이터가 보내진 것을 확인할 수 있는데

이것을 통해 UDP는 3 way-handshake를 하지 않는다는 것을 알 수 있고,

3 way-handshake가 없기에 연결 과정이 없다는 것을 알 수 있다.

 


이로써 실제 네트워크 상에서 TCP통신과 UDP 통신이 어떻게 이루어지는지 알 수 있게 되었다.

TCP통신은 3 way-handshake를 통해 신뢰성 있는 연결을 할 수 있다는 점,

UDP통신은 연결은 없지만 사전 과정이 없기에 빠른 데이터 전송이 가능하다는 점이 가장 중요한 핵심 중 하나인 것 같다.

'Computer Science' 카테고리의 다른 글

도커 정리 (명령어 및 설명)  (0) 2023.10.17
메모리 정리  (0) 2023.06.18
알고리즘 정리  (0) 2023.06.18