2010-07-06 4 views
0

когда я типа wget http://yahoo.com:80 сверху unix ракушка. Может кто-нибудь объяснить мне, что именно происходит, от ввода команды до достижения сервера yahoo. Заранее большое спасибо.A вопрос относительно wget

+1

Вы хотите объяснить протокол HTTP? Или сетевого стека? –

+0

@Felix Меня больше интересует сетевой стек, но меня тоже интересует протокол HTTP. – mousey

ответ

1

RFC предоставляет вам всю необходимую информацию и не привязан к инструменту или ОС.

Wget использует в вашем случае HTTP, который основывает на TCP, что, в свою очередь, использует IP, то это зависит от того, что вы используете, большую часть времени вы будете сталкиваться с Ethernet кадров.

Чтобы понять, что происходит, я настоятельно рекомендую вам установить Wireshark и посмотреть на расчлененные кадры, вы получите обзор того, какие данные принадлежат к сетевому уровню. Это самый простой способ визуализировать и узнать, что происходит. Помимо этого, если вам действительно нравятся (ирония) смешные документы (/ ирония), посмотрите на соответствующие RFC HTTP: 2616, например, для остальных взгляните на внешние ссылки в нижней части статей wikipedia.

0
  1. Программа использует DNS для разрешения имени хоста на IP. Классический вызов API - gethostbyname, хотя более новые программы должны использовать протокол getaddrinfo для совместимости с IPv6.
  2. Поскольку вы указываете порт, программа может пропустить поиск порта по умолчанию для http. Но если бы вы этого не сделали, попробовал бы getservbyname искать порт по умолчанию (опять же, wget может просто вставлять порт 80).
  3. Программа использует сетевой API для подключения к удаленному хосту. Это делается с socket и connect
  4. Программа записывает запрос HTTP в связи с вызовом write
  5. Программа читает ответ HTTP с одним или несколькими вызовами read.
Смежные вопросы