PC ▁protocol ▁stack ▁to ▁use ▁for ▁defined ▁services ▁called ▁g R PC . ▁ ▁Data ▁structures ▁( called ▁messages ) ▁and ▁services ▁are ▁described ▁in ▁a ▁proto ▁definition ▁file ▁(. proto ) ▁and ▁compiled ▁with ▁proto c . ▁ ▁This ▁compilation ▁generates ▁code ▁that ▁can ▁be ▁invoked ▁by ▁a ▁sender ▁or ▁recip ient ▁of ▁these ▁data ▁structures . ▁ ▁For ▁example , ▁example . pb . cc ▁and ▁example . pb . h ▁are ▁generated ▁from ▁example . proto . ▁ ▁They ▁define ▁C ++ ▁classes ▁for ▁each ▁message ▁and ▁service ▁in ▁example . proto . ▁ ▁Can on ically , ▁messages ▁are ▁serial ized ▁into ▁a ▁binary ▁wire ▁format ▁which ▁is ▁compact , ▁forward - ▁and ▁back ward - compatible , ▁but ▁not ▁self - des cri bing ▁( that ▁is , ▁there ▁is ▁no ▁way ▁to ▁tell ▁the ▁names , ▁meaning , ▁or ▁full ▁dat at ypes ▁of ▁fields ▁without ▁an ▁external ▁specification ). ▁There ▁is ▁no ▁defined ▁way ▁to ▁include ▁or ▁refer ▁to ▁such ▁an ▁external ▁specification ▁( schema ) ▁within ▁a ▁Pro tocol ▁Buff ers ▁file . ▁The ▁officially ▁supported ▁implementation ▁includes ▁an ▁ASCII ▁serial ization ▁format , ▁but ▁this ▁format — though ▁self - des cri bing — los es ▁the ▁forward - ▁and ▁back ward - compat ibility ▁behavior , ▁and ▁is ▁thus ▁not ▁a ▁good ▁choice ▁for ▁applications ▁other ▁than ▁debugging . ▁ ▁Though ▁the ▁primary ▁purpose ▁of ▁Pro tocol ▁Buff ers ▁is ▁to ▁facil itate ▁network ▁communication , ▁its ▁simplicity ▁and ▁speed ▁make ▁Pro tocol