Top Banner
66

"Http protocol and other stuff" by Bipin Upadhyay

Sep 01, 2014

Download

Technology

Bipin Upadhyay

A holistic view of how the web works, with an overview of the HTTP protocol.
Presented by me at null security group (http://null.co.in), Mumbai chapter meet on Aug' 27th.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: "Http protocol and other stuff" by Bipin Upadhyay
Page 2: "Http protocol and other stuff" by Bipin Upadhyay

…and other stuff

that make the web work

Page 3: "Http protocol and other stuff" by Bipin Upadhyay

Bits ‘bout Moi!

Senor Bipin Upadhyay

Developer, Directi Pvt. Ltd.

Lead, NULL Open Security Group – Mumbai Chapter

OWASP ESAPI-PHP Committer

Part of IHP (Honeynet Project)

Amateur Photographer

Page 4: "Http protocol and other stuff" by Bipin Upadhyay

I know Kung-fu…

Page 5: "Http protocol and other stuff" by Bipin Upadhyay

If Only it was true…

Page 6: "Http protocol and other stuff" by Bipin Upadhyay

Think about the possibilities…

Page 7: "Http protocol and other stuff" by Bipin Upadhyay

I know Kung-fu

Page 8: "Http protocol and other stuff" by Bipin Upadhyay

Me too..

Page 9: "Http protocol and other stuff" by Bipin Upadhyay

Me three..

Page 10: "Http protocol and other stuff" by Bipin Upadhyay

Sigh! But it ain’t true, yet!

Page 11: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

http://icanhascheezburger.files.wordpress.com/2009/02/funny-pictures-cat-has-naps-on-his-agenda.jpg

Page 12: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

Intro: What & Why???

OSI model: Back to the basics

10000 feet view: How the web works

RFC 2616: Anatomy

RFC 2965: Handling Statelessness

Page 13: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

Intro: What & Why???

OSI model: Back to the basics

10000 feet view: How the web works

RFC 2616: Anatomy

RFC 2965: Handling Statelessness

Page 14: "Http protocol and other stuff" by Bipin Upadhyay

Bit of History

Mar’89 – T.B. Lee presents “Information Management: A Proposal”

Aug’91 – Announces WWW

Mar’93 – Mosaic announced

Mar’94 – Netscape found

Oct’94 – W3C found by T.B. Lee

Page 15: "Http protocol and other stuff" by Bipin Upadhyay

Web 2.0, uh!

http://www.wagnerblog.com/images/AjaxDarkSide.jpg

Page 16: "Http protocol and other stuff" by Bipin Upadhyay

HTTP: What is it?

Part of the Application Layer of TCP/IP protocol suite

Page 17: "Http protocol and other stuff" by Bipin Upadhyay

HTTP: What is it?

Part of the Application Layer of TCP/IP protocol suite

A set of grammatical rules for a client and server to communicate

http://www.flickr.com/photos/joshfassbind/4584323789/

Page 18: "Http protocol and other stuff" by Bipin Upadhyay

HTTP: What is it?

Part of the Application Layer of TCP/IP protocol suite

A set of grammatical rules for a client and server to communicate

HTTP is what powers the WWW

Page 19: "Http protocol and other stuff" by Bipin Upadhyay

…but

http://www.flickr.com/photos/quinnanya/4456123452/

Page 20: "Http protocol and other stuff" by Bipin Upadhyay

Why should I bother?

Because:

web development sucks

http://www.flickr.com/photos/sneeu/1589152071/

Page 21: "Http protocol and other stuff" by Bipin Upadhyay

Why should I bother?

Because:

web development sucks

Even your grandmom knows, ‘tis all about fundamentals

Page 22: "Http protocol and other stuff" by Bipin Upadhyay

Why should I bother?

Also:

facilitates debugging,

improves understanding of security & performance

Page 23: "Http protocol and other stuff" by Bipin Upadhyay

Why should I bother?

Page 24: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

Intro: What & Why???

OSI model: Back to the basics

10000 feet view: How the web works

RFC 2616: Anatomy

RFC 2985: Handling Statelessness

http://www.flickr.com/photos/stephenpoff/2312981944/

Page 25: "Http protocol and other stuff" by Bipin Upadhyay

OSI & TCP/IP protocol suite

OSI is a reference model

http://blog.uad.ac.id/imam_riadi/files/2009/01/osi-layer.jpg

Page 26: "Http protocol and other stuff" by Bipin Upadhyay

OSI & TCP/IP protocol suite…

TCP/IP protocol suite is implementation of OSI

http://www.hill2dot0.com/wiki/index.php?title=Image:G0209_TCPIP_vs_OSI.jpg

Page 27: "Http protocol and other stuff" by Bipin Upadhyay

OSI & TCP/IP protocol suite…

Visual learning: Wireshark, baby

http://www.wireshark.org/

Page 28: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

Intro: What & Why???

OSI model: Back to the basics

10000 feet view: How the web works

RFC 2616: Anatomy

RFC 2965: Handling Statelessness

Page 29: "Http protocol and other stuff" by Bipin Upadhyay

The Communication

My favorite interview question:

http://www.flickr.com/photos/terryhart/2890904949/

Page 30: "Http protocol and other stuff" by Bipin Upadhyay

The Communication

My favorite interview question:

What all happens between the time when:

we click on a hyperlink

and the page is completely rendered in a browser

Page 31: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Page 32: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

Page 33: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

Browser cache/ hosts file/ DNS server

null.co.in

Page 34: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

Browser cache/ hosts file/ DNS server

74.53.228.212null.co.in

Page 35: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

TCP Connection: There, bro?

SYN

Page 36: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

SYN

SYN-ACK

TCP Connection: Yo!

Page 37: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

SYN

SYN-ACK

ACK

TCP Connection: Cool!

Page 38: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

HTTP: Got this file?

GET /

Page 39: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

HTTP: Yup! Here ‘tis.

GET /

200 OK

index.html

Page 40: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

HTTP: Can I have these as well?

GET /

200 OK

index.html

GET /js.js

GET /pic.jpg

Page 41: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

HTTP: Sure!

GET /

200 OK

index.html

GET /js.js

GET /pic.jpg

200 OK

more content…

Page 42: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

FIN

TCP Connection: Arigato, am done.

Page 43: "Http protocol and other stuff" by Bipin Upadhyay

Brower InternetzProxy LBWeb

ServerDB

Server

Client Server (null.co.in)

FIN

FIN-ACK

TCP Connection: Sayonara!

Page 44: "Http protocol and other stuff" by Bipin Upadhyay

The Communication

…. or simply

Page 45: "Http protocol and other stuff" by Bipin Upadhyay

The Communication

Web 2.0 has shrunk the client and server distinction

Conventionally, client sends an HTTP request

Server responds with an HTTP response

Page 46: "Http protocol and other stuff" by Bipin Upadhyay

The Communication: HTTP Request

Request Line

Request Method

Requested Resource

HTTP Version used

Headers

General Headers

Request Headers

Entity Headers

Content (Optional)

Page 47: "Http protocol and other stuff" by Bipin Upadhyay

The Communication: HTTP Response

Status Line

HTTP version(s) understood by server

Status code (3 digit numerical value)

Status description

Headers

General Headers

Response Headers

Entity Headers

Content (Optional)

Page 48: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

Intro: What & Why???

OSI model: Back to the basics

10000 feet view: How the web works

RFC 2616: Anatomy

RFC 2965: Handling Statelessness

http://www.saynotocrack.com/wp-content/uploads/2007/06/flinstones-anatomy.jpg

Page 49: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy

HTTP Request and Response are comprised of various components:

Request Methods

Response Status Codes

Request Headers

Response Headers

General Headers

Entity Headers

Content (MIME Media Types)

Page 50: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: Request Methods

Humans can convey emotions in several ways

Why should HTTP clients lag!!!

HTTP methods describe the type of communication

GET POST HEAD OPTIONS

TRACE PUT DELETE CONNECT

Page 51: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: Response Status Codes

Indicate the server’s mood corresponding to a request

Combination of a numerical code, and a short description

Cab be categorized in 5 categories:

1xx -- Informational

2xx -- Successful

3xx -- Redirection

4xx -- Client Error

5xx -- Server Error

Page 52: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: Request Headers

Specific to an HTTP Request

Carry information about the client, and the type of request

Facilitates better understanding between client and server

Host Accept-Language If-Modified-Since Referer

User-Agent Authorization If-None-Match Expect

Accept Proxy-Authorization

If-Range From

Accept-Charset Max-Forwards If-Unmodified-Since

TE

Accept-Encoding If-Match Range

Page 53: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: Response Headers

Specific to an HTTP Response

Carry information about the server, and the type of response

Accept-Ranges ETag Retry-After WWW-Authenticate

Age Location Server Proxy-Authenticate

Vary

Page 54: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: General Headers

Carry information about the HTTP transaction

Can be a part of request, as well as response

Cache-Control Keep-Alive Pragma Via

Connection Upgrade Trailer Warning

Transfer-Encoding Date

Page 55: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: Entity Headers

Carry information about the content

Mainly a part of HTTP response

Allow Content-Language Content-Location Content-Range

Content-Encoding Content-Length Content-MD5 Content-Type

Expires Last-Modified

Page 56: "Http protocol and other stuff" by Bipin Upadhyay

Anatomy: Content

IANA maintains a list of valid content types

It is specified by the Content-Type Entity header

Categorized in 9 MIME Media types:

application audio example image

message model multipart text

video

Page 57: "Http protocol and other stuff" by Bipin Upadhyay

Agenda

Intro: What & Why???

OSI model: Back to the basics

10000 feet view: How the web works

RFC 2616: Anatomy

RFC 2965: Handling Statelessness

Page 58: "Http protocol and other stuff" by Bipin Upadhyay

Handling Statelessness

HTTP is a stateless protocol

Page 59: "Http protocol and other stuff" by Bipin Upadhyay

Handling Statelessness

HTTP is a stateless protocol

i.e., server’s got a bad memory

Page 60: "Http protocol and other stuff" by Bipin Upadhyay

Handling Statelessness

Cookies to rescue

http://www.flickr.com/photos/lij/283869088/

Page 61: "Http protocol and other stuff" by Bipin Upadhyay

Handling Statelessness

Cookies:

are text files stored by client browser

maintain session by storing information

are non-executable

Page 62: "Http protocol and other stuff" by Bipin Upadhyay

Handling Statelessness

Cookie attributes:

name=value

expires=value

domain=value

path=value

Secure

HttpOnly --not a part of spec

Page 63: "Http protocol and other stuff" by Bipin Upadhyay

Conclusion

The single biggest problem in communication

is the illusion… that it has taken place.

--George Bernard Shaw

Page 64: "Http protocol and other stuff" by Bipin Upadhyay

Conclusion

The single biggest problem in communication

is the illusion… that it has taken place.

--George Bernard Shaw

Think about it

Page 65: "Http protocol and other stuff" by Bipin Upadhyay

Q&A!!!

Got queries? Raise your hands.

Page 66: "Http protocol and other stuff" by Bipin Upadhyay

Arigato!

Contact info:

Om—At—[projectbee.org/null.co.in]

http://projectbee.org/

Twitter - @bipinu

Flickr -- projectbee