|
|
Danh hiệu: Administration
Nhóm: Administrators
Gia nhập: 23-07-2013(UTC) Bài viết: 6,117   Đến từ: Vietnam Cảm ơn: 10 lần Được cảm ơn: 2 lần trong 2 bài viết
|
Networking – Một số khái niệm cơ bản Networking là một lĩnh vực thú vị và quan trọng trong hầu hết các ngôn ngữ lập trình hiện đại. Trong bài này ta sẽ dành một chút thời gian tìm hiểu về một vài khái niệm cơ bản trong lập trình mạng như: IP, TCP, UDP, Socket... |
| | 1. Internet Protocol (IP) và Packet: | | IP là một giao thức để truyền tải thông tin giữa hai hệ thống thông qua các packet. IP sẽ sử dụng các địa chỉ nguồn và đích để tạo ra các packet. (gọi là địa chỉ: IP Address). | | IP Packet được chia thành hai phần: header (thông tin điều khiển hay meta-data) và body (dữ liệu cần truyền tải). Thông tin điều khiển (header) sẽ chứa các thông tin như: phiên bản (IPv4, IPv6), độ dài dữ liệu, kiểu giao thức (TCP, UDP,...), địa chỉ nguồn, đích, checksum (dùng để kiểm tra tính toàn vẹn của dữ liệu),... Dữ liệu truyền theo trong các packet có thể bị mất, trùng lặp hoặc gửi đến sai thứ tự. | | Để dễ hình dung, khái niệm này tương tự như một bức thư. Bạn viết một lá thư (data) và cho nó vào phong bì (packet), điền địa chỉ người nhận (Destination Address) và địa chỉ của bạn (Source Address). Và giống như một bức thư, bạn không thể biết packet có được gửi đến đích hay không, và cũng không có sự đảm bảo nào để bức thư bạn gửi trước sẽ đến đích trước. |
| | 2. Transmission Control Protocol (TCP) | | Đây là giao thức trung gian hoạt động giữa chương trình ứng dụng và IP. TCP và IP là hai giao thức đầu tiên được định nghĩa và là thành phần chính để tạo nên bộ giao thức TCP/IP. Nhiệm vụ của TCP là phát hiện các lỗi khi truyền tải dữ liệu của IP và yêu cầu gửi, sắp xếp lại, và giúp giảm sự quá tải trong mạng. Khi nhận được dữ liệu, TCP sẽ thực hiện lắp ráp lại các packet và chuyển tới chương trình ứng dụng. Do đó, TCP được gọi là giao thức "đáng tin cậy" (reliable) và hướng kết nối (connection-oriented). Điều này cũng khiến cho TCP trở nên chậm và không phù hợp trong các ứng dụng đòi hỏi sự truyền tải tức thời như VoIP | | TCP là giao thức hướng kết nối: Nghĩa là yêu cầu phải có kết nối giữa client và server thì mới truyền dữ liệu được. | |  |
| | 3. User Datagram Protocol (UDP). | | UDP là một thành phần của TCP/IP và cũng là giao thức trung gian nằm bên trên IP. Giao thức này được dùng để truyền tải dữ liệu trên mạng thông qua các datagram. Không giống như TCP, dữ liệu được truyền bởi UDP không được đảm bảo đến được đích và theo thứ tự. Thay vào đó, UDP có tốc độ truyền tải nhanh hơn TCP và được sử dụng trong các ứng dụng để truyền tải media, VoIP, game online. Do không cần phải duy trì kết nối như TCP nên UDP được gọi là giao thức không hướng kết nối (connectionless hay stateless).. | | UDP là giao thức phi kết nối: Nghĩa là không cần xác lập kết nối giữa client và server mà vẫn gửi dữ liệu được (VD: Gửi email cho 1 ai đó hoặc gửi tin nhắn YM offline, mà không cần biết bên kia có kết nối hay không, bạn vẫn có thể truyền đi gói tin của mình). | |  |
| | 4. Unicast, Broadcast, Multicast và Anycast: | | Unicast là khái niệm chỉ sự truyền tải thông tin giữa hai điểm. Phương pháp này rất hạn chế trong việc truyền dữ liệu đến nhiều máy vì phải truyền nhiều lần và thiết lập nhiều kết nối. | | Broadcast là sự truyền tải đến tất cả các điểm. Tuy nhiên rất lãng phí băng thông bởi vì không phải tất cả các máy đều cần đến dữ liệu. | | Multicast được sử dụng để truyền dữ liệu từ một điểm đến một nhóm điểm, nhưng không phải tất cả. | | TCP bị giới hạn chỉ sử dụng được Unicast. Trong đó UDP sử dụng được cả Unicast, Broadcast và Multicast. | | Ngoài ra còn có phương thức Anycast, giống như broadcast và multicast, tuy nhiên anycast chỉ truyền đến điểm "gần nhất" |
| | 5. Port: | | TCP và UDP sử dụng khái niệm cổng (port) cho mỗi loại ứng dụng gửi và nhận dữ liệu. Số hiệu cổng được lưu trữ trong một số 16 bit và có giá trị từ 0 đến 65535. | | Các cổng được chia thành 3 loại theo phạm vi: | - | Well-known port: 0-1023: (Đây là port dành riêng cho Windows và các ứng dụng của Windows). | - | Registered port: 1024-49151. | - | Dynamic, private port: 49152–65535. |
|
|
|
|
|
|
|
Di chuyển
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.