Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Design and Implementation of HTTP/1.1 WebServer SUPERVISOR: Kåre Jelling Kristoffersen PARTICIPANTS: 1. Ashok Kumar Jayaraman 2. Ismail Shaik 3. Rakesh Moturi 4. Vijay Kumar Kotagiri Preface This Project, done in Dec’ 2003, is of four-week duration and is intended to supplement the course work in ‘Networks and Protocols’ and ‘Introduction to Programming’ at The IT University of Copenhagen, Denmark. The project is supervised by Kåre Jelling Kristoffersen, Assistant Professor at The IT University of Copenhagen, Denmark. He had been a key contributor for the success of this project by providing timely inputs and valuable suggestions. The project participants are the following: Ashok Kumar Jayaraman [email protected] Bachelor of Engineering (Computer Science and Engineering) and is currently pursuing 1st Semester in MSc (Internet Technology) at IT University of Copenhagen, Denmark. Ismail Shaik [email protected] Bachelors of Technology in Computer Science and Engineering and is currently pursuing 1 st Semester in MSc (Internet Technology) at IT University of Copenhagen, Denmark. Rakesh Moturi [email protected] Bachelors of Computer Application and is currently pursuing 1st semester in MSc (Internet Technology) at IT University of Copenhagen, Denmark. Vijay Kumar Kotagiri [email protected] Bachelors of Technology in Electronics and Communication and is currently pursuing 1st Semester in MSc (Internet Technology) at IT University of Copenhagen, Denmark. Abstract This project is aimed at designing a web server, which implements some of the server side concepts of the HTTP/1.1 protocol. It partly adheres to the HTTP/1.1 standards defined by RFC 2616 for communication between client and server on the WWW domain. It also avails the Session Management features (Cookies) defined by RFC 2109. The server is implemented using Java programming language. The server handles GET and HEAD requests from clients. It uses persistent connection, i.e. a new connection need not be setup for each requested web object. There is no pipelining facility and the client issues a new request only when the response for its previous request has been received. It uses authenticated access to a database, specially built for this web server and cookies for Session Management. The role of the cookies is to identify a client if it had earlier contacted the server. Table of Contents Page 1. Introduction 1 2. Problem Definition 4 3. Report Structure 4 4. HTTP Over view 5 Message Format 5 Request Message 6 Response Message 7 Message Headers 8 5. HTML 9 6. Networking Concepts in JAVA Java.net Package 11 Implementing Sockets 11 Streams 11 Threading Concepts 12 JDBC 13 7. Design 14 8. Class Definitions RequestHandler Class 17 ResponseHandler Class 21 FileHandler Class 24 ThreadHandler Class 26 GETMethod Class 27 Database Class 29 Server Class 31 9. Testing 32 10. Conclusion 36 References Appendix