1. 3way hand-shaking

1) SYN

TCP 헤더를 살펴보면, Flags 필드에 SYN 1 이 설정되어 있는 것을 확인할 수 있다.

또한, 처음으로 연결을 시도하므로 Sequence number 이 0 으로 설정되어 있음을 확인할 수 있다.

 

2) SYN + ACK

TCP 헤더를 살펴보면, Flags 필드에 SYN 1, ACK 1이 설정되어 있는 것을 확인할 수 있다.

또한, 처음으로 연결을 시도하므로 Sequence number 이 0 으로 설정되어 있으며, Client 에서 보내온 SYN 을 잘 수신했다는 의미로 Ack number 로 1을 실어보내는 것을 확인할 수 있다.

 

3) ACK

TCP 헤더를 살펴보면, Flags 필드에 ACK 1 이 설정되어 있는 것을 확인할 수 있다.

또한, Sequence number 이 1 로 설정되어 있고, Server 에서 보내온 SYN 을 잘 수신했다는 의미로 ACK 1 을 실어보내는 것을 확인 할 수 있다.

 

 

 

2. Telnet

Telnet 은 원격 접속 서비스로 tcp.port == 23 필터링 검색을 통해 TELET 관련 패킷들을 찾아볼 수 있으며, 별도의 암호화 기능을 제공하지 않으므로 접속에 사용된 로그인 정보 및 로그 등을 확인할 수 있다.

 

 

마우스 오른쪽 클릭 -> 따라가기 -> TCP 스트림 을 누르게 되면, 로그인 정보와 명령어 입력 로그 등이 평문으로 출력되는 것을 확인할 수 있다.

 

 

이렇게 획득한 정보로 실제 접속이 가능하기 때문에, Telnet 은 보안에 취약하다는 단점이 있다.

 

 

3. SSH (Secure SHell)

SSH 은 원격 접속 서비스로 tcp.port == 22 필터링 검색을 통해 SSH 관련 패킷들을 찾아볼 수 있다.

Telnet 과 달리 암호화 기능을 제공하므로 접속에 사용된 로그인 정보 및 로그 등을 평문으로 확인할 수 없다.

 

 

4. Ping (ICMP)

1) Request 

ICMP Reply 패킷은 Type 번호 8 번을 사용하고 있음을 알 수 있다.

 

2) Reply

ICMP Reply 패킷은 Type 번호 0 번을 사용하고 있음을 알 수 있다.

 

 

 

5. FTP (File Transfer Protocol)

FTP 는 파일 전송 프로토콜tcp.port == 21 필터링을 통해 FTP 관련 패킷들을 검색할 수 있다. Telnet 과 마찬가지로 암호화 기능을 제공하지 않아 평문으로 내용을 확인할 수 있기에 보안에 취약하다는 단점이 있다.

 

 

빨간색으로 나타난 문구는 FTP Client 의 정보이며, 파란색으로 나타난 문구는 FTP Server 의 정보이다.

 

6. HTTP (HyperText Transfer Protocol)

tcp.port == 80 필터링을 통해 HTTP 관련 패킷들을 검색할 수 있다. HTTP 로 동작하는 사이트에서 로그인을 시도하면 암호화를 지원하지 않으므로 인터넷 로그인 정보를 확인할 수 있다.

 

 

7. ARP (Address Resolution Protocol)

ARP 프로토콜은 논리주소 IP 를 물리주소 MAC 으로 대응시켜주는 프로토콜이다.

송신자는 수신자의 MAC 주소를 알 수 없으므로 동일한 네트워크 내의 모든 호스트에게 Broadcast 한다.

 

ARP 패킷의 유형을 정의하는 Operation 필드 값이 1로 설정되어 Broadcast 보낸 것을 확할 수 있다. 

 

Operation 필드 값이 2 로 설정되어, Broadcast 에 대한 응답으로 IP 에 대응하는 MAC 주소를 Unicast 로 알려주고 있는 것을 확인할 수 있다.

 

 

IP packet fragment

IP 패킷에는 단편화를 위한 3bits의 Fragment Offset 필드가 존재한다. 패킷을 분할하여 전송하고, 재조립하는 과정을 거친다. 이때, 두번째 필드는 Don't fragment 이고 세번째 필드는 More fragment 이다. 

 

패킷의 첫번째 단편을 살펴보면, Flags 값이 1로 설정되어 IP 패킷의 나머지 부분이 아직 더 있음을 알 수 있다.

 

패킷의 마지막 단편을 살펴보면, Flag가 0 으로 설정되어 해당 단편이 마지막임을 확인할 수 있다.

Don't fragment 필드 값이 1로 설정되면 단편화 금지의 의미이고, 0 으로 설정되면 필요시 단편화할 수도 있음을 의미한다.

 

 

공부하면서 정리한 내용을 글로 작성하였습니다.

혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)

 

COMMENT