proxy vs. gateway
HTTP-Proxy
- Sicherheit, da kein IP-Routing
- Filter (whitelist, blacklist)
- Cache
- Agiert auf Applikationsebene
Gateway
- Agiert auf Applikationsebene
- Vermittelt zwischen unterschiedlichen Protokollen
- Bsp.: SMTP/QuickMail, SIP/PSTN
url vs. urn
SEE rfc3305
Unterstützte Methoden
c1audio@ace1:/proc$ telnet amazon.com 80
Trying 72.21.214.128…
Connected to amazon.com.
Escape character is ‘^]’.
OPTIONS * / HTTP /1.1
HTTP/1.1 200 OK
Date: Thu, 12 Apr 2012 17:27:44 GMT
Server: Server
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Connection: close
Content-Type: text/plain
Connection closed by foreign host.
Persistent connections / Option keep-alive
c1audio@ace1:/proc$ telnet students.vmk.zhdk.ch 80
Trying 195.176.254.159…
Connected to students.vmk.zhdk.ch.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: students.vmk.zhdk.ch
Connection: keep-alive
HTTP/1.1 200 OK
Date: Thu, 12 Apr 2012 17:10:26 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
Last-Modified: Mon, 17 Sep 2007 08:26:04 GMT
ETag: “1574825-155-43a508e2dbf00”
Accept-Ranges: bytes
Content-Length: 341
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html><head><title>ZHdK, Vertiefung Neue Medien</title>
<meta http-equiv=”Content-type” content=”text/html; charset=ISO-8859-1″>
</head>
<body>
Das hier ist students.vnm.zhdk.ch, der eigene Webserver der VNM-Studierenden.
</body></html>
GET / HTTP/1.1
Host: amtfueraufschwung.ch
HTTP/1.1 301 Moved Permanently
Date: Thu, 12 Apr 2012 17:10:34 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
X-Powered-By: PHP/5.2.6-1+lenny13
X-Pingback: http://www.amtfueraufschwung.ch/xmlrpc.php
Location: http://www.amtfueraufschwung.ch/
Content-Length: 0
Content-Type: text/html; charset=UTF-8
GET / HTTP/1.1
Host: www.amtfueraufschwung.ch
HTTP/1.1 200 OK
Date: Thu, 12 Apr 2012 17:11:03 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
X-Powered-By: PHP/5.2.6-1+lenny13
X-Pingback: http://www.amtfueraufschwung.ch/xmlrpc.php
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
20e1
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” dir=”ltr” xml:lang=”de-DE”>
…
</html>
0
Connection closed by foreign host.
POST vs. PUT
PUT addressiert eine Resource.
POST addressiert einen Prozessor.
Host Header Feld
aryaman.org has address 195.176.254.159
aryaman.org mail is handled by 10 smtp.zhdk.ch.
c1audio@ace1:~$ host amtfueraufschwung.ch
amtfueraufschwung.ch has address 195.176.254.159
amtfueraufschwung.ch mail is handled by 10 smtp.zhdk.ch.
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: aryaman.org
HTTP/1.1 301 Moved Permanently
Date: Thu, 03 May 2012 12:02:39 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
X-Powered-By: PHP/5.2.6-1+lenny13
X-Pingback: http://students.vmk.zhdk.ch/~aryaman/xmlrpc.php
Location: http://www.aryaman.org/
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Connection closed by foreign host.
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: amtfueraufschwung.ch
HTTP/1.1 301 Moved Permanently
Date: Thu, 03 May 2012 12:03:16 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
X-Powered-By: PHP/5.2.6-1+lenny13
X-Pingback: http://www.amtfueraufschwung.ch/xmlrpc.php
Location: http://www.amtfueraufschwung.ch/
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Connection closed by foreign host.
Request-URI
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
GET /wp-admin HTTP/1.1
Host: amtfueraufschwung.ch
REQUEST-URI: abs_path
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
GET http://aryaman.org/ HTTP/1.1
Host: amtfueraufschwung.ch
Request-URI: absoluteURI
HTTP/1.1 301 Moved Permanently
Date: Thu, 03 May 2012 12:41:08 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
X-Powered-By: PHP/5.2.6-1+lenny13
X-Pingback: http://students.vmk.zhdk.ch/~aryaman/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified: Thu, 03 May 2012 12:41:45 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Location: http://amtfueraufschwung.chhttp/aryaman.org/
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Connection closed by foreign host.
Trace / Ping
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
TRACE * HTTP/1.1
Host: aryaman.org
HTTP/1.1 200 OK
Date: Thu, 03 May 2012 12:32:07 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
Transfer-Encoding: chunked
Content-Type: message/http
27
TRACE * HTTP/1.1
Host: aryaman.org
0
Case sensitivity
Jon Postel: Be liberal in what you accept, be conservaative in what you send.
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
GET / HTTP/1.1
hOST: aryaman.ch
Felder in falscher Gross-/Kleinschreibung werden ignoriert.
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
GET / HTTP/1.1
HOSt: aryaman.org
HTTP/1.1 301 Moved Permanently
Date: Thu, 03 May 2012 12:43:44 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
X-Powered-By: PHP/5.2.6-1+lenny13
X-Pingback: http://students.vmk.zhdk.ch/~aryaman/xmlrpc.php
Location: http://www.aryaman.org/
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Connection closed by foreign host.
c1audio@ace1:~$ telnet 195.176.254.159 80
Trying 195.176.254.159…
Connected to 195.176.254.159.
Escape character is ‘^]’.
get / HTTP/1.1
Host: aryaman.org
HTTP/1.1 403 Forbidden
Date: Thu, 03 May 2012 12:44:47 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2
Content-Length: 347
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don’t have permission to access /
on this server.</p>
<hr>
<address>Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 Server at aryaman.org Port 80</address>
</body></html>
Connection closed by foreign host.
safe and idenpotent
safe methods have no side effect. After a request the system is in the same state: GET / HEAD / OPTIONS / TRACE
Multiple identical idempotent requests should have the same effect as a sinngle request. f(f(x)) = f(x)
Caching
c1audio@ace1:~$ telnet zahw.ch 80
Trying 188.40.130.135…
Connected to zahw.ch.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: zahw.ch
HTTP/1.1 200 OK
Date: Thu, 03 May 2012 14:53:19 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Tue, 27 Oct 2009 17:52:43 GMT
ETag: “1c009-2d-476ee585370c0”
Accept-Ranges: bytes
Content-Length: 45
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
<html><body><h1>It works!</h1></body></html>
Connection closed by foreign host.c1audio@ace1:~$ telnet zahw.ch 80
Trying 188.40.130.135…
Connected to zahw.ch.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: zahw.ch
If-Modified-Since: Tue, 27 Oct 2009 17:52:43 GMT
HTTP/1.1 304 Not Modified
Date: Thu, 03 May 2012 14:54:48 GMT
Server: Apache/2.2.16 (Debian)
ETag: “1c009-2d-476ee585370c0”
Vary: Accept-Encoding
Connection closed by foreign host.
c1audio@ace1:~$ telnet zahw.ch 80
Trying 188.40.130.135…
Connected to zahw.ch.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: zahw.ch
If-None-Match: 1c009-2d-476ee585370c0
HTTP/1.1 200 OK
Date: Thu, 03 May 2012 14:55:37 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Tue, 27 Oct 2009 17:52:43 GMT
ETag: “1c009-2d-476ee585370c0”
Accept-Ranges: bytes
Content-Length: 45
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
<html><body><h1>It works!</h1></body></html>
Connection closed by foreign host.
c1audio@ace1:~$ telnet zahw.ch 80
Trying 188.40.130.135…
Connected to zahw.ch.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: zahw.ch
If-None-Match: “1c009-2d-476ee585370c0”
HTTP/1.1 304 Not Modified
Date: Thu, 03 May 2012 14:56:41 GMT
Server: Apache/2.2.16 (Debian)
ETag: “1c009-2d-476ee585370c0”
Vary: Accept-Encoding
Connection closed by foreign host.