"Chào, Amigo!"

"Chào, Bilaabo!"

"Hôm nay bạn sẽ nói với tôi điều gì mới?"

"Nhiều thứ. Nhưng để bắt đầu, tôi nghĩ chúng ta sẽ thảo luận về cách làm việc với mạng và Internet. Có hứng thú không?"

"Đúng. Internet Thiên hà cực kỳ tuyệt vời."

"Được rồi, nhưng chúng ta hãy bắt đầu với một chút lịch sử. Vào đầu thế kỷ 21, tình hình là thế này..."

"Mỗi máy tính được kết nối với Internet đều có một số duy nhất. Đây là một số 4 byte thông thường. Nó được gọi là địa chỉ IP."

"Nhưng con người có trí nhớ kém và phải vật lộn để nhớ những thứ như 2108458776, vì vậy họ thường viết từng byte riêng biệt."

"Nếu chúng ta chia số bốn byte 2108458776 thành các byte riêng biệt, chúng ta sẽ nhận được 125.172.135.24. Như bạn sẽ nhớ lại, mỗi byte bao gồm 8 bit và có thể chứa các số từ 0 đến 255."

"Vậy, đó là cách chúng ta viết số?"

"Vâng. Nó chỉ dễ dàng hơn (đối với con người) để nhớ các số bốn byte khi chúng được viết theo cách này."

"Khi nó xảy ra, lựa chọn chỉ sử dụng 4 byte đã sớm chơi một trò lừa bịp đối với họ. Số lượng thiết bị kết nối với Internet tăng nhanh đến mức chúng nhanh chóng hết số lượng."

"Làm thế nào mà họ có được xung quanh đó?"

"Họ đã làm những gì con người thường làm."

"Họ đã đưa ra một tiêu chuẩn mới cho địa chỉ IP và tự hào đặt tên nó là IPv6."

"Không giống như địa chỉ IP thông thường (được gọi là IPv4) sử dụng 4 byte để tạo thành một số duy nhất, tiêu chuẩn mới sử dụng 16."

"Chỉ cần nghĩ về nó, con người không thể nhớ 10 chữ số trong một số thông thường (như 2108458776), vì vậy họ phải chia chúng thành 4 phần, nhưng sau đó họ nghĩ đến việc sử dụng các số bao gồm 16 byte."

"Ừ, đôi khi con người thật kỳ lạ."

"Ừ. Con người là con người."

"Điều đó nói rằng, họ đã thoát khỏi tình trạng khó khăn của họ."

"Họ cảm thấy mệt mỏi với việc ghi nhớ các con số và quyết định thay thế chúng bằng các từ."

"Làm sao vậy? Có thể cho ta một ví dụ sao?"

"Tất nhiên, web.mail.com , google.com , new.books.amazon.com , …”

"Loại tên này được gọi là tên miền."

"Để Internet này hoạt động bình thường, họ đã tạo một bảng đặc biệt gọi là Hệ thống tên miền (DNS) lưu địa chỉ IP của từng tên miền."

"Đây là cách nó hoạt động."

1)  Người dùng nhập địa chỉ vào trình duyệt, ví dụ: web.mail.com .

2)  Trình duyệt truy cập DNS và sử dụng tên miền để lấy địa chỉ IP.

3)  Yêu cầu có URL bắt buộc được gửi đến địa chỉ IP này.

"Điều đó trông không đơn giản lắm."

"Nhưng cách tiếp cận này có một số lợi ích:"

" 1) Con người thấy dễ nhớ những cái tên có thể diễn đạt thành lời.

" 2) Tên miền có thể được xây dựng theo thứ bậc bằng cách thêm tên miền phụ vào đầu tên. Chính xác như tên gói trong Java."

" 3) Nếu bạn cần thay đổi địa chỉ IP của máy chủ web, bạn chỉ cần thay đổi bản ghi DNS và mọi thứ sẽ hoạt động như trước đây — người dùng không cần phải nhớ địa chỉ mới."

"DNS trông giống như thế này:"

Tên miền địa chỉ IP
thư.com 128.35.36.189
web.mail.com 145.12.17.13
mới.mail.com 192.155.15.3
google.com 92.117.151.100
google.com 193.168.0.1
docs.google.com 217.12.222.1

"Có ý nghĩa."

"Dù sao đi nữa, một miền là tên của một máy tính, nhưng chúng tôi không cần máy tính - chúng tôi cần những gì trên máy tính. Đây là mục đích của các URL."

"Ban đầu, một URL thực sự là một liên kết đến một tệp trên máy tính khác. Ví dụ:"

Ví dụ
http://info.codegym.cc/user/info/profile.html _ _ _ _
Sự miêu tả
http  là giao thức để giao tiếp giữa máy khách và máy chủ
info.codegym.cc  là tên miền của máy tính
user/info/profile.html  là đường dẫn đến tệp trên máy tính

"Khi bắt đầu phát triển mạng, một máy chủ web chỉ có thể sử dụng một URL để phục vụ các tệp mà nó đang lưu trữ ở đâu đó. URL thực sự là một đường dẫn chung tới tệp: tên máy tính + đường dẫn."

"Sau đó, khi các máy chủ web bắt đầu tự tạo tệp, các URL đã thay đổi một chút và trở thành một yêu cầu đối với máy chủ web. Các tham số yêu cầu cũng được thêm vào."

"Ngày nay, hiếm khi thấy phần mở rộng tệp ở cuối URL. "URL hiện đại chỉ là một liên kết duy nhất có tham số. Giống như một cuộc gọi phương thức hơn là một đường dẫn tệp chung."

"Một URL hiện đại cổ điển trông như thế này:"

Phân tích cú pháp URL
http://codegym.cc/alpha/api/contacts ? _ _ _ _ userid=13&filter=none&page=3
Mô tả các phần của URL
codegym.cc  là tên miền — tên (địa chỉ) duy nhất của một máy tính trên Internet
http  là giao thức để liên lạc giữa máy khách và máy chủ
alpha/api/contacts  là yêu cầu của máy chủ web hoặc yêu cầu đối với một trang web trên máy chủ
userid=13 & filter=none & page=3  là một chuỗi có các tham số yêu cầu

"Ừ, tôi nhớ rồi. Gần đây bạn có nói với tôi về URL."

"Và về cảng nữa. Anh đã lấy ví dụ về một tòa nhà chung cư."

"Tốt hơn là nên cho tôi biết 'http' là gì. Tôi thấy 'giao thức' được viết ở khắp mọi nơi, nhưng tôi không rõ đó là gì."

"OK. Tôi sẽ nói cho bạn biết ngay."

Địa chỉ IP, tên miền, URL - 1

" HTTP là viết tắt của H yper T ext T transport P rotocol và dùng để truyền siêu văn bản."

"Siêu văn bản là gì?"

"Đó là HTML."

"Nói một cách đại khái, giao thức là một tập hợp các quy tắc để liên lạc. Nó mô tả các yêu cầu có thể được gửi đến máy chủ web và ở định dạng nào cũng như cách máy chủ web sẽ phản hồi."

"Tóm lại, tình huống là thế này. Các tệp văn bản thông thường hoặc, nếu bạn muốn, các khối văn bản lớn được gửi giữa máy khách và máy chủ. "

"Một yêu cầu đến máy chủ và máy chủ cung cấp phản hồi cho từng yêu cầu."

"Đây là ví dụ về một yêu cầu và phản hồi như vậy:"

Lời yêu cầu
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Sự miêu tả
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5… – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"Dòng đầu tiên là yêu cầu thực tế. Dòng tiếp theo là các tham số yêu cầu bổ sung, còn được gọi là 'trường tiêu đề'."

"Và đây là một ví dụ về phản hồi:"

Phản ứng
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8 – This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"Tôi muốn thu hút sự chú ý của bạn đến hai điều:"

"Đầu tiên, bất kể bạn yêu cầu gì, nó giống như một tệp yêu cầu đến máy chủ. Không quan trọng tệp nằm trên máy chủ hay máy chủ tạo ra nó để đáp ứng yêu cầu."

"Thứ hai, bản thân tệp được gửi như một phần của phản hồi HTTP . Nói cách khác, chúng tôi thấy một số dữ liệu bổ sung ở đầu phản hồi của máy chủ và sau đó là phần nội dung của tệp đang được phục vụ. "

"Thật thú vị! Tôi không chắc mình đã hiểu hết. Tôi sẽ đọc lại sau."

"Ồ, tôi muốn kể cho bạn nghe về một thứ nhỏ bé nhưng thú vị khác: bánh quy."

"Đó là những gì?"

"Theo giao thức HTTP, cookie là những mẩu thông tin nhỏ mà máy chủ gửi đến máy khách để lưu trữ trên máy khách. Và chúng được gửi trở lại máy chủ như một phần của các yêu cầu tiếp theo. "

"Và quan điểm của điều đó là gì?"

"Giả sử người dùng đăng nhập trên trang chủ của một trang web. Máy chủ tạo một đối tượng phiên trên máy chủ cho người dùng này và một số phiên duy nhất được gửi tới máy khách dưới dạng cookie. Trong yêu cầu tiếp theo từ máy khách tới máy chủ, số phiên này cùng với các cookie khác sẽ được gửi trở lại máy chủ. Điều này có nghĩa là máy chủ có thể nhận ra người dùng đã gửi yêu cầu mới."

"Thật thú vị!"

"Yep. Khi bạn viết servlet của riêng mình, chúng ta sẽ xem xét kỹ hơn chủ đề này. Nhưng bây giờ, chúng ta hãy nghỉ ngơi một chút."

"Nói gì cũng được."