Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems...

47
Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    217
  • download

    0

Transcript of Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems...

Page 1: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Lecture 7

TELNET Protocol & HyperText Transfer Protocol

CPE 401 / 601Computer Network Systems

slides are modified from Dave Hollinger

Page 2: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

2

TELNET vs. telnet TELNET is a protocol that provides “a

general, bi-directional, eight-bit byte oriented communications facility”.

telnet is a program that supports the TELNET protocol over TCP.

Many application protocols are built upon the TELNET protocol.

TELNET

Page 3: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

3

The TELNET Protocol Reference: RFC 854

TCP connection

data and control over the same connection.

Network Virtual Terminal intermediate representation of a generic terminal. provides a standard language for communication of

terminal control functions.

TELNET

Page 4: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

4

Network Virtual Terminal

NVT NVT

ServerProcess

TCP TCP

TELNET

Page 5: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

5

Negotiated Options All NVTs support a minimal set of capabilities.

Some terminals have more capabilities than the minimal set.

The set of options is not part of the TELNET protocol, so that new terminal features can be incorporated

without changing the TELNET protocol. Two endpoints negotiate a set of mutually

acceptable options Line mode vs. character mode echo modes character set (EBCDIC vs. ASCII)

TELNET

Page 6: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

6

Control Functions

TELNET includes support for a series of control functions commonly supported by servers.

This provides a uniform mechanism for communication of (the supported) control functions.

TELNET

Page 7: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

7

Control Functions Interrupt Process (IP)

suspend/abort process.

Abort Output (AO) send no more output to user’s terminal.

Are You There (AYT) check to see if system is still running.

Erase Character (EC) delete last character sent

Erase Line (EL) delete all input in current line.

TELNET

Page 8: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

8

Command Structure All TELNET commands and data flow through

the same TCP connection. Commands start with a special character

called the Interpret as Command escape character The IAC code is 255. If a 255 is sent as data - it must be followed by

another 255. If IAC is found and the next byte is IAC

a single byte is presented to application/terminal If IAC is followed by any other code

the TELNET layer interprets this as a command.TELNET

Page 9: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

9

Playing with TELNET You can use the telnet program to play with

the TELNET protocol. telnet is a generic TCP client.

Sends whatever you type to the TCP socket. Prints whatever comes back through the TCP

socket Useful for testing TCP servers (ASCII based

protocols).

Many Unix systems have these servers running (by default): echo port 7 discard port 9 daytime port 13 chargen port 19TELNET

Page 10: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

10

telnet hostname port> telnet amele-2.cse.unr.edu 7Trying 134.197.40.246...Connected to amele-2.cse.unr.edu (134.197.40.246).

Escape character is '^]'.Hi mehmetHi mehmetstop itstop it^]telnet> quitConnection closed.

TELNET

Page 11: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

11

telnet vs. TCP

Not all TCP servers talk TELNET (most don't)

You can use the telnet program to play with these servers, but the fancy commands won't do anything. type ^], then "help" for a list of fancy TELNET

stuff you can do in telnet.

TELNET

Page 12: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
Page 13: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HyperText Transfer Protocol (HTTP) HTTP is the protocol that supports

communication between web browsers and web servers.

A “Web Server” is a HTTP server

Most clients/servers today speak version 1.1, but 1.0 is also in use. RFC 1945 (HTTP 1.0) RFC 2616 (HTTP 1.1)

HTTP 13

Page 14: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

From the RFC

“HTTP is an application-level protocol with the lightness and speed necessary for distributed, hypermedia information systems.”

Transport Independence The HTTP protocol generally takes place over

a TCP connection, but the protocol itself is not dependent on a

specific transport layer.

HTTP 14

Page 15: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Request - Response

HTTP has a simple structure: client sends a request server returns a reply.

HTTP can support multiple request-reply exchanges over a single TCP connection.

The “well known” TCP port for HTTP servers is port 80. Other ports can be used as well...

HTTP 15

Page 16: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HTTP 1.0+ Request Lines of text (ASCII).

Lines end with CRLF “\r\n”

First line is called “Request-Line”

Request-LineHeaders...

Content...blank lineblank line

HTTP 16

Page 17: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Request Line

Method URI HTTP-Version\r\n

The request line contains 3 tokens (words).

space characters “ “ separate the tokens.

Newline (\n) seems to work by itself but the protocol requires CRLF

HTTP 17

Page 18: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Request Method

The Request Method can be:GET HEAD DELETE

PUT POST TRACE

OPTIONS

future expansion is supported

GET, HEAD and POST are supported everywhere (including Lab 2!).

HTTP 1.1 servers often support PUT, DELETE, OPTIONS & TRACE.

HTTP 18

Page 19: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Methods GET: retrieve information identified by

the URI. Typically used to retrieve an HTML document

HEAD: retrieve meta-information about the URI.

used to find out if a document has changed

POST: send information to a URI and retrieve result.

used to submit a formHTTP 19

Page 20: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

More Methods PUT: Store information in location named

by URI.

DELETE: remove entity identified by URI.

TRACE: used to trace HTTP forwarding through proxies, tunnels, etc.

OPTIONS: used to determine the capabilities of the server, or characteristics of a named resource.

HTTP 20

Page 21: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

URI: Universal Resource Identifier

URIs defined in RFC 2396.

Absolute URI: scheme://hostname[:port]/path http://www.cse.unr.edu:80/~mgunes/cpe401

Relative URI: /path /blah/foo

No server mentioned

HTTP 21

Page 22: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

URI Usage

When dealing with a HTTP 1.1 server, only a path is used (no scheme or hostname). HTTP 1.1 servers are required to be capable of

handling an absolute URI, but there are still some out there that won’t…

When dealing with a proxy HTTP server, an absolute URI is used. client has to tell the proxy where to get the

document! more on proxy servers in a bit….

HTTP 22

Page 23: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HTTP Version Number

“HTTP/1.0” or “HTTP/1.1”

Starting with HTTP 1.0 the version number is part of every request. Client tells the server what version it can talk

(what options are supported, etc).

HTTP 0.9 did not include a version number in a request line. If a server gets a request line with no HTTP

version number, it assumes 0.9 HTTP 0.9 was used for many years.

HTTP 23

Page 24: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

The Header Lines Request Headers provide information to

the server about the client what kind of client what kind of content will be accepted who is making the request

Each header line contains an attribute name followed by a “:” followed by

a space and the attribute value.

There can be 0 headers (HTTP 1.0) HTTP 1.1 requires a Host: header

HTTP 24

Page 25: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Example HTTP Headers

Accept: text/html

Host: www.cse.unr.edu

From: [email protected]

User-Agent: Mozilla/4.0

Referer: http://www.unr.edu/

HTTP 25

Page 26: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

End of the Headers

Each header ends with a CRLF ( \r\n )

The end of the header section is marked with a blank line. just CRLF

For GET and HEAD requests, the end of the headers is the end of the request!

HTTP 26

Page 27: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

POST A POST request includes some content

(some data) after the headers (after the blank line).

There is no format for the data (just raw bytes).

A POST request must include a Content-Length line in the headers:

Content-length: 267

HTTP 27

Page 28: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Example POST Request

POST /~mgunes/cpe401/grades.cgi HTTP/1.1

Accept: */*

Host: www.cse.unr.edu

User-Agent: SecretAgent V2.3

Content-Length: 35

Referer: http://www.unr.edu/

stuid=6660182722&item=test1&grade=99

HTTP 28

Page 29: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Example GET Request

GET /~mgunes/cpe401/lab1.htm HTTP/1.1

Accept: */*

Host: www.cse.unr.edu

User-Agent: Internet Explorer

From: [email protected]

Referer: http://www.unr.edu/There is a blank line here!

HTTP 29

Page 30: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HTTP Response

ASCII Status Line

Headers Section

Content can be anything (not just text) typically an HTML document or some kind of

image.

Status-LineHeaders...

Content...

blank lineblank line

HTTP 30

Page 31: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Response Status Line

HTTP-Version Status-Code Message

Status Code is 3 digit number (for computers) 1xx Informational 2xx Success 3xx Redirection 4xx Client Error 5xx Server Error

Message is text (for humans)HTTP 31

Page 32: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Example Status Lines

HTTP/1.0 200 OK

HTTP/1.0 301 Moved Permanently

HTTP/1.0 400 Bad Request

HTTP/1.0 500 Internal Server Error

HTTP 32

Page 33: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Response Headers

Provide the client with information about the returned entity (document). what kind of document how big the document is how the document is encoded when the document was last modified

Response headers end with blank line

HTTP 33

Page 34: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Response Header Examples

Date: Wed, 30 Jan 2002 12:48:17 EST

Server: Apache/1.17

Content-Type: text/html

Content-Length: 1756

Content-Encoding: gzip

HTTP 34

Page 35: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Content

Content can be anything (sequence of raw bytes).

Content-Length header is required for any response that includes content.

Content-Type header also required.

HTTP 35

Page 36: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Single Request/Reply

The client sends a complete request. The server sends back the entire reply. The server closes it’s socket.

If the client needs another document it must open a new connection.

This was the default for HTTP 1.0

HTTP 36

Page 37: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Persistent Connections

HTTP 1.1 supports persistent connections (this is the default).

Multiple requests can be handled over a single TCP connection.

The Connection: header is used to exchange information about persistence (HTTP/1.1)

1.0 Clients used a Keep-alive: header

HTTP 37

Page 38: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Try it with telnet

> telnet www.cse.unr.edu 80

GET / HTTP/1.0

HTTP/1.0 200 OK

Server: Apache

...

Response

Request-line

Blank Line(end of headers)

HTTP 38

Page 39: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Try it with telnet (persistent)

> telnet www.cse.unr.edu 80

GET / HTTP/1.1

Host: www.cse.unr.edu

HTTP/1.0 200 OK

Server: Apache

...

Required!

HTTP 39

Page 40: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HTTP Proxy Server

HTTPServer

Browser Proxy

HTTP 40

Page 41: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Network Lab #2 HTTP Proxy You need to write a proxy server.

Must be able to handle GET, HEAD and POST requests.

Filtering: Your proxy will be given a list of domain names on the command line, you should refuse to forward requests to any server whose name is within a specified domain. send back status line: 403 Forbidden.

Lab #2 41

Page 42: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

The code you need

Proxy is both a client and a server

Parsing the HTTP request is needed. You need to understand HTTP

You will need to parse headers. need to look at Content-length, Connection,

etc.

42Lab #2

Page 43: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Testing Tell your browser to use a proxy

Edit preferences/options.

Interrupt a long transfer (press stop).

Fill out a form (probably uses POST).

Test it with a browser. Test it with telnet Write an abusive client and a rude server!

43Lab #2

Page 44: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

What is expected We should be able to surf through your

proxy! Proxy should print some info about each

request (print the request line). No memory leaks! Check every system call for errors!

We should not be able to kill your proxy by

• sending a bad request.

• using a server that sends bad replies.

No crashes, no matter what kind of nonsense we send your proxy.

44Lab #2

Page 45: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HTTP V1.1 Details The RFC is 114 pages! we don’t expect you to read it all or to

support every nitty-gritty detail. work on creating a working proxy (one you

can use through a browser). performance is not a big deal (but it shouldn’t

be horribly worse than without your proxy). Don’t worry about persistence, pipelining,

chunking, etc. you need to turn off persistence if you don't

want to handle it.45Lab #2

Page 46: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

HTTP Headers

You will need to look at the Content-Length header in a POST. you need to know how many bytes to read

after the end of the headers.

You will need to either look at Connection (Proxy-Connection) headers or (at a minimum) to force Connection: close as a request header.

46Lab #2

Page 47: Lecture 7 TELNET Protocol & HyperText Transfer Protocol CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.

Stuff you might need to know(that we have not covered)

Converting hostnames to IP addresses.

Handling signals (SIGPIPE) Check out section 5.13 in the text

Providing Concurrency (not required, but not hard either). just fork the server after calling accept. MAKE SURE YOU TAKE CARE OF ZOMBIES!

47Lab #2