Chuyển đến nội dung chính

CS-101 Network

Network là gì?


Trong bài viết này chúng ta sẽ tìm hiểu các kiến thức về mạng căn bản như LAN, IP Address, Internet - TCP/IP Standards.

Khái niệm về Network?

Network là một tập hợp các máy tính, server, mainframe, thiết bị mạng, thiết bị ngoại vi hoặc các thiết bị khác được kết nối để cho phép chia sẻ dữ liệu, trao đổi tệp và giao tiếp với nhau.

Hiểu đơn giản là các thiết bị được kết nối để cho phép chia sẻ dữ liệu với nhau được gọi là network (mạng).

LAN (Local Area Network)

Có thể giải thích một cách dễ hiểu:
    Network ➡ tập hợp các thiết bị được kết nối để cho phép chia sẻ dữ liệu với nhau.
    Local Area ➡ khu vực nội bộ (khu vực địa lý giới hạn như văn phòng, quán cafe, trong nhà,...)

Ví dụ: 
    Trong một phòng máy tính ở trường, các máy tính kết nối với nhau để chia sẻ dữ liệu (gửi file, chơi game,...) được gọi là một mạng LAN.
    Trong văn phòng công ty, các máy tính cũng được kết nối với nhau để chia sẻ dữ liệu cũng được gọi là một mạng LAN.

Hai đặc điểm chính: Các thiết bị nằm trong một khu vực địa lý giới hạnđược kết nối để cho phép chia sẻ dữ liệu.

Hai dạng kết nối: có dây (Wired LAN) và không dây (Wireless LAN - WLAN)

Kết nối có dây

Sử dụng cáp Ethernet để kết nối các thiết bị với nhau. Chiều dài cáp giới hạn, cáp càng dài, độ trễ tín hiệu càng lớn (mạng càng yếu).

Băng thông (Bandwidth)

Đây là chỉ số phản ánh tốc độ truyền dữ liệu giữa các thiết bị với nhau.
Ví dụ:
    100mbps ➡ 100 megabits per second ➡ 100 triệu bits trên giây

    1gbps ➡ 1000mbps ➡ 1 gigabits per second ➡ 1 tỷ bits trên giây.

Packet

Dữ liệu được chia sẻ qua các thiết bị sẽ được chia thành nhiều phần nhỏ, mỗi phần gọi là 1 packet.
1 packet thường chứa khoảng 1500 bytes (1500*8 = 12000 bits).
Vậy làm sao máy tính giao tiếp với nhau chỉ bằng những số 0 và 1?
👉 Đi từ trái sang phải (8 bits trong 1 byte), truyền tín hiệu 3V nếu là số 1, tín hiệu 0V nếu là số 0. Tín hiệu điện này được truyền vào dây cáp Ethernet.
Làm sao để đảm bảo rằng dữ liệu được truyền thành công và không bị sai lệch?
👉 Dựa vào phương pháp checksum
    Thiết bị gửi dữ liệu: đối với mỗi packet được truyền đi, ta thêm vào nó một byte đặc biệt gọi là checksum byte được tính theo một công thức nhất định từ giá trị các bytes trong packet.
    Thiết bị nhận dữ liệu: sau khi nhận xong các bytes của 1 packet, tiến hành tính toán theo công thức tương tự như bên gửi dữ liệu, nếu kết quả tính toán khớp với checksum byte thì dữ liệu đã được truyền thành công.
    Để biết công thức tính checksum, hãy research bạn nhé!

Kết nối không dây

Các thiết bị sẽ kết nối bằng sóng vô tuyến mà không cần dùng dây cáp.
Điển hình là WiFi, sử dụng modem để phát sóng vô tuyến ở phổ tần 2.4Ghz và 5.0GHz.
Tất cả thiết bị muốn kết nối với nhau trước hết phải kết nối với modem này, lúc này thiết bị sẽ liên tục lắng nghe tín hiệu từ modem.
Một khi thiết bị kết nối tới modem, modem sẽ định danh thiết bị đó bằng một địa chỉ IP. Mỗi thiết bị trong mạng LAN lúc này sẽ có một IP cố định và không trùng nhau.
Cách chia sẻ dữ liệu như sau:
    Thiết bị gửi: thêm địa chỉ IP máy nhận vào packet trước khi gửi nó đi.
    Dữ liệu được truyền đến modem, modem sẽ truyền dữ liệu này đến tất cả các thiết bị đang lắng nghe nó (broadcast).
    Thiết bị nhận: nhận dữ liệu truyền đến từ modem, kiểm tra thông tin IP máy nhận trong packet, nếu trùng với IP hiện tại của thiết bị thì tiến hành xử lý, ngược lại thì bỏ qua nó.

Internet 

Internet là một mạng viễn thông giống như một hạ tầng mạng dùng bộ giao thức (TCP/IP) để kết nối các thiết bị trên toàn cầu, cho phép người dùng truy cập dữ liệu hoặc thông tin từ các máy tính khác.

TCP/IP Standard

<Transmission Control Protocol / Internet Protocol>
Là một bộ giao thức trao đổi thông tin được sử dụng để truyền tải và kết nối các thiết bị trong mạng Internet.
  • FREE
  • Xây dựng dựa trên tiêu chuẩn cộng đồng (vendor-neutral or open standard) -> không bị control bởi bất cứ vendor nào.
  • Cách giao tiếp: xác định địa chỉ, định dạng dữ liệu, kiểm tra tính toàn vẹn (checksum scheme).
  • TCP/IP packet phải chứa cả 2 IP addresses là địa chỉ gửi và địa chỉ nhận.

IP Address

  • IPv4 gồm 4 bytes, phân thành 4 nhóm, mỗi nhóm 1 byte (1 byte = 8 bits = 256 patterns => mỗi byte có giá trị từ 0 đến 255).
    Ví dụ: 10.144.0.1
  • IPv6 gồm 16 bytes, phân thành 8 nhóm, mỗi nhóm 2 bytes.
    Ví dụ: FEDC:BA98:768A:0C98:FEBA:CB87:7678:1111:1080:0000:0000:0070:0000:0989:CB45:345F

Vì địa chỉ này khá khó nhớ để người dùng truy cập nên khái niệm domain ra đời (Domain name => human-readable name for IP Address).
Để phân giải tên miền thì chúng ta sử dụng dịch vụ DNS (domain name system).

Địa chỉ IP đặc biệt: 
10.x.x.x và 192.168.x.x => là địa chỉ đặc biệt, chỉ sử dụng cho local network, không được hợp lệ trên môi trường internet.

Tổng kết

Bài viết này tổng hợp những khái niệm cơ bản về Network trong Computer Science.
Bạn có thể tìm hiểu thêm về DNS, DHCP, Router,... nếu muốn mở rộng thêm kiến thức về Network.

Hy vọng bạn có được thêm kiến thức mới.
Keep learning 💪

Nhận xét

Bài đăng phổ biến từ blog này

Effective Java 01 - Consider static factory methods instead of constructors

Ở bài viết này, chúng ta sẽ bàn về cách để tạo Object trong Java. Để tạo mới một Object trong Java thì cách truyền thống là provide một public constructor và sử dụng keyword new ở client. Có một cách khác mà chúng ta nên biết và consider để sử dụng thay cho cách truyền thống đó là provide static factory methods . Vậy ưu điểm và nhược điểm của static factory methods là gì, chúng ta sẽ cùng tìm hiểu trong bài viết này. Cách truyền thống: Provide a public constructor Ví dụ: Class Student.java public class Student { private long id ; private String name ; public Student ( long id , String name ) { this . id = id ; this . name = name ; } } Client có thể tạo instance bằng cách sử dụng new keyword: Student student = new Student ( 1 , "Nguyễn Văn A" ); Sử dụng Static Factory Methods Ví dụ: Class Student.java public class Student { private long id ; private String name ; private Student ( long id , Strin...

Effective Java 02 - Consider a builder when faced with many constructor parameters

 Khi một Object có thể được tạo từ nhiều attributes khác nhau thì chúng ta nên consider sử dụng Builder Pattern thay cho Static factories hoặc Constructors . Ví dụ sử dụng Builder Pattern: // Builder Pattern public class NutritionFacts { private final int servingSize ; private final int servings ; private final int calories ; private final int fat ; private final int sodium ; private final int carbohydrate ; public static class Builder { // Required parameters private final int servingSize ; private final int servings ; // Optional parameters - initialized to default values private int calories = 0 ; private int fat = 0 ; private int sodium = 0 ; private int carbohydrate = 0 ; public Builder ( int servingSize , int servings ) { this . servingSize = servingSize ; this . servings = servings ; } public Builder calories ( int val ) { calories = val ; retu...