Как написать прокси-сервер http1.0 в c в Linux? - PullRequest
4 голосов
/ 15 ноября 2009

Я должен разработать прокси-сервер, который работает только с HTTP 1.0 в Linux и c. Мне нужна подсказка, чтобы начать развиваться.

Ответы [ 2 ]

19 голосов
/ 15 ноября 2009
  • Полагаю, вы уверены, что используете linux и язык c (никаких намеков на это, иначе не начинайте с разработки прокси)
  • Прочитайте и поймите RFC 1945 HTTP / 1.0 (обратите внимание на конкретное упоминание прокси)
  • Определите, какой тип прокси вы хотите (веб / кеширование / фильтр содержимого / анонимайзер / прозрачный / непрозрачный / обратный / шлюз / туннель /...)
  • Начните разработку сервера

Основные шаги

  1. Открытый порт
  2. прослушивание порта
  3. Получить все запросы, отправленные клиентом на этот порт (возможно, сделать все это многопоточным, чтобы можно было обрабатывать более 1 запроса одновременно)
  4. Определите, является ли это действительным запросом HTTP 1.0
  5. Извлечение компонентов запроса
  6. Перестройте запрос в соответствии с типом прокси
  7. Отправьте новый запрос
  8. Получить ответ
  9. Отправить ответ клиенту
6 голосов
/ 15 ноября 2009

Как создать прокси-сервер:

  1. Открыть порт для прослушивания
  2. Поймать все входящие запросы в этом отчете
  3. Определить запрашиваемый веб-адрес
  4. Открыть соединение с хостом и переслать запрос
  5. Получение ответа
  6. Отправить ответ обратно запрашивающему клиенту

Дополнительно: используйте потоки, чтобы разрешить несколько запросов к серверу.

...