Rensselaer Polytechnic Institute CSCI-4220 – Network Programming David Goldschmidt, Ph.D.

Slides:



Advertisements
Similar presentations
Hypertext Transfer PROTOCOL ----HTTP Sen Wang CSE5232 Network Programming.
Advertisements

Chapter 17 Networking Patricia Roy Manatee Community College, Venice, FL ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William.
World Wide Web Basics Original version by Carolyn Watters (Dalhousie U. Computer Science)
HTTP HyperText Transfer Protocol. HTTP Uses TCP as its underlying transport protocol Uses port 80 Stateless protocol (i.e. HTTP Server maintains no information.
Hypertext Transfer Protocol Kyle Roth Mark Hoover.
Rensselaer Polytechnic Institute CSCI-4220 – Network Programming David Goldschmidt, Ph.D.
HTTP Hypertext Transfer Protocol. HTTP messages HTTP is the language that web clients and web servers use to talk to each other –HTTP is largely “under.
Cornell CS502 Web Basics and Protocols CS 502 – Carl Lagoze Acks to McCracken Syracuse Univ.
Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
Project 1 Web client and server EECS 340 Jan 2009.
HTTP Overview Vijayan Sugumaran School of Business Administration Oakland University.
2/9/2004 Web and HTTP February 9, /9/2004 Assignments Due – Reading and Warmup Work on Message of the Day.
Hypertext Transport Protocol CS Dick Steflik.
Client, Server, HTTP, IP Address, Domain Name. Client-Server Model Client Bob Yahoo Server yahoo.com/finance.html A text file named finance.html.
 What is it ? What is it ?  URI,URN,URL URI,URN,URL  HTTP – methods HTTP – methods  HTTP Request Packets HTTP Request Packets  HTTP Request Headers.
Rensselaer Polytechnic Institute CSC-432 – Operating Systems David Goldschmidt, Ph.D.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
HTTP Protocol Specification
Chapter 17 Networking Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William Stallings.
FTP (File Transfer Protocol) & Telnet
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
HyperText Transfer Protocol (HTTP).  HTTP is the protocol that supports communication between web browsers and web servers.  A “Web Server” is a HTTP.
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
TCP/IP Protocol Suite 1 Chapter 22 Upon completion you will be able to: World Wide Web: HTTP Understand the components of a browser and a server Understand.
Application Layer 2 Figures from Kurose and Ross
Rensselaer Polytechnic Institute Shivkumar Kalvanaraman, Biplab Sikdar 1 The Web: the http protocol http: hypertext transfer protocol Web’s application.
Maryam Elahi University of Calgary – CPSC 441.  HTTP stands for Hypertext Transfer Protocol.  Used to deliver virtually all files and other data (collectively.
Web application architecture
Sistem Jaringan dan Komunikasi Data #9. DNS The Internet Directory Service  the Domain Name Service (DNS) provides mapping between host name & IP address.
HTTP HTTP stands for Hypertext Transfer Protocol. It is an TCP/IP based communication protocol which is used to deliver virtually all files and other.
Tools for Web Applications. Overview of TCP/IP Link Layer Network Layer Transport Layer Application Layer.
WebServer A Web server is a program that, using the client/server model and the World Wide Web's Hypertext Transfer Protocol (HTTP), serves the files that.
Web HTTP Hypertext Transfer Protocol. Web Terminology ◘Message: The basic unit of HTTP communication, consisting of structured sequence of octets matching.
HTTP Hypertext Transfer Protocol
HTTP Hypertext Transfer Protocol RFC 1945 (HTTP 1.0) RFC 2616 (HTTP 1.1)
Web Client-Server Server Client Hypertext link TCP port 80.
HTTP Hypertext Transfer Protocol
1 HTTP Hypertext Transfer Protocol Refs: RFC 1945 (HTTP 1.0) RFC 2616 (HTTP 1.1)
HTTP1 Hypertext Transfer Protocol (HTTP) After this lecture, you should be able to:  Know how Web Browsers and Web Servers communicate via HTTP Protocol.
1 Seminar on Service Oriented Architecture Principles of REST.
ECEN “Internet Protocols and Modeling”, Spring 2012 Course Materials: Papers, Reference Texts: Bertsekas/Gallager, Stuber, Stallings, etc Class.
Jan.2001C.Watters1 World Wide Web Basics. Jan.2001C.Watters2 What is an internet anyway? 2 or more networks that can communicate.
Appendix E: Overview of HTTP ©SoftMoore ConsultingSlide 1.
Operating Systems Lesson 12. HTTP vs HTML HTML: hypertext markup language ◦ Definitions of tags that are added to Web documents to control their appearance.
2: Application Layer 1 Chapter 2: Application layer r 2.1 Principles of network applications  app architectures  app requirements r 2.2 Web and HTTP.
CITA 310 Section 2 HTTP (Selected Topics from Textbook Chapter 6)
Web Technologies Lecture 1 The Internet and HTTP.
HTTP Here, we examine the hypertext transfer protocol (http) – originally introduced around 1990 but not standardized until 1997 (version 1.0) – protocol.
Web Services. 2 Internet Collection of physically interconnected computers. Messages decomposed into packets. Packets transmitted from source to destination.
CS 6401 The World Wide Web Outline Background Structure Protocols.
Overview of Servlets and JSP
Lecture 19 Overview. Hyper Text Transfer Protocol HTTP is the protocol that supports communication between web browsers and web servers. – A “Web Server”
Computer Networks with Internet Technology William Stallings Chapter 04 Modern Applications 4.1 Web Access - HTTP.
Data Communications and Computer Networks Chapter 2 CS 3830 Lecture 7 Omar Meqdadi Department of Computer Science and Software Engineering University of.
HyperText Transfer Protocol (HTTP) Deepti Kulkarni CISC 856: TCP/IP and Upper Layer Protocols Fall 2008 Acknowledgements Professor Amer Richi Gupta.
Week 11: Application Layer 1 Web and HTTP r Web page consists of objects r Object can be HTML file, JPEG image, Java applet, audio file,… r Web page consists.
Web Protocols: HTTP COMP6017 Topics on Web Services Dr Nicholas Gibbins –
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
HTTP Protocol Amanda Burrows. HTTP Protocol The HTTP protocol is used to send HTML documents through the Internet. The HTTP protocol sends the HTML documents.
SOCKET PROGRAMMING Presented By : Divya Sharma.
Hypertext Transfer Protocol (HTTP) COMP6218 Web Architecture Dr Nicholas Gibbins –
Tiny http client and server
How HTTP Works Made by Manish Kushwaha.
HTTP – An overview.
WEB API.
HTTP Hypertext Transfer Protocol
HyperText Transfer Protocol
HTTP Hypertext Transfer Protocol
Presentation transcript:

Rensselaer Polytechnic Institute CSCI-4220 – Network Programming David Goldschmidt, Ph.D.

 A protocol is an agreed-upon convention that defines how communication occurs between two (or more?) endpoints  All endpoints must “understand” and correctly implement the protocol  Protocols must be formally defined, unambiguous, and well-documented  Protocols should address error conditions and unexpected scenarios

 Network APIs provide the bridge between applications and protocol software  Services are made available (often by the OS) Application Network API (via the OS) Protocol X Protocol Y Protocol Z But also OS-independent!

 Network API often provides a generic programming interface:  Support for multiple communication protocol suites/families (e.g. TCP, UDP, IP)  Endpoint address representation independence  Network data types (for portability) ▪ With from-host and to-host conversion functions ▪ e.g. htons(), ntohs(), htonl(), ntohl(), etc. Application Network API (via the OS) Protocol X Protocol Y Protocol Z

 Functions provided by the Network API include:  Specifying communication endpoints  Initiating a connection (e.g. for TCP)  Waiting for incoming connections  Sending and receiving messages  Terminating a connection  Error detection and handling Application Network API (via the OS) Protocol X Protocol Y Protocol Z

 A socket is an endpoint for communication  Communication takes place over a pair of sockets : client server :21202 socket :80 listener socket :9500 socket

 Pitfalls of socket-based communication between client and server include:  Once a server binds to a port, no other server may bind to that port  If client and server do not obey the rules of the protocol, errors may occur  Client/server communication must often be synchronized

 Each process has a file descriptor table (maintained by the operating system)  This table is inherited from the parent process  Defaults to stdin, stdout, and stderr  When open() or socket() is called, the next available descriptor is assigned descriptor (int)default 0stdin 1stdout 2stderr

 Socket descriptors are used to keep track of open socket connections descriptor (int)default 0stdin 1stdout 2stderr 3socket 4 5 etc. Family: PF_INET Service: SOCK_STREAM Local IP: Local Port: Remote IP: Remote Port: Family: PF_INET Service: SOCK_STREAM Local IP: Local Port: Remote IP: Remote Port: 44287

 The domain parameter of socket() specifies the protocol family  PF_INET : IPv4 Internet protocols  PF_INET6 : IPv6 Internet protocols  PF_UNIX / PF_LOCAL : Local communication  etc.

 The type parameter of socket() specifies the communication semantics  SOCK_STREAM : Connection-oriented, sequenced, reliable, two-way communication of byte streams  SOCK_DGRAM : Connectionless, unreliable communication of datagrams (messages of fixed length)

 Use get/setsockopt() to manage options on an existing socket  SO_ACCEPTCONN  SO_BROADCAST  SO_DONTROUTE  SO_ERROR  SO_KEEPALIVE  SO_LINGER man 7 socket

 HTTP is the protocol for communication between browser apps and Web servers  Web servers are essentially HTTP servers  Protocols have versions  Most clients and servers support version 1.1  But 1.0 is also in use (maybe also 0.9?!) why?

 Each layer prepends or appends its information in a header or trailer P Ethernet Hdr | IP Hdr | TCP Hdr | HTTP Request | Cksum IP Hdr | TCP Hdr | HTTP Request TCP Hdr | HTTP Request HTTP Request

PQ

 RFC 1945 is the HTTP 1.0 standard  see  RFC 2616 is the HTTP 1.1 standard  see  RFC 2396 is the URI standard  see

 From the RFC:  HTTP is an application-level protocol with the lightness and speed necessary for distributed, hypermedia information systems

 Again from the RFC:  HTTP communication generally takes place over TCP/IP connections  The default port is TCP 80, but other ports can be used  HTTP is not dependent on a specific transport layer https is typically TCP port 443

 HTTP defines a very simple structure:  A client sends a request  The server sends a response  HTTP supports multiple request/response exchanges over a single connection  e.g. try using telnet to access a Web server....

 HTTP requests are line-based ASCII text  Lines must always end with "\r\n" (a.k.a. CRLF )  Headers are optional  A blank line separates the request from the content Request-Line Header(s)... Header(s) blank line -- Content... Content... what content?!

 The Request-Line consists of 3 tokens:  Each token is separated by a space character  Though "\r\n" is required by the protocol, "\n" seems to work in practice  The HTTP-Version is either HTTP/1.0 or HTTP/1.1 Method URI HTTP-Version\r\n

 The HTTP request’s Method can be:  GET – request information identified by the given URI (absolute or relative?)  HEAD – request metadata regarding the given URI (search engines!)  POST – send (i.e. post) information to the given URI (e.g. via a form) Method URI HTTP-Version\r\n

 The HTTP request’s Method can be:  PUT – store information in the location identified by the given URI  DELETE – remove the entity identified by the given URI (really?) Method URI HTTP-Version\r\n

 The HTTP request’s Method can be:  TRACE – used to trace HTTP forwarding through proxies, tunnels, etc.  OPTIONS – determines the capabilities of the Web server or the characteristics of the named resource Method URI HTTP-Version\r\n

 The GET, HEAD, and POST methods are supported everywhere  Check out homework #2!  HTTP 1.1 servers might support the PUT, DELETE, TRACE, and OPTIONS methods (but not always!) Method URI HTTP-Version\r\n

 The URI is defined in RFC 2396RFC 2396  An absolute URI consists of four parts:  A relative URI omits the scheme and server: ▪ The server is assumed (since we’re already connected) scheme://hostname[:port]/path /path which one should we use in our HTTP Request-Line ?

 In general, relative URIs are used in the HTTP Request-Line  HTTP 1.1 servers are required to support absolute URIs, but not all do  When using a proxy HTTP server, an absolute URI is required  Or else, the proxy server won’t know where to find the resource (i.e. document)

 After the Request-Line, the request might have header lines  Header lines specify attribute name/value pairs (e.g. User-Agent: )  Note that HTTP 1.1 requires the Host: header always be included Request-Line Header(s)... Header(s) blank line -- Content... Content...

 Request headers provide information to the server about the client  Who is making the request  What kind of client is making the request  What kind of content will be accepted  In HTTP 1.0, all headers are optional  In HTTP 1.1, the Host: header must be sent

 Headers can be included in any order:  For GET and HEAD requests, that’s the end (though don’t forget the blank line!) GET /index.html HTTP/1.1 Accept: text/html Host: From: User-Agent: Mozilla/4.0 Referer: Accept: text/html Host: From: User-Agent: Mozilla/4.0 Referer: -- blank line --

 If a POST request is made, the headers must include Content-Length : POST /~goldsd/changegrade.php HTTP/1.1 Accept: */* Host: User-Agent: SecretAgent v3.0 Referer: Content-Length: 36 Accept: */* Host: User-Agent: SecretAgent v3.0 Referer: Content-Length: blank line -- rin= &item=midterm&grade=104

 HTTP responses are line-based ASCII text  A Status-Line is always returned  A blank line separates the response from the content  Content is a sequence of bytes (e.g. HTML, image, text, etc.) Status-Line Header(s)... Header(s) blank line -- Content... Content...

 The Status-Line consists of 3 tokens:  The HTTP-Version is either HTTP/1.0 or HTTP/1.1 (and does not necessarily match the corresponding request)  Response status is represented using a 3-digit Status-Code and a human-readable Message HTTP-Version Status-Code Message

 Status codes are grouped as follows:  1xx – Informational  2xx – Success  3xx – Redirection  4xx – Client Error  5xx – Server Error (click me)

 Example status lines include:  HTTP/ OK  HTTP/ Moved Permanently  HTTP/ Bad Request  HTTP/ Forbidden  HTTP/ Internal Server Error

 After the Status-Line, the response typically has header lines  Header lines specify attribute name/value pairs (e.g. Date: )  As with request headers, response headers end with a blank line Status-Line Header(s)... Header(s) blank line -- Content... Content...

 Response headers provide information to the client about the entity (i.e. document)  What kind of entity/document  How many bytes are in the document  How the document is encoded  When the document was last modified  The Content-Type header is required, as is the Content-Length header (usually)

 Headers can be included in any order: HTTP/ OK Date: Wed, 30 Jan :48:17 EST Server: Apache/1.17 Content-Type: text/html Content-Length: 1756 Content-Encoding: gzip Date: Wed, 30 Jan :48:17 EST Server: Apache/1.17 Content-Type: text/html Content-Length: 1756 Content-Encoding: gzip -- blank line fjfjef0jefe0fje2f0je2f0je2f0e2jfe0fje20 fj2e0fjef0jef0e2jf0efje0fje02fje20fje2f0ejf 0jef2e09fj209g209fj20gag09ha0gh0agha0gjg0jg

 For HTTP 1.0, default behavior is as follows:  Client sends a complete HTTP request  Server sends back a complete HTTP response  Server closes its socket  Therefore:  If the client needs another document (e.g. images, CSS, etc.), the client must open a new socket connection!

 In HTTP 1.0, support for persistent connections is available  Multiple requests can be handled over a single TCP/IP socket connection  The Keep-Alive: header is used to keep the connection alive

 As of HTTP 1.1, support for persistent connections is available (and is the default)  Multiple requests can be handled over a single TCP/IP socket connection  The Connection: header is used to exchange information about persistence ▪ e.g. Connection: close