Welcome! I am a huge fan of the esp8266 due to its cost, ability, and style. However, there are some downsides with support depending on the framework you go with. NON-OS SDK is by far the least supported out of the more common LUA, RTOS and MicroPython choices out there. When it comes to learning about TCP and UDP bit by bit (And I have more than most) You find that about 80%+ of the fields you don't tend to even know about when it comes to programming at that level. More things you really think about when it comes to making your protocol choice is.. Does it need to get to the other side or can I risk losing it (TCP VS. UDP) or do I need another layer to make a Stream Orientated protocol convert to a Message-oriented protocol(TCP->HTML). As for 802.11 / Wifi Frames.. again.. the hardware will handle this for you unless you want to dive into it for a particular reason. Keep in mind ESP8266 has been tagged as a #Hobbist tool.
Most of the time you don't need to dig deeper than that to send and receive data. I like doing things the hardway (NON-OS SDK) given that I get a return back by making this choice and by doing so I've been able to optimalty tap into the ESP without having to worry about HEAP and Memory overflow issues like other people did with LUA and MicroPython...
If you choose to go this route get ready to learn.. but don't expect it will be at the RAW protocol level, the Engineers are Espressif have baked that support into the product.
-Agent