네트워크 패킷 캡처

다음 예에서는 tcpdump를 사용하여 workerman-chat 애플리케이션이 WebSocket을 통해 전송하는 데이터를 확인합니다. workerman-chat 예제에서 서버는 7272 포트를 통해 WebSocket 서비스를 제공하므로 7272 포트에서 데이터 패킷을 캡처합니다.

  1. 명령어 실행 tcpdump -Ans 4096 -iany port 7272

  2. 웹 브라우저 주소 표시줄에 http://127.0.0.1:55151 입력

  3. 닉네임 입력: mynick

  4. 메시지 입력: hi, all !

최종 캡처된 데이터는 다음과 같습니다:

/*
 * TCP 세션 설정 (세션 설정 요청)
 * 브라우저 로컬 포트 60653에서 원격 포트 7272로 SYN 패킷 전송
 */
... (이하 생략)

/*
 * TCP 세션 설정 (세션 설정 응답)
 * 원격 포트 7272에서 브라우저 로컬 포트 60653로 SYN+ACK 패킷 응답
 */
... (이하 생략)

/*
 * TCP 세션 설정 (세션 설정 완료)
 * 브라우저 로컬 포트 60653에서 원격 포트 7272로 ACK 패킷 전송
 */
... (이하 생략)

/*
 * WebSocket 핸드셰이크
 * 브라우저 로컬 포트 60653에서 원격 포트 7272로 WebSocket 핸드셰이크 요청 데이터 전송
 */
... (이하 생략)

/* 
 * 이하 중략
 */

입력까지 총 2개의 브라우저 클라이언트에 대한 모든 로그인 및 메시지 전송의 패킷입니다.

패킷 데이터에서 [S]SYN 요청(연결 요청)을 나타내며; [.]ACK 응답으로, 요청을 상대방이 수신했음을 나타내며; [P]는 데이터 전송을 의미합니다. P.[P] + [.]를 의미합니다.

포트를 통해 전송되는 데이터가 이진 데이터인 경우, 16진수로 확인할 수 있습니다 tcpdump -XAns 4096 -iany port 7272