Cơ sở tri thức
 
 
 
 
Internet
Webserver hoạt động như thế nào?

Bạn đã bao giờ biết cơ chế  truyền tải  các trang web như thế nào?. Giả sử bạn ngồi trước máy tính, mở trình duyệt web và muốn xem một trang web bất kỳ nào đó, khi bạn click chuột vào đường link đến trang đó hoặc đánh vào địa chỉ của trang web  (URL – uniform resource locator), những hoạt động gì sẽ xẩy ra đằng sau đó, để trang web mà bạn cần xem hiển thị ra màn hình?

Để biết rõ các tiến trình đó, chúng ta sẽ cùng tìm hiểu cơ chế làm việc của máy chủ WEB?

Các tiến trình cơ bản
Khi bạn ngồi trước máy tính và đang duyệt web trên Internet. Có một người bạn của bạn gọi điện thoại cho bạn và nói “Tôi vừa đọc một bài viết rất hay! Bạn hãy đánh vào địa chỉ sau và xem thử nhé, địa chỉ trang web đó là http://computer.howstuffworks.com/web-server.htm “.  Khi bạn gõ vào địa chỉ trang web đó trên trình duyệt web và ấn Enter, và thật là kỳ diệu, trang web đó đã hiển thị trên màn hình của bạn.

Vậy, làm thế nào mà trang web có thể hiện thị được trên màn hình của bạn, cơ chế hoạt động của máy chủ Web như thế nào?. Chúng tôi sẽ giúp bạn hiểu rõ hơn bằng bài viết dưới đây.
Các bước cơ bản trong tiến trình truyền tải trang web đến màn hình của bạn được thể hiện theo mô hình sau:

 

Theo mô hình trên, trình duyệt  web  thực hiện một kết nối tới máy chủ web, yêu cầu một trang web và nhận lại nó. Sau đây, là thứ tự từng bước cơ bản xảy đến đằng sau màn hình của bạn:

  • Trình duyệt web tách địa chỉ website làm 3 phần:
    1. Phần giao thức: (“http”)
    2. Máy chủ tên miền: (www.howstuffworks.com)
    3. Tên tệp: (“web-server.htm”)
  • Trình duyệt liên hệ với máy chủ tên miền để chuyển đổi tên miền “www.howstuffworks.com” ra địa chỉ IP (Internet Protcol).
  • Sau đó, trình duyệt sẽ gửi tiếp một kết nối tới máy chủ có địa chỉ IP tương ứng qua cổng 80.
  • Dựa trên giao thức HTTP, trình duyệt gửi yêu cầu GET đến máy chủ, yêu cầu tệp “http://computer.howstuffworks.com/web-server.htm.”. (Bạn chú ý, cookies cũng sẽ được gửi kèm theo từ trình duyệt web đến máy chủ)
  • Tiếp đến, máy chủ sẽ gửi đoạn text dạng HTML đến trình duyệt web của bạn. (cookies cũng được gửi kèm theo từ máy chủ tới trình duyệt web, cookies được ghi trên đầu trang của mỗi trang web)
  • Trình duyệt web đọc các thẻ HTML, định dạng trang web và kết xuất ra màn hình của bạn.

Nếu bạn chưa từng bao giờ khám phá tiến trình trên, bạn sẽ gặp phải rất nhiều thuật ngữ mới. Để hiểu hiểu một cách chi tiết, bạn cần biết thêm về các khái niệm như địa chỉ internet (địa chỉ IP), các cổng (ports), các giao thức (protocol)… Đoạn viết sau sẽ giúp bạn hiểu rõ hơn.

Internet

Internet là gì? Internet là tập hợp khổng lồ của hàng triệu máy tính, được nối với nhau trên một mạng máy tính. Mạng máy tính này cho phép tất cả các máy tính trao đổi thông tin cho nhau. Một máy tính đặt ở nhà  có thể tham gia vào mạng Internet thông qua đường điện thoại, đường thuê bao số hoặc cáp modem kết nối đến nhà cung cấp dịch vụ Internet (Internet service provider – ISP). Máy tính trong các công ty, trường học thường có 01 card mạng (Network interface Card – NIC) để kết nối trực tiếp vào mạng nội bộ (Local Area Network) của công ty hoặc trường học. Mạng nội bộ của công ty, trường học sẽ được nối tới nhà cung cấp dịch vụ Internet ISP bằng một đường điện thoại có tốc độ cao, ví dụ như đường T1. Mỗi đường T1 có thể đạt tốc độ 1.5 triệu bit trên 1 giây, trong khi một kết nối điện thoại thông thường chỉ đạt 30.000 đến 50.000 bít trên giây.Những nhà cung cấp dịch vụ ISP sẽ nối tới nhà cung cấp dịch vụ Internet lớn hơn…Đối với các đường kết nối chính trong một quốc gia hay khu vực, nhà cung cấp dịch vụ Internet thường sử dụng sợi cáp quang. Hệ thống đường cáp chính trên toàn thế giới được kết nối bằng các loại đường sợi cáp quang, cáp đi ngầm dưới biển hoặc bằng hệ thống vệ tinh (satellite). Bằng cách như vậy, thì mỗi một máy tính trên Internet đều được kết nối với nhau trên Internet.

Máy chủ và máy khách

Nhìn chung, máy tính trên Internet có thể được chia làm loại: Máy chủ và máy khách. Máy chủ là loại máy tính cung cấp dịch vụ (máy chủ dịch vụ web, máy chủ dịch vụ thư điện tử) đến các máy khác. Máy khách là những máy tính được sử dụng để kết nối tới các dịch vụ trên các máy chủ. Khi bạn kết nối tới Yahoo! tại địa chỉ http://www.yahoo.com để xem trang web, trong trường hợp này, Yahoo! đang sử dụng một máy tính, được gọi là máy chủ (cũng có thể là một nhóm các máy chủ có cấu hình lớn) được kết nối trên Internet, nhằm cung cấp dịch vụ cho bạn. Ngược lại, máy tính của bạn có thể không cung cấp dịch vụ nào trên Internet để người khác truy cập, do đó nó chỉ được coi là máy tính sử dụng thông thường, hay còn gọi là máy khách.

Một máy chủ có thể cung cấp một hay nhiều dịch vụ trên Internet. Ví dụ, một máy chủ thì có thể  có nhiều phần mềm chạy trên nó, cho phép nó hoạt động như là máy chủ web, máy chủ email hoặc máy chủ FTP.  Các máy trạm kết nối tới máy chủ thường với “mục đĩch” cụ thể, nó hướng  yêu cầu của mình tới một máy chủ có ứng dụng phù hợp với “mục đích” đó, ví dụ nếu bạn đang chạy chương trình duyệt web trên máy tính của bạn, có nghĩa máy tính của bạn đã kết nối tới máy chủ dịch vụ web. Tương tự, chạy ứng dụng Telnet trên máy tính của bạn sẽ kết nối tới máy chủ dịch vụ Telnet, chạy ứng dụng email sẽ kết nối tới máy chủ dịch vụ email…
Địa chỉ IP ( IP address)
Để tất cả máy tính trên Internet có thể liên hệ với nhau, mỗi máy tính được cung cấp một địa chỉ duy nhất trên Internet, gọi là IP. Địa chỉ IP là viết tắt của từ Internet Protocol. IP là một số 32 bít và được thể hiện  dưới dạng con số thập phân gồm có 4 “octet”,  ví dụ 216.27.61.137. 4 con số trong một địa chỉ IP  được gọi là các “octet”, vì mỗi số có thể có giá trị từ 0 đến 255, có nghĩa mỗi “octet” có đến 2 8 giá trị khác nhau.

Địa chỉ IP là duy nhất đối với mỗi máy tính khi tham gia Internet .Đối với máy chủ, địa chỉ IP là cố định. Một máy tính, khi được kết nối Internet bằng đường line điện thoại thông qua modem, thì  được cung cấp địa chỉ IP bởi nhà cung cấp dịch vụ Internet (ISP). Địa chỉ IP này là duy nhất cho mỗi lần kết nối, cũng đồng nghĩa nó sẽ thay đổi địa chỉ IP khác khi kết nối lần tiếp theo. Theo cách này, thay vi phải cung cấp địa chỉ IP cho từng khách hàng truy cập, nhà cung cấp dịch vụ Internet ISP chỉ cần một địa chỉ IP cho một modem.

Nếu bạn làm việc trên hệ điều hành windows, bạn có thể xem rất nhiều thông tin liên quan Internet được ghi vào cấu hình máy tính của bạn, bao gồm địa chỉ IP hiện tại, tên máy..  bằng cách sử dụng lệnh WINIPCFG.EXE (IPCONFIG.EXE trên Windows 2000/XP). Trên máy Unix,để hiển thị địa chỉ IP, tên của máy tính, bạn chỉ gõ dòng lệnh nslookup tại dấu nhắc.
Khi máy tính được kết nối Internet, thông số địa chỉ IP là quan trọng nhất giúp bạn kết nối tới máy chủ. Ví dụ, trên trình duyệt web, bạn có thể gõ địa chỉ kết nối http://209.116.69.66,  lúc này, bạn đang kết nối kết máy chủ  có địa chỉ IP là 209.116.69.66 và máy chủ đó có dịch vụ Web server cho website HowStuffWorks.

Các máy chủ tên miền (Name servers)
Thông thường, người dùng Internet không thể nhớ hết các con số trên địa chỉ IP, và một lý do nào đó địa chỉ IP cũng có thể thay đổi. Vì vậy, tất cả các máy chủ trên Internet đều phải có một tên sao cho dễ đọc, thường được gọi là “tên miền” – Domain names. Ví dụ, tên miền http://www.howstuffworks.com  là tên cố định, dễ đọc hơn so với việc phải nhớ địa chỉ IP 209.116.69.66.
Tên miền  http://www.howstuffworks.com gồm có 3 phần:

  1. Tên máy (“www”)
  2. Tên miền (“howstuffworks”)
  3. Tên miền cấp một (“com”)

Tên miền được quản lý bởi một công ty, tên là VeriSign. VeriSign tạo ra các tên miền “cấp một” và đảm bảo tất cả tên miền khác trong tên miền cấp một là duy nhất. VeriSign cũng duy trì các thông tin liên quan đến mỗi địa chỉ tên miền trên cơ sở dữ liệu “whois”.
Tên máy được tạo bởi công ty cung cấp dịch vụ lưu trữ tên miền. “www” là tên máy phổ biến, nhưng nhiều nơi nó có thể được thay thế bởi tên khác, ví dụ tên máy thể hiện một khu vực địa lý, ví dụ như “encarta.msn.com”, tên miền của Microsoft’s Encarta encyclopedia,  tên máy “encarta” được thay thế cho www.

Tập hợp các máy chủ tên miền (domain name servers – DNS) ánh xạ các tên miền dễ đọc tới các địa chỉ IP tương ứng. Những máy chủ này lưu trữ cơ sở dữ liệu tên miền ánh xạ đến địa chỉ IP, và chúng được bố trí nhiều nơi trên mạng Internet.  Các công ty, các nhà cung cấp dịch vụ Internet hoặc các trường đại học đều duy trì máy chủ tên miền cỡ nhỏ để ánh xạ các tên máy tới các địa chỉ IP tương ứng. Tại VeriSign, cũng có các máy chủ tên miền trung tâm sử dụng dữ liệu được cung cấp bởi VeriSign để ánh xạ các tên miền đến địa chỉ IP.

Nếu bạn gõ địa chỉ http://computer.howstuffworks.com/web-server.htm vào  trình duyệt web, trình duyệt sẽ tách tên miền http://www.howstuffworks.com và gửi nó tới máy chủ tên miền, sau đó máy chủ tên miền sẽ gửi ngược lại  địa chỉ IP đúng với tên miền http://www.howstuffworks.com.

Trên máy chủ UNIX, bạn có thể biết các thông tin tương tự bằng cách sử dụng lệnh  nslookup và đơn giản chỉ cần gõ vào một cái tên  http://www.howstuffworks.com trên dòng lệnh, câu lệnh sẽ tìm kiếm tên máy chủ và chuyển địa chỉ IP tương ứng cho bạn.

Như vậy, Internet được tạo thành bởi hàng triệu máy tính, mỗi máy sẽ có địa chỉ IP duy nhất. Trong số đó, rất nhiều các máy tính là các máy chủ  cung cấp dịch vụ cho các máy khác trên Internet, ví dụ như máy chủ e-mail, máy chủ web, máy chủ FTP, máy chủ Gopher, máy chủ Telnet…

Cổng (Ports))
Bất kỳ máy chủ khi cung cấp các dịch vụ trên Internet, đều sử dụng cổng được đánh số. Ví dụ, máy chủ chạy dịch vụ  web và dịch vụ FTP, dịch vụ WEB thường dùng cổng 80, dịch vụ FTP dùng cổng 21. Các máy khách khi kết nối tới một dịch vụ, thường chỉ rõ địa chỉ IP và kết nối qua một cổng cụ thể.
Trên Internet, mỗi dịch vụ đều có sẵn cổng tương ứng. dưới đây là danh sách các dịch cụ và các cổng tương ứng:

  • echo 7
  • daytime 13
  • qotd 17 (Quote of the Day)
  • ftp 21
  • telnet 23
  • smtp 25 (Simple Mail Transfer, meaning e-mail)
  • time 37
  • nameserver 42
  • nicname 43 (Who Is)
  • gopher 70
  • finger 79
  • WWW 80

Khi máy chủ chấp nhận các kết nối từ bên ngoài qua một cổng nào đó và nếu bức tường lửa không chặn cổng đó, bạn có thể kết nối cổng đó từ bất kỳ nơi nào trên Internet và sử dụng dịch vụ tương ứng. Tuy nhiên, không bắt buộc  phải đặt chính xác số cổng với dịch vụ tương ứng, ví dụ với dịch vụ web thường là cổng 80. Nhưng nếu bạn cài đặt máy chủ và phần mềm Web server trên máy chủ đó, bạn có thể đặt dịch vụ web trên một cổng bất kỳ không sử dụng, ví dụ cổng 918.

Sau đó, nếu máy chủ của bạn được đặt tên là xxx.yyy.com, một người duyệt web nào đó trên Internet sẽ kết nối tới máy chủ của bạn với địa chỉ là  http://xxx.yyy.com:918 “:918” thể hiện số cổng, và luôn đi kèm với địa chỉ kết nối tới máy chủ của bạn. Nếu không có số cổng, trình duyệt web sẽ hiểu máy chủ cung cấp dịch vụ web qua cổng 80.

Giaothức (Protocols)
Khi máy khách kết nối tới một dịch vụ trên một cổng nào đó, nó thường truy cập dịch vụ  thông qua một giao thức cụ thể. Giao thức  là sự định nghĩa sẵn cách thức mà đối tượng như phần mềm máy tính, trình duyệt web dùng để “giao tiếp” với các dịch vụ mà chúng muốn sử dụng. Giao thức thường là các đoạn text và đơn giản là mô tả cách thức máy khách và máy chủ “đàm thoại với nhau”

Giao thức đơn giản nhất là  daytime protocol. Nếu bạn kết nối tới cổng 13 trên máy chủ có dịch vụ daytime, máy chủ sẽ gửi tới máy tính của bạn thông tin ngày tháng và sau đó tự động ngắt kết nối.
Trên hệ thống UNIX hỗ trợ dịch vụ trên, nếu bạn muốn thử, bạn có thể kết nối bằng ứng dụng  Telnet. Ví dụ

%telnet web67.ntx.net 13
Trying 216.27.61.137…
Connected to web67.ntx.net.
Escape character is ‘^]’.
Sun Oct 25 08:34:06 1998
Connection closed by foreign host.

Trên hệ thống máy chủ Windows, bạn có thể truy cập dịch vụ trên bằng cách gõ “telnet web67.ntx.net 13” tại dấu nhắc của MSDOS.

Trong ví dụ này, “web67.ntx.net” là tên máy chủ UNIX, và số 13 là số cổng cho dịch vụ daytime. Ứng dụng Telnet kết nối tới cổng 13, sau đó máy chủ gửi trả lại  thông tin ngày tháng và ngắt kết nối.

Hầu hết các giao thức khác đều phức tạp hơn so với giao thức Daytime. Danh mục các giao thức được nêu trong tài liệu Request for Comment (RFC) tại website http://sunsite.auc.dk/RFC/.
Mỗi máy chủ Web trên Internet đều phải hỗ trợ giao thức HTTP. Hình thức cơ bản nhất của giao thức này được biểu diễn qua câu lệnh: GET. Nếu bạn kết nối tới máy chủ hỗ trợ giao thức HTTP và yêu cầu “GET tên tệp”, máy chủ sẽ trả lời bạn bằng việc gửi nội dung của tệp  và sau đó ngắt kết nối. Ví dụ như sau:

%telnet http://www.howstuffworks.com 80
Trying 216.27.61.137…
Connected to howstuffworks.com.
Escape character is ‘^]’.
GET http://computer.howstuffworks.com/
<html>
<head>
<title>Welcome to How Stuff Works</title>
  …
</body>
</html>
Connection closed by foreign host.

Trong giao thức HTTP nguyên bản, bạn sẽ cung cấp đầy đủ đường dẫn của tên tệp, ví dụ như “/” hoặc “/tên tệp.htm”. Sau đó, giao thức sẽ tự điều chỉnh để có thể đưa ra một địa chỉ URL đầy đủ. Điều này cho phép các công ty kinh doanh dịch vụ lưu trữ có thể lưu trữ nhiều virtual domains (tên miền ảo), có nghĩa nhiều tên miền cùng tồn tại trên một máy chủ và sử dụng cùng một địa chỉ IP duy nhất. Ví dụ, trên máy chủ của HowStuffWorks, địa chỉ IP là 209.116.69.66, nhưng nó có hàng trăm tên miền khác nhau cùng tồn tại.

Tập hợp các kiến thức (Putting It All Together)
Đến lúc này,  bạn đã hiểu cơ bản thế nào là  Internet. Bạn biết rằng khi bạn gõ vào một địa chỉ URL trên trình duyệt web, thì thứ tự các tiến trình sau sẽ xảy ra:

  • Trình duyệt web sẽ tách URL ra làm 3 phần:
  1. Giao thức (“http”)
  2. Tên máy chủ (“www.howstuffworks.com”)
  3. Tên tệp (“web-server.htm”)
  • Trình duyệt liên hệ với một máy chủ tên miền để chuyển đổi tên miền “www.howstuffworks.com”  sang địa chỉ IP, để có thể kết nối tới máy chủ có địa chỉ IP này.
  • Trình duyệt sẽ thực thi một kết nối tới máy chủ web có địa chỉ IP trên qua cổng 80
  • Dựa trên giao thức HTTP, trình duyệt sẽ gửi câu lệnh GET tới máy chủ, yêu cầu  tệp http://computer.howstuffworks.com/web-server.htm. (Lúc này, cookies cũng sẽ được gửi kèm theo câu lệnh GET  từ trình duyệt tới máy chủ)
  • Máy chủ gửi đoạn text dưới dạng HTML tới trình duyệt web.(cookies cũng sẽ được gửi từ máy chủ đến trình duyệt và thường được ghi trên tiêu đề của trang)
  • Trình duyệt đọc các thẻ lệnh HTML và định dạng thành trang web  và đưa ra màn hình của bạn.

Mở rộng (Extras)
Qua phần mô tả ở trên, bạn cũng nhận thấy Web server là một phần mềm nhỏ rất đơn giản. Nó nhận tên tệp được gửi trong câu lệnh GET, tìm tệp đó và gửi lại trình duyệt web.  Thậm trí, nếu bạn có tất cả các mã code để quản lý các cổng và mỗi kết nối qua từng cổng đó, bạn dễ dàng tạo ra một chương trình C, với hơn 500 dòng lệnh, có thể họat động  như một phần mềm Web server đơn giản. Hiển nhiên, đối với một phần mềm Web server chuyên nghiệp có đầy đủ các tính năng thì phức tạp hơn nhiều, nhưng các xử lý cơ bản thì rất đơn giản.

Rất nhiều máy chủ web đưa thêm các chế độ bảo mật trong nhiều tiến trình xử lý.  Ví dụ, khi bạn truy cập vào một trang web và trình duyệt đưa ra một hộp hội thoại yêu cầu bạn đưa vào tên truy cập và mật khẩu, lúc này  trang web mà bạn truy cập đã được bảo vệ bằng mật khẩu. Máy chủ web hỗ trợ  người quản lý trang web duy trì một danh sách tên và mật khẩu cho phép những người được phép truy cập vào trang web. Đối với những máy chủ chuyên nghiệp, yêu cầu mức độ bảo mật lớn hơn, chỉ cho phép những kết nối đã được mã hóa giữa máy chủ và trình duyệt, do đó những thông tin nhạy cảm như mã số thẻ tín dụng… có thể được  truyền tải tên Internet.

Đó là tất cả những vấn đề cơ bản  mà máy chủ Web họat động để truyền tải các trang web chuẩn hay còn gọi là trang web tĩnh. Các trang web tĩnh là những trang web không thay đổi, trừ khi người tạo ra trang web đó thay đổi lại.

Thế còn trang web động là gì?  Bạn hãy xem các ví dụ sau:

  • Search engine cho phép bạn gõ vào các từ khóa trong một form HTML, sau đó nó tự động tạo ra trang web dựa trên từ khóa đó.
  • The whois form at VeriSign cho phép bạn đưa vào tên miền trong form HTML  và nội dung trang web được gửi trả lại sẽ thay đổi tùy thuộc vào tên miền mà bạn gõ vào.

Trong tất các trường hợp trên, máy chủ  web không chỉ đơn giản là “tìm kiếm một tệp”. Nó thực sự là một quá trình xử lý thông tin ,rồi kết xuất ra trang web dựa trên các kết quả truy vấn. Trong hầu hết các trường hợp trên, máy chủ Web thường sử dụng  các đoạn chương trình, gọi là các đoạn mã CGI scripts để giải quyết bài toán.

Tác giả: Marshall Brain
Dịch từ Howstuffworks