Localhost là gì?
Như anh em biết thì mỗi máy tính được định danh bởi một cái tên gọi là host name và một địa chỉ IP nếu muốn truy cập vào internet. Nó cũng như con người chúng ta vậy. Chúng ta khi sinh ra cũng được bố mẹ đặt cho mình một cái tên và máy tính cũng thế, khi bạn cài hệ điều hành vào một máy tính, theo mặc định, hệ điều hành sẽ đặt cho nó một cái tên ngẫu nhiên kiểu "DESKTOP-[mã ngẫu nhiên]",đó sẽ là cái tên cho máy của bạn nếu như bạn không thayđổi nó.Vậy nếu ta gọi nó bằng cái tên host name đó thì hơi bất tiện, do đó chúng ta có một cái niệm là localhost khi muốn máy tính nhận diện rằng mình đang gọi chính nó.
Vậy rốt cuộc localhost là gì?
localhost là một cái hostname được quy định sẵn giá trị là chính máy đang chạy. Khi ta chạy chương trình hoặc các tiện ích trên máy này, nếu ta gọi tới localhost, máy tính sẽ ngầm hiểu là ta đang gọi chính nó. Nếu có các tương tác như kết nối mạng, các dịch vụ tới localhost, máy tính sẽ hiểu là nó sẽ tự liên lạc với chính mình.
Localhost có thể giúp chúng ta kiểm tra dịch vụ mạng ngay trên máy mình, thậm chí trong lúc phần cứng của mạng bị lỗi. Khi chúng ta dùng "localhost", dịch vụ mạng sẽđược chúng ta truy cập thông qua một adapter có tên là loopback, địa chỉ IP của loopback là 127.0.0.1, dođó, nếu các bạn truy cập localhost tức là cácbạnđang truy cập vàođịa chỉ ip là 127.0.0.1. Trường hợp này, "localhost"được coi như là tên miền củađịa chỉ 127.0.0.1 vàđịa chỉ IP 127.0.0.1 là kết quả trả về khi truy vấn DNS tới name localhost.
Địa chỉ loopback là gì?
Loopback là một nền tảng có sẵn trong tất cả các hệ điều hành. Các gói được truyền qua cổng của interface này thì đều được trả về (lặp lại) trên cùng một interface. Hay nói cách khác, loopback đúng như cái tên của nó, một vòng lặp trả về.Theo tiêu chuẩn IETF thì đối với IPv4, toàn bộ các IP thuộc dãy 127.0.0.1/8 đều thuộc interface loopback này.
Ta sẽ xem qua một số ví dụ:
Bash:
ip a show lo
Bash:
sudo cat /etc/hosts
Cách mà các gói tin được xử lý nội bộ
Nói chung, các gói tin được sử dụng cho loopback được quy định và phân biệt với các gói tin khác bằng địa chỉ IP. Quá trình xử lý các gói tin này xảy ra ở tầng Liên kết (Link layer) của mô hình TCP/IP. Các gói tin này sẽ đi qua và được gửi về chính hệ thống của máy tính. Nó sẽ không đi qua phần cứng NIC như các gói tin khác. Ngoài ra, ở đây có một quy tắc được quy định là các router (bộ định tuyến) mạng sẽ không định tuyến các gói tin này.Ví dụ: Khi ta yêu cầuđịa chỉ 127.0.0.1. Yêu cầu sẽ khôngđược chuyển tiếp tới internet do có prefix là 127,đại diện cho localhost.Ởđây các góitin gửi tớiđịa chỉ nàyđềuđược gửi trở lại chính nó.
Minh họa:
Bash:
ping -c 4 localhost
Bash:
ping -c 4 google.com
Test ứng dụng sử dụng localhost
Chúng ta có thể dùng localhost cho nhiều việc và một trong những việc mà anh em hay làm nhất đó chính là dùng chính localhost để test tạo server và test chính ứng dụng của chúng ta. Nếu chúng ta muốn truy cập vào một domain có tên là tuihocweb.com nhưng bằng code mà anh em tự code trên máy thì chúng ta chỉ cần vào file hosts của Linux, sau đó trỏ tên miền tuihocweb.com về 127.0.0.1.Còn nếu trang thật hiện tại mà anh em đang đọc đây thì là địa chỉ IP của cloudflare.
Bash:
ping -c 4 tuihocweb.com
Cảm ơn anh em đã theo dõi.