2009년 1월 1일 목요일

MySQL통신프로토콜 - 인증시의 패킷4

OK Packet
OK Packet이라는 것은 서버에서 클라이언트에 대해서 처리가 성공했다는 것을 통지하는 것이다. 
인증에 성공했을 경우이외에 갱신계 SQL문(결과셋을 반환하지 않는 SQL문)에서도 사용된다. 

이를 위해서 affected rows, insert_id등 갱신할 때 사용되는 정보도 정의에는 포함된다. 
인증시에는 사용되지않기때문에 이 수치는 전부 0x00이 된다. 

클라이언트는 패킷헤더뒤의첫번째 1바이트가 0x00인가 아닌가를 확인하는 것으로 
OK Packet인가아닌가 판단하는 것이 가능하다. 

OK Packet
페킷헤더  4바이트
필드수 1바이트 ox00로 고정(select문같은 결과셋을 반환하지 않으므로)
affected rows  1-9바이트  처리된 레코드수, 인증하는 경우등은 0x00
insert_id 1-9바이트  세션변수insert_id의 값, 인증하는 경우등은 0x00
server status 2바이트
warning count 2바이트