Cách máy chủ web hoạt động. Cách máy chủ web hoạt động

Mục đích của bài giảng:để xác định khái niệm "máy chủ web" và hình thành ý tưởng về hoạt động của cơ chế này.

Trong bài giảng trước, chúng ta đã tìm hiểu cách thức hoạt động của giao thức HTTP. Bây giờ chúng ta hãy xem xét cách hoạt động của các công cụ giúp cho các tương tác được mô tả trước đó trở nên khả thi. Hoạt động của các ứng dụng web dựa trên khái niệm như máy chủ web... Máy chủ web là một chương trình chấp nhận các yêu cầu HTTP đến, xử lý các yêu cầu đó, tạo phản hồi HTTP và gửi nó đến máy khách. Thuật toán chung của máy chủ web có thể được biểu diễn như sau (các hành động được xử lý bởi máy chủ web được đánh dấu bằng màu xanh lá cây).

Sau khi người dùng đã truy cập vào một tài nguyên cụ thể bằng giao thức HTTP, máy khách (thường là trình duyệt) thực hiện một yêu cầu HTTP đến máy chủ web. Thông thường tên máy chủ tượng trưng được chỉ định (ví dụ: "http://www.microsoft.com") - trong trường hợp này, trước tiên trình duyệt chuyển đổi tên này thành địa chỉ IP bằng dịch vụ DNS. Sau đó, thông điệp HTTP được tạo sẽ được gửi đến máy chủ web thông qua giao thức HTTP. Trong thông báo này, trình duyệt cho biết tài nguyên nào cần tải xuống và bất kỳ thông tin bổ sung nào. Công việc của máy chủ web là lắng nghe trên một cổng TCP cụ thể (thường là cổng 80) và chấp nhận tất cả các thông báo HTTP đến. Nếu dữ liệu đến không khớp với định dạng thông báo HTTP, thì yêu cầu sẽ bị bỏ qua và thông báo lỗi được trả lại cho máy khách.

Trong trường hợp đơn giản nhất, khi một yêu cầu HTTP đến, máy chủ web phải đọc nội dung của tệp được yêu cầu từ đĩa cứng, đóng gói nội dung của nó thành một phản hồi HTTP và gửi nó đến máy khách. Nếu tệp yêu cầu không được tìm thấy trên đĩa cứng, máy chủ web sẽ tạo ra lỗi cho biết mã trạng thái 404 và gửi thông báo này đến máy khách. Loại hoạt động của máy chủ web này thường được gọi là các trang tĩnh. Trong trường hợp này, không có mã nào được chạy trên phía máy chủ, ngoại trừ mã của chính máy chủ web. Tuy nhiên, các kịch bản như vậy ngày càng trở nên không phù hợp và chúng đang được thay thế bằng các ứng dụng web chính thức. Sự khác biệt giữa các ứng dụng này là tài liệu HTML và các tài nguyên khác không được lưu trữ trên máy chủ dưới dạng dữ liệu bất biến. Thay vào đó, máy chủ lưu trữ mã chương trình có khả năng tạo ra dữ liệu này tại thời điểm yêu cầu được xử lý. Tất nhiên, một số tài nguyên (chẳng hạn như tệp kiểu xếp tầng, hình ảnh, v.v.) có thể được lưu trữ dưới dạng nội dung tĩnh, nhưng các trang HTML chính được tạo ra trong quá trình xử lý. Trong trường hợp này, máy chủ web, khi xử lý yêu cầu HTTP, phải chuyển sang mã chương trình phải tạo nội dung. Theo quan điểm ở trên, thuật toán của máy chủ web sẽ như thế này.


Một trong những nhiệm vụ quan trọng nhất được giải quyết khi xây dựng máy chủ web là đảm bảo khả năng mở rộng (tức là khả năng tăng số lượng người dùng được phục vụ) và bảo vệ khỏi các cuộc tấn công từ bên ngoài. Vì máy chủ web hoạt động trong một môi trường mở - Internet toàn cầu - nó thường có thể được truy cập từ mọi nơi. Điều này làm cho máy chủ web dễ bị tải nặng và các cuộc tấn công tiềm ẩn. Các cuộc tấn công phổ biến nhất trên máy chủ web là yêu cầu máy chủ web có khối lượng lớn và tần suất cao. Trong trường hợp này, máy chủ web sẽ không thể nhanh chóng xử lý tất cả các yêu cầu và điều này có thể ảnh hưởng đến hiệu suất của máy chủ web đối với người dùng thực. Máy chủ web đặc biệt dễ bị tấn công như vậy, trong đó một số mã chương trình bên ngoài được thực thi, ngoại trừ mã chương trình của chính máy chủ web. Thông thường, để chống lại các cuộc tấn công như vậy, tất cả các yêu cầu đến từ một địa chỉ IP cụ thể đều bị chặn. Ngoài ra, trong những trường hợp như vậy, bạn nên quan tâm đến việc tối ưu hóa mã ứng dụng, chẳng hạn như sử dụng bộ nhớ đệm - trong trường hợp này, khi xử lý từng yêu cầu, tải trên bộ xử lý trung tâm sẽ ít hơn, điều này có thể làm phức tạp đáng kể nhiệm vụ cho những kẻ tấn công. .

Không có gì lạ khi nhiều trang web độc lập nằm trên cùng một máy chủ web. Hơn nữa, tất cả các trang web này đều sử dụng cùng một địa chỉ IP. Những thứ kia. một máy chủ web chỉ có một địa chỉ IP có thể lưu trữ một số trang web bên trong chính nó và mỗi trang web như vậy sẽ được liên kết với địa chỉ riêng của nó (ví dụ: một máy chủ web có thể lưu trữ các trang web: "microsoft.com", "gotdotnet.ru "," techdays.ru ", v.v.). Làm thế nào để điều này trở nên khả thi? Hiện tượng này được gọi là lưu trữ ảo... Để hiểu cách hoạt động của điều này, chúng ta hãy nhìn lại quá trình tương tác giữa máy khách và máy chủ. Trình duyệt gửi một yêu cầu HTTP đến địa chỉ IP của máy chủ web được liên kết với tên miền. Địa chỉ IP được phân giải bằng các dịch vụ DNS. Tuy nhiên, ngay cả khi yêu cầu được gửi bằng địa chỉ IP đã nhận, máy khách chỉ định một tiêu đề HTTP "Máy chủ lưu trữ" bổ sung chỉ định tên ban đầu của trang web. Nhờ thông tin này, máy chủ web có thể phân biệt quyền truy cập vào một số trang web và đồng thời sử dụng cùng một địa chỉ IP. Đây là một điểm rất quan trọng, bởi vì nếu bạn phải đăng ký một địa chỉ IP riêng cho từng tên miền, thì không gian địa chỉ IP (v.4) sẽ rất nhanh hết và chi phí lưu trữ một trang web trên Internet toàn cầu sẽ cao hơn nhiều. Để làm rõ hơn, chúng ta hãy xem xét hoạt động của shared hosting bằng cách sử dụng một ví dụ. Giả sử bạn có một máy chủ web với địa chỉ IP là 85.51.210.22. Máy chủ này lưu trữ một số trang web: mysite1.com, mysite2.com, mysite3.com. Máy chủ DNS được cấu hình để mỗi tên miền này trỏ đến một địa chỉ IP 85.51.219.22. Hãy xem trình duyệt sẽ tạo ra những yêu cầu HTTP nào khi truy cập từng trang web. Khi truy cập trang web "mysite1.com", yêu cầu HTTP có thể trông như thế này.


Khi truy cập trang "mysite2.com", yêu cầu HTTP sẽ trông khác.


Khi phân tích các yêu cầu HTTP, bạn có thể thấy rõ rằng tiêu đề HTTP "Máy chủ lưu trữ" là khác nhau trong mỗi yêu cầu. Do đó, rõ ràng là máy chủ web phân tích tiêu đề này và gửi nội dung của trang web tương ứng đến máy khách. Quá trình này có thể được biểu diễn bằng sơ đồ như sau.


Một chương trình lưu trữ chia sẻ tương tự được sử dụng bởi hầu hết các công ty lưu trữ các trang web trên Internet. Vì trong trường hợp này, một số lượng lớn các trang web hoàn toàn khác nhau có thể được lưu trữ trên một máy chủ vật lý, nên phương pháp này là một trong những phương pháp rẻ nhất. Tuy nhiên, trong khuôn khổ của lưu trữ chia sẻ, nó thường bị cấm chạy các dịch vụ và dịch vụ khác nhau, và cũng có một giới hạn về mức độ sử dụng CPU. Điều này có nghĩa là trong trường hợp trang web sử dụng quá nhiều tài nguyên máy chủ, chủ sở hữu trang web được đề nghị nâng cấp lên gói đắt hơn (với nhiều tài nguyên chuyên dụng hơn) hoặc nếu vượt quá ngưỡng chấp nhận được, trang web sẽ bị chặn trong một thời gian. . Vì đôi khi cần một lượng lớn tài nguyên từ máy chủ hoặc các ứng dụng hoặc dịch vụ bổ sung cần được khởi chạy trong máy chủ này, nên không phải lúc nào cũng có thể sử dụng dịch vụ lưu trữ được chia sẻ. Trong trường hợp này, họ thường thuê một máy chủ chuyên dụng - vật lý hoặc ảo. Tuy nhiên, đây là hình thức lưu trữ các ứng dụng web trên Internet đắt tiền hơn, vì vậy nó thường được sử dụng là shared hosting.

Như đã đề cập trước đó, kịch bản đơn giản nhất cho máy chủ web là nhận một yêu cầu HTTP, xử lý nó, đọc tệp mong muốn từ đĩa cứng, tạo phản hồi HTTP và gửi nó đến máy khách. Kịch bản này là đơn giản nhất, tuy nhiên, trên thực tế nó ngày càng ít phổ biến hơn. Thực tế là với cách tiếp cận này, nội dung được truyền đến máy khách là tĩnh (nghĩa là nó không thay đổi từ yêu cầu này sang yêu cầu khác). Tuy nhiên, nếu bạn muốn xây dựng một ứng dụng web, thì nội dung của trang HTML được chuyển đến máy khách phải thay đổi từ các điều kiện bên ngoài khác nhau (tham số truy vấn, nội dung cơ sở dữ liệu, thời gian xử lý yêu cầu, kiểu người dùng, v.v.). Trong trường hợp này, bạn cần chạy mã chương trình bên ngoài (đối với máy chủ web) để triển khai logic của ứng dụng web. Mã này phải được giữ riêng biệt với mã máy chủ web thực, vì mã ứng dụng sẽ khác với ứng dụng này sang ứng dụng khác và máy chủ web sẽ giống nhau. Do đó, mã chương trình xử lý các yêu cầu HTTP và tạo phản hồi HTTP có thể được chia thành hai phần:

  • mã chương trình thực hiện các chức năng dịch vụ để tương tác thông qua giao thức HTTP (mã chương trình của chính máy chủ web);
  • mã chương trình thực hiện logic của một ứng dụng web cụ thể (logic nghiệp vụ, quyền truy cập vào DBMS, v.v.).

Vì mã chương trình của ứng dụng web thường được đóng gói trong các mô-đun riêng biệt và phân phối độc lập, nên cần có các cơ chế tương tác của hai phần này, tức là giao diện tương tác... Trong trường hợp này, giao diện tương tác được hiểu là một tập hợp các quy tắc mà theo đó máy chủ web và ứng dụng sẽ tương tác với nhau. Trên thực tế, sơ đồ xử lý yêu cầu có thể giống như sau.


Trong lịch sử, có hai loại giao diện chính giữa ứng dụng bên ngoài và máy chủ web - CGI và ISAPI.

CGI(Giao diện cổng chung) - Cách tương tác sớm nhất giữa máy chủ web và ứng dụng web. Ý tưởng chính đằng sau CGI là khi yêu cầu HTTP tiếp theo đến, máy chủ web sẽ bắt đầu tạo một yêu cầu mới. tiến trình và chuyển tất cả dữ liệu yêu cầu HTTP cần thiết cho nó. Sau khi quá trình này hoàn thành, nó kết thúc, chuyển kết quả trở lại máy chủ web. Vì máy chủ web và ứng dụng là các quá trình khác nhau theo quan điểm của hệ điều hành, nên các phương tiện giao tiếp giữa các quá trình (IPC) được sử dụng để trao đổi thông tin giữa chúng - thường là các biến môi trường, các đường ống được đặt tên, v.v. Ưu điểm chính của CGI là quy trình máy chủ web và ứng dụng được cách ly với nhau và trong trường hợp xảy ra sự cố với ứng dụng web, quy trình ứng dụng sẽ bị lỗi, trong khi bản thân quy trình máy chủ web sẽ tiếp tục hoạt động.

Mặt khác, nhu cầu tạo quy trình mới mỗi lần kéo theo chi phí tạo quy trình bổ sung (tạo quy trình là một hoạt động tốn kém theo quan điểm của hệ điều hành) và truyền dữ liệu qua ranh giới quy trình. Thực tế đây là một nhược điểm nghiêm trọng và có tác động đáng kể đến khả năng mở rộng của ứng dụng web (khả năng xử lý một số lượng lớn hơn các yêu cầu gửi đến).

ISAPI(Internet Server API) - Một cách thay thế để giao tiếp giữa máy chủ web và ứng dụng web. Không giống như CGI, khi tương tác trong giao diện ISAPI, khi có yêu cầu tiếp theo, máy chủ web sẽ bắt đầu tạo lưu lượng như một phần của quy trình chính mà máy chủ web đang chạy. Vì theo quan điểm của hệ điều hành, việc tạo luồng ít tốn kém hơn so với việc tạo quy trình, các ứng dụng như vậy có khả năng mở rộng cao hơn trong thực tế. Ngoài ra, sự tương tác giữa máy chủ web và ứng dụng web được đơn giản hóa, vì trong trường hợp này, một không gian địa chỉ duy nhất được sử dụng trong hệ điều hành (vì tất cả mã chạy trong cùng một quy trình). Tuy nhiên, trong trường hợp xảy ra sự cố nghiêm trọng với ứng dụng web giao tiếp với máy chủ web theo ISAPI, máy chủ web cũng có nguy cơ bị chấm dứt hoạt động. Vì máy chủ web và ứng dụng web đang chạy trong cùng một quá trình, nên đây thực sự là trường hợp. Do đó, các nhà phát triển mã máy chủ web có khả năng ISAPI cần đặc biệt lưu ý đến vấn đề này.

Ngày nay, cách phổ biến nhất để máy chủ web tương tác với ứng dụng web là thông qua ISAPI vì nó cung cấp khả năng mở rộng và chi phí tối ưu nhất. Tuy nhiên, khi một số ứng dụng web đang chạy trên cùng một máy chủ web, trong trường hợp này có nguy cơ tiềm ẩn một ứng dụng ảnh hưởng đến ứng dụng khác. Nếu chúng ta nói về các công ty lưu trữ các ứng dụng web trên máy chủ của họ, thì có thể xảy ra trường hợp các trang web của các công ty cạnh tranh được lưu trữ đồng thời trên cùng một máy chủ web. Trong trường hợp này, về mặt lý thuyết, một trong các công ty có thể cố tình tải xuống mã sẽ kết thúc máy chủ web do lỗi và do đó, tất cả các trang web được lưu trữ trên máy chủ web này sẽ không thể truy cập được. Để tránh tình huống như vậy, một phương pháp kết hợp được sử dụng - đối với mỗi ứng dụng, một nhóm ứng dụng có thể được tạo, đây là một quá trình riêng biệt trong đó các luồng hoạt động để xử lý các yêu cầu HTTP đến từ người dùng. Trong trường hợp này, nếu bất kỳ ứng dụng nào chứa mã kết thúc quá trình bị lỗi, thì chỉ quá trình của ứng dụng này sẽ bị chấm dứt. Hơn nữa, mỗi nhóm ứng dụng chứa một tập hợp các chủ đề được tạo trước và chuẩn bị. Điều này là cần thiết để không mất thời gian tạo luồng khi có yêu cầu đến. Tập hợp các chủ đề được tạo trước này được gọi là hồ bơi chủ đề... Thông thường, máy chủ web giám sát từng nhóm ứng dụng và nếu nó thoát ra với lỗi, máy chủ web sẽ khởi động lại quy trình của nó.

Ngoài các chức năng và cơ chế trên của máy chủ web, các chức năng của nó thường bao gồm các nhiệm vụ bổ sung đi kèm. Các tác vụ này bao gồm xác thực và ủy quyền người dùng, duy trì nhật ký máy chủ (để gỡ lỗi máy chủ web), hỗ trợ nhiều trang web trên một máy chủ (lưu trữ ảo), hỗ trợ kết nối an toàn qua HTTPS,… Các chức năng này tùy thuộc vào từng trường hợp từ máy chủ web thực hiện.

Ngày nay có một số lượng lớn các triển khai máy chủ web khác nhau. Một trong những máy chủ web phổ biến và linh hoạt nhất là máy chủ web Apache mã nguồn mở. Nó được thiết kế để chạy trên Linux và cũng có một triển khai để chạy trên Windows. Nhiều biến thể khác đã được xây dựng trên cơ sở của nó, ví dụ, Apache Tomcat để chạy các ứng dụng web dựa trên Java. Sản phẩm quan trọng nhất khác trong lĩnh vực này là máy chủ web Microsoft Internet Information Services (IIS), chạy dưới hệ điều hành Windows. Thông thường, máy chủ web này chạy các ứng dụng ASP.NET (và các công nghệ liên quan) cũng như các ứng dụng PHP và các trang web tĩnh. Khi tạo các ứng dụng web dựa trên ASP.NET, chúng tôi sẽ sử dụng IIS 7. Cuối cùng, có các dự án khác, quy mô nhỏ hơn để phát triển máy chủ web, chẳng hạn như Nginx. Dự án này được phát triển bởi một trong những nhà phát triển Rambler với mục đích tối ưu hóa hiệu suất của công cụ tìm kiếm này. Sau đó, dự án thành công đến mức nó đã tìm thấy ứng dụng cho công việc trong các ứng dụng khác. Thông thường Nginx được sử dụng khi cần xây dựng cơ sở hạ tầng tải cao.

Bản tóm tắt ngắn gọn

Máy chủ web là một chương trình xử lý các yêu cầu HTTP đến và tạo các phản hồi HTTP. Trong trường hợp đơn giản nhất, máy chủ web chuyển đến máy khách nội dung của các tệp nằm trên đĩa cứng của máy chủ. Khi cần tạo phản hồi HTTP dựa trên một số logic lập trình, mã chương trình bên ngoài được đưa vào. Để kết nối mã chương trình bên ngoài, giao diện CGI và ISAPI được sử dụng. Hiện tại, hứa hẹn nhất là việc sử dụng giao diện ISAPI do khả năng mở rộng cao hơn. Trong máy chủ web, một nhóm ứng dụng được tạo (đối với mỗi ứng dụng web có một quy trình riêng trong hệ điều hành, bao gồm một số luồng để xử lý các yêu cầu). Có nhiều triển khai máy chủ web và các ứng dụng ASP.NET thường sử dụng máy chủ web Microsoft Internet Information Services (IIS).

Câu hỏi kiểm soát

  • Ứng dụng Web là gì?
  • Trình duyệt là gì?
  • Mô tả chu trình xử lý yêu cầu ứng dụng web từ máy khách.
  • Tại sao bạn cần các công nghệ phát triển ứng dụng web (chẳng hạn như ASP.NET, PHP, Ruby On Rails, v.v.).
  • Giao thức HTTP hoạt động như thế nào và nó dùng để làm gì?
  • Tiêu đề thư HTTP là gì và chúng dùng để làm gì?
  • Nội dung của một thông điệp HTTP là gì?
  • Các tiêu đề được phân tách như thế nào khỏi nội dung thư trong thông báo HTTP?
  • Phương thức yêu cầu HTTP là gì?
  • Mã trạng thái phản hồi HTTP là gì?
  • Cung cấp các ví dụ về tiêu đề yêu cầu HTTP và phản hồi HTTP.
  • Sự khác biệt giữa các thuật toán mã hóa đối xứng và không đối xứng là gì?
  • Giao thức HTTPS an toàn hoạt động như thế nào?
  • Một máy chủ web là gì?
  • Máy chủ web và ứng dụng web có thể tương tác trên cơ sở giao diện nào?
  • CGI khác với ISAPI như thế nào?
  • Hosting chia sẻ là gì?
  • Một nhóm ứng dụng là gì?
  • Các triển khai máy chủ web phổ biến nhất là gì?
  • Ứng dụng ASP.NET chạy trên máy chủ web nào?

Nếu bạn gõ vào thanh địa chỉ của trình duyệt http: //www.site/how-web-server-work/ và nhấn phím Enter, trang này của Trang web của chúng tôi sẽ xuất hiện trên màn hình.

Ở cấp độ cơ bản nhất, điều sau đã xảy ra: Trình duyệt của bạn đã hình thành kết nối với máy chủ Web, gửi yêu cầu nhận trang Web của trang và đã nhận được.

Bây giờ chi tiết hơn một chút:

Một URL có ba phần:

1. Giao thức (http)

2. Tên máy chủ (www.site)

3. Địa chỉ trang (cách thức hoạt động của web-máy chủ)

Trình duyệt liên hệ với máy chủ tên miền để dịch tên trang www.site sang địa chỉ IP mà nó sử dụng để kết nối với máy chủ. Sau đó, trình duyệt tạo kết nối với máy chủ Web tại địa chỉ IP được chỉ định trên cổng 80 hoặc bất kỳ cổng nào khác nếu có ý định như vậy (Chúng ta sẽ thảo luận về các cổng sau trong bài viết này).

Theo giao thức HTTP, trình duyệt đã gửi yêu cầu đến máy chủ yêu cầu tệp http: //www.site/how-web-server-work/

lưu ý rằng bánh quy cũng có thể được gửi từ trình duyệt đến máy chủ.

Đáp lại, máy chủ đã tạo trang web động và gửi lại văn bản HTML để hiển thị trang này trong trình duyệt của bạn. Cookie cũng có thể được gửi từ máy chủ đến trình duyệt trong tiêu đề trang. Trình duyệt đọc các thẻ HTML và hiển thị đầu ra của trang Web trên màn hình.

Internet

Vậy "Internet" là gì? Internet được đại diện bởi hàng trăm triệu máy tính được liên kết với nhau trong mạng máy tính... Mạng cho phép tất cả các máy tính giao tiếp với nhau. Máy tính gia đình có thể được kết nối với Internet bằng nhiều phương pháp và thiết bị khác nhau - bắt đầu với một modem sơ khai cho đường dây điện thoại, tải lên bằng kết nối mạng cục bộ ( LAN) với Nhà cung cấp dịch vụ Internet ( ISP).

Các ISP chính hỗ trợ liên kết cáp quang cho toàn bộ quốc gia hoặc khu vực. Các mạng đường trục được bố trí khắp nơi trên thế giới, được kết nối bằng các đường cáp quang, cáp ngầm hoặc các kênh vệ tinh. Do đó, mọi máy tính trên Internet đều được kết nối với bất kỳ máy tính nào khác trên Internet.

Khách hàng và Máy chủ

Nói chung, tất cả các máy tính trên Internet có thể được chia thành hai loại: máy chủ và máy khách. Máy tính cung cấp dịch vụ (chẳng hạn như máy chủ Web, máy chủ FTP, dịch vụ đám mây) cho các máy khác may chủ... Các máy được sử dụng để kết nối với các dịch vụ này - khách hàng... Khi bạn kết nối với Google để thực hiện truy vấn tìm kiếm hoặc sử dụng bất kỳ dịch vụ nào của Google, Google sẽ cung cấp máy tính của mình (có thể là cả một cụm máy tính mạnh) để phục vụ yêu cầu của bạn. Vì vậy, Google cung cấp một máy chủ. Xe của bạn cũng có thể cung cấp dịch vụ cho người nào đó trên Internet. Do đó, máy của người dùng thường là một máy khách, mặc dù nó cũng có thể trở thành một máy chủ, nếu cần.

Máy chủ có thể cung cấp một hoặc nhiều dịch vụ trên Internet. Ví dụ: một máy chủ có thể được cài đặt phần mềm cho phép nó hoạt động như một máy chủ Web, máy chủ e-mail và máy chủ FTP. Máy khách kết nối với máy chủ hướng các yêu cầu của họ đến phần mềm đặc biệt chạy trên máy chủ dùng chung. Ví dụ: nếu bạn đang sử dụng trình duyệt Web trên máy tính của mình, trình duyệt này sẽ "giao tiếp" với máy chủ Web trên máy chủ. Ứng dụng email của bạn sẽ "nói chuyện" với máy chủ email, v.v.

Các địa chỉ IP

Để kết nối tất cả các máy này với mạng, mỗi máy tính trên Internet có một địa chỉ duy nhất được gọi là địa chỉ IP... Địa chỉ IP điển hình trông giống như sau:

Bốn số trong địa chỉ IP được gọi là bộ tám vì chúng có thể nhận các giá trị từ 0 đến 255 hoặc 2 trong số 8 giá trị có thể có.

Mỗi máy tính trên Internet đều có địa chỉ IP duy nhất của riêng nó. Máy chủ có địa chỉ IP tĩnh hiếm khi thay đổi. Máy tính gia đình thường có địa chỉ IP do ISP chỉ định khi máy tính kết nối với nó. Địa chỉ IP này là duy nhất cho phiên này, nhưng có thể khác vào lần sau. Do đó, ISP chỉ cần một địa chỉ IP cho mỗi bộ định tuyến mà nó hỗ trợ, không cần cho mỗi máy khách.

Nếu bạn đang sử dụng máy Windows, bạn có thể xem nhiều thông tin về Internet trên máy tính của mình, bao gồm cả địa chỉ IP và tên máy chủ hiện tại của bạn, bằng cách sử dụng lệnh ipconfig... Trên máy UNIX, hãy nhập nslookup tại dòng lệnh để hiển thị địa chỉ IP của máy.

Tên miền

Bởi vì hầu hết mọi người gặp khó khăn trong việc nhớ dãy số tạo nên địa chỉ IP và bởi vì địa chỉ IP đôi khi cần phải thay đổi, tất cả các máy chủ và trang web trên Internet cũng có tên có thể đọc được của con người. Tên miền... Ví dụ: www .. Nó dễ nhớ hơn đối với hầu hết chúng ta www.site những gì cần nhớ 5.9.205.233

Tên www.site thực sự có ba phần:

1. Tên của World Wide Web (www). Trên thực tế, bạn có thể làm mà không cần chỉ định rõ ràng "www", mặc dù về mặt hình thức, nó sẽ là một mạng khác.

2. Tên miền (qriosity)

3. Trong vùng của miền cấp cao nhất (ru)

Tên miền chạy Công ty đăng ký tên miền... Nhà đăng ký tạo tên miền cấp cao nhất và đảm bảo rằng tất cả các tên trong miền cấp cao nhất của miền là duy nhất. Nhà đăng ký cũng cung cấp thông tin liên hệ cho từng tên miền và bắt đầu dịch vụ ai là cho biết chủ sở hữu của miền. Tên máy chủ do chủ sở hữu miền tạo.

Máy chủ định danh miền

Một tập hợp các máy chủ được gọi là máy chủ tên miền(DNS) ánh xạ các tên có thể đọc được của con người sang địa chỉ IP. Các máy chủ này chứa cơ sở dữ liệu đơn giản về tên và địa chỉ IP, và chúng được phân phối trên Internet. Hầu hết các công ty riêng lẻ, ISP và các trường đại học lớn đều hỗ trợ DNS nhỏ. Ngoài ra còn có các DNS trung tâm sử dụng dữ liệu do Nhà đăng ký tên miền cung cấp.

Khi bạn nhập URL http: //www..site, gửi đến máy chủ tên miền, máy chủ sẽ trả về địa chỉ IP chính xác cho www.site. Một số máy chủ định danh có thể tham gia vào việc lấy địa chỉ IP chính xác.

Vì vậy, để tóm tắt lại những gì chúng ta đọc được: Internet được tạo thành từ hàng triệu máy, mỗi máy có một địa chỉ IP duy nhất. Nhiều máy trong số này là may chủ.Điều này có nghĩa là họ cung cấp dịch vụ cho các máy tính khác trên Internet. Nhiều trong số các máy chủ này là máy chủ email, máy chủ Web, máy chủ FTP, máy chủ dịch vụ đám mây.

Các cổng

Bất kỳ máy chủ nào cũng cung cấp dịch vụ của nó qua Internet bằng cách sử dụng cổng, một cho mỗi dịch vụ có sẵn trên máy chủ. Ví dụ, có một máy chủ chạy một máy chủ Web và một máy chủ FTP. Máy chủ web thường sẽ có sẵn trên cổng 80 và máy chủ FTP sẽ có sẵn trên cổng 21. Khách hàng kết nối với dịch vụ tại một địa chỉ IP cụ thể và trên một cổng cụ thể.

Mỗi dịch vụ phổ biến nhất đều có sẵn trên một số cổng đã biết trước, nhưng bạn có thể chỉ định số cổng của riêng mình cho bất kỳ dịch vụ nào.

Nếu máy chủ chấp nhận các kết nối trên cổng từ thế giới bên ngoài và nếu tường lửa không bảo vệ các cổng, bạn có thể kết nối với cổng được xác định trước từ bất kỳ máy tính nào trên Internet và sử dụng dịch vụ. Lưu ý rằng không có gì buộc bạn phải giữ máy chủ Web trên cổng 80. Nếu bạn đã cài đặt máy chủ của mình và tải xuống phần mềm máy chủ Web trên đó, bạn có thể đặt máy chủ Web trên cổng 999 hoặc bất kỳ cổng nào khác không được sử dụng . Sau đó, nếu, ví dụ: máy của bạn được gọi là xxx.yyy.com, thì bạn có thể kết nối với nó từ URL http://xxx.yyy.com:999 -“: 999” chỉ rõ số cổng mà bạn có thể truy cập máy chủ Web của mình. Nếu không có cổng nào được chỉ định, thì trình duyệt chỉ đơn giản giả định rằng máy chủ Web có thể truy cập được thông qua cổng 80 nổi tiếng.

Các giao thức

Ngay sau khi khách hàng được kết nối với một dịch vụ trên một cổng nhất định, nó sẽ truy cập dịch vụ bằng cách sử dụng một giao thức. Giao thức Là một tập hợp các quy ước mức logic cho phép các chương trình trao đổi dữ liệu. Đối với công việc chung của các máy tính trên Internet, họ giao thức TCP / IP được sử dụng. Máy chủ web sử dụng giao thức HTTP.

Bổ sung: Bảo mật

Bạn có thể thấy từ mô tả này rằng Máy chủ Web là một phần mềm khá đơn giản. Nó lấy tên của tệp được gửi bằng lệnh GET, lấy tệp và gửi đến trình duyệt. Ngay cả khi tính đến tất cả các mã để xử lý các cổng, một chương trình máy chủ Web đơn giản không quá 500 dòng mã. Các máy chủ Web toàn diện phức tạp hơn, nhưng về cốt lõi thì chúng cũng rất đơn giản.

Hầu hết các máy chủ đều đặt một số mức Bảo vệđến các quy trình dịch vụ. Tùy chọn đơn giản nhất là yêu cầu tên người dùng và mật khẩu để có quyền truy cập vào máy chủ. Các máy chủ nâng cao hơn bổ sung thêm bảo mật bằng cách thiết lập giao tiếp được mã hóa giữa máy chủ và trình duyệt để thông tin nhạy cảm (chẳng hạn như số thẻ tín dụng) có thể được gửi qua Internet.

Đây thực sự là tất cả những gì một máy chủ web cần phục vụ tiêu chuẩn, trang web tĩnh... Trang tĩnh là các trang không thay đổi trừ khi chính quản trị viên web chỉnh sửa chúng.

Tùy chọn: Trang động

năng động trang web? Ví dụ:

1. Bất kỳ sổ lưu bút nào cũng cho phép bạn nhập thông báo ở dạng HTML và tự động hiển thị các mục nhập mới và cũ.

2. Bất kỳ công cụ tìm kiếm nào cũng cho phép bạn nhập các từ khóa ở dạng HTML của một yêu cầu, và sau đó nó tự động tạo một trang dựa trên tìm kiếm thông tin về các từ khóa này.

Trong tất cả các trường hợp này, máy chủ Web không chỉ là “tìm kiếm tệp”. Nó xử lý thông tin và tạo các trang tùy thuộc vào chi tiết cụ thể của các yêu cầu. Trong hầu hết các trường hợp, máy chủ Web sử dụng cái gọi là tập lệnh- mã chương trình được viết bằng PHP, Perl, Java và các ngôn ngữ lập trình khác để hoàn thành quá trình này.

Các trang của trang web của chúng tôi cũng rất động, được tạo bằng PHP sử dụng cơ sở dữ liệu MySQL.

Internet đã xâm nhập vào cuộc sống của chúng ta với tốc độ chóng mặt. Anh ấy đã thuần hóa tất cả mọi người với chính mình, quấn chặt mạng lưới của anh ấy và sẽ không để chúng tôi đi. Mỗi ngày lật qua hàng chục, hàng trăm trang của các trang web, ít ai nghĩ đến mạng Internet toàn cầu này là gì, nó hoạt động như thế nào, những thuật ngữ này hay những thuật ngữ đó nghĩa là gì. Hôm nay chúng ta sẽ nói về máy chủ web là gì, nó dùng để làm gì, nó thực hiện những chức năng gì.

Khái niệm máy chủ web có nghĩa là gì? Tập hợp các máy chủ web là xương sống của Internet. Nếu không có chúng, sẽ không có web trên toàn thế giới. Người dùng chỉ đơn giản là sẽ không thể giao tiếp với nhau, tìm thông tin họ cần, bắt đầu và duy trì các trang web và blog của họ. Máy chủ web có thể là máy tính hoặc các chương trình đặc biệt đóng vai trò máy chủ.

Các chức năng của máy chủ web

Nhiệm vụ chính của máy chủ web là nhận các yêu cầu HTTP từ người dùng, xử lý và dịch chúng thành mã máy tính kỹ thuật số. Sau đó, đưa ra các phản hồi HTTP, chuyển đổi chúng từ hàng triệu số không và số một thành hình ảnh, luồng phương tiện, chữ cái, trang HTML.

Bất kỳ máy chủ web nào, để thuận tiện cho người sử dụng, phải có một trình duyệt web thuận tiện. Nó gửi yêu cầu đến máy chủ web, được chuyển đổi thành URL của tài nguyên Internet.

Cùng với các chức năng tiêu chuẩn, một số máy chủ web có các chức năng bổ sung. Vì vậy, ví dụ, phần mềm tương ứng có thể ghi lại số lượng yêu cầu của người dùng đối với một tài nguyên cụ thể, ghi lại chúng trong một nhật ký riêng biệt. Chúng cũng có thể hỗ trợ HTTPS, điều quan trọng đối với kết nối an toàn giữa các trang web và người dùng. Thường thì máy chủ web được cài đặt cùng với máy chủ thư. Điều này cho phép người dùng nhanh chóng truy cập trang thư trực tiếp từ trang web chỉ bằng cách nhấp vào một siêu liên kết.

Máy chủ web dùng để làm gì?

Như đã thấy rõ ở trên, tất cả những người sử dụng Internet để trao đổi thông tin đều cần một máy chủ web. Tuy nhiên, nhìn chung không phải là một người phải giải quyết nó, mà là các chương trình và thiết bị. Ví dụ, các chương trình chống vi-rút thường yêu cầu máy chủ tìm kiếm trên mạng và cập nhật cơ sở dữ liệu của chúng. Điện thoại di động, TV và các thiết bị khác có quyền truy cập Internet đang tích cực hợp tác với các máy chủ web. Trong trường hợp này, các chương trình có thể được cấu hình để cập nhật tự động. Sau đó, sự tham gia của người dùng trong quá trình này thực tế sẽ không cần thiết. Tuy nhiên, một số cơ sở dữ liệu cập nhật vẫn được bạn kiểm soát tốt hơn.

Máy chủ web nổi tiếng nhất

Các máy chủ web nổi tiếng và phổ biến nhất là Microsoft IIS và Apache. Phổ biến nhất trong số này là Apache. Phần mềm của nó được hơn 60% trong số tất cả các phần mềm hiện có sử dụng. Điều này phần lớn có thể thực hiện được là do Apache miễn phí. Các nhà phát triển liên tục phân tích các lỗi trong sản phẩm của họ và sửa chữa chúng. Nhược điểm của chương trình là nói chung, nó dành cho các lập trình viên chuyên nghiệp và người dùng, vì vậy việc bảo trì và cấu hình nó khá khó khăn.

Mặt khác, Microsoft tìm cách làm cho máy chủ web IIS của mình có thể truy cập được đối với người dùng bình thường. Tất cả các cài đặt của nó có thể được thực hiện mà không cần các chuyên gia. Rất có thể chương trình này sẽ bắt kịp đối thủ cùng tên Ấn Độ về số lượng người dùng.

Cả Apache và IIS đều hoạt động tốt với nhiều hệ điều hành, chẳng hạn như Mac OS, Linux, các sửa đổi khác nhau của Microsoft Windows và nhiều hệ điều hành khác. Hai máy chủ web này hoạt động ổn định, tốc độ tốt, có thể kết nối thêm các mô-đun bổ sung với chúng.

máy chủ web (máy chủ web) Là một máy chủ chịu trách nhiệm nhận và xử lý các yêu cầu (HTTP request) từ các máy khách đến một trang web. Các máy khách thường là các trình duyệt web khác nhau. Đáp lại, máy chủ web đưa ra phản hồi HTTP cho máy khách, trong hầu hết các trường hợp - cùng với một trang HTML, có thể chứa: tất cả các loại tệp, hình ảnh, luồng phương tiện hoặc bất kỳ dữ liệu nào khác.

Máy chủ web cũng thực hiện chức năng thực thi các tập lệnh như CGI, JSP, ASP và PHP, chịu trách nhiệm tổ chức các yêu cầu đến dịch vụ mạng, cơ sở dữ liệu, truy cập tệp, chuyển tiếp email và các ứng dụng thương mại điện tử khác.

Thuật ngữ “máy chủ web” cũng được áp dụng cho các thiết bị kỹ thuật và phần mềm hoạt động như một máy chủ web. Nó có thể là bất kỳ máy tính nào được chọn đặc biệt từ nhóm máy tính cá nhân hoặc máy trạm mà phần mềm dịch vụ được cài đặt và chạy trên đó.

Máy khách của người dùng, chủ yếu là một trình duyệt web, gửi yêu cầu đến máy chủ web đối với các tài nguyên được chỉ định bởi URL. Tài nguyên là các trang HTML, nội dung phương tiện kỹ thuật số, luồng phương tiện, các hình ảnh khác nhau, tệp dữ liệu hoặc bất kỳ dữ liệu nào khác theo yêu cầu của khách hàng. Đáp lại, máy chủ web gửi dữ liệu được yêu cầu đến máy khách. Việc trao đổi này diễn ra bằng giao thức HTTP.

HTTP (HyperText Transfer Protocol) là một giao thức mạng cấp ứng dụng để truyền dữ liệu. Nguyên tắc cơ bản của giao thức HTTP là công nghệ máy khách-máy chủ, đảm bảo sự tương tác giữa mạng và người dùng.

Trong trường hợp là một tổ chức nhỏ, máy chủ web có thể là một hệ thống tích hợp, bao gồm: Máy chủ HTTP - phục vụ cho các yêu cầu đến các trang web; Máy chủ FTP - được sử dụng để tải tệp lên qua Internet; NNTP Server - cung cấp quyền truy cập vào các nhóm tin; Máy chủ SMTP - dành cho email.

Môn lịch sử

Nhà khoa học người Anh Tim Berners-Lee được coi là người phát minh ra máy chủ web đầu tiên. Làm việc từ năm 1980 tại Phòng thí nghiệm Châu Âu về Nghiên cứu Hạt nhân (FR. Conseil Européen pour la Recherche Nucléaire, CERN) với tư cách là cố vấn phần mềm, ông bắt đầu phát triển. Tại Geneva, vì nhu cầu của riêng mình, ông đã phát triển chương trình Inquire, sử dụng các liên kết ngẫu nhiên để lưu trữ dữ liệu và đặt nền tảng cho World Wide Web.

Năm 1989, Tim Berners-Lee, làm việc trên mạng nội bộ của tổ chức CERN và đề xuất thành lập một dự án siêu văn bản toàn cầu, bao gồm việc xuất bản các tài liệu siêu văn bản được liên kết bởi các siêu liên kết. Theo ông, việc thực hiện dự án này sẽ tạo điều kiện tích hợp, tìm kiếm và trao đổi thông tin cho các nhà khoa học của CERN. Để thực hiện dự án, Tim Berners-Lee và nhóm của ông đã phát minh ra URI và URL, giao thức HTTP và HTML. Tất cả những công nghệ này hiện đang được sử dụng rộng rãi trong Internet hiện đại, và bạn không thể thiếu chúng.


Kết quả của dự án này, Berners-Lee đã phát triển máy chủ web đầu tiên trên thế giới, được gọi là "httpd," và trình duyệt web siêu văn bản đầu tiên trên thế giới dành cho máy tính NeXT, được gọi là WorldWideWeb.

Trình duyệt web đầu tiên chạy trên nền tảng NeXTSTEP, một hệ điều hành đa nhiệm, hướng đối tượng, và được phát triển bằng cách sử dụng Interface Builder. Giao diện trình duyệt web rất đơn giản và hầu như tất cả thông tin đều được hiển thị dưới dạng văn bản chỉ với một vài hình ảnh. Ngoài giao thức FTP tiêu chuẩn, Tim Berners-Lee đã sử dụng một giao thức mới do ông phát minh ra, HTTP. Từ năm 1991 đến 1993, Berners-Lee đã tinh chỉnh các đặc tính kỹ thuật của những phát triển mới của mình: URI và URL, HTTP và HTML, và xuất bản chúng. Sau đó, trình duyệt web được đổi tên thành "Nexus" để tránh nhầm lẫn với tên của hệ điều hành mà trình duyệt được phát triển và tên của nó.

Máy chủ web đầu tiên trên thế giới và trình duyệt web đầu tiên chạy trên máy tính cá nhân NeXTSTEP; máy tính này hiện được trưng bày tại Bảo tàng CERN (Microcosm).

Tim Berners-Lee lưu trữ trang web đầu tiên trên thế giới tại http://info.cern.ch; trang web này hiện đã được lưu trữ. Trang web đầu tiên xuất hiện trên Internet vào ngày 6 tháng 8 năm 1991. Trang web này đã được cung cấp:

  • mô tả của World Wide Web;
  • hướng dẫn cài đặt chính xác máy chủ web;
  • thông tin về cách mua trình duyệt web;
  • thông tin kỹ thuật khác.

Trang web này cũng là thư mục trực tuyến đầu tiên trên thế giới. Berners-Lee đã đăng một danh sách các liên kết đến các trang khác trên đó và cập nhật nó thường xuyên.

Vào ngày 12 tháng 12 năm 1991, máy chủ web đầu tiên trên thế giới đã được cài đặt tại Trung tâm Máy gia tốc tuyến tính Stanford (SLAC) ở Hoa Kỳ.

Các chức năng cơ bản và bổ sung

Tất cả các chức năng cơ bản và bổ sung của máy chủ web:

  • Nhận yêu cầu từ trình duyệt web qua tiêu chuẩn HTTP bằng giao thức mạng TCP / IP;
  • Tìm kiếm và gửi các tệp có siêu văn bản hoặc bất kỳ tài liệu nào tới trình duyệt thông qua giao thức HTTP;
  • Phục vụ và xử lý các yêu cầu, chẳng hạn như: mailto, FTP, Telnet, v.v.;
  • Khởi chạy các chương trình ứng dụng trên máy chủ web với việc chuyển và trả lại các thông số xử lý tiếp theo thông qua tiêu chuẩn giao diện CGI;
  • Vận hành và bảo trì Bản đồ hình ảnh;
  • Quản trị điều hành và vận hành máy chủ;
  • Ủy quyền và xác thực người dùng;
  • Lưu giữ nhật ký các yêu cầu của người dùng đến các tài nguyên khác nhau;
  • Công việc tự động của các trang web;
  • Hỗ trợ cho các trang được tạo động;
  • Hỗ trợ giao thức HTTPS để kết nối an toàn với máy khách.

Mô tả hoạt động của máy chủ web

Trình duyệt web giao tiếp với máy chủ web bằng HypertextTransferProtocol (HTTP). Nó là một giao thức yêu cầu và phản hồi đơn giản để truyền thông tin bằng giao thức TCP / IP. Máy chủ web nhận yêu cầu, tìm tệp, gửi tệp đến trình duyệt, sau đó ngắt kết nối. Thông tin đồ họa trên trang được xử lý theo cách tương tự. Sau đó, đến lượt trình duyệt web hiển thị tài liệu HTML được tải xuống từ mạng trên màn hình của người dùng.

Ngoài các trang HTML và đồ họa, máy chủ web có thể lưu trữ bất kỳ loại tệp nào, bao gồm tài liệu văn bản, tài liệu trình xử lý văn bản, tệp video và thông tin âm thanh. Ngày nay, nếu bạn không tính đến các bảng câu hỏi mà người dùng điền vào, thì hầu hết lưu lượng truy cập web được truyền theo một hướng - các trình duyệt đọc tệp từ máy chủ web. Nhưng điều đó sẽ thay đổi với việc áp dụng chung phương thức PUT được mô tả trong bản nháp HTTP 1.1, cho phép các tệp được ghi vào máy chủ web. Ngày nay, phương pháp PUT được sử dụng chủ yếu bởi những người dùng tạo trang web, nhưng trong tương lai, nó có thể hữu ích cho những người dùng khác cũng như cho phản hồi từ các trung tâm thông tin. Yêu cầu PUT dễ dàng hơn nhiều so với POST tải tệp lên máy chủ web.

Các ứng dụng khác nhau cũng thực hiện công việc của chúng trên máy chủ web, trong đó phổ biến nhất là các công cụ tìm kiếm và phương tiện giao tiếp với cơ sở dữ liệu. Các tiêu chuẩn như CommonGatewayInterface (CGI), ngôn ngữ kịch bản JavaScript và ngôn ngữ lập trình Java và VisualBasic được sử dụng để phát triển các ứng dụng này. Ngoài tiêu chuẩn CGI, một số nhà cung cấp máy chủ web đã phát triển giao diện lập trình ứng dụng (API), chẳng hạn như API máy chủ Netscape và API máy chủ Internet, được tạo bởi Microsoft và Process Software AG. Các giao diện này cho phép các nhà phát triển truy cập trực tiếp vào chức năng máy chủ web cụ thể. Một số máy chủ web có phần mềm trung gian để kết nối với cơ sở dữ liệu, phần mềm này có thể yêu cầu kiến ​​thức lập trình chuyên nghiệp.

Các chức năng tìm kiếm cơ bản giúp người dùng sắp xếp thông tin họ muốn, trong khi các tiện ích liên kết cơ sở dữ liệu cung cấp cho người dùng trình duyệt web quyền truy cập vào thông tin đó.

Tổng quan về máy chủ web

Các tiêu chí để lựa chọn một máy chủ web có thể là các đặc điểm khác nhau: cài đặt, cấu hình, quản lý máy chủ, quản trị, quản lý thông tin được lưu trữ trên máy chủ, bảo vệ thông tin này, kiểm soát truy cập, chức năng phát triển ứng dụng và hiệu suất.

Hầu hết các máy chủ web đều nhanh chóng và dễ cài đặt.

Phần khó nhất của quá trình cài đặt là cấu hình nhiều tên miền trên một thiết bị vật lý, hay nói cách khác là thiết lập các máy chủ ảo.

Máy chủ web có các công cụ để quản lý mô-đun thông tin đặc trưng cho tổ chức tổng thể của trang web và chúng cũng có các công cụ để kiểm tra tính đúng đắn của các liên kết siêu văn bản bên trong và bên ngoài. Gói LiveWire của Netscape Communications, đi kèm với Novell Open Enterprise Server (OES) và có sẵn tùy chọn với FastTrack Server, bao gồm một tiện ích quản lý máy chủ lưu trữ liệt kê tất cả các liên kết trên một trang đã chọn. Tiện ích này cũng cung cấp một danh sách chung về tất cả các liên kết xấu mà nó phát hiện được. O "WebView của Reilly & Associates có chức năng tương tự và có thể hiển thị một cây tệp chi tiết với tất cả các liên kết không hợp lệ được đánh dấu màu đỏ.

Ngoài ra còn có các công cụ cơ bản để quản lý nội dung. Người quản trị web phải chọn nơi lưu trữ tệp và cách thức chúng sẽ được người dùng truy cập vào máy chủ web truy cập. Điều này yêu cầu ánh xạ các URL logic tới các thư mục tệp vật lý. Mỗi phần mềm thực hiện thao tác này theo cách riêng của nó.

Với sự phổ biến ngày càng tăng của các máy chủ web và việc sử dụng chúng ngày càng rộng rãi trên các mạng nội bộ, hoạt động thương mại trên Internet ngày càng tăng, do đó tầm quan trọng của việc bảo vệ thông tin ngày càng tăng. Thường xuyên hơn không, hệ thống bảo mật máy chủ web thừa hoặc không đủ cho các mạng nội bộ hiện đại. Nếu bạn cần hạn chế quyền truy cập vào một số thông tin nhất định trong công ty, nghĩa là lựa chọn giữa việc sử dụng mật khẩu không được mã hóa được truyền qua các kênh liên lạc và sử dụng giao thức SSL (English Secure Sockets Layer) - một phương pháp phức tạp và chậm được sử dụng để mã hóa mật khẩu và dữ liệu.

Để tổ chức công việc của người dùng cá nhân và nhóm của họ, các ứng dụng máy chủ nội bộ hoặc các chức năng nhất định của hệ điều hành có thể được sử dụng. Để tổ chức công việc của người dùng cá nhân và nhóm của họ, các ứng dụng máy chủ nội bộ hoặc các chức năng nhất định của hệ điều hành có thể được sử dụng. Microsoft IIS Batch Service sử dụng các công cụ từ hệ điều hành mạng Windows NT cơ bản.

NetWare Web Server của Novell, Inc. được tích hợp hoàn toàn với Dịch vụ Thư mục NetWare (NDS). Yêu cầu người dùng làm việc từ một trung tâm chung là thuận tiện, nhưng nó có thể gây ra rủi ro về bảo mật. Mật khẩu được phân phối không được mã hóa thông qua các kênh liên lạc, và nếu bị chặn, không chỉ máy chủ web mà cả an ninh của toàn bộ hệ điều hành mạng cũng gặp nguy hiểm.

Phát triển ứng dụng là một trong những chức năng cốt lõi của máy chủ web. Môi trường phát triển ứng dụng và các công cụ kết nối cơ sở dữ liệu là rất quan trọng để mở rộng khả năng của máy chủ web, vì việc phát triển ứng dụng phụ thuộc vào các chi tiết đặc biệt khác nhau của giao diện lập trình ứng dụng (API), cũng như các đặc thù của ngôn ngữ lập trình hoặc cá nhân. sở thích của người lập trình.

Máy chủ Web có thể phục vụ nhiều hệ thống khác nhau từ mạng nội bộ doanh nghiệp nhỏ đến các trung tâm dữ liệu Web lớn được hàng triệu người sử dụng.

Đối với mạng nội bộ công ty nhỏ, gói Máy chủ Thông tin Internet (IIS) do Microsoft tạo và phân phối là lựa chọn tốt nhất. IIS được phân biệt bởi cài đặt khá đơn giản và cài đặt cấu hình đơn giản. Gói máy chủ web này tích hợp liền mạch với các điều khiển truy cập, Trình theo dõi hiệu suất và Trình xem sự kiện. Máy chủ web IIS cũng cung cấp một số công cụ để chuyển động thông tin từ cơ sở dữ liệu. IIS rất nhanh. Các thành phần IIS hỗ trợ các giao thức như: HTTP, HTTPS, FTP, NNTP, SMTP, POP3.

Để tạo điều kiện thuận lợi cho việc tạo ra các trung tâm thông tin web, hầu hết các máy chủ web đều đi kèm với các tiện ích và công cụ để quản lý nội dung. Ngoài trình chỉnh sửa HTML và trình chuyển đổi định dạng tài liệu, hữu ích nhất là các điều khiển URL, đảm bảo rằng tất cả các liên kết siêu văn bản trong trang web của bạn đều hoạt động.

Bất kỳ máy tính cá nhân nào được kết nối với Internet đều có thể trở thành máy chủ web nếu bạn cài đặt phần mềm máy chủ đặc biệt trên đó.

Các máy chủ web phổ biến nhất là Apache (của Apache Software Foundation), IIS (của Microsoft) và máy chủ iPlanet (của Sun Microsystems và Netscape Communications Corporation). Hiện nay trên thị trường phần mềm máy chủ web, có rất nhiều lựa chọn sản phẩm, cả thương mại và miễn phí.

Một trong những máy chủ web phổ biến nhất là Apache của Apache Software Foundation. Nó ước tính được sử dụng trên 65% tất cả các máy chủ web trên thế giới. Một trong những điểm mạnh chính của phần mềm Apache là phân phối miễn phí. Các nhà phát triển thường xuyên sửa các lỗi được tìm thấy và hỗ trợ người dùng tốt. Máy chủ web này hỗ trợ một số lượng lớn các mô-đun, tiện ích và tiện ích bổ sung. Vì ngay từ đầu Apache đã được phát triển như một phần mềm dành cho quản trị viên và người dùng cao cấp, nên có một nhược điểm - sự phức tạp của việc thiết lập và bảo trì đối với các quản trị viên web thiếu kinh nghiệm.

Tiếp theo là máy chủ web IIS của Microsoft. Theo Netcraft, máy chủ web IIS chiếm 12,46% tổng số máy chủ web. Sản phẩm này là một phần của dòng phần mềm máy chủ Windows NT. Ưu điểm chính của nó là tính ổn định, tốc độ hoạt động cao, khả năng kết nối các mô-đun bổ sung. Microsoft cố gắng đảm bảo rằng bất kỳ người dùng nào cũng có thể sử dụng các sản phẩm của hãng mà không cần sự trợ giúp của các chuyên gia, nếu họ cần giải quyết các vấn đề chung. Do đó, IIS rất dễ cài đặt, cấu hình và bảo trì. Máy chủ web hỗ trợ công nghệ .NET, công nghệ này gần đây đã trở nên phổ biến đối với các nhà phát triển và người dùng chuyên nghiệp. Những ưu điểm này đưa máy chủ web IIS lên một tầm cao mới và bạn có thể mong đợi việc sử dụng nó sẽ tăng lên.

Các máy chủ web đáng chú ý khác:

  • nginx là một máy chủ web miễn phí và máy chủ proxy thư được phát triển bởi Igor Sysoev. Máy chủ đơn giản, nhanh chóng và đáng tin cậy. Hoạt động trên Linux và các hệ điều hành giống Unix khác, cũng như Windows. Phổ biến trên các trang web lớn;
  • lighttpd- máy chủ web miễn phí. Lập trình viên Jan Knieszke. Máy chủ web nhanh và an toàn. Hoạt động trên Linux và các hệ điều hành giống Unix khác, cũng như Windows;
  • Máy chủ web của Google- một máy chủ web dựa trên Apache và được Google sử dụng để tổ chức cơ sở hạ tầng web của nó;
  • Nhựa là một máy chủ web và máy chủ ứng dụng miễn phí cho Java. Được phát triển bởi Caucho Technology Inc .;
  • Cherokee là một máy chủ web miễn phí chỉ được quản lý thông qua giao diện web. Được viết bằng ngôn ngữ lập trình C;
  • Gốc rễ là một máy chủ web được viết bằng ngôn ngữ lập trình Java. Hoạt động trên Linux và Windows;
  • THTTPD- Máy chủ web đơn giản, nhỏ, nhanh và an toàn. Được phát triển bởi ACME Labs Software.

Khách hàng Máy chủ Web

Thông thường, máy khách là một trình duyệt web. Nhưng nhiều thiết bị và chương trình khác cũng có thể truy cập vào máy chủ web:

  • Trình duyệt web được cài đặt trên máy tính cá nhân cố định;
  • Trình duyệt web được cài đặt trên PDA hoặc thiết bị di động khác;
  • Điện thoại di động và điện thoại thông minh, với sự trợ giúp mà người dùng có thể truy cập vào các tài nguyên của máy chủ web thông qua giao thức WAP;
  • Nhiều chương trình khác nhau có thể tự truy cập vào máy chủ web để cập nhật hoặc lấy thông tin khác. Một ví dụ là các chương trình diệt vi rút khác nhau thường xuyên liên hệ với máy chủ web để cập nhật cơ sở dữ liệu;
  • Nhiều thiết bị kỹ thuật số khác nhau, cũng như một số thiết bị gia dụng.

Trong bài viết đầu tiên, tôi muốn đề cập đến chủ đề này một chút, vì điều rất quan trọng là phải biết cơ chế hoạt động của công cụ (trong trường hợp của chúng tôi là máy chủ web) thực hiện hoạt động của trang web của chúng tôi. Chúng tôi đang lý tưởng hóa máy chủ web một chút, bỏ qua một số sắc thái kỹ thuật tinh tế để giúp dễ dàng nắm bắt bản chất hơn. Tôi sẽ cố gắng mô tả nó đơn giản và dễ tiếp cận nhất có thể :)

Tôi nhớ rất lâu trước đây tôi đã nghĩ rằng Internet tập trung tại một nơi, đại diện cho một cái gì đó giống như một phòng thí nghiệm, nơi có một số lượng lớn các thiết bị, hỗ trợ công việc của tất cả những điều này. Sau đó, tôi không thể ước tính quy mô của Mạng toàn cầu và mức độ phức tạp của cấu trúc của nó. Trên thực tế, Internet là một khái niệm trừu tượng; các tài nguyên Internet nằm rải rác trên các thiết bị trên toàn thế giới. Để giao tiếp thiết bị này với nhau ở khoảng cách rất xa, các thuật toán và tiêu chuẩn đặc biệt đã được phát minh, cụ thể là Giao thức TCP / IP mà Internet của chúng tôi hiện đang hoạt động. Theo tiêu chuẩn này, mỗi máy tính nằm trong mạng toàn cầu có địa chỉ duy nhất của riêng nó - địa chỉ IP... Địa chỉ IP là một chuỗi bốn số, từ 0 đến 255, được phân tách bằng dấu chấm (ví dụ: 92.166.31.18). Một máy tính có thể giao tiếp với một máy tính khác trên mạng khi biết địa chỉ IP của nó. Nhưng để nói "máy tính giao tiếp với máy tính" thì không hoàn toàn đúng, vì bản thân các máy tính không giao tiếp mà là các dịch vụ mạng (chương trình, nếu bạn muốn) chạy trên chúng. Giả sử bạn đang gửi e-mail cho ông của mình và bưu phẩm của bạn liên hệ với máy chủ thư để gửi thư.

Một số chương trình mạng có thể chạy trên máy tính cùng một lúc, do đó, ngoài địa chỉ IP để giao tiếp với giao thức TCP / IP, một khái niệm bổ sung được cung cấp như Hải cảng... Cổng là một số trong phạm vi từ 1 đến 65536. Vì vậy, điều kiện tối thiểu để một chương trình mạng giao tiếp với chương trình mạng khác là chương trình mạng đầu tiên có địa chỉ IP và số cổng thứ hai. Thông thường, viết kết hợp địa chỉ IP và cổng được phân tách bằng dấu hai chấm (ví dụ: 192.168.35.2:443).

Để thiết lập kết nối, chương trình đầu tiên được cấp số cổng và chương trình bắt đầu "chờ" chương trình thứ hai kết nối. Chương trình thứ hai được cung cấp cùng số cổng và địa chỉ IP của máy tính mà chương trình đầu tiên đang chạy. Sự kết nối giữa hai chương trình giống như một cuộc gọi điện thoại di động: Vasya gọi cho Petya, Petya nhấc máy và cuộc trò chuyện bắt đầu. Trong trường hợp này, số điện thoại là sự kết hợp của địa chỉ IP và số cổng trong trường hợp của chúng tôi.

Chương trình đang chờ kết nối được gọi là người phục vụ... Số cổng được chỉ định cho máy chủ khi khởi động, nó thường được nói: "máy chủ đang lắng nghe trên cổng". Nhiều máy chủ có cùng số cổng không thể chạy trên một máy tính (nếu không sẽ không thể xác định máy chủ nào sẽ kết nối với). Chương trình kết nối với máy chủ được gọi là khách hàng... Máy khách không phải tuân theo giới hạn này (ví dụ: bạn có thể chạy hai máy khách Jabber). Ngoài ra, một số máy khách từ các máy tính khác nhau có thể kết nối với máy chủ nếu bản thân máy chủ hỗ trợ nó.

Bây giờ, trên cơ sở kiến ​​thức bề ngoài này, chúng ta hãy định nghĩa thế nào là máy chủ web... Đầu tiên, như tên cho thấy, nó là một chương trình mạng chờ và chấp nhận các kết nối (máy chủ). Theo mặc định, máy chủ web "lắng nghe" trên cổng 80. Máy chủ web hỗ trợ làm việc đồng thời với một số máy khách (nhiều người có thể xem trang web cùng một lúc). Máy khách cho máy chủ web là trình duyệt web(Internet Explorer, Opera, v.v.).

Do đó, trang web hoạt động dựa trên chi phí của máy chủ web, máy chủ này sẽ gửi các trang của trang web này đến khách hàng yêu cầu chúng từ anh ta. Để yêu cầu một trang, bạn cần biết địa chỉ IP của máy tính đang chạy máy chủ web với trang mà chúng ta cần. Nhưng việc ghi nhớ địa chỉ IP là không thuận tiện, vì vậy họ đã nghĩ ra tên miền là một loại thực thể văn bản (ví dụ: yandex.ru). Rõ ràng, tên miền dễ hiểu và dễ nhớ hơn. Tuy nhiên, TCP / IP không thể tìm thấy máy tính cần thiết theo tên miền của nó, vì vậy nó phải được phân giải thành địa chỉ IP. Vì mục đích này, các máy chủ DNS được sử dụng, trên đó đặt các bảng tương ứng giữa tên miền và địa chỉ IP. Giả sử, khi chúng ta nhập tên miền yandex.ru vào thanh địa chỉ của trình duyệt, trước hết, một yêu cầu được gửi đến máy chủ DNS để xác định địa chỉ IP của tên miền này. Khi địa chỉ được xác định, trình duyệt sẽ cố gắng kết nối với máy chủ web tại địa chỉ này và trên cổng tiêu chuẩn số 80. Nếu kết nối với máy chủ web được thiết lập, trình duyệt sẽ yêu cầu trang được yêu cầu từ máy chủ web.

Về nguyên tắc, một máy chủ web có thể được định cấu hình để hoạt động trên một cổng khác, trong trường hợp đó, trong trình duyệt, khi yêu cầu một trang, bạn phải chỉ định nó bằng dấu hai chấm sau tên miền (ví dụ: site.ru:3182) .

Làm cách nào để trình duyệt yêu cầu một trang web từ máy chủ web? Rõ ràng là tương tác giữa máy chủ web và trình duyệt yêu cầu một "ngôn ngữ chung", nghĩa là, một tiêu chuẩn nhất định mà các yêu cầu và phản hồi được hình thành. Tiêu chuẩn này là Giao thức HTTP(Giao thức truyền siêu văn bản). Giao thức này khá đơn giản vì nó tuân theo một lược đồ phản hồi yêu cầu. Nói cách khác, đối với mọi yêu cầu HTTP từ trình duyệt web, máy chủ web sẽ phản hồi bằng một phản hồi HTTP. Theo sáng kiến ​​riêng của mình, máy chủ web không gửi các gói HTTP (hơn nữa, máy chủ thường chấm dứt kết nối với máy khách sau khi hoàn thành hoạt động phản hồi yêu cầu).

Hãy xem cấu trúc của một gói HTTP. Một yêu cầu HTTP và một phản hồi HTTP được tạo thành từ hai khối - một khối tiêu đề và một khối nội dung gói. Các khối này được phân tách với nhau bằng hai ký tự dòng mới (nghĩa là có một dòng trống giữa tiêu đề và nội dung). Khối tiêu đề chứa các tham số gói khác nhau, khối nội dung chứa một số dữ liệu. Khối thứ hai có thể không có, nghĩa là gói HTTP chỉ có thể bao gồm một khối tiêu đề. Ví dụ: hãy thực hiện một yêu cầu cho trang chính của trang web ya.ru và xem xét các gói HTTP tham gia vào đó. Khi yêu cầu trang chủ, trình duyệt Firefox đã gửi yêu cầu HTTP sau đến máy chủ web:

GET / HTTP / 1.1 Máy chủ: ya.ru Tác nhân Người dùng: Mozilla / 5.0 (Windows; U; Windows NT 5.1; ru; rv: 1.9.2) Gecko / 20100115 Firefox / 3.6 Chấp nhận: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 Accept-Language: ru, en-us; q = 0.7, en; q = 0.3 Accept-Encoding: gzip, deflate Accept-Charset: windows-1251 , utf-8; q = 0,7, *; q = 0,7 Keep-Alive: 115 Kết nối: giữ cho cuộc sống

Không có khối dữ liệu nào trong yêu cầu HTTP (vì không có dòng trống nào để tách các tiêu đề khỏi dữ liệu). Hãy xem xét các dòng của truy vấn này đang được chúng tôi quan tâm vào lúc này. Đầu tiên, dòng đầu tiên:

GET / HTTP / 1.1

"GET" là loại yêu cầu. Hai loại yêu cầu phổ biến nhất là GET và POST. Chúng tôi sẽ nói về chúng trong một trong những bài viết hoặc bài học sau. "/" chỉ ra rằng trang chủ của trang web đang được yêu cầu. Nếu không, đường dẫn và tên của trang hoặc tệp được yêu cầu được chỉ định ở đây. "HTTP / 1.1" là phiên bản của giao thức HTTP.

Chủ nhà: ya.ru

Tham số Máy chủ chứa miền của trang web đang được truy cập.

Tác nhân người dùng: Mozilla / 5.0 (Windows; U; Windows NT 5.1; ru; rv: 1.9.2) Gecko / 20100115 Firefox / 3.6

Tác nhân người dùng chứa thông tin về máy khách: loại trình duyệt, hệ điều hành, v.v. Phần còn lại của các thông số không được chúng tôi quan tâm đặc biệt vào lúc này.

Máy chủ web đã phản hồi yêu cầu HTTP này bằng phản hồi HTTP sau:

HTTP / 1.1 200 OK Máy chủ: nginx Ngày: Thứ Năm, 25 tháng 2 năm 2010 12:31:25 GMT Loại nội dung: text / html; charset = utf-8 Sửa lần cuối: Thứ 3, ngày 12 tháng 1 năm 2010 15:29:06 GMT Chuyển mã-Mã hoá: chunked Kết nối: giữ nguyên Nội dung-Mã hoá: gzip Yandex. ...

Một chuỗi trống cho biết sự hiện diện của một khối dữ liệu (phần thân gói). Như trong trường hợp yêu cầu HTTP, chúng ta hãy xem xét các dòng quan trọng nhất của phản hồi đã nhận. Dòng đầu tiên chứa phiên bản của giao thức HTTP (HTTP / 1.1) và mã kết quả. Mã kết quả là 200 có nghĩa là yêu cầu đã thành công. Tất cả các mã kết quả được liệt kê trong phần mô tả của giao thức HTTP. Chúng ta sẽ tìm hiểu một số trong số chúng, chẳng hạn như 403 và 404, trong tương lai.

Máy chủ: nginx

Tham số Máy chủ chứa tên của máy chủ web. Trong trường hợp của chúng tôi, chúng tôi đang xử lý máy chủ web nginx. Tham số này có thể vắng mặt trong phản hồi HTTP nếu quản trị viên của máy chủ này vì lý do nào đó không muốn tiết lộ thông tin này.

Nội dung-Loại: text / html; charset = utf-8

Content-Type chứa loại dữ liệu được truyền và nếu cần, mã hóa của chúng (bộ ký tự). Ngoài ra, các tiêu đề thường chứa tham số Độ dài Nội dung chứa kích thước của dữ liệu được máy chủ truyền theo byte. Khối nội dung gói chứa mã của trang được yêu cầu.

Do đó, chúng tôi đã làm quen với các nguyên tắc cơ bản về hoạt động của máy chủ web, đã kiểm tra sơ đồ "yêu cầu-phản hồi". Sẽ rất hữu ích cho quản trị viên web khi biết giao thức HTTP tốt nhất có thể, vì nó là cơ sở hoạt động của trang web. Trong các bài viết và hướng dẫn tiếp theo, chúng ta sẽ làm quen với các tính năng khác nhau của máy chủ web, không được đề cập trong bài viết này và xem xét cách chúng được thực hiện bởi giao thức HTTP. Và trong bài học đầu tiên, chúng ta sẽ học cách tự cài đặt và cấu hình một máy chủ web.