logo

HTTP và Web server


HTTP và Web server Trang 1 1. HTTP và Web server Web server làm nhiệm vụ gì ? Ban đầu nó chỉ phục vụ các tài liệu HTML đơn giản và hình ảnh. Tuy nhiên sau này nó có thể làm nhiều hơn thế. Đầu tiên xét Web server ở mức độ cơ bản thì nó phục vụ các nội dung tĩnh. Nghĩa là khi Web server nhận 1 yêu cầu lấy trang Web sau từ Web browser : http://www.hcmuns.edu.vn/index.html thì nó sẽ ánh xạ (map) Uniform Resource Locator (URL) trên vào một file cục bộ trên máy server. Trong trường hợp này, file index.html ở một nơi nào đó trên hệ thống file của máy chủ. Máy chủ sau đó sẽ nạp file này từ đĩa và đưa nó thông qua mạng đến Web browser của người dùng . Toàn bộ quá trình trao đổi giữa các trình duyệt web và web server sử dụng giao thức : HTTP (Hypertext Transfer Protocol). 1.User yêu cầu tài 4.Web server trả liệu Web, vd như tài liệu về cho index.html browser 2.Web server tìm 3.Web server lấy tài liệu trên hệ tìm tài liệu trên hệ thống fle thống fle Các file tài liệu HTML là một văn bản thô (raw text). Chúng chứa các thẻ định dạng (HTML tag). •Markup tags: WWW Trường Đại Học Khoa Học Tự Nhiên TP.HCM HTTP và Web server Trang 2 Trên cơ sở phục vụ nội dung tĩnh đơn giản này đã dẫn đến cái mà ngày nay chúng ta gọi là World Wide Web với nhiều thông tin phức tạp hơn được chuyển giữa Web server và Web browser, trong đó quan trọng nhất có lẽ là nội dung động (dynamic content). Web động 0. Một trong các nội dung động (thường gọi tắt là Web động) cơ bản là các trang Web được tạo ra để đáp ứng các dữ liệu nhập vào của người dùng trực tiếp hay gián tiếp. 1. Cách cổ điển nhất và được dùng phổ biến nhất cho việc tạo nội dung động là sử dụng Common Gateway Interface (CGI). Cụ thể là CGI định nghĩa một cách thức Web server chạy một chương trình một cách cục bộ và trả kết quả thông qua Web server đến Web browser của người dùng đã yêu cầu nội dung động. 2. Web browser của người dùng chẳng bao giờ thực sự biết được nội dung của thông tin là động, bởi vì CGI về cơ bản là một giao thức mở rộng của Web Server. Hình vẽ sau minh hoạ khi Web browser yêu cầu một trang Web động phát sinh từ một chương trình CGI. 1.User yêu cầu 4.Web server chương trình CGI chuyển các thông tin phục vụ 1 trang xuất ra từ chương động (webstore.cgi) trình CGI về cho browser 2.Web server gọi chương trình 3.Web server gnhận webstore.cgi và gửi các thông tin xuất ra đến chương trình từ chương trình các tham số mà webstore.cgi browser yêu cầu. Một giao thức mở rộng nữa của HTTP là HyperText Transmission Protocol, Secure (HTTPS) bảo mật các các thông tin “nhạy cảm” khi chuyển chúng xuyên qua mạng. Điều này cho phép phát triển thương mại điện tử (e-commerce). HTTP và phương thức hoạt động? HTTP và Web server Trang 3 3. HTTP là một giao thức cho phép Web browsers và servers có thể giao tiếp với nhau. Nó chuẩn hoá các thao tác cơ bản mà một Web Server phải làm được. 4. HTTP bắt đầu là 1 giao thức đơn giản Như với các giao thức chuẩn khác của Internet, thông tin điều khiển được truyền dưới dạng vãn bản thô thông qua kết nối TCP. Do đó, kết nối HTTP có thể thay thế bằng cách dùng lệnh "telnet" chuẩn. Ví dụ: > telnet www.extropia 80 GET /index.html HTTP/1.0 HTTP và Web server Trang 4 việc quyết định làm thế nào để hiển thị nội dung là một kiểu định dạng MIME type header. text/xml Xml video/mpeg Mpeg mpg mpe Multipurpose Internet Mail Extension? video/quicktime qt mov 12. MIME: định dạng này nói cho Web browser tài liệu đang được truyền đi thuộc tài liệu gì. Những kiểu định danh như vậy không giới hạn cho các trang HTML đơn giản hoặc hình ảnh. 13. Trên thực tế , hơn 370 kiểu MIME mặc định được phân phối với Apache Web server trong tập tin cấu hình mime.types . Và thậm chí danh sách này không thể đại diện cho toàn bộ không gian các kiểu MIME có thể ! Kiểu MIME được phân biệt bởi cú pháp type/subtype kết hợp với phần mở rộng của tập tin. Ví dụ về kiểu MIME trong file mime.types Chúng ta thấy rằng các file chứa nội dung video mpeg có phần mở rộng là mpeg, mpg, hoặc mpe. Một Web server chấp nhận kết nối như thế nào ? 1. Web servers được thiết kế xoay quanh các mục tiêu cơ bản sau: 0. Tiếp nhận các các kết nối mạng từ browsers. 1. Trích nội dung từ đĩa . 2. Chạy các chương trình CGI . 3. Truyền dữ liệu ngược lại cho clients 4. Chạy càng nhanh càng tốt. 14. Tuy nhiên, các mục tiêu trên không hoàn toàn tương thích lẫn nhau. Ví dụ, một Web server đơn giản phải theo các luật logic sau: 0. Chấp nhận kết nối 1. Sinh ra các nội dung tĩnh hoặc động cho browser 2. Đóng kết nối 3. Chấp nhận kết nối 4. Lập lại quá trình trên ... 15. Điều này sẽ chạy tốt đối với các Web sites đơn giản, nhưng server sẽ bắt đầu gặp phải vấn đề khi có nhiều người truy cập hoặc các trang web động phải tốn thời gian để tính toán cho ra kết quả. Ví dụ, nếu một chương trình CGI tốn 30 giây để sinh ra nội dung, trong thời gian đó Web server có thể sẽ không thể phục vụ các trang khác nữa . 16. Do vậy, mặc dù mô hình này chạy, nó vẫn cần phải thiết kế lại để phục vụ được nhiều người trong cùng 1 lúc. Web servers có xu hướng tận dụng ưu điểm của 2 phương pháp khác nhau để giải quyết vấn đề này: HTTP và Web server Trang 5 đa tiểu trình (multi-threading) hoặc đa tiến trình (multi-processing) hoặc các hệ lai giữa multi-processing và multi-threading. Yêu cầu HTTP Request = Simple-Request | Full-Request Simple-Request = "GET" SP Request-URI CRLF Request = Request-Line *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ] Ghi chú: ♦ SP (Space): khoảng trắng ♦ CRLF (Carier Return - Line feed) : xuống dòng về đầu dòng HTTP URL dùng để định vị tài nguyên mạng qua giao thức HTTP. Đường dẫn HTTP URL có dạng như sau: http_URL = "http:" "//" host [ ":" port ] [ abs_path ] trong đó: host = port = số_nguyên trường hợp không có tham số port thì giá trị 80 được lấy mặc định.  Request-Line có dạng: Request-Line =Method SP Request-URI SP HTTP-Version CRLF  Method : phương thức được dùng. Phương thức có thể là một trong các giá trị Method = "GET" : lấy thông tin từ server theo đường dẫn mô tả trong Request- URI |HEAD : tương tự như GET nhưng không lấy thành phần message-body | "POST" : | "PUT" | "DELETE" Method = "OPTIONS" | "GET" ; Section 9.3 | "HEAD" ; Section 9.4 | "POST" ; Section 9.5 | "PUT" ; Section 9.6 | "DELETE" ; Section 9.7 | "TRACE" ; Section 9.8 HTTP và Web server Trang 6 | "CONNECT" ; Section 9.9 | extension-method extension-method = token Ví dụ về yêu cầu HTTP: 0. GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 1. GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org Protocol Domain name Path http:// www.hcmu.edu.vn /vanphong/dtao.htm https:// www.company.com /catalog/orders.htm (secure HTTP) gopher:// gopher.college.edu /research/astronomy/index.htm ftp:// orion.bureau.gov /stars/alpha quadrant/startlist.txt Đáp ứng Sau khi nhận và thông dịch yêu cầu, server đáp ứng với một thông điệp HTTP. Response = Status-Line ; Section 6.1 *(( general-header ; Section 4.5 | response-header ; Section 6.2 | entity-header ) CRLF) ; Section 7.1 CRLF [ message-body ] ; Section 7.2 Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF Mã trạng thái và ý nghĩa 1xx: Thông báo – đã nhận yêu cầu, tiếp tục xử lý 2xx: Thành công – Hành động đã nhận thành công yêu cầu từ user, hiểu và chấp nhận yêu cầu 3xx: Redirection –Phải tốn thêm các động tác khác mới có thể hoàn tất được yêu cầu 4xx: Client Error – Yêu cầu gửi cú pháp của câu request bị sai. Hành động không thể tiếp tục 5xx: Server Error - server không thể đáp ứng đầy đủ yêu cầu đó Status-Code = "100" ; Tiếp tục | "200" ; OK | "201" ; Đã tạo | "202" ; Chấp nhận | "203" ; Thông tin không được kiểm tra xác thực | "204" ; Không có nội dung | "301" ; Nội dung đã chuyển sang vị trí khác HTTP và Web server Trang 7 Response Header Fields (tt) | "400" ; Yêu cầu không phù hợp | "401" ; Không có quyền | "403" ; Cấm truy cập | "404" ; Không tìm thấy | "405" ; Không cho phép phương thức này | "408" ; Yêu cầu bị quá thời gian Response Header Fields (tt) | "500" ; Lỗi server | "501" ; Không hổ trợ | "502" ; Bad Gateway | "503" ; Dịch vụ không sẳn sàng | "504" ; Gateway Time-out | "505" ; phiên bản HTTP không được hổ trợ Ta chọn nền Web Server nào ? 17. Thông thường,một tiến trình server phải làm 2 việc: lắng nghe và tiếp nhận kết nối TCP khi chúng được thiết lập. Nó phải lựa chọn vừa phải để đáp ứng các kết nối đồng thời vừa phải ngãn cản hiệu quả bất cứ kết nối mới nào cho đến cái hiện tại đã được phục vụ và đã đóng. 2. Trên thực tế việc chạy mỗi tiến trình Web server khi có yêu cầu thì giá phải trả cho hiệu suất rất đắt trên máy chủ, và hoàn toàn không thực tế trong các mô hình Web site hiện tại. Ngày nay, hầu hết các Web sites chạy Web server có thể hỗ trợ cả multi-processing hoặc multi-threading, và do đó nó có thể xử lý tải lớn hơn nhiều. 18. Không cần biết Web server của bạn tốt hay mạnh đến đâu, thì vẫn luôn luôn sẽ bị giới hạn bởi số lượng trang web phục vụ trong 1 khoảng thời gian cho trước -- nếu trang Web của bạn sử dụng nội dung động thì sẽ làm tãng thời gian phục vụ và làm nặng tải cho Web server.Nội dung động thường dựa việc sử dụng các database nặng nề hoặc xử lý các code chương trình sẽ gây tốn rất nhiều tài nguyên trên máy chủ. Cân bằng tải - Load balancing 3. Có nhiều cách để phân tải cho server. Cách đơn giản nhất là chia nội dung ra trên nhiều máy. Ví dụ , bạn có thể đặt tất cả các tập tin HTML tĩnh trên một máy , tất cả các hình ảnh trên một máy khác, và cái thứ ba chạy tất cả CGI scripts. Tất nhiên , cách phân tải này rất thô thiển và phụ thuộc vào nội dung của site, và hiệu quả mang lại rất ít. 19. Ví dụ , một CGI script đơn lẻ sẽ gây nghẽn mạch cho Web site, ta hãy dời nó sang một server khác chỉ chứa HTML, hình ảnh và các CGI scripts khác tiếp tục chạy. Tuy nhiên, tải nặng của CGI script sẽ vẫn bị hiện tượng “cổ chai” cho các người dùng muốn tận dụng tài nguyên. Do vậy, phân tải trên Web server cần một chút tinh tế để xác định được vấn đề là tải đang nặng ở chỗ nào để cấu hình cho thích hợp. HTTP và Web server Trang 8 20. Một số nguyên nhân phải được xác định rõ trước khi quyết định giải pháp phân tải. Đặc biệt, kiểm tra tải truy cập của Web là yếu tố quyết định cho việc tinh chỉnh hiệu suất làm việc và quá trình phân tải cho server. 21. Các phương pháp phân tải giữa các Web servers: 2. Phân tải DNS (round-robin type) 3. Phân tải phần cứng 4. Phân tải phần mềm 5. Proxy ngược 6. Nội dung được phát tán qua nhiều hosts Vấn đề an toàn Web site? 22. Có hai mức khác nhau về vấn đề an ninh cho Web server. Trên mức độ là an toàn dòng dữ liệu do đó nó không thể được xem hay sữa chữa bởi kẻ thứ ba có ác tâm. Trên mức khác là an toàn về nội dung – xác nhận và quyền hạn của người được xem và thay đổi nội dung đó. 23. Các đường dẫn URL bắt đầu bởi “https” sử dụng giải thuật SSL (Secure Socket Layer) để tạo ra một liên kết dạng luồng bảo mật và mã hoá thông tin khi đi qua luồng. 24. Tuy nhiên, bạn có thể hỏi, cuối cùng SSL bảo vệ cái gì ? Thực sự chỉ có hai lựa chọn : SSL bảo vệ dữ liệu được gửi lên lên Web server lẫn dữ liệu “nhạy cảm” nhận về từ Web server. Vấn đề an toàn Web site? 25. Việc cho phép người dùng gửi dữ liệu bí mật lên Web server có thể được tìm thấy trong một ứng dụng thông thường trên Web. Trong các ứng dụng đó, người dùng thường được cho 1 lựa chọn phải cho biết thông tin về thẻ tín dụng để hoàn tất đơn đặt hàng. Mặc dù Web server không hiển thị số thẻ tín dụng lên Web browser, nhưng việc truyển các thông tin này phải được xếp vào loại là thông tin bí mật. Do đó, có một số cách để bảo vệ nội dung trên Web server. 26. Web servers thường hỗ trợ việc xác thực dùng kỹ thuật gọi là basic authorization. Trong kỹ thuật này, Web server gửi một header đặc biệt tới Web browser của người dùng hỏi username/password. 27. Web servers thường quản lý rất đơn giản việc xác định quyền xem dữ liệu . Hầu hết Web servers chỉ đơn thuần cho phép việc ngãn cản việc đọc thư mục và files bởi group hay user. Các tuỳ chọn phức tạp hơn cho phép phát hiện người dùng nào có quyền xem files thường phải được lập trình bên trong ứng dụng Web hoặc thông qua việc gán quyền trên hệ thống file của hệ điều hành đang chạy Web server. Sự khác nhau giữa Web Server và Server ứng dụng? 28. Chúng ta đã nói về Web server, thế còn server ứng dụng ? Sự khác nhau là hoàn toàn rõ ràng. Web server chỉ phục vụ trang HTML và các hình ảnh cho việc xem trên browser. Trong khi một ứng dụng có thể tồn tại trên Web server, ứng dụng đó thường bị giới hạn bởi việc sinh ra trang HTML và dữ liệu hình ảnh. HTTP và Web server Trang 9 29. Một server ứng dụng thông thường chứa các ứng dụng doanh nghiệp thô và không chứa CSDL hay giao diện người dùng. CSDL ứng dụng nằm trên database server, còn giao diện người dùng có thể được phát sinh và hiển thị ở dạng trang Web. 30. Trong nhiều trường hợp, server ứng dụng phục vụ như là một tầng trung gian (middle-tier) của mô hình lập trình three-tier. Hình dưới đây minh hoạ một mô hình lập trình three-tier. 31. Nói cách khác , server ứng dụng nằm trong tầng giữa của chương trình khác và phục vụ xử lý dữ liệu cho các chương trình đó. Thông thường, trong trường hợp lập trình three-tier , hai lớp phân biệt bởi server ứng dụng là lớp giao diện người dùng và lớp Database/Data Storage . 4. Chú ý rằng khái niệm server ứng dụng không được lầm lẫn với ứng dụng Web nằm trên Web server. Ứng dụng Web thông thường cũng chỉ chứa các ứng dụng logic, nhưng khi chúng phục vụ chính cho việc sinh ra các trang HTML cho Web browser, chúng cũng có giao diện người dùng và thường không bao giờ trú ngụ trên một server ứng dụng thuần. Data Marshalling 32. Data marshalling là một thuật ngữ dùng để chỉ ra giao thức ứng dụng nói chuyện với nhau. Tương tự như làm thế nào Web servers bọc nội dung human-readable trong HTML để làm cho nó “dễ đọc”, nhiều server ứng dụng bọc nội dung application-readable bên trong các tags cho phép dữ liệu được thông dịch bởi ứng dụng nhận. Các "tags" này đã tạo nên một chuẩn xung quanh server ứng dụng. HTTP và Web server Trang 10 33. Ví dụ , CORBA servers dùng một giao thức gọi IIOP (Internet Inter-Orb Protocol) để truyền dữ liệu giữa các application objects. Gần đây hơn, XML (Extensible Markup Language) đã làm data marshalling càng dễ dàng hơn trong việc tạo các tags cho riêng mình rất giống trong cú pháp của HTML ngoại trừ việc chúng mô tả dữ liệu hơn là làm sao nội dung được hiển thị trong browser ( xem thêm tại Web site http://www.xml.org ) 34. Trong quá khứ, hầu hết các server ứng dụng như thế nói chuyện với nhau bằng ngôn ngữ giao thức Data marshalling như là IIOP(Internet Inter-Orb Protocol) cho CORBA, Java's object serialization cho RMI, và DCOM cho việc kích hoạt các Microsoft ActiveX từ xa. Tuy nhiên , sự phát triển của XML (extensible markup language) như là một ngôn ngữ internet thân thiện cho data marshalling đã làm mờ đi các ranh giới . 35. Web Servers được tinh chỉnh thành server ứng dụng có thể phục vụ dữ liệu XML bên cạnh dữ liệu HTML. 36. Gần đây tất cả Java Enterprise Bean servers dựa trên kiến trúc Java của Sun Microsystems đều quảng cáo khả năng đồng thời phục vụ Java Servlets và Java Server Pages -- lĩnh vực truyền thống của Web servers. 37. Thông thường, server ứng dụng được định hướng để xử lý dữ liệu dùng đối tượng hay code để hiện thực các logic ứng dụng. Trong khi đó Web servers thiên về việc gửi dữ liệu. Một thực tế là có thể đặt các thành phần của ứng dụng ngay trên Web server, tuy nhiên khi gặp vấn đề về hiệu suất thi hành thì nên tách biệt các thành phần ứng dụng trên server ứng dụng dành riêng. Appication Server và Web Server Hiện nay có nhiều kỹ thuật khác nhau cho phép một Web server phục vụ nội dung động. Các kỹ thuật ứng dụng Web chủ yếu tập trung vào việc phân phát các tài liệu HTML (được phát sinh tự động) đến Web browser của người dùng khi họ tương tác với Web site. Một server ứng dụng thường tuý không định dạng dữ liệu cho người dùng mà nó hoạt động như một “cỗ máy” (engine) xử lý dữ liệu cho các chương trình khác. Các chương trình này sẽ đọc dữ liệu đã được xử lý và diễn dịch lại cho phía người dùng. Chúng ta thử khảo sát một số kỹ thuật sau: Web Server và ứng dụng Web 38. CGI - Common Gateway Interface : các chương trình CGI phục vụ nội dung động dựa trên thông tin chuyển đến cho chúng. Các chương trình CGI có thể viết bằng ngôn ngữ bất kỳ như Perl, C, Python và TCL, trong đó chủ yếu là Perl. 39. Microsoft ASP - Active Server Page : ASP nhúng môt trình thông dịch (interpreter) VBScript vào Web server Microsoft Internet Information Server. 40. Java Servlets/JSP - Java Server Pages : kết nối máy ảo Java (JVM - Java Virtual Machine) với Web server. JSP có ưu điểm hơn ASP ở chổ nó khả năng cache trên JVM sau lần chạy đầu tiên. 41. PHP (Hypertext Preprocessor): tương tự như ASP và JSP, có một tập các thẻ mã chương trình đặt bên cạnh các thẻ HTML. server-side, cross- HTTP và Web server Trang 11 platform, ngôn ngữ scripting nhúng HTML. PHP là một dự án của Apache Software Foundation. 42. Mod_perl : nhúng trình thông dịch Perl vào Web server Apache cho phép tăng tốc độ xử lý các Perl script và cache các script để tăng hiệu suất hơn nữa. Các Web server phổ biến  Apache server (http://www.apache.org) hệ điều hành Unix, Windows 95/98, và Windows NT.  CERN server (http://www.w3c.org/Daemon/Status.html) hệ điều hành : Unix, VMS.  MacHTTP (http://www.w3c.org/MacHTTP/status.html) : hệ điều hành Macintosh.  Website (http://clubweb.ora.com) : hệ điều hành server Windows NT / Windows 95 của O'Reilly.  Domino Go Webserver (http://www.lotus.com) hệ điều hành Unix, Windows NT, Windows 95/98, OS/2.  Lotus Domino (http://www.lotus.com) hệ điều hành Windows NT, Windows 95/98, Unix, OS/2, Novell Netware.  Microsoft IIS v4.0/Microsoft IIS v5.0 (http://www.microsoft.com ) : hệ điều hành Windows NT/2000.  Enterprise for NetWare (http://www.novell.com ): hệ điều hành Novell Netware 4.11, IntranetWare 4.11.  Netscape Enterprise (http://home.netscape.com ): hệ điều hành HPUX 11.0, Solaris 2.6/7.0, IBM AIX 4.2.1, Compaq Tru64 Unix 4.0d, SGI IRIX 6.5, và NT 4 SP4.
DMCA.com Protection Status Copyright by webtailieu.net