Internet Technology
Internet Technology
,
Вичугов Владимир Николаевич
доцент каф. АиКС, ИК, ТПУ
Томск - 2014
1
Компьютерные сети.
История развития сети
Интернет.
2
Компьютерные сети
3
История сети Интернет
1958 г. - задание мин.обороны США на создание
надёжной сети.
4
Сети с коммутацией пакетов (1961 г.)
ARPANET Interface
Message Processors
6
1970 г. – протокол NCP (Network Control Protocol)
8 бит для адреса
8
Начало 1990-х гг. – бесклассовая адресация
9
Схема сети Интернет
Компьютерная Компьютерная Компьютерная
...
сеть сеть сеть
Объединенная сеть
10
Топология компьютерной сети – способ
соединения компьютеров между собою.
Шинная топология:
Terminator Terminator
Шина
...
Кольцевая: Звездообразная:
... ...
Концентратор
(Hub)
Коммутатор
(Switch)
... 11
...
Архитектура сети:
2) клиент/сервер (client/server)
3) гибридная
12
Адресация в сети Интернет
IP адрес (IPv4): цифровой адрес, содержит 32 бита,
состоит из двух частей: адреса сети и адреса хоста
Примеры:
[Link]
[Link]
13
14
IPv6
IPv6 адрес состоит из 128 бит.
Пример:
3ffe:14ab:0000:0000:0000:003a:8a21:7f11
3ffe:14ab:0:0:0:3a:8a21:7f11
3ffe:14ab::3a:8a21:7f11
15
Строение IPv4 пакета
Заголовок Данные
отличия в IPv6
Заголовок:
Адрес назначения
Адрес источника
Время жизни пакета
(TTL – Time To Live, целое число) Hop-Count Limit
Размер заголовка
Размер пакета (до 64 КиБ) до 4 ГиБ
Протокол, данные которого содержатся в пакете
Контрольная сумма заголовка нет 16
IPv4
[Link]
0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0
Network part
Для Для
Host part
идентификации идентификации
сети хостов в сети
0 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Класс B
1 0 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Первый байт - от 128 до 191
Класс C
1 1 0 * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Класс E
1 1 1 1 0 * * * * * * * * * * * * * * * * * * * * * * * * * * *
19
Основные классы IP сетей
Класс А:
Пример: [Link] (первый байт - адрес сети, остальные -
адреса в этой сети)
Первый байт принимает значения от 1 до 126
Количество адресов в одной сети - 2563
Класс B:
Пример: [Link] (первые 2 байта - адрес сети,
остальные - адреса в этой сети)
Первый байт принимает значения от 128 до 191
Количество адресов в одной сети - 2562
Класс C:
Пример: [Link] (первые 3 байта - адрес сети,
остальные - адреса в этой сети)
Первый байт принимает значения от 192 до 223
Количество адресов в одной сети - 256
20
Пример: сеть класса C 212.192.20
- наименьший адрес - [Link] - адрес сети
- наибольший адрес - [Link] -
широковещательный адрес (broadcast)
- адреса для хостов - от [Link] до
[Link]
21
Бесклассовая адресация
Маска сети
Количество бит в адресе, обозначающие адрес сети.
Адрес [Link]/24
Маска: 11111111 11111111 11111111 00000000
Маска: [Link]
Адрес [Link]/30
Маска: 11111111 11111111 11111111 11111100
Маска: [Link]
Деление на 2 подсети
126 хостов + 2 специальных адреса
126 хостов + 2 специальных адреса
----------------------------------------------
[Link]
X - адрес подсети (1 or 0)
Y - адрес хоста
Концентратор
(Hub)
Коммутатор
(Switch)
24
...
Использование маски сети при
маршрутизации пакетов
Сеть [Link]/20
IP-адрес назначения [Link]
IP-адрес назначения в двоичном формате
10001100.00011111.10110001.11101100
Маска сети в двоичном формате
11111111.11111111.11110000.00000000
Результат наложения маски
10001100.00011111.10110000.00000000
= [Link] != адресу сети, получатель находится в
другой сети, пакет направляется ...
на шлюз Шлюз
Концентратор
(Hub)
Коммутатор
(Switch)
25
...
Специальные IP адреса
26
Взаимодействие протоколов сети
Интернет
ping, tracert
транспортный
TCP UDP
уровень
сетевой
уровень IP ICMP
канальный
уровень IEEE 802.3 (Ethernet) , IEEE 802.11 (WiFi), IEEE 802.15.1 (Bluetooth), ...
физический
оптоволокно, радиоканал, кабель
уровень
27
TCP-соединение
Synchronization - синхронизация
Acknowledgement - подтверждение
Sequence - последовательность
28
•Протокол ICMP (Internet Control Message Protocol) –
протокол межсетевых управляющих сообщений.
•Протокол TCP (Transmission Control Protocol) – протокол
управления надёжной передачей данных по сети
Интернет.
•Протокол UDP (User Data Protocol) – протокол
управления ненадёжной передачей данных по сети
Интернет без установления соединения.
•Протокол FTP (File Transfer Protocol) – протокол
передачи файлов.
•Протокол HTTP (Hyper Text Transfer Protocol) – протокол
обмена гипертекстовой информацией.
•Протокол DNS (Domain Name System) – протокол
системы наименования доменов.
•Протокол POP (Post Office Protocol) – протокол для
получения почты с почтового сервера.
•Протокол SMTP (Simple Mail Transfer Protocol) – протокол
передачи сообщений электронной почты. 29
Порты
80 (HTTP)
…
21 (FTP)
[Link]
20 (FTP)
21 (FTP)
22 (SSH)
25 (SMTP)
[Link] 53 (DNS)
80 (HTTP)
443 (HTTPS)
…
30
Порты
31
FTP – File Transfer Protocol
32
DNS (Domain Name System) –
система доменных имён
Домен – это множество хостов, объединенных в логическую
группу.
DNS – это распределенная база данных, поддерживающая
иерархическую систему имен и предназначенная для
определения IP-адреса по известному символьному имени
узла (и наоборот).
. – корневой домен
com. – домен первого (верхнего) уровня
[Link]. – домен второго уровня
[Link]. – домен третьего уровня
33
Локальная база данных DNS
Файл hosts:
c:\windows\system32\drivers\etc\hosts (Windows)
/etc/hosts (Unix)
[Link] localhost
[Link] [Link]
….
34
Распределенная база данных DNS
Корень БД DNS: [Link]
Internet Network Information Center (Internic) [Link]
…
Первый уровень: [Link]
родовые имена:
com – коммерческие организации
edu – образовательные учреждения
gov – правительственные организации
.
org – некоммерческие организации
net – организации, поддерживающие сети …
домены государств: com ru net ..
ru – Россия – управляет Российский
научно-исследовательский институт [Link] [Link] [Link]
развития общественных сетей
(РосНИИРОС, [Link] [Link]
am – Армения содержит записи для
at – Австрия [Link]
tv – Тувалу [Link]
io – Британская территория в Индийском океане [Link]
[Link]
35
me – Черногория …
Запрос: определить IP для хоста
[Link]
user
пользователь
domainDNS
DNS-сервер
Ответ из кэша: IP=[Link]
C:\>nslookup [Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
Name: [Link]
Address: [Link] 36
Итеративный поиск IP адреса, соответствующего
символьному имени [Link]
1 4
Какой адрес у [Link]?
user2
пользователь 8 5
domainDNS2
DNS-сервер
NS [Link] сервер зоны .ru
domainDNS222
DNS
Ответ: IP=[Link] 6 (РосНИИРОС)
7
[Link]
сервер зоны
domainDNS2222
DNS
[Link]
37
Получение информации от заданного DNS-сервера
(для Windows):
nslookup ДОМЕННОЕ_ИМЯ АДРЕС_DNS_СЕРВЕРА
C:\>nslookup [Link] [Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
Name: [Link]
Address: [Link]
Non-authoritative answer:
Name: [Link]
Address: [Link]
38
Non-authoritative answer: - это ответ из кэша.
«Официальный» ответ:
Name: [Link]
Address: [Link]
Non-authoritative answer:
Name: [Link]
Addresses: [Link], [Link], [Link], [Link]
[Link], [Link], [Link], [Link]
Aliases: [Link], [Link]
[Link]
40
Получим всю информацию о [Link]:
C:\>nslookup -type=ANY [Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
[Link] canonical name = [Link]
41
Найдём IP адреса доменов [Link] и [Link]:
C:\>nslookup [Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
Name: [Link]
Address: [Link]
C:\>nslookup [Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
Name: [Link]
Address: [Link]
Non-authoritative answer:
[Link].[Link] name = [Link]
43
Проверим один из IP адресов, соответствующих
символьному имени [Link]:
C:\>nslookup -type=PTR [Link].[Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
[Link].[Link] name = [Link]
44
Определить IP адреса DNS-серверов, у которых можно
получить «официальную» информацию о поддоменах
домена [Link] (например, о домене [Link]):
C:\>nslookup -type=NS [Link]
Server: [Link]
Address: [Link]
Non-authoritative answer:
[Link] nameserver = [Link]
[Link] nameserver = [Link]
[Link] nameserver = [Link]
[Link] nameserver = [Link]
[Link] nameserver = [Link]
[Link] nameserver = [Link]
45
Проверка:
C:\>nslookup [Link] [Link]
Server: [Link]
Address: [Link]
Name: [Link]
Address: [Link]
Non-authoritative answer:
[Link] MX preference = 10, mail exchanger = [Link]
46
Получение всей информации о домене [Link]:
C:\>nslookup -type=ANY [Link]
Server: [Link]
Address: [Link]
4 основные идеи:
1) гипертекст
2) универсальная идентификация
ресурсов
3) клиент/серверная архитектура
4) языки разметки
URI
URL URN
URL (Uniform Resource Locator) – единообразный локатор
ресурса – подмножество URI, которое содержит
информацию о местонахождении ресурса и способе
обращения к нему
сервер
URN URL
DDDS
53
Проблема URL
веб-сервер
PURL URL
PURL
54
URL без схемы
Scheme relative URL
[Link]
//[Link]/[Link]
[Link]
55
Развитие WWW (World Wide Web):
1) Символьный гипертекст (текстовый браузер LineMode,
1991 г.)
Тело запроса
58
Пример HTTP-запроса (метод POST):
name=Tom&email=tom@[Link]&url=[Link]
59
HTTP-ответ:
Заголовок
Тело ответа
60
Пример HTTP-ответа (статический документ):
HTTP/1.1 200 OK
Date: Wed, 14 Sep 2005 00:31:03 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.5
Last-Modified: Thu, 11 Mar 2004 02:24:02 GMT
ETag: "1509a-14e-f865835b"
Content-Length: 8686
Content-Type: text/html; charset=WINDOWS-1251
<html>...
Пример HTTP-ответа (динамический документ):
HTTP/1.1 200 OK
Date: Sun, 02 Mar 2003 15:56:19 GMT
Server: Apache/2.0.40 (Win32)
X-Powered-By: PHP/5.0.3
Content-length: 62
Connection: close
Content-Type: text/html; charset=WINDOWS-1251
<html>... 61
Технология HTTP Strict Transport Security (HSTS):
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Mon, 24 Mar 2014 04:01:01 GMT
Server: GSE
Strict-Transport-Security: max-age=10893354; includeSubDomains
<html>...
SGML XML
1986 1996
Преимущества:
1) обработка проще и быстрее, чем HTML
2) доступны технологии, разработанные для XML
Требования:
1) все элементы должны быть закрыты
<br> → <br />
2) у атрибутов обязательно должно быть значение,
заключенное в кавычки
<td nowrap> → <td nowrap="nowrap">
3) имена тегов – строчными буквами
<B> → <b>
4) при нарушении структуры возникает ошибка
65
Документ в формате HTML состоит из следующих частей:
1 Строка с версией HTML (document type declaration)
2 Элемент HTML
2.1 Раздел заголовков (элемент HEAD)
2.2 Тело документа (элемент BODY или элемент
FRAMESET)
66
Версии HTML:
<!DOCTYPE html>
<meta http-equiv="Content-type"
content="text/html; charset=utf-8">
69
Элемент МЕТА (продолжение)
<meta name="Robots" content="noindex, follow">
index, noindex, follow, nofollow, all="index, follow",
none="noindex, nofollow"
70
Элемент BASE (+/-) – указание базового URL-адреса,
относительно которого будут определяться относительные
адреса
Пример:
<base href='[Link]
cars/[Link] = [Link]
71
Элемент LINK (+/-) – связь с другим ресурсом
Пример:
<link href="/[Link]" rel="stylesheet"
type="text/css">
<link href="/[Link]" rel="alternate stylesheet"
72
type="text/css" title="Dark website">
Разделение структуры документа и представления
73
Преимущества разделения структуры документа и
представления
74
Элемент BODY (+/+) – определяет содержимое документа
Атрибуты:
background = URL (устаревший)
text = COLOR (устаревший) COLOR = white, black,
link = COLOR (устаревший) ... или #RRGGBB от
vlink = COLOR (устаревший) #000000 до #FFFFFF
alink = COLOR (устаревший)
bgcolor = COLOR (устаревший)
style = ...
id = ...
class = ...
Пример:
<body onload="check_user()" class="cont small_txt"
style="color:#a0a0a0;border:1px solid navy">
75
76
Блочная модель (Box Model)
TOP
LEFT RIGHT
BOTTOM
77
Элементы DIV и SPAN (+/+ division) – группировка элементов
Атрибуты:
title = ...
style = ...
id = ...
class = ...
Пример:
<div title='Группа элементов' id='news_header'>
Первый второй третий четвертый
</div>
78
Элементы H1, H2, …, H6 (+/+ header) – определяют заголовки
текста
Пример: <h1>Заголовок</h1>
79
Элемент UL (+/+ unordered list) – маркированный
список
Пример:
<pre>Этот текст
Ф О Р М А ТИРОВАН</pre>
82
Элемент IMG (+/─ image) – изображение
Пример:
<img src='[Link]
alt='АиКС'>
83
Элемент A (+/+ anchor) - ссылка на другой ресурс либо на
другую часть текущего HTML-документа (внутренняя ссылка)
86
Элемент TABLE (продолжение)
87
Новые семантические элементы в HTML5
88
Каскадные таблицы стилей
Способы задания:
1 В элементе HEAD:
<html><head>
<style type='text/css'>...</style>
<style>...</style> (HTML5)
Абсолютные:
in (inches) – дюймы (1 дюйм = 2.54 см)
cm (centimeters) – сантиметры
mm (millimeters) – миллиметры
pt (points) – пункт (1 пункт = 1/72 дюйма)
pc (picas) – пика (1 пика = 12 пунктам)
px (pixel units) – пиксели (1 пиксель = 1/96
дюйма = 0.26 мм)
Относительные:
% - процент от размеров, заданных для
родительского элемента
em – размер шрифта текущего элемента
ex – высота символа "x"
93
Каскадные таблицы стилей
Расположение элемента:
Абсолютное
position: absolute;
top: 10px; left: 20px;
Относительное
position: relative;
top: -5px; left: 5px;
Фиксированное
position: fixed;
94
Каскадные таблицы стилей
"Плавающие" элементы:
Иерархические селекторы:
E1 E2 { ... } –
для элемента/класса/идентификатора E2,
находящегося в элементе/классе/идентификаторе E1
(любой уровень вложенности);
E1>E2 { ... } –
для элемента/класса/идентификатора E2,
находящегося в элементе/классе/идентификаторе E1
(первый уровень вложенности);
96
Каскадные таблицы стилей
Иерархические селекторы:
E1~E2 { ... } –
для элемента/класса/идентификатора E2,
следующего за элементом/классом/идентификатором
E1;
E1+E2 { ... } –
для элемента/класса/идентификатора E2,
непосредственно следующего за
элементом/классом/идентификатором E1;
97
Каскадные таблицы стилей
input:focus { ... } -
Вид элемента при получении им фокуса;
a:link { ... } –
вид ссылки на непосещенный ресурс;
a:visited { ... } –
вид ссылки на посещенный ресурс;
img:first-child { ... } –
вид картинки, которая является первым дочерним
элементом для своего родительского элемента
img:last-child { ... } 99
Каскадные таблицы стилей
Псевдоэлементы:
p:fist-letter { ... } –
p::fist-letter { ... } –
вид первой буквы параграфа;
p:first-line { ... } –
p::first-line { ... } -
вид первой строчки параграфа;
<!--#SSI_директива ПАРАМЕТР1="ЗНАЧЕНИЕ1"
ПАРАМЕТР2="ЗНАЧЕНИЕ2"-->
101
SSI (Server Side Include)
Директивы set, echo, printenv
102
SSI (Server Side Include)
Некоторые переменные окружения
103
SSI (Server Side Include)
Директивы условий (if, elif, else, endif)
<!--#if expr="УСЛОВИЕ1"-->
HTML-код, который будет выводиться, если УСЛОВИЕ1 истинно
<!--#elif expr="УСЛОВИЕ2"-->
HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно,
а УСЛОВИЕ2 истинно
<!--#else-->
HTML-код, который будет выводиться, если все условия
ложны
<!--#endif-->
Обязательно двойные кавычки в условии.
Условие - это либо строка, которая является истинной, если непустая, или набор
операторов сравнения строк.
Операторы: =,!=,<,<=,> и >=
К переменным окружения добавляется знак $
Поиск подстроки: $MyName=/Vas/
Объединение условий с помощью скобок и операторов && (И) и || (ИЛИ)
<!--#include file='[Link]'-->
<!--#include file='./dir1/[Link]'-->
<!--#include file='../dir1/[Link]'--> - нельзя!
<!--#include file='/ch1/[Link]'--> - нельзя!
<!--#include virtual='[Link]'-->
<!--#include virtual='./dir1/[Link]'-->
<!--#include virtual='../dir1/[Link]'-->
<!--#include virtual='/ch1/[Link]'--> 105
Скриптовый язык программирования JavaScript
Netscape – JavaScript
ECMAScript (1997 г.)
Microsoft – JScript
106
JavaScript
<TABLE><TBODY>
<TR>
<TD>Shady Grove</TD>
<TD>Aeolian</TD>
</TR>
<TR>
<TD>Over the River, Charlie</TD>
<TD>Dorian</TD>
</TR>
</TBODY> </TABLE>
108
JavaScript
Структура объектной модели документа DOM
109
JavaScript
Способы размещения функций
1) В HTML-документе
<script type="text/javascript">
<!--
function somefunction()
{
// здесь располагается код функции
}
//-->
</script>
2) В отдельном файле
<script type="text/javascript" src="/inc/[Link]"></script>
В файле [Link]:
function somefunction()
{
// здесь располагается код функции
}
110
JavaScript
Способы функционального применения скриптов
1) гипертекстовая ссылка (вместо URL);
2) обработчик события (HANDLER);
3) вставка (элемент SCRIPT).
Гипертекстовая ссылка
Применяется в следующих элементах:
- А (атрибут href)
- FORM (атрибут action)
- IMG (атрибут src) (небезопасно)
Вместо URL указывается строчка: javascript:КОД_ПРОГРАММЫ
Обработчик события
JavaScript-код указывается в качестве значения соответствующего
атрибута элемента: onСОБЫТИЕ="КОД_ПРОГРАММЫ"
Вставка
JavaScript-код помещается в элементе SCRIPT. Обычно в заголовке
документа HEAD размещают объявления переменных и функций, а в
основной части документа – исполняемый код
<script type="text/javascript">
function f1() {
// код функции
}
alert('вставка');
</script>
112
JavaScript
Обращение к объектам, их свойствам и методам
ОБЪЕКТ_1.ОБЪЕКТ_2. … .ОБЪЕКТ_N
ОБЪЕКТ_1.ОБЪЕКТ_2. … .ОБЪЕКТ_N.СВОЙСТВО1. … СВОЙСТВОM
ОБЪЕКТ_1.ОБЪЕКТ_2. … .ОБЪЕКТ_N.МЕТОД
Обращение к объекту:
113
JavaScript
Обращение к свойству объекта:
[Link][0].elements[0].[Link]='red';
[Link]='red';
[Link][0].[Link]='none';
[Link]("news").[Link]='red';
//изменение цвета фона
[Link]("news").[Link]='none';
//изменение видимости объекта
[Link]("news").innerHTML='Другой текст';
//изменение HTML-кода, содержащегося в объекте
Литералы
числовой литерал: 42
числовой литерал: 1.432
числовой литерал: 1.432e+2
строковый литерал: 'Это строковый литерал'
строковый литерал: "Это строковый литерал"
Переменные
Определяются при помощи оператора var
var i;
var i=20;
var w=[Link]();
Регистр букв имеет значение. Тип переменной определяется
контекстом.Узнать тип переменной можно с помощью функции
typeof(ИМЯ_ПЕРЕМЕННОЙ). Результат функции – строка
'undefined', 'number', 'string', 'object' или 'function'.
115
alert(typeof(i));
JavaScript
Операторы сравнения
"10" == 10 // true
"10" === 10 // false
0 == '' // true
0 == ' \r\n ' // true
0 === ' \r\n ' // false
10 + 20 // 30
10 + "20"// "1020"
10 + parseInt("20")// 30
10 + parseInt("020")// ??
10 + parseInt("020", 10)// 30
10 + parseInt("20.5")// 30
10 + parseFloat("20.5")// 30.5
var i = 20;
10 + [Link]() // "1020"
117
JavaScript
Типы и структуры данных
Можно сразу задать переменную без оператора var:
i = 10;
var i = '';
if (i == null) alert('i is null'); // -
if (i === undefined) alert('undefined'); // -
alert(typeof(i)); // string
var i = null;
if (i == null) alert('i is null'); // +
if (i === undefined) alert('undefined'); // -
alert(typeof(i)); // object
118
JavaScript
Типы и структуры данных
Массивы
var b = [];
alert(typeof(b)); // 'object'
e[10]='новая строчка';
function f_name(arg1,arg2,...)
{
/* function body */
return result;
}
function add(a, b) {
return a+b;
}
alert(add("10","20")); //появится сообщение «1020»
Анонимные функции
(function() {
var a = 10, b = 20;
alert(a+b); 120
})();
JavaScript
Операторы условия и цикла
Оператор условия if
if (логическое выражение) оператор1;
[else оператор2;]
var i=1;
while (i<10) { alert(i); i+=2; }
for(v in ОБЪЕКТ)
{
[Link](
v + " : " +
eval("typeof(ОБЪЕКТ." + v + ")") + " : " +
eval("ОБЪЕКТ."+v)+"<br>");
}
122
JavaScript
Функции для работы с таймером
ПЕРЕМЕННАЯ=setTimeout('КОД_ПРОГРАММЫ', ВРЕМЯ);
clearTimeout(ИДЕНТИФИКАТОР)
123
JavaScript
Функции для работы с таймером
124
JavaScript
[Link][0].src='[Link] -
изменение изображения (загрузка с сервера [Link])
[Link]('logo').src='[Link]
[Link]';
[Link]='[Link] - загрузка
изображения в объект
Преимущества:
• Кроссбраузерность
<script src="[Link]"></script>
Использование JQuery
Работа с JQuery осуществляется с помощью функции $,
которая принимает селектор и возвращает JQuery-объект.
<body>
...
<script>
$(document).ready(function() {
// код
});
</script>
</body>
или
<script>
$(function() {
// код
});
</script>
Базовые селекторы
$("*")
$("ЭЛЕМЕНТ")
$("#ИДЕНТИФИКАТОР")
$(".КЛАСС")
Иерархические селекторы
$("E1 E2")
$("E1>E2")
$("E1~E2")
$("E1+E2")
Базовые фильтры
$("СЕЛЕКТОР:odd") – элементы с нечетными индексами
(индекс с 0)
Объединение фильтров
$("СЕЛЕКТОР:ФИЛЬТР1:ФИЛЬТР2:ФИЛЬТР3")
$("СЕЛЕКТОР").filter(":ФИЛЬТР1").filter(":ФИЛЬТР2"
).filter(":ФИЛЬТР3")
Фильтры содержимого и видимости
$("СЕЛЕКТОР:visible") – элементы, видимые в
настоящий момент
$("СЕЛЕКТОР:has(СЕЛЕКТОР2)") – элементы,
содержащие дочерние элементы, подпадающие под
описание СЕЛЕКТОР2
$("СЕЛЕКТОР:contains(ТЕКСТ)") – элементы,
содержащие ТЕКСТ
Действия с JQuery-объектом
height, width
css
addClass, removeClass, toggleClass
toggle, hide, show
slideToggle, slideUp, slideDown
fadeOut, fadeIn, fadeTo
animate
html
text
on, off
135
Программирование для Web
CGI (Common Gateway Interface)
Часть информации заголовка HTTP-запроса преобразует в
переменные окружения, которые доступны для анализа CGI-
скриптом. Если запрос имеет тело, то оно становится
доступным скрипту через поток стандартного ввода.
CGI-скриптом называют программу, написанную на любом языке
программирования или командном языке, которая осуществляет
обмен данными с HTTP-сервером в соответствии со
спецификацией Common Gateway Interface.
Наиболее популярные языки программирования: PHP, Perl, Python,
Ruby, C.
переменные окружения
аргументы командной строки
CGI-приложение
HTTP-сервер
136
Программирование для Web
CGI (Common Gateway Interface)
Метод GET:
GET /cgi-bin/temp/[Link]?a=1&b=2 HTTP/1.1
Referer: [Link]
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
5.1)
Host: [Link]
<пустая строка>
Переменные окружения:
REQUEST_METHOD = GET
QUERY_STRING = a=1&b=2
HTTP_REFERER = [Link]
HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1)
REMOTE_ADDR = [Link]
Переменные окружения:
REQUEST_METHOD = POST
QUERY_STRING = a=1&b=2
CONTENT_TYPE = application/x-www-form-urlencoded
CONTENT_LENGTH = 8
HTTP_REFERER = [Link]
HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
5.1)
REMOTE_ADDR = [Link]
#!/usr/bin/perl
print "Content-type: text/html\n\nHello";
HTTP/1.1 200 OK
Date: Tue, 20 Nov 2005 17:54:02 GMT
Server: Apache/2.0.52 (FreeBSD) PHP/5.0.3
Connection: close
Content-Type: text/html
<пустая строка>
Hello
139
Программирование для Web
CGI (Common Gateway Interface)
140
Программирование для Web
CGI (Common Gateway Interface)
#include <stdio.h>
int main(void) {
printf("Content-Type: text/plain;charset=windows-1251\n\n");
printf("Hello");
return 0;
}
141
Программирование для Web
CGI (Common Gateway Interface)
Самое простое CGI-приложение на PHP:
<?php print "Hello"; ?>
142
Программирование для Web
Язык программирования PHP
PHP – PHP: Hypertext Preprocessor (или Personal Home Page Tools)
– «Гипертекстовый препроцессор» - язык сценариев общего
назначения, предназначенный в первую очередь для быстрого
создания динамически генерируемых страниц для Web.
Преимущества:
1) PHP может использоваться на всех крупных платформах.
2) Для большинства существующих веб-серверов существуют модули
PHP.
3) Встроенная поддержка наиболее популярных СУБД, сессий,
cookies, переменных запроса.
4) PHP – более безопасный язык для написания CGI-приложений по
сравнению с Perl и C.
5) Встроенная поддержка вывода сообщений об ошибках и
предупреждений напрямую в браузер.
143
Программирование для Web
Язык программирования PHP
Недостатки:
Результат:
<html><head><title>Заголовок</title></head>
<body>My name is PHP</body>
</html>
145
Программирование для Web
Язык программирования PHP
Вставить содержимое файла [Link]:
<html><head><title>Заголовок</title></head>
<body><?php include('[Link]'); ?></body>
</html>
Результат:
<html><head><title>Заголовок</title></head>
<body>Links: <a href='[Link]
</html>
146
Программирование для Web
Язык программирования PHP
Основные типы:
1) логический (True, False) <?php $a=True; ?>
2) целые числа <?php $a=10; ?>
3) вещественные числа <?php $a=4.32; ?>
4) строки <?php $a='str'; $b="str2"; ?>
5) массивы <?php $a=array('frist', 'second', 'third'); ?>
"10" == 10 // true
"10" === 10 // false
0 == '' // true
0 == ' \r\n ' // true
0 === ' \r\n ' // false
148
Программирование для Web
Язык программирования PHP
Оператор условия:
if (is_string($a)) {
print "Строчка";
$res=$a;
}
elseif (is_array($a)) {
print "Массив";
}
elseif ($a==$b && ($c>=$d || $f<$x)) {
print $a;
}
else {
print $b;
}
149
Программирование для Web
Язык программирования PHP
Операции со строками
Объединение строк:
$a='First'; $b='Second'; $c=$a.$b; print $c;
FirstSecond
Нахождение подстроки:
$s2 = substr("abcdef", 1, 3); //в $s2 записано "bcd"
//параметры: исходная строка, начальный символ (счёт с
0), количество символов
$s2 = substr("abcdef", 2); //в $s2 записано "cdef" - до
конца строки
$s2 = substr("abcdef", -3); //в $s2 записано "def" -
отчёт от конца строки
$s2 = substr("abcdef", 1, -1); //в $s2 записано "bcde" -
со второго символа до предпоследнего
150
Программирование для Web
Язык программирования PHP
Операции со строками
Кавычки: " или '
$a='str';
$b='___ $a ___'; //$b содержит ___ $a ___
$c="___ $a ___"; //$c содержит ___ str ___
151
Программирование для Web
Язык программирования PHP
Операции со строками
152
Программирование для Web
Язык программирования PHP
Операции с массивами
Добавление нового элемента:
$a=array();
$a[]=1; //первый элемент с индексом 0
$a[10]=2;
$a[]=3; //элемент с индексом 11
print $a[11]; //на экране 3
$a=array(1,2,3);
for ($i=0; $i<count($a); $i++) { print $a[$i].'-'; }
//на экране 1-2-3-
153
Программирование для Web
Язык программирования PHP
Операции с файлами
Чтение текстового файла в массив:
$ar=file('[Link]');
$fp=fopen('[Link]', 'r');
while (!feof($fp)) {
$ar[]=fgets($fp);
}
fclose($fp);
154
Программирование для Web
Язык программирования PHP
Обработка форм
Переменные окружения:
getenv('REMOTE_ADDR')
getenv('HTTP_USER_AGENT')
HTTP-ответ:
HTTP/1.1 200 OK
Date: Wed, 05 Dec 2005 16:11:56 GMT
Server: Apache/2.1.4 (FreeBSD) PHP/5.0.3
X-Powered-By: PHP/5.0.3
Set-Cookie: ct=1133925116
Content-Length: 726
Connection: close
Content-Type: text/html
<html>...
157
Программирование для Web
Cookies
HTTP-ответ:
HTTP/1.1 200 OK
Date: Wed, 05 Dec 2005 16:11:56 GMT
Server: Apache/2.1.4 (FreeBSD) PHP/5.0.3
X-Powered-By: PHP/5.0.3
Set-Cookie: ct2=1133925364; expires=Thu, 05-Dec-2006 16:16:04 GMT
Content-Length: 726
Connection: close
Content-Type: text/html
<html>...
158
Программирование для Web
Cookies
Cookies передаются на сервер браузером в заголовке HTTP-
запроса:
HTTP-запрос:
GET /~temp/[Link] HTTP/1.0
Host: [Link]
Keep-Alive: 300
Referer: [Link]
Cookie: ct2=1133925364; ct=1133925557
159
Программирование для Web
Cookies
В PHP-скрипте Cookies устанавливаются и удаляются
функцией
setcookie (string name [, string value [, int expire [, string
path [, string domain [, int secure [, int httponly]]]]]])
162
Программирование для Web
Классы в PHP
class MyClass {
private $title = 'default title';
//переменная класса с режимом доступа private
public $count;
//переменная класса с режимом доступа public
<script>
...
var req;
if ([Link])
{
// код для IE7+, Firefox, Chrome, Opera, Safari
req = new XMLHttpRequest();
}
else if ([Link])
{
// код для IE6, IE5
req = new ActiveXObject("[Link]");
}
else { alert("Ваш браузер не поддерживает XMLHTTP!"); }
}
...
</script>
164
Программирование для Web
AJAX
Шаг 2 – указать обработчик изменения состояния объекта
<script type='text/javascript'>
...
[Link] = myready;
...
</script>
<script type='text/javascript'>
...
function myready() {
if ([Link] == 4 && [Link] == 200) {
alert( [Link] );
}
}
...
</script> 165
Программирование для Web
AJAX
<script type='text/javascript'>
...
[Link]('GET', '[Link] true);
[Link](null);
...
</script>
166