Прежде всего, порт 80 является портом по умолчанию для HTTP, он не требуется. HTTP-серверы могут прослушивать и другие порты.
Относительно разницы между «обычными» HTTP-запросами и теми, которые вы делаете самостоятельно через сокет - разницы нет. «Обычные» HTTP-запросы, на которые вы ссылаетесь (например, через веб-браузер), также реализуются через сокеты, как вы делали бы это вручную. И то же самое касается сервера. Реализация HTTP-сервера прослушивает входящие соединения сокетов и анализирует данные, которые передаются туда, так же, как вы.
Пока вы отправляете в свой сокет действительный протокол HTTP (согласно RFC), не должно быть никакой разницы в уровне пакета (если нижний сетевой стек идентичен).
Имейте в виду, что слой сокетов - это просто слой, через который всегда проходят HTTP-данные. Неважно, кто поместил данные туда, они просто выходят с другой стороны так же, как они были вставлены.
Обратите внимание, что у вас есть некоторая степень свободы при самостоятельной реализации HTTP. Есть много необязательных полей, и порядок заголовков не имеет значения. Поэтому возможно, что две разные реализации HTTP будут отличаться на уровне пакета, но будут вести себя в основном одинаково.
Лучший способ на самом деле увидеть, что происходит на уровне пакетов, - это использовать сетевой анализатор, например, wireshark или packetyzer. Сниффер фактически записывает пакеты сети и показывает их содержимое. Поэтому, если вы записываете несколько реализаций HTTP (из разных браузеров) и собственную реализацию сокетов, вы можете внести необходимые изменения, чтобы сделать их идентичными на уровне пакетов.