Я бы сказал, катайся сам. Это не слишком сложно.
Захватите сообщение HTTP, отправленное из браузера в Wireshark , и при необходимости выполните обратный инжиниринг, используя spec в качестве руководства. (См. ответ Андреаса Магнуссона ниже для, возможно, более подходящих спецификаций.)
Я бы порекомендовал этот подход лично для изучения протокола, а не просто для изучения чистой спецификации. Это довольно сложно узнать вещи только из спецификации. Я предпочел бы изучить различные варианты поведения известных клиентов http и попытаться выяснить, как все работает, используя спецификацию в качестве руководства.
Отформатируйте и отправьте данные соответствующим образом через сокет, как только вы освоитесь с HTTP.
Также, если вы не знакомы с программированием сокетов, ознакомьтесь с Руководством Beej по программированию сокетов .