Командная строка windows, протокол HTTP, азы серверного программирования
В данной статье приведены основы, которые обязательно должны знать начинающие веб-мастера.
Командное окно windows, работаем с командной строкой
Чтобы открыть командное окно перейдите по ПУСК-стандартные-выполнить
и пропишите cmd
.
Как перейти с диска на диск в командной строке
Поменять диск можно при помощи следующего синтаксиса (указываем имя диска с двоеточием):
d:
Вывод имени либо смена текущей папки:
cd - "path to the folder" (кавычки нужны, если в именах в пути есть пробелы)
cd c:\
Вывод списка файлов и подпапок указанной папки:
dir
Команда help
дает еще больше информации о работе с командной строкой.
Полезные утилиты командной строки
Утилита ipconfig
Утилита ipconfig
- это утилита командной строки для вывода деталей текущего соединения и управления клиентскими сервисами DHCP и DNS.
Один из наиболее полезных ключей утилиты ipconfig
:
/all – получаем полную информацию по всем адаптерам;
Ipconfig /displaydns - Отображение содержимого кэша DNS
После обновления файла hosts (C:\Windows\System32\drivers\etc) не забывайте использовать:
Ipconfig /flushdns - Очистить кэш DNS
Утилита ping
-I
- задание срока жизни пакетов-n
- число отправляемых запросов эха-t
- проверка связи с указанным узлом до прекращения.
Пропингуем dnzl.ru: ping dnzl.ru
. Задача утилиты: проверяем ‛живучесть‛ сервера.
Утилита tracert
Трассировка. При помощи данной утилиты мы может отследить весь путь от нашей машины до конечной машины. Например: tracert dnzl.ru
.
Утилитата netstat
Команда netstat
показывает содержимое различных структур данных, связанных с сетью, в различных форматах в зависимости от указанных опций.
- -a - Показывать состояние всех сокетов; или отображение всех подключений и ожидающих портов
- -n - Показываем адреса и порты в числовом формате
- -o - Показываем код id процесса для каждого поключения
Утилита nslookup
Данная утилита позволяет по доменному адресу узнать ip-адрес или наоборот.
nslookup dnzl.ru - сперва выдаст наш ip, затем покажет ip нужного вам сайта.
nslookup 77.222.61.12 - получим адрес хостера dnzl.ru
Маска подсети
Маска подсети – основная задача маски подсети определить, какая часть IP-адреса относится к адресу сети, а какая к адресу узла в этой сети. Например, узел с IP-адресом 52.35.55.78
и маской подсети 255.255.255.0
находится в сети 52.35.55.0/24
с длиной префикса 24 бита.
Шлюз
Шлюз – это машина, на которую пересылаются все данные, которые идут вовне. Если маска подсети не совпадают, данные перекидываются на шлюз (default gateway – шлюз по умолчанию).
NAT
NAT – (network address translation) это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов.
Основная функция NAT:
Позволяет сэкономить IP-адреса (только в случае использования NAT в режиме PAT), транслируя несколько внутренних IP-адресов в один внешний публичный IP-адрес (или в несколько, но меньшим количеством, чем внутренних).
Сокеты и порты
Сокет = ip + порт
Порты служб:
ftp | 21 |
---|---|
smtp | 25 |
dns | 53 |
web | 80 |
pop3 | 110 |
imap4 | 143 |
netbios | 137-139 |
Порты созданы для ‛удобства‛.
DNS
DNS (domain name system) – система доменных имен.
Браузер (правильнее сказать, операционная система) отправляет доменное имя (понятное человеческому глазу и, к тому же, его проще запомнить, например, dnzl.ru). DNS сервер определяет, какому IP адресу соответствует пришедшее доменное имя. Одному IP-адресу могут соответствовать несколько IP-адресов, и наоборот. На DNS-сервере хранятся списки соответствия ip-адресов доменным именам.
Корневые DNS-сервера (самые верхние) имеют списки соответствия другим серверам, каждый из которых соответствует своей зоне: существует корневые домены (13 штук): ru
, com
, org
, и т.д. Эти сервера перенаправляют на те dns-серверa, которые и знают о местонахождении присланного адреса.
Все серверы DNS кэшируют ответы. То есть мы, возможно, не идем дальше нашего DNS, который нам назначил провайдер (‛предпочитаемый DNS-сервер‛).
Способы определения адреса по имени, в порядке убывания
- Файл hosts (
C:\Windows\System32\drivers\etc
,127.0.0.1
– машина обращается к собственным службам); - Запрос к DNS-серверу;
- Широковещательный запрос в сеть;
Сервер
Сервер, как и магазин, то есть бывает, например, компьютерный магазин или овощной магазин, так и сервер (сервер это программное обеспечение, например, есть DNS-сервер) это какая-либо служба, задача которой принять вопрос и дать на него ответ (вопрос относится к спецификации сервера/магазина).
Протокол HTTP (hypertext transfer protocol)
Протокол HTTP использует, по умолчанию, 80 порт и, соответственно, нам нет необходимости его прописывать.
Связка ‛клиент - сервер‛ или ‛Запрос – ответ‛.
Запрос клиента HTTP (основная строка запроса):
GET /folder/main.html HTTP/1.1
P.S. Характеризуют конец строки и завершение информации служебные символы: возврат каретки и перевод на новую строку.
- GET – метод запроса (POST);
- /folder/index.html – запрашиваемый ресурс;
- HTTP/1.1 - версия протокола (на какой протокол ссылается браузер);
- Далее идут HTTP заголовки.
Так как все передается строками, и серверу нужно понимать, где что закончилось, соответственно, для определения конца строки используются /r/n
(возврат каретки, перевод на новую строку).
Заголовки HTTP
Заголовки HTTP (HTTP Headers) — это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя-значение (имя заголовка: значение). Заголовки должны отделяться от тела сообщения хотя бы одной пустой строкой. Обязателен всего один заголовок: Host.
Под каждый заголовок сервер заводит серверную переменную.
Часть заголовков предназначена серверу, другая часть будет полезна разработчикам. Например, существуют специальные серверные переменные HTTP_имя-заголовка.
Пример запроса
GET /other/index.html HTTP/1.1
Host: www.dnzl.ru
User-Agent: Mozilla/5.0 ...
Referer: http://....
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: IsCookieEnabled=1
Ответ сервера HTTP
Сервер отвечает на каждый запрос такими ответами:
HTTP/1.1 200 OK
Сначала сервер передает версию протокола, затем идет СТАТУС (200 - ок, 304 – страница отсутствует и т.д.). Затем идет масса заголовков. Затем ставится пустая строка и передается html страница, например.
Возможный статус сервера:
- 1xx – инфо-е сообщение
- 2xx – успешное выполнение команды
- 3xx – переадресация
- 4xx – ошибка на стороне клиента
- 5xx – ошибка на стороне сервера
Все заголовки можно увидеть посредством замечательного плагина браузера firefox firebug (вкладка СЕТЬ – ВСЕ ¬– выбираем запрос и просматриваем ‛заголовки ответа‛ и ‛заголовки запроса‛).
Пример ответа
HTTP/1.1 200 OK
Accept-Ranges: bytes
Connection: keep-alive
Content-Language: ru
Content-Length: 7348
Content-Type: image/png
Date: Tue, 18 Jun 2013 21:23:01 GMT
Etag: "5fa053-1cb4-4dd8f3ea67200"
Keep-Alive: timeout=10
Last-Modified: Sat, 25 May 2013 18:40:08 GMT
Server: nginx/1.2.6
<html >
....
<html >
Запрос HEAD
Метод HEAD тоже самое что и метод GET, но в ответ сервер возвращает только заголовки без контента.
ПОЛЕЗНО ЗНАТЬ: header()
используется для отправки заголовков HTTP в браузер. Помните, что функцию header()
можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п.
Комментарии к статье