KEMBAR78
Http request&response session 1 - by Vignesh.N | PPT
Http Request & Response
HyperText Transfer Protocol (HTTP)








most popular application protocol used in the
Internet (or The WEB)
An HTTP client sends a request message to an
HTTP server
The server, in turn, returns a response message. In
other words, HTTP is a pull protocol, the client
pulls information from the server (instead of server
pushes information down to the client).
HTTP is a stateless protocol. In other words, the
current request does not know what has been done
in the previous requests.
Browser
Uniform Resource Locator (URL)
A URL (Uniform Resource Locator) is used to uniquely identify a resource over the web. URL has the following syntax:
protocol://hostname:port/path-and-file-name
There are 4 parts in a URL:
Protocol: The application-level protocol used by the client and server, e.g., HTTP, FTP, and telnet.
Hostname: The DNS domain name (e.g., www.test101.com) or IP address (e.g., 192.128.1.2) of the server.
Port: The TCP port number that the server is listening for incoming requests from the clients.
Path-and-file-name: The name and location of the requested resource, under the server document base directory.
For example, in the URL http://www.test101.com/docs/index.html, the communication protocol is HTTP; the hostname is
www.test101.com. The port number was not specified in the URL, and takes on the default number, which is TCP port 80 for
HTTP. The path and file name for the resource to be located is "/docs/index.html".
Other examples of URL are:
ftp://www.ftp.org/docs/test.txt
mailto:user@test101.com
Important Default Port numbers
443 TCP

Hypertext Transfer Protocol over TLS/SSL (HTTPS).

115 TCP

Simple/secure File Transfer Protocol (SFTP).

80

TCP

Hypertext Transfer Protocol (HTTP).

21

TCP

FTP control (command).

22

TCP

Secure Shell (SSH) — used for secure logins.

23

TCP

Telnet protocol.

25

TCP

Simple Mail Transfer Protocol (SMTP).

115 TCP

Simple File Transfer Protocol (SFTP).

110 TCP

Post Office Protocol v3 (POP3).

1414TCP

IBM WebSphere MQ (formerly known as MQSeries).

9060TCP

WebSphere Application Server Administration Console.

9080TCP

WebSphere Application Server HTTP Transport (port 1) default.

8080TCP

Apache Tomcat.

5432TCP

PostgreSQL database system.

3306TCP

MySQL database system.

1521TCP

Oracle database default listener.
Http Request Message
Http Request Message Format
The format of an HTTP request message is as follow:
Http Request Message
Request Line
The first line of the header is called the request line, followed by optional request headers.
The request line has the following syntax:
request-method-name request-URI HTTP-version
request-method-name: HTTP protocol defines a set of request methods, e.g., GET, POST, HEAD,
and OPTIONS. The client can use one of these methods to send a request to the server.
* case sensitive and must be in uppercase.
request-URI: specifies the resource requested.
HTTP-version: Two versions are currently in use: HTTP/1.0 and HTTP/1.1.
Examples of request line are:
GET /test.html HTTP/1.1
HEAD /query.html HTTP/1.0
POST /index.html HTTP/1.1
Http Request Message
Request Headers
The request headers are in the form of name:value pairs.
Multiple values, separated by commas, can be
specified.
request-header-name: request-header-value1, requestheader-value2, ...
Examples of request headers are:
Host: www.xyz.com
Connection: Keep-Alive
Accept: image/gif, image/jpeg, */*
Accept-Language: us-en, fr, cn
username=vignesh&password=qwer1234&......
Http Request Message Format
GET /docs/index.html HTTP/1.1
Host: www.test101.com
Accept: image/gif, image/jpeg, */*
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Referer:http://localhost:8080/home
Cookie:JSESSIONID=DFC52DC1584F89D94009014A77C111EC;city=Coimbatore;
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu
Chromium/32.0.1700.102 Chrome/32.0.1700.102 Safari/537.36
Cache-Control: max-age=0
(blank line)
Http Response
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Expires: Sun, 01 Mar 2015 13:46:19 GMT
Cache-Control: max-age=31556926, must-revalidate
Date: Sat, 01 Mar 2014 07:57:33 GMT
Set-Cookie:JSESSIONID=1D9B00464C03A0923E0AE77ADE16416A; Path=/; HttpOnly
Content-Type:text/html;charset=UTF-8
<html><body><h1>It works!</h1></body></html>
HTTP Response Message
Http Response Message
Status Line
The first line is called the status line, followed by
optional response header(s).
The status line has the following syntax:
HTTP-version status-code reasonphrase
HTTP-version: The HTTP version used in this
session. Either HTTP/1.0 and HTTP/1.1.
status-code: a 3-digit number generated by the server
to reflect the outcome of the request.
Http Response Message
Response Headers
The response headers are in the form name:value
pairs:
response-header-name: response-header-value1,
response-header-value2, ...
Examples of response headers are:
Content-Type: text/html
Content-Length: 35
Connection: Keep-Alive
Keep-Alive: timeout=15, max=100
Http Response Message
Http Response Status Code
Some commonly encountered status codes are:
100 Continue: The server received the request and in
the process of giving the response.
200 OK: The request is fulfilled.
301 Move Permanently: The resource requested for
has been permanently moved to a new location.
The URL of the new location is given in the
response header called Location. The client should
issue a new request to the new location.
Application should update all references to this
new location.
Http Request Using HTML Form
<html>
<head><title>Login</title></head>
<body>
<h2>LOGIN</h2>
<form method="get/post/delete"
action="/user/login">
Username: <input type="text" name="user"
size="25" /><br />
Password: <input type="password" name="pw"
size="10" /><br /><br />
HTML Form Fields
A form contains fields. The types of field include:

Text Box: produced by <input type="text">.
Password Box: produced by <input type="password">.
Radio Button: produced by <input type="radio">.
Checkbox: produced by <input type="checkbox">.
Selection: produced by <select> and <option>.
Text Area: produced by <textarea>.
Submit Button: produced by <input type="submit">.
Reset Button: produced by <input type="reset">.
Hidden Field: produced by <input type="hidden">.
Button: produced by <input type="button"> and <button>
Query String
name1=value1&name2=value2&name3=value3&...
HTML Form Fields
The query string can be sent to the server using either HTTP GET or POST request
method, which is specified in the <form>'s attribute "method".
<form method="get" action="url">
If GET request method is used, the URL-encoded query string will be appended
behind the request-URI after a "?" character, i.e.,

GET request-URI?query-string HTTP-version
(other optional request headers)
(blank line)
(optional request body)
HTML Form Fields
Using GET request to send the query string has the following drawbacks:

The amount of data you could append behind request-URI is limited. If this amount
exceed a server-specific threshold, the server would return an error "414 Request
URI too Large".

The URL-encoded query string would appear on the address box of the browser.
HTML Form Fields
<html>
<head><title>Login</title></head>
<body>
<h2>LOGIN</h2>
<form method="get" action="/bin/login">
Username: <input type="text" name="user" size="25" /><br />
Password: <input type="password" name="pw" size="10" /><br /><br />
<input type="hidden" name="action" value="login" />
<input type="submit" value="SEND" />
</form>
</body>
</html>
HTML Form Fields
Request Data
GET /bin/login?user=Peter+Lee&pw=123456&action=login HTTP/1.1

Accept: image/gif, image/jpeg, */*
Referer: http://127.0.0.1:8000/login.html
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 127.0.0.1:8000
Connection: Keep-Alive

Address Bar
http://127.0.0.1:8000/bin/login?user=Peter+Lee&pw=123456&action=login
HTML Form Fields
<html>
<head><title>Login</title></head>
<body>
<h2>LOGIN</h2>
<form method="post" action="/bin/login">
Username: <input type="text" name="user" size="25" /><br />
Password: <input type="password" name="pw" size="10" /><br /><br />
<input type="hidden" name="action" value="login" />
<input type="submit" value="SEND" />
</form>
</body>
</html>
HTML Form Fields
Request Data
GET /bin/login HTTP/1.1

Accept: image/gif, image/jpeg, */*
Referer: http://127.0.0.1:8000/login.html
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 127.0.0.1:8000
Connection: Keep-Alive

user=Peter+Lee&pw=123456&action=login
Address Bar
http://127.0.0.1:8000/bin/login
HTML Form Fields
File Upload using multipart/form-data POST Request
<html>
<head><title>File Upload</title></head>
<body>
<h2>Upload File</h2>
<form method="post" enctype="multipart/form-data" action="servlet/UploadServlet">
Who are you: <input type="text" name="username" /><br />
Choose the file to upload:
<input type="file" name="fileID" /><br />
<input type="submit" value="SEND" />
</form>
</body>
</html>
HTML Form Fields
POST /bin/upload HTTP/1.1

Host: test101
Accept: image/gif, image/jpeg, */*
Accept-Language: en-us
Content-Type: multipart/form-data; boundary=---------------------------7d41b838504d8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 342
Connection: Keep-Alive
Cache-Control: no-cache
HTML Form Fields
-----------------------------7d41b838504d8 Content-Disposition: form-data; name="username"
Peter Lee
-----------------------------7d41b838504d8 Content-Disposition: form-data; name="fileID"; filename="C:temp.html" ContentType: text/plain
File Content...................................................
-----------------------------7d41b838504d8--
Thank you

Http request&response session 1 - by Vignesh.N

  • 1.
  • 2.
    HyperText Transfer Protocol(HTTP)     most popular application protocol used in the Internet (or The WEB) An HTTP client sends a request message to an HTTP server The server, in turn, returns a response message. In other words, HTTP is a pull protocol, the client pulls information from the server (instead of server pushes information down to the client). HTTP is a stateless protocol. In other words, the current request does not know what has been done in the previous requests.
  • 3.
  • 4.
    Uniform Resource Locator(URL) A URL (Uniform Resource Locator) is used to uniquely identify a resource over the web. URL has the following syntax: protocol://hostname:port/path-and-file-name There are 4 parts in a URL: Protocol: The application-level protocol used by the client and server, e.g., HTTP, FTP, and telnet. Hostname: The DNS domain name (e.g., www.test101.com) or IP address (e.g., 192.128.1.2) of the server. Port: The TCP port number that the server is listening for incoming requests from the clients. Path-and-file-name: The name and location of the requested resource, under the server document base directory. For example, in the URL http://www.test101.com/docs/index.html, the communication protocol is HTTP; the hostname is www.test101.com. The port number was not specified in the URL, and takes on the default number, which is TCP port 80 for HTTP. The path and file name for the resource to be located is "/docs/index.html". Other examples of URL are: ftp://www.ftp.org/docs/test.txt mailto:user@test101.com
  • 5.
    Important Default Portnumbers 443 TCP Hypertext Transfer Protocol over TLS/SSL (HTTPS). 115 TCP Simple/secure File Transfer Protocol (SFTP). 80 TCP Hypertext Transfer Protocol (HTTP). 21 TCP FTP control (command). 22 TCP Secure Shell (SSH) — used for secure logins. 23 TCP Telnet protocol. 25 TCP Simple Mail Transfer Protocol (SMTP). 115 TCP Simple File Transfer Protocol (SFTP). 110 TCP Post Office Protocol v3 (POP3). 1414TCP IBM WebSphere MQ (formerly known as MQSeries). 9060TCP WebSphere Application Server Administration Console. 9080TCP WebSphere Application Server HTTP Transport (port 1) default. 8080TCP Apache Tomcat. 5432TCP PostgreSQL database system. 3306TCP MySQL database system. 1521TCP Oracle database default listener.
  • 6.
  • 7.
    Http Request MessageFormat The format of an HTTP request message is as follow:
  • 8.
    Http Request Message RequestLine The first line of the header is called the request line, followed by optional request headers. The request line has the following syntax: request-method-name request-URI HTTP-version request-method-name: HTTP protocol defines a set of request methods, e.g., GET, POST, HEAD, and OPTIONS. The client can use one of these methods to send a request to the server. * case sensitive and must be in uppercase. request-URI: specifies the resource requested. HTTP-version: Two versions are currently in use: HTTP/1.0 and HTTP/1.1. Examples of request line are: GET /test.html HTTP/1.1 HEAD /query.html HTTP/1.0 POST /index.html HTTP/1.1
  • 9.
    Http Request Message RequestHeaders The request headers are in the form of name:value pairs. Multiple values, separated by commas, can be specified. request-header-name: request-header-value1, requestheader-value2, ... Examples of request headers are: Host: www.xyz.com Connection: Keep-Alive Accept: image/gif, image/jpeg, */* Accept-Language: us-en, fr, cn username=vignesh&password=qwer1234&......
  • 10.
    Http Request MessageFormat GET /docs/index.html HTTP/1.1 Host: www.test101.com Accept: image/gif, image/jpeg, */* Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate Referer:http://localhost:8080/home Cookie:JSESSIONID=DFC52DC1584F89D94009014A77C111EC;city=Coimbatore; User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.102 Chrome/32.0.1700.102 Safari/537.36 Cache-Control: max-age=0 (blank line)
  • 11.
    Http Response HTTP/1.1 200OK Server: Apache-Coyote/1.1 Expires: Sun, 01 Mar 2015 13:46:19 GMT Cache-Control: max-age=31556926, must-revalidate Date: Sat, 01 Mar 2014 07:57:33 GMT Set-Cookie:JSESSIONID=1D9B00464C03A0923E0AE77ADE16416A; Path=/; HttpOnly Content-Type:text/html;charset=UTF-8 <html><body><h1>It works!</h1></body></html>
  • 12.
  • 13.
    Http Response Message StatusLine The first line is called the status line, followed by optional response header(s). The status line has the following syntax: HTTP-version status-code reasonphrase HTTP-version: The HTTP version used in this session. Either HTTP/1.0 and HTTP/1.1. status-code: a 3-digit number generated by the server to reflect the outcome of the request.
  • 14.
    Http Response Message ResponseHeaders The response headers are in the form name:value pairs: response-header-name: response-header-value1, response-header-value2, ... Examples of response headers are: Content-Type: text/html Content-Length: 35 Connection: Keep-Alive Keep-Alive: timeout=15, max=100
  • 15.
  • 16.
    Http Response StatusCode Some commonly encountered status codes are: 100 Continue: The server received the request and in the process of giving the response. 200 OK: The request is fulfilled. 301 Move Permanently: The resource requested for has been permanently moved to a new location. The URL of the new location is given in the response header called Location. The client should issue a new request to the new location. Application should update all references to this new location.
  • 17.
    Http Request UsingHTML Form <html> <head><title>Login</title></head> <body> <h2>LOGIN</h2> <form method="get/post/delete" action="/user/login"> Username: <input type="text" name="user" size="25" /><br /> Password: <input type="password" name="pw" size="10" /><br /><br />
  • 18.
    HTML Form Fields Aform contains fields. The types of field include: Text Box: produced by <input type="text">. Password Box: produced by <input type="password">. Radio Button: produced by <input type="radio">. Checkbox: produced by <input type="checkbox">. Selection: produced by <select> and <option>. Text Area: produced by <textarea>. Submit Button: produced by <input type="submit">. Reset Button: produced by <input type="reset">. Hidden Field: produced by <input type="hidden">. Button: produced by <input type="button"> and <button> Query String name1=value1&name2=value2&name3=value3&...
  • 19.
    HTML Form Fields Thequery string can be sent to the server using either HTTP GET or POST request method, which is specified in the <form>'s attribute "method". <form method="get" action="url"> If GET request method is used, the URL-encoded query string will be appended behind the request-URI after a "?" character, i.e., GET request-URI?query-string HTTP-version (other optional request headers) (blank line) (optional request body)
  • 20.
    HTML Form Fields UsingGET request to send the query string has the following drawbacks: The amount of data you could append behind request-URI is limited. If this amount exceed a server-specific threshold, the server would return an error "414 Request URI too Large". The URL-encoded query string would appear on the address box of the browser.
  • 21.
    HTML Form Fields <html> <head><title>Login</title></head> <body> <h2>LOGIN</h2> <formmethod="get" action="/bin/login"> Username: <input type="text" name="user" size="25" /><br /> Password: <input type="password" name="pw" size="10" /><br /><br /> <input type="hidden" name="action" value="login" /> <input type="submit" value="SEND" /> </form> </body> </html>
  • 22.
    HTML Form Fields RequestData GET /bin/login?user=Peter+Lee&pw=123456&action=login HTTP/1.1 Accept: image/gif, image/jpeg, */* Referer: http://127.0.0.1:8000/login.html Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Host: 127.0.0.1:8000 Connection: Keep-Alive Address Bar http://127.0.0.1:8000/bin/login?user=Peter+Lee&pw=123456&action=login
  • 23.
    HTML Form Fields <html> <head><title>Login</title></head> <body> <h2>LOGIN</h2> <formmethod="post" action="/bin/login"> Username: <input type="text" name="user" size="25" /><br /> Password: <input type="password" name="pw" size="10" /><br /><br /> <input type="hidden" name="action" value="login" /> <input type="submit" value="SEND" /> </form> </body> </html>
  • 24.
    HTML Form Fields RequestData GET /bin/login HTTP/1.1 Accept: image/gif, image/jpeg, */* Referer: http://127.0.0.1:8000/login.html Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Host: 127.0.0.1:8000 Connection: Keep-Alive user=Peter+Lee&pw=123456&action=login Address Bar http://127.0.0.1:8000/bin/login
  • 25.
    HTML Form Fields FileUpload using multipart/form-data POST Request <html> <head><title>File Upload</title></head> <body> <h2>Upload File</h2> <form method="post" enctype="multipart/form-data" action="servlet/UploadServlet"> Who are you: <input type="text" name="username" /><br /> Choose the file to upload: <input type="file" name="fileID" /><br /> <input type="submit" value="SEND" /> </form> </body> </html>
  • 26.
    HTML Form Fields POST/bin/upload HTTP/1.1 Host: test101 Accept: image/gif, image/jpeg, */* Accept-Language: en-us Content-Type: multipart/form-data; boundary=---------------------------7d41b838504d8 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Content-Length: 342 Connection: Keep-Alive Cache-Control: no-cache
  • 27.
    HTML Form Fields -----------------------------7d41b838504d8Content-Disposition: form-data; name="username" Peter Lee -----------------------------7d41b838504d8 Content-Disposition: form-data; name="fileID"; filename="C:temp.html" ContentType: text/plain File Content................................................... -----------------------------7d41b838504d8--
  • 28.