Skip to content
Go back

[Computer Science] Kiến thức về networking cơ bản

Published:  at  08:29 PM

Bài viết tổng hợp câu trả lời cho các câu hỏi networking cơ bản trong computer science được fork từ repo: https://github.com/vietnakid/learning-material.git

Table of contents

Open Table of contents

Concept of TCP

What are the differences between TCP and UDP? And in which case we use which?

Tiêu chíTCP (Transmission Control Protocol)UDP (User Datagram Protocol)
Định nghĩaTCP là giao thức truyền tải đáng tin cậy, đảm bảo dữ liệu được gửi và nhận chính xác, theo đúng thứ tự.UDP là giao thức truyền tải nhanh nhưng không đảm bảo dữ liệu đến đúng thứ tự hay thậm chí là đến được.
Kiểu kết nốiCó kết nối (connection-oriented). Trước khi gửi dữ liệu, nó thiết lập một kết nối giữa hai thiết bị (qua quá trình bắt tay 3 bước - three-way handshake).Không có kết nối (connectionless). Dữ liệu được gửi trực tiếp mà không cần thiết lập trước.
Độ tin cậyĐảm bảo độ tin cậy cao nhờ cơ chế kiểm tra lỗi, sắp xếp lại thứ tự gói tin nếu cần, và gửi lại nếu dữ liệu bị mất.Không có cơ chế kiểm tra lỗi hay gửi lại. Nếu gói tin bị mất, nó không được khôi phục.
Tốc độChậm hơn do phải xử lý kiểm tra lỗi và đảm bảo thứ tự.Nhanh hơn vì không có các bước kiểm tra bổ sung.
Kiểm soát lỗiCó checksum, phát hiện lỗi và gửi lại nếu cần.Có checksum nhưng không gửi lại nếu lỗi.
Kiểm soát luồngCó (flow control) để tránh quá tải.Không có.
Kiểm soát tắc nghẽnCó (congestion control) để điều chỉnh tốc độ mạng.Không có.
Header sizeLớn hơn (20 bytes tối thiểu).Nhỏ hơn (8 bytes).
Cách truyền dữ liệuTruyền dữ liệu dạng luồng (stream), đảm bảo dữ liệu liên tục và không bị ngắt quãng.Truyền dữ liệu dạng gói tin (datagram), từng gói độc lập với nhau.
Trường hợp sử dụngHTTP/HTTPS, FTP, SMTP (email), SSH.DNS, DHCP, video streaming, game online.

How Ping command works? What is TTL?? How does TTL will be changed??

How HTTP works?

When you type “google.com” into your browser, that will happen when you type enter till everything is displayed on your screen?

Thường sẽ có các bước chính sau đây:

  1. DNS Lookup: Trình duyệt tìm địa chỉ IP của “google.com”.
  2. Thiết lập kết nối: Trình duyệt dùng IP để kết nối tới server qua TCP (hoặc UDP).
  3. Gửi HTTP/HTTPS Request: Yêu cầu nội dung từ server.
  4. Nhận Response: Server trả về HTML, sau đó tải thêm tài nguyên như JS, hình ảnh.
  5. Hiển thị: Trình duyệt render nội dung lên màn hình.

What is the connection pool?

How to implement connection pool in your programing language?

Đối với Java

  1. Nếu dùng Maven, thêm vào pom.xml

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>5.0.1</version>
    </dependency>
  2. Cấu hình Connection Pool

    import com.zaxxer.hikari.HikariConfig;
    import com.zaxxer.hikari.HikariDataSource;
    import java.sql.Connection;
    import java.sql.SQLException;
    
    public class DatabaseConnectionPool {
        private static HikariDataSource dataSource;
    
        static {
            // Cấu hình pool
            HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database"); // URL database
            config.setUsername("your_username");
            config.setPassword("your_password");
            config.setMaximumPoolSize(10); // Số kết nối tối đa
            config.setMinimumIdle(5);      // Số kết nối tối thiểu khi không hoạt động
            config.setIdleTimeout(30000);  // Thời gian chờ trước khi đóng kết nối nhàn rỗi (ms)
    
            // Khởi tạo pool
            dataSource = new HikariDataSource(config);
        }
    
        // Lấy kết nối từ pool
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection();
        }
    
        // Đóng pool (khi ứng dụng tắt)
        public static void closePool() {
            if (dataSource != null && !dataSource.isClosed()) {
                dataSource.close();
            }
        }
    }
  3. Sử dụng trong chương trình

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class Main {
        public static void main(String[] args) {
            try (Connection conn = DatabaseConnectionPool.getConnection()) {
                PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users");
                ResultSet rs = stmt.executeQuery();
                while (rs.next()) {
                    System.out.println("User: " + rs.getString("name"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                DatabaseConnectionPool.closePool(); // Đóng pool khi xong
            }
        }
    }

Đối với ngôn ngữ khác

What is socket?


What is TCP proxy? reverse proxy? and VPN?



Suggest Changes

Previous Post
[Computer Science] Kiến thức về OS cơ bản
Next Post
Máy tính cộng trừ nhân chia số thập phân như thế nào?