69
Комуникација на Веб Интернет Технологии 2015 д-р Гоце Арменски и д-р Магдалена Костоска

02 Komunikazija Na Veb 2015

  • Upload
    -

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

Web comunication

Citation preview

Page 1: 02 Komunikazija Na Veb 2015

Комуникација на Веб

Интернет Технологии 2015

д-р Гоце Арменски и д-р Магдалена Костоска

Page 2: 02 Komunikazija Na Veb 2015

Содржина

Комуникација: Клиент – Сервер

Комуникација: Прелистувач – Сервер

Протоколи

Page 3: 02 Komunikazija Na Veb 2015

Клиенти и сервери

Клиентска програма Се извршува на еден

краен домаќин (host)

Побарува услуга (сервис)

Пр., Веб прелистувач

Серверска програма Се извршува на еден

краен домаќин (host)

Овозможува услуга

Пр., Веб сервер

“Site under construction” Извор : Jennifer Rexford - Networked Applications: Sockets

Page 4: 02 Komunikazija Na Veb 2015

Клиентите не се задолжително луѓе

Пример: Web crawler (или spider) Автоматизирана клиентска програма

Се обидува да открие и download многу веб страни

Формира основа за пребарувачи како Google

Spider клиент Почнува со основна листа на популарни ве страници

Врши download на веб страниците

Ги парсира HTML документите за да извлече линкови

И овие страници ги download-ра исто

И повторно, и повторно, и повторно…

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 5: 02 Komunikazija Na Veb 2015

Клиент - сервер комуникација

Клиентот е “некогаш on”

Иницира барање до серверот кога е заинтересиран

Пр. Веб прелистувач

Не комуницира директно со други клиенти

Треба да ја знае серверската адреса

Серверот е “секогаш on”

Добива побарувања за сервиси од многу клиенти

Пр. Веб сервер за www.finki.ukim.mk

Не иницира контакт со клиенти

Треба да има фиксна позната адреса

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 6: 02 Komunikazija Na Veb 2015

Peer-to-Peer Комуникација

Нема сервер кој е постојано достапен во оваа комуникација Хостовите може да доаѓаат и одат и да менуваат

адреси Хостовите може да имаат различни адреси секогаш

Пример: peer-to-peer споделување документи (како torrent) Било кој хост може да побарува или доставува

документи, пребарува и најде локација на документ...

Скалабилност со вклучување на милиони хостови Секој peer може да се однесува и како сервер и како

клиент

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 7: 02 Komunikazija Na Veb 2015

Клиент - сервер vs Peer-to-peer

Клиент - сервер Peer-to-peer

Извор слики: http://www.howtogeek.com/141257/htg-explains-how-does-bittorrent-work/

Page 8: 02 Komunikazija Na Veb 2015

Достава на податоци: поделба на труд

Мрежа Доставува податочни пакети до дестинацискиот хост

Се базира на дестинациска IP адреса

Оперативен систем Доставува податоци до дестинацискиот сокет

Се базира на дестинациски број на порта

Апликација Чита и запишува податоци од/до сокет

Интерпретира податоци (Пр. Рендерира веб страница)

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 9: 02 Komunikazija Na Veb 2015

Сокет: Точка на комуникација

Праќа пораки од еден процес на друг

Пораките мора да поминат низ мрежата

Процесите праќаат и примаат преку “сокет”

Претставуваат точка за влез/излез

Сокет како API

Поддржуваат креирање на мрежни апликации

socket socket

User process User process

Operating

System Operating

System

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 10: 02 Komunikazija Na Veb 2015

Идентификација на приемниот процес

Процесот кој праќа мора да го идентификува примачот

Компјутерот кој ќе прима податоци

Специфичниот сокет на тој компјутер

Приемен хост

Дестинациската адреса го идентификува приемниот хост

IP адреса (32 бита)

Приемен сокет

Еден хост може да извршува повеќе различни процеси

Дестинациската порта го идентификува сокетот

Број на порта (16 бита)

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 11: 02 Komunikazija Na Veb 2015

Употреба на порти за идентификација на сервиси

Веб сервер

(port 80)

Client host

Server host 128.2.194.242

Echo сервер

(port 7)

Service request for

128.2.194.242:80

(i.e., the Web server)

Веб сервер

(port 80)

Echo сервер

(port 7)

Service request for

128.2.194.242:7

(i.e., the echo server)

OS

OS

Клиент

Клиент

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 12: 02 Komunikazija Na Veb 2015

Кој број на порта да се употреби

Популарните апликации имаат добро познати порти

Пр. порта 80 за веб и порта 25 за e-mail

Погледнете http://www.iana.org/assignments/port-numbers

Добро- познати vs. краткотрајни порти

Серверите имаат познати порти

Меѓу 0 и 1023

Клиентот бира неупотребена привремена порта

Меѓу 1024 и 65535

Идентификација на сообраќај меѓу два хоста

Две IP адреси и два броја на порти

Транспортен протокол (Пр. TCP или UDP)

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 13: 02 Komunikazija Na Veb 2015

Броевите на порти за единствени за секој хост

Бројот на порта го идентификува сокетот

Оперативниот систем (ОС) обезбедува уникатност

ОС внимава кои порти се во употреба

Не дозволува две програми да употребуваат иста порта

Пример: Два веб сервера на иста машина

Не може и двата да ја користат портата “80”, стандардната порта

Еден од нив мора да користи нестандардна порта

Пр. http://www.finki.ukim.mk:8080

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 14: 02 Komunikazija Na Veb 2015

Типична клиентска програма

Подготовка за комуникација Креирање на сокет

Одредување на серверската адреса и порта

Иницирање конекција кон серверот

Размена на податоци со сервер Запишува податоци на сокетот

Чита податоци од сокетот

Работи со податоците (Пр. Рендерирање веб страна)

Го затвора сокетот

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 15: 02 Komunikazija Na Veb 2015

Серверите се разликуваат од клиентите

Пасивно отворени Подготвени да прифатат конекција

… но не ја поставуваат

… додека не се побарува од клиент

Слушаат од повеќе клиенти Дозволуваат листа на чекање на клиенти

... Во случај повеќе да сакаат комуникација истовремено

Креираат сокет за секој клиент При прифаќање на нов клиент

… креираат нов сокет за комуникација

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 16: 02 Komunikazija Na Veb 2015

Типична серверска програма Подготовка за комуникација

Креираат сокет Асоцираат локална адреса и порта со сокетот

Чека на комуникација од клиент (passive open) Се иницира колку клиенти за чекање ќе се дозволат Прифаќаат конекции кои доаѓаат од клиент

Разменува податоци со клиентот преку нов сокет Чита податоци од сокетот Се справува со побарувања (Пр. Се зема документ) Запишува податоци на сокетот Го затвора сокетот

Се повторува истото со следното побарување за конекција

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 17: 02 Komunikazija Na Veb 2015

Целосна слика

socket()

bind()

listen()

accept()

read()

write()

Сервер

block

process request

Клиент

socket()

connect()

write()

read()

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 18: 02 Komunikazija Na Veb 2015

Клиент: Дознавање на серверска адреса/порта

Серверот се познава по име и тип на сервис Пр. “www.finki.ukim.mk” и“http”

Се преведува во IP адреса и порта E.g., “194.149.137.145” и “80”

Превод на серверско име во адреса struct hostent *gethostbyname(char *name)

Аргументи: име на хост (Пр. “www.finki.ukim.mk”)

Се враќа структура која ја вклучува адресата на хостот

Идентификација на портата на сервисот struct servent *getservbyname(char *name, char *proto)

Аргументи: тип на сервис (Пр. “ftp”) и протокол (Пр. “tcp”)

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 19: 02 Komunikazija Na Veb 2015

Веб: URL, HTML и HTTP

Uniform Resource Locator (URL) Покажувач кон “црна кутија” која прифаќа побарувања

(requests)

Форматиран стринг со протокол (Пр. http), серверско име (Пр. www.finki.ukim.mk) и име на ресурс (finki-logo-9.png)

HyperText Markup Language (HTML) Презентација на hyptertext документи во ASCII формат

Форматиран текст, слики, вградени линкови

Се интерпретира од веб прелистувачи

HyperText Transfer Protocol (HTTP) Клиент-сервер протокол за трансфер на ресурси

Клиентот праќа побаруваење (request) и серверот враќа одговор (response)

Извор : Jennifer Rexford - Networked Applications: Sockets

Page 20: 02 Komunikazija Na Veb 2015

HTTP URL

Веб прелистувачот го користи авторитетот (authority) за да се поврзе преку TCP

Го побарува ресурсот (Request-URI) – “/” се користи за патеки

Фрагментот не се праќа до сервер (се користи за scroll во прелистувачот на клиентот)

http://www.example.org:56789/a/b/c.txt?t=win&s=chess#para5

host (FQDN) port

authority

path query fragment

Request-URI

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 21: 02 Komunikazija Na Veb 2015

Web комуникација

Web апликациите имаат две одделни компоненти

Client – познат како front-end интерфејс

Прикажува кориснички интерфејс

Овозможува влез на податоци од корисниците

Праќа податоци кон серверот за обработка

Server – познат како back-end интерфејс

Враќа одговор на клиентот за страните кои тој ги побарал

Страните ги враќа како HTML со инструкции како да се генерира кориничкиот интерфејс (приказот на страната)

Page 22: 02 Komunikazija Na Veb 2015

Комун.: прелистувач - сервер

Се користи HTTP протокол

Се праќа GET request до сервер

Серверот праќа одговор назад до прелистувачот

При submit се праќа POST назад кон серверот

Серверот праќа одговор назад до прелистувачот

Page 23: 02 Komunikazija Na Veb 2015

Server-Side Programming

CGI > ISAPI > ASP > ASP.NET > …

Page 24: 02 Komunikazija Na Veb 2015

Client-Side Programming

JAVA, JavaScript, DHTML

Page 25: 02 Komunikazija Na Veb 2015

Улогата на Серверот

Page 26: 02 Komunikazija Na Veb 2015

Веб сервери

Основна функционалност: Прима HTTP барање (request) преку TCP

Го мапира Host header-от со соодветен виртуелен хост (еден од многуте хостови кои ја делат истата IP адреса)

Го мапира Request-URI се соодветен ресурс асоциран со виртуелниот хост Документ: Се враќа документот во HTTP одговор (response)

Програма: Се извршува програмата и се враќа излезот во HTTP одговор (response)

Го мапира типот на ресурсот во соодветен MIME тип и го употребува за да постави соодвете Content-Type header во HTTP одговорот (response)

Креира лог со информации за побарувањето и одговорот

Page 27: 02 Komunikazija Na Veb 2015

Верификација дека барањето е правилно структурирано

заштита од клиенти кои постојано праќаат лошо структурирани барања

Идентификација на самиот себе

доколку серверот користи SSL сертификат, мора истиот да се прифати

Идентификација на корисник

доколку страната побарува идентификација на корисник, се проверува дали таков корисник постои

Авторизација на корисникот

доколку постои тој корисник се проверува дали тој има привилегии за пристап до бараната страна

Операции кои ги извршува серверот

Page 28: 02 Komunikazija Na Veb 2015

Утврдување како да се справи со барањето дали се работи за страна со статична содржина (HTML) или

некоја ASP.NET страна

Справување со грешки доколку не може да одговори на барањето серверот генерира

информации за грешката

Кеширање на излезот за побрз одговор при следното повикување на страната

Компресирање на излезот за редуцирање на пропусниот опсег

Логови зачувување на логови

Операции кои ги извршува серверот #2

Page 29: 02 Komunikazija Na Veb 2015

Улогата на прелистувачот Праќа барања до web серверот

Се користи HTTP протокол за конектирање на серверот и барање на страна од него (Convert web addresses (URL’s) to HTTP requests)

Идентификација на серверот Ако серверот поседува SSL сертификат тогаш се користи HTTPS протокол за

комуникација со него

Процесирање на одговорот Доколку страната постои се прикажува кориснички интерфејс генериран од HTML

кодот кој го враќа серверот Доколку не постои се враќа порака за грешка или се прави редиректирање кон

друга страна

Приказ на HTML објекти Рендерирање на сите објекти кои се наоѓаат во HTML кодот вратен од серверот

Извршување на клиентски скрипти JavaScript, AJAX скрипти кои се извршуваат на клиентска страна без да повторно

вчитување на страната

Page 30: 02 Komunikazija Na Veb 2015

Улогата на Hypertext Transfer Protocol (HTTP)

Текст базиран комуникациски протокол

Порти:

80 и 443 за HTTPS

Праќање request од прелистувачот кон серверот:

GET /default.aspx HTTP/1.1

Host: www.finki.ukim.mk

HTTP e stateless протокол (т.е. Нема состојби):

Протоколот не побарува серверот да памети било што за клинетот меѓу две негови побарувања.

Page 31: 02 Komunikazija Na Veb 2015

HTTP

Стандардно се имплементира со TCP конекција

Може да се употребува Telnet протоколот за да се симулира побарување (request) од клиент и да се вид одговорот на серверот

Извор : Guy-Vincent Jourdan :: CSI 3140

$ telnet www.example.org 80

Trying 192.0.34.166...

Connected to www.example.com

(192.0.34.166).

Escape character is ’^]’.

GET / HTTP/1.1

Host: www.example.org

HTTP/1.1 200 OK

Date: Thu, 09 Oct 2003 20:30:49 GMT

{ Праќање на

Побарување

(request)

{ Примање на

одговор

(response)

Поврзување {

Page 32: 02 Komunikazija Na Veb 2015

Пример клиент: Веб прелистувач (Web Browser)

Генерира HTTP барања

Прикажува одговор

Парсира HTML и рендерира веб страница

Повикува помошни апликации (Пр. Acrobat, PowerPoint)

Одржува кеш

Зачувува објекти кои се неодамна видени

Проверува дали кешираните објекти се “свежи”

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 33: 02 Komunikazija Na Veb 2015

Веб сервер vs Веб сајт

Веб сајт: колекција од веб страници асоцирани со соодветно име на хост

Веб сервер: програма која одговара на клиентските побарувања за веб ресурси

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 34: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Структура на побарување:

Почетна линија (start line)

Полиња на заглавје (header field(s))

Празна линија

Опционално тело

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 35: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Структура на побарување:

Почетна линија (start line)

Полиња на заглавје (header field(s))

Празна линија

Опционално тело

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 36: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Почетна линија (start line)

Пример: GET / HTTP/1.1

Три дела одделени со празно место:

HTTP метод на барање (request method)

Request-URI (Uniform Resource Identifier)

HTTP верзија

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 37: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Почетна линија (start line)

Пример: GET / HTTP/1.1

Три дела одделени со празно место:

HTTP метод на барање (request method)

Request-URI

HTTP верзија

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 38: 02 Komunikazija Na Veb 2015

Hypertext Transfer Protocol (HTTP) Верзии

• HTTP/1.0 allows only connectionless message passing each request/response requires a new connection to download a page with images requires multiple

connections can overload the server, require lots of overhead

• HTTP/1.1 provides persistent connection by default (HTTP keep-alive) once client & server connect, remains open until told to

close it (or timeout) reduces number of connections, saves overhead

client can send multiple requests without waiting for responses

e.g., can request all images in a page at once

Page 39: 02 Komunikazija Na Veb 2015

Hypertext Transfer Protocol (HTTP) Верзии

• HTTP/2.0 Based on SPDY - open networking protocol developed

primarily at Google for transporting web content Decrease latency to improve page load speed in web

browsers

• HTTP/1.1 vs HTTP/2.0 HTTP/2 leaves most of HTTP 1.1's high level syntax, such as

methods, status codes, header fields, and URIs, the same The element that is modified is how the data is framed

and transported between the client and the server Additional performance improvements of HTTP/2 come

from multiplexing of requests and responses to avoid the head-of-line blocking problem in HTTP 1, header compression, and prioritization of requests

Page 40: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Почетна линија (start line)

Пример: GET / HTTP/1.1

Три дела одделени со празно место:

HTTP метод на барање (request method)

Request-URI

HTTP верзија

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 41: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Uniform Resource Identifier (URI)

Синтакса: scheme : scheme-depend-part

Пр. Во http://www.example.com/ scheme е http

Request-URI - делот кој следи по името на хостот

Пр. / е Request-URI делот од http://www.example.com/

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 42: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Почетна линија (start line)

Пример: GET / HTTP/1.1

Три дела одделени со празно место:

HTTP метод на барање (request method)

Request-URI

HTTP верзија

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 43: 02 Komunikazija Na Veb 2015

HTTP методи

OPTIONS – побарува листа од сите овозможени методи

GET – зема URL од сервер

HEAD – зема meta информации

POST – праќа податоци до серверот за процесирање

PUT – директно креирање на ресурс на сервер (пр. Зачувување на некој документ)

DELETE – бришење на ресурс од сервер

TRACE – за тестирање и пронаоѓање на грешки

CONNECT – кога се користи proxy

DEBUG – за дебагирање во ASP.NET

Page 44: 02 Komunikazija Na Veb 2015

GET метод

GET /getCustomer.aspx?id=123&color=blue HTTP/1.1

Host: www.customerservice.com

Недостатоци на GET методот:

Цела адреса се гледа во address bar на прелистувачот

Ограничена е должината на query string (1024 карактери на IIS)

Page 45: 02 Komunikazija Na Veb 2015

GET пример

Интернет Технологии 2012 м-р

Владимир Здравески

bash-3.1$ telnet www.csc.liv.ac.uk 80

Trying 10.128.0.3...

Connected to www.csc.liv.ac.uk (10.128.0.3).

Escape character is '^]'.

GET /~martin/index.html HTTP/1.1

Host: www.csc.liv.ac.uk

HTTP/1.1 200 OK

Date: Mon, 08 Oct 2007 10:01:15 GMT

Server: Apache/2.0.58 HP-UX_Apache-

based_Web_Server (Unix) mod_perl/1.99_16

Perl/v5.8.7 DAV/2 PHP/5.0.4

Last-Modified: Mon, 01 Oct 2007 14:55:16 GMT

ETag: "ec3f-1122-9fd83d00"

Accept-Ranges: bytes

Content-Length: 4386

Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Strict//EN“

"http://www.w3.org/TR/xhtml11/DTD/xhtml1-

strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xml:lang="en" lang="en">

<head>

. . .

. . .

</head>

<body>

. . .

. . .

</body>

</html>

Connection closed by foreign host.

server response has assorted

header information, followed

by the page

Page 46: 02 Komunikazija Na Veb 2015

POST метод

POST /getCustomer HTTP/1.1

Host: www.customerservice.com

Id=123&color=blue

Проблем ако праќаме големо количество на податоци

Во ASP.NET – IsPostBack се користи за да се одреди дали податоци се пратени кон серверот или страната е едноставно повикана без праќање на дополнителни податоци кон серверот

Page 47: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Структура на побарување:

Почетна линија (start line)

Полиња на заглавје (header field(s))

Празна линија

Опционално тело

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 48: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Структура на поле на заглавје (header field) :

field name : field value

Синтакса

Field name не е case sensitive

Field value може да содржи повеќе последователни линии со празни места

Field values може да содржи MIME типови, вредности (quality values) и wildcard карактери (*’s)

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 49: 02 Komunikazija Na Veb 2015

Multipurpose Internet Mail Extensions (MIME)

Конвенција за спецификација на типови на содржина на порака

Во HTTP често се употребува за да се специфицира тип на содржина во телото на одговорот (response)

Синтакса на MIME тип на содржина:

top-level type / subtype

Примери: text/html, image/jpeg

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 50: 02 Komunikazija Na Veb 2015

HTTP вредности (quality values) и wildcards

Пример за поле на заглавје со вредности (quality values): accept:

text/xml,text/html;q=0.9,

text/plain;q=0.8, image/jpeg,

image/gif;q=0.2,*/*;q=0.1

Вредностите се применуваат на сите претходни елементи

Повисока вредности, повисоко претпочитување

Забележете употреба на wildcards за да се специфицира квалитет 0.1 за било кој MIME тип кој не е специфициран претходно

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 51: 02 Komunikazija Na Veb 2015

HTTP Побарување (Request)

Општи полиња на заглавје (header fields): Host: името на хостот од URL (задолжително)

User-Agent: тип на прелистувач кој го праќа побарувањето (request)

Accept: MIME типови на прифатливи документи

Connection: вредноста close му кажува на серверот да ја затвори конекцијата после еден request/response

Content-Type: MIME тип на (POST) тело, често application/x-www-form-urlencoded

Content-Length: број на битови во телото

Referer: URL на документот кој содржи линк кој го дава URIто за HTTP барањето (request)

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 52: 02 Komunikazija Na Veb 2015

Одговор на серверот

Серверот го процесира барањето и враќа одговор на прелистувачот

ASP.NET сите информации ги пакува во Response object

Враќање response од серверот кон прелистувачот:

HTTP/1.1 200 OK

Server: Microsoft-IIS/6.0

Content-Type: text/html

Content-Length: 38

<html><body>Hello, World.</body></html>

Page 53: 02 Komunikazija Na Veb 2015

HTTP Одговор (Response)

Структура на одговорот:

Линија со статус (status line)

Полиња на заглавје (header field(s))

Празна линија

Опционално тело

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 54: 02 Komunikazija Na Veb 2015

HTTP Одговор (Response)

Линија со статус (status line)

Пример: HTTP/1.1 200 OK

Три дела одделени со празно место:

HTTP верзија

Статусен код (status code)

Описна причина (наменета за читање од страна на човек)

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 55: 02 Komunikazija Na Veb 2015

Статус кодови и причини 1xx – информациски (пр. Барањето е примено и серверот

продолжува со процесот) Reason: 100 CONTINUE

2xx – успешност (пр. Примено, прифатено и разбрано) Reason: 200 OK

3xx – редиректирање (пр. Страната е поместена треба да се редиректира кон друга страна) Reason: 302 FOUND

4xx – Клиентска грешка (пр. барањето има синтаксна грешка или серверот незнае како да одговори) Reason: 400 Bad Request

5xx- Серверска грешка (серверот неможе да го исполни барањето кое е валидно) Reason: 500 Internal Server Error

Page 56: 02 Komunikazija Na Veb 2015

Статус кодови

Page 57: 02 Komunikazija Na Veb 2015

HTTP Одговор (Response)

Структура на одговорот:

Линија со статус (status line)

Полиња на заглавје (header field(s))

Празна линија

Опционално тело

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 58: 02 Komunikazija Na Veb 2015

HTTP Одговор (Response)

Општи полиња на заглавје (header fields): Connection, Content-Type, Content-Length

Date: датум и време кога одговорот е креиран (задолжително)

Location: алтернативно URI ако статусот е пренасочување (redirection)

Last-Modified: датум и време кога побаруваниот ресурс е последно менуван од серверот

Expires: датум и време после кои клиентската копија на ресурсот ќе биде застарена

ETag: единствен идентификатор за верзијата на побараниот ресурс (се менува ако се промени/измени ресурсот)

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 59: 02 Komunikazija Na Veb 2015

Пример 1

Trying 10.128.0.3...

Connected to www.csc.liv.ac.uk

(10.128.0.3).

Escape character is '^]'.

GET /~martin/ HTTP/1.1

Host: www.csc.liv.ac.uk

if a directory is specified, will

look for a file named index.html

HTTP/1.1 200 OK

Date: Mon, 08 Oct 2007 10:18:00 GMT

Server: Apache/2.0.58 HP-UX_Apache-

based_Web_Server (Unix) mod_perl/1.99_16

Perl/v5.8.7 DAV/2 PHP/5.0.4

Last-Modified: Mon, 01 Oct 2007 14:55:16 GMT

ETag: "ec3f-1122-9fd83d00"

Accept-Ranges: bytes

Content-Length: 4386

Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Strict//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml1-

strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xml:lang="en" lang="en">

<head>

<title> Russell Martin's Home Page </title>

. . .

</head>

<body>

. . .

</body>

</html>

Connection closed by foreign host.

Page 60: 02 Komunikazija Na Veb 2015

Пример 2

bash-3.1$ telnet www.csc.liv.ac.uk 80 Trying 10.128.0.3... Connected to www.csc.liv.ac.uk

(10.128.0.3). Escape character is '^]'. GET /~martin/foo.html HTTP/1.1 Host: www.csc.liv.ac.uk

HTTP/1.1 404 Not Found

Date: Mon, 08 Oct 2007 10:10:35 GMT

Server: Apache/2.0.58 HP-UX_Apache-

based_Web_Server (Unix) mod_perl/1.99_16

Perl/v5.8.7 DAV/2 PHP/5.0.4

Accept-Ranges: bytes

Transfer-Encoding: chunked

Content-Type: text/html

<html>

<head>

<title>404 Not Found</title>

<link rel="stylesheet" href="./fonts.css"

type="text/css">

</head>

<body>

. . .

<td id="main_content">

<div id="topmargin"><a name="skipnav"

tabindex="1"></a></div>

<!-- Beginning of main page content -->

<h1>Page Not Found</h1>

<p class="text">The requested URL

was not found on this server.</P>

. . .

</html>

Connection closed by foreign host.

if file not found, response

includes 404 status code

and generic error page

Page 61: 02 Komunikazija Na Veb 2015

Безбедни сервери

Бидејќи HTTP патуваат низ јавни мрежи, приватните информации (како број на кредитни картички) треба да бидат криптирани за да се спречи прислушување

https URL шемата му кажува на прелистувачот да користи енкрипција

Вообичаени стандарди за енкрипција: Secure Socket Layer (SSL)

Transport Layer Security (TLS)

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 62: 02 Komunikazija Na Veb 2015

Безбедни сервери

Browser Web

Server

I’d like to talk securely to you (over port 443)

Here’s my certificate and encryption data

Here’s an encrypted HTTP request

Here’s an encrypted HTTP response

Here’s an encrypted HTTP request

Here’s an encrypted HTTP response

TLS/

SSL

TLS/

SSL

HTTP

Requests

HTTP

Responses

HTTP

Requests

HTTP

Responses

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 63: 02 Komunikazija Na Veb 2015

Кеширање • Прелистувачите кешираат страници за да намалат

комуникација со сервер (т.е. download) Одржуваат привремен склад (кеш) за посетените страници

Кога се побарува страна се проверува дали е во кеш

Ако не е во кеш, се издава GET барање

• Кога пристига пораката страната се прикажува и се зачувува во кеш (заедно со заглавјето)

Ако е веќе во кеш се праќа GET барање со If-Modified-Since заглавје со податоци од зачуваната страна • Кога пристига пораката ако е со статус 200 се се прикажува и се

зачувува во кеш , ако е со статус 304 се прикажува зачуваната страна од кеш

Page 64: 02 Komunikazija Na Veb 2015

Клиентско кеширање

Browser Web

Server

1. HTTP request for image

2. HTTP response containing image

Client Server

Cache

3. Store image

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 65: 02 Komunikazija Na Veb 2015

Клиентско кеширање

Browser Web

Server

Client Server

Cache

I need that

image

again…

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 66: 02 Komunikazija Na Veb 2015

Клиентско кеширање

Browser Web

Server

Client Server

Cache

I need that

image

again…

HTTP request for image

HTTP response containing image

This…

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 67: 02 Komunikazija Na Veb 2015

Клиентско кеширање

Browser Web

Server

Client Server

Cache

I need that

image

again…

Get

image

… or this

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 68: 02 Komunikazija Na Veb 2015

Клиентско кеширање

Предности на кеш

Многу побрз HTTP request/response

Намалена мрежна комуникација

Помало оптоварување на сервер

Недостатоци на кеш

Кешираната копија на ресурс мое да биде невалидна (неконзистентна со таа на серверот)

Извор : Guy-Vincent Jourdan :: CSI 3140

Page 69: 02 Komunikazija Na Veb 2015

Прашања?