Tổng quan về giao thức HTTP

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 43 - 46)

Hyper Text Transfer Protocol (HTTP) - giao thức tầng ứng dụng của Web - là trái tim của Web. HTTP được triển khai trên cả hai phía máy khách và máy chủ. Các tiến trình máy khách và máy chủ trên các hệ thống đầu cuối khác nhau giao tiếp với nhau thông qua việc trao đổi các bản tin HTTP. HTTP quy định cấu trúc bản tin cũng như cách thức trao đổi bản tin giữa máy khách và máy chủ. Trước khi nói về HTTP, chúng ta hãy nói lại các thuật ngữ về web.

Trang Web (webpage - hay còn gọi là một tập tin) chứa các đối tượng (Object). Đối tượng đơn giản chỉ là một file như file HTML, file ảnh JPEG, file ảnh GIF file java applet, một đoạn âm thanh… Đối tượng được xác định qua địa chỉ URL. Trang Web chứa một file HTML cơ sở và tham chiếu đến các đối tượng khác. Ví dụ một trang web chứa một tập tin HTML văn bản và 5 đối tượng ảnh JPEG khi đó trang web cỏ 6 đối tượng: 1 file văn bản HTML và 5 file ảnh. File HTML cơ sở này tham chiếu đến các đối tượng khác thông qua địa chỉ URL. Mỗi địa chỉ URL có hai thành phần là: tên của máy chủ và đường dẫn của đối tượng. Đây là một địa chỉ URL www.ptit.edu.vn/Portals/0/ptitlogo72.gif www.ptit.edu.vn là tên máy chủ và Portals/0/ptitlogo72.gif là đường đẫn đối tượng.

Trình duyệt (Browser) - chương trình giao tiếp người dùng của ứng dụng Web cho phép hiển thị trang Web. Browser là phía máy khách của giao thức HTTP. Hiện nay có rất nhiều phần mềm trình duyệt nhưng phổ biến nhất là Nestcape Communication và Microsoft Internet Explorer. Máy chủ web lưu giữ các đối tượng web và được xác định qua địa chỉ URL . Phần mềm Máy chủ web là phía máy chủ của giao thức HTTP. một số phần mềm Máy chủ web phổ biến là Apache, Microsoft Internet Information Máy chủ và Nestcape Enterprise Máy chủ.

HTTP xác định cách thức trình duyệt yêu cầu trang web từ web máy chủ cũng như cách thức máy chủ gửi trang web được yêu cầu tới trình duyệt. dưới đây chúng ta sẽ nói rõ hơn về quá trình trao đổi giữa máy khách và máy chủ. Hình 2.6 minh họa quá trình này. Khi người dùng yêu cầu một đối tượng (ví dụ kích vào một siêu liên kết), browser sẽ gửi một bản tin HTTP tới máy chủ yêu cầu đối tượng đó. Máy chủ nhận được yêu cầu và trả lời bằng cách gửi lại một thông điệp trả lời chứa đối tượng được yêu cầu.

Hình 3.2 tương tác máy khách/máy chủ

Cho tới những năm 1997, phần lớn các trình duyệt Web và Máy chủ web tuân thủ phiên bản HTTP 1.0 (đặc tả trong RFC 1945), từ năm 1998 một số trình duyệt và máy chủ web sử dụng phiên bản 1.1 theo khuyến nghị RFC 2616. Phiên bản mới này tương thích với phiên bản 1.0, nghĩa là Web máy chủ dùng phiên bản 1.1 có thể nói chuyện được với trình duyệt sử dụng phiên bản 1.0 và ngược lại cả phiên bản 1.0 và 1.1 đều sử dụng TCP làm giao thức ở tầng vận tải. HTTP máy khách khởi tạo một kết nối TCP tới HTTP máy chủ. Sau khi thiết lập được kết nối, cả tiến trình browser và Máy chủ web đều truy cập tới TCP thông qua socket.

Máy chủ nhận bản tin yêu cầu này và gửi bản tin trả lời qua socket. Sau khi gửi bản tin qua socket thì bản tin nằm ngoài tầm kiểm soát của máy khách và chính thực thể TCP chịu trách nhiệm chuyển nó sang phía bên kia. Giao thức TCP cung cấp dịch vụ truyền tin tin cậy cho HTTP, như vậy bản tin của tiến trình máy trạm sẽ được chuyển tải nguyên vẹn đến máy chủ và ngược lại. Giao

thức HTTP không giải quyết việc mất mát dữ liệu mà việc này là công việc của giao thức TCP.

Một điểm quan trọng là máy chủ gửi các đối tượng được yêu cầu cho máy khách mà không ghi lại bất kỳ một thông tin trạng thái nào của máy khách. Nếu máy khách nào đó yêu cầu lại cùng một đối tượng thì máy chủ sẽ không thể trả lời cho máy khách rằng đối tượng đó vừa được gửi cho máy khách, máy chủ sẽ gửi lại cho máy khách đối tượng đó như thể nó không biết việc gửi lần trước. HTTP máy chủ không nhớ các thông tin về máy khách, vì thế HTTP được gọi là giao thức không trạng thái.

Kết nối liên tục và không liên tục

HTTP hỗ trợ cả hai cách kết nối liên tục và không liên tục. HTTP 1.0 sử dụng kết nối không liên tục. Chế độ mặc định của HTTP 1.1 là kết nối liên tục.

Kết nối không liên tục

Giả sử trang web có chứa một tập tin HTML cơ sở và 10 file ảnh JPEG và đồng thời cả 11 đối tượng này cùng ở trên một máy chủ, địa chỉ của file HTML này là www.ptit.edu.vn/english/index.html, các bước thực hiện như sau:

1. HTTP máy khách khởi tạo một kết nối TCP tới máy chủ có địa chỉ là www.ptit.edu.vn. Cổng 80 là cổng được HTTP máy chủ sử dụng để “Lắng nghe” các yêu cầu lấy trang Web từ máy khách thông qua giao thức HTTP.

2. HTTP máy khách gửi bản tin yêu cầu qua socket tới thực thể TCP đã được kết nối ở bước trước. Thông điệp bao gồm đường dẫn english/index.html.

3. HTTP máy chủ nhận được bản tin yêu cầu từ socket, lấy đối tượng english/index.html trong bộ nhớ của mình (ổ cứng hoặc RAM), đặt đối tượng này vào trong một bản tin trả lời và gửi đi qua socket.

4. HTTP máy chủ yêu cầu thực thể TCP kết thúc kết nối (nhưng nó không đóng lại thực sự cho đến khi máy khách nhận được bản tin).

5. HTTP máy khách nhận được bản tin trả lời, kết nối được đóng lại. Bản tin chỉ ra rằng nó chứa một đối tượng là file HTML. Client sẽ lấy file đó ra từ bản tin trả lời. File HTML tham chiếu đến 10 đối tượng ảnh JPEG.

6. Bốn bước đầu được lặp lại cho mỗi đối tượng ảnh được tham chiếu trong file HTML.

Khi nhận được bản tin trả lời có chứa trang Web, browser sẽ hiển thị trang web. Các browser khác nhau thì có thể có các cách hiển thị khác nhau đối với cùng một trang web. HTTP không ảnh hưởng gì đối với cách hiển thị trang web của máy khách. Các đặc tả trong HTTP chỉ định nghĩa giao thức truyền thông giữa tiến trình máy khách và máy chủ mà thôi.

Các bước ở trên sử dụng cách kết nối không liên tục vì sau khi gửi đi một đối tượng thì máy chủ sẽ đóng kết nối TCP lại, kết nối không được sử dụng để lấy các đối tượng khác. lưu ý rằng mỗi kết nối TCP chuyển duy nhất một bản tin yêu cầu và một bản tin trả lời, như vậy trong ví dụ trên, máy khách yêu cầu toàn bộ đối tượng trên trang web thì sẽ có thể có tới 11 kết nối TCP được thiết lập.

Trong ví dụ trên, chúng ta không hề nói đến việc máy khách nhận được 10 file ảnh JPEG qua 10 liên kết TCP riêng rẽ hay một số file được nhận qua cùng một kết nối. Trên thực tế, người dùng có thể cấu hình cho trình duyệt điều khiển mức độ song song của các kết nối. Chế độ mặc định của trình duyệt thường là từ 5 đến 10 kết nối TCP song song và mỗi kết nối kiểm soát một cặp bản tin yêu cầu/trả lời. Nếu người dùng không thích thì có thể đặt số kết nối song song tối đa là 1, trong trường hợp này 10 kết nối được thiết lập riêng lẻ. Trong chương sau chúng ta sẽ thấy rằng cách kết nối song song làm giảm thời gian trả lời.

Kết nối liên tục:

Có một vài nhược điểm trong kết nối không liên tục: Thứ nhất, khi liên kết mới được tạo ra, phía máy khách và máy chủ phải tạo ra vùng đệm TCP (buffer) cũng như lưu giữ các biến TCP. Điều này chính là gánh nһng cho máy chủ khi có nhiều máy khách cùng yêu cầu một lúc.

Với cách kết nối liên tục, máy chủ không đóng liên kết TCP sau khi gửi bản tin trả lời. Các bản tin yêu cầu và trả lời sau đó (giữa cùng một máy khách và máy chủ) được gửi qua cùng một kết nối. Trong ví dụ trên, toàn bộ đối tượng trong trang Web (một file HTML và 10 file ảnh JPEG) được truyền nối tiếp nhau trên cùng một kết nối TCP. Ngoài ra, có thể các trang web khác trên cùng máy chủ có thể được truyền qua một kết nối TCP. Thông thường thì HTTP máy chủ đóng liên kết khi liên kết không được sử dụng trong một khoảng thời gian nào đó.

Chế độ làm việc mặc định của phiên bản HTTP 1.1 và gửi liên tục. Trong trường hợp này, HTTP máy khách gửi yêu cầu khi nó nhận được một tham chiếu (ví dụ một siêu liên kết, hay tham chiếu đến file ảnh) vì vậy máy khách có thể gửi các yêu cầu liên tiếp. Khi máy chủ nhận được yêu cầu thì nó sẽ gửi các đối tượng nối tiếp nhau.

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 43 - 46)