네트워크 패킷 캡처
다음 예에서는 tcpdump
를 사용하여 workerman-chat
애플리케이션이 WebSocket을 통해 전송하는 데이터를 확인합니다. workerman-chat
예제에서 서버는 7272
포트를 통해 WebSocket 서비스를 제공하므로 7272
포트에서 데이터 패킷을 캡처합니다.
-
명령어 실행
tcpdump -Ans 4096 -iany port 7272
-
웹 브라우저 주소 표시줄에
http://127.0.0.1:55151
입력 -
닉네임 입력:
mynick
-
메시지 입력:
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