#wire-protocol
글
-
Gradle 소스 파헤치기 3: gradle 명령에서 데몬까지 — 런처, 래퍼, 데몬 프로토콜
터미널에서 gradle을 치면 빌드는 그 프로세스가 아니라 뒤에 숨은 데몬 JVM이 합니다. 셸 스크립트가 띄우는 64MiB짜리 클라이언트, 데몬을 쓸지 정하는 세 갈래와 --no-daemon의 진짜 뜻, registry.bin으로 데몬을 찾고 호환성을 따지는 법, 데몬을 띄우고 연결하는 순서, 데몬 안의 명령 사슬 16개와 Idle·Busy 상태, 데몬이 스스로 죽는 조건, 그리고 gradlew와 IDE가 같은 데몬에 닿는 길까지 기준 커밋의 소스와 도커 예제로 확인합니다.
-
Kafka 소스 파헤치기 3: 와이어 프로토콜 — JSON 스키마에서 만들어지는 요청과 응답
프로듀서와 브로커가 TCP 위에서 주고받는 바이트는 [4바이트 길이][요청 헤더][본문] 한 가지 모양입니다. 그 모양을 정하는 JSON 스키마 203개가 빌드 때 자바 클래스 391개가 되는 과정, 판(version)을 고르는 ApiVersions 협상, 옛 판과 새 판이 함께 사는 유연한 판과 태그 필드를 소스로 따라가고, 생성된 클래스만으로 맨 소켓에 요청을 보내는 예제로 바이트를 직접 확인합니다.
-
MariaDB 소스 파헤치기 5: 프로토콜과 명령 처리 — 패킷 하나가 dispatch_command에 닿기까지
클라이언트가 보낸 바이트가 어떻게 패킷이 되고, 첫 바이트 하나로 COM_QUERY·COM_PING·COM_STMT_EXECUTE가 갈리고, 결과가 다시 패킷이 되어 나가는지를 sql/net_serv.cc, sql_parse.cc의 do_command()·dispatch_command(), protocol.cc로 따라갑니다. bash의 /dev/tcp로 클라이언트 라이브러리 없이 서버와 직접 말을 주고받고, 쿼리 캐시가 왜 파싱보다 먼저 문자열로 찾는지도 실행해서 확인합니다.