てか備忘録って、「記憶すべき事柄を簡単にメモするための個人的な雑記帳である」(備忘録 - Wikipedia)らしいですね。

それはさておき、一応King(qpwakaba)主催のSprinqlerに参加しているのでネットワーク通信のサーバー関係を学んでおこうかと思って調べました。かなり簡潔に書いてるだけなので、詳細はWikiを。
参考サイト: http://wiki.vg/Protocol

|~|的なやつは、表にしたかったけど、やり方分からず適当にやったなれ果てです。

1. MinecraftサーバーのPacketの基本構造

| Packetの大きさ(VarInt) | Intで取得してから、送信する時はVarIntというものに変換しなければならないみたい。
|                                    | (一応言うと、Packet全体の大きさを示さないといけないので、Packetのデータがわからないといけません)
| PacketID(byte) | 0x00や0x01とか。(WikiにはVarIntと書かれてるけどbyteで行けるのでは?と思ってる)
| Packetのデータ | それぞれのPacketの適する構造でなければならない。

2. Status確認の流れ
C: Client(クライアント), S: Server(サーバー)
クライアント目線で書きます。
1. Socket開設(C→S)
2. Handshake Packetの送信(C→S)
3. ServerStatus Packetの送信(C→S)
4. ServerStatusResponse Packetの受信(S→C)
5. Ping Packetの送信(C→S)
6. Ping Packetの受信(S→C)
Status確認なのでこれだけです。

3. Handshake Packetの構造
Minecraftサーバーに接続する時には、HandshakeというPacketを送信しなければなりません。
次に示す構造になっています。(Packetのデータの部分の内容となります)

PacketID: 0x00
Protocolのバージョン(VarInt) | Minecraftのバージョンごとの番号を送信してください。なお、1.7.2とそれ以前の互換性はありません。
| サーバー接続のアドレス(String) | サーバー接続で用いたアドレスを送信してください。
| サーバー接続のポート(short) | サ
ーバー接続で用いたポート番号を送信してください。
| State(Varint) | サーバーへこれからどのような操作をするのかを伝えるために送信します。なお、1か2のどちらかでなければなりません。
|                    | 1は、Status確認用。2はLogin用です。よって、今回は1を送信してください。

3. ServerStatus Packetの構造

PacketID: 0x00
Data構造はありません。ですので、Packetの大きさ(1byte)とPacketID(0x00)を送信するのみです。

4. ServerStatusResponse Packetの構造

PacketID: 0x00
| サーバー情報(ServerStatus)が書かれたJSON(String) | JSONがStringとして送信されます。

5. Ping Packetの構造

PacketID: 0x01
| それぞれのミリ秒時間(long) | クライアント、サーバーそれぞれの時間を送受信し合います。

なお、Packetの大きさは基本9byteだと思います。また、それぞれの時間の差分がPingの時間となります。