Hướng dẫn lập trình Network với C#
Người hướng dẫn: Xcross87 | congdongcviet.com
<Chú ý: chỉ viết mới mục đích hướng dẫn lập trình Network chứ không phải đi sâu vào network nhé, các bạn chú ý điều này; nếu chỗ nào không biết, không rõ là phải Google ngay>

Phần 1 : Cơ bản về Network và các mô hình

Mạng máy tính là gì?
-Mạng máy tính hay hệ thống mạng (computer network hay network system) là một tập hợp các máy tính tự hoạt được kết nối với nhau thong qua các phương tiện truyền dẫn nhằm chia sẻ tài nguyên: thông tin, âm nhạc, tin tức, máy in…
-Máy tính tự hoạt (autonomous) là máy tính có thể tự khởi động dịch vụ và tự kích hoạt chương trình đã được cài đặt trong máy và vận hành không cần có sự điều khiển hay chi phối bên ngoài.
Các thành phần mạng cơ bản
-Hệ thống đầu cuối: có thể là các máy tính kết nối với nhau hay các phương tiện truyền thông có thể kết nối. Ví dụ: Tivi, PDA, Mobile…
-Môi trường truyền (media) như cáp quang, cáp điện thoại, song điện từ…
-Giao thức mạng (Protocol) là quy định cụ thể về cách thức trao đổi thông tin của thực thể riêng biệt. Ví dụ: HTTP, FTP, POP3, SMTP…
Các đối tượng chính của mạng
-LAN: Local Area Network: mạng cục bộ
-MAN: Metropolitian Area Network: mạng đô thị
-WAN: Wide Area Network: mạng diện rộng
-Wireless: mạng không dây (theo kiểu LAN)
-Internetwork: liên mạng, các điểm nối lớn thông qua các Gateway giữa các mạng.
Các mô hình mạng điển hình:
1.OSI: <Open Systems Interconnection Reference Model>
Cấu trúc gồm 7 lớp (layer)
a.Tầng 7 : Lớp ứng dụng – Application Layer
b.Tầng 6 : Lớp trình diễn – Presentation Layer
c.Tầng 5 : Lớp luân phiên – Session Layer
d.Tầng 4 : Lớp vận tải (truyền tải) – Transport Layer
e.Tầng 3 : Lớp mạng – Network Layer
f.Tầng 2 : Lớp liên kết dữ liệu – Data Link Layer
g.Tầng 1 : Lớp vật lý – Physical Layer
2.TCP/IP Model: <Internet reference model>
Cấu trúc gồm 5 lớp
a.Tầng 5 : Lớp ứng dụng – Application Layer
b.Tầng 4 : Lớp vận tải – Transport Layer
c.Tầng 3 : Lớp mạng – Network Layer
d.Tầng 2 : Lớp lien kết dữ liệu – Data Link Layer
e.Tầng 1 : Lớp vật lý – Physical Layer
Cổng (Port) là gì?
- Nếu như bạn đang kết nối Internet và muốn vừa duyệt Web và duyệt email cùng một lúc, máy tính phải quy định dịch vụ theo hướng luân chuyển traffic, tức là chia nhánh để nhận và gửi thông tin. HTTP với cổng 80, POP3 thường với cổng 110 … Bạn có thể tưởng tượng như một ngôi nhà bạn muốn mở cửa để người ra vào và mở cửa sổ để ánh nắng vào , mỗi cánh cửa chính là một cổng và ngôi nhà chính là chiếc máy tính.
Một số cổng thông dụng:
20 : FTP (data)
21 : FTP (control)
25 : SMTP(email, outgoing)
53 : DNS (domain names)
80 : HTTP (web)
110: POP3(email, incoming)
119: NNTP(news)
143: IMAP(email, incoming)
Các bạn có thể tham khảo chi tiết tại: _www.iana.org

Socket là gì?
Socket có thể hiểu đơn giản là một đối tượng thể hiện điểm truy cập ở mức độ thấp trong stack của IP. Socket có thể ở được đóng và mở theo trạng thái kết nối và truyền tải dữ liệu trong kết nối. Dữ liệu thông thường được truyền tải đi với một block khoảng vài kilobyes (KB) tại một thời điểm. Mỗi block đó được gọi là một packet.
Các packet di chuyển trong mạng phải được sử dụng với Internet Protocol hay IP bao gồm địa chỉ đến (destination) và địa chỉ nguồn (source) nằm trong packet header với thông tin về kiểu cách thức dữ liệu truyền tải (FTP, HTTP, SMTP…) để được kết nối với một Port nhất định.
Có 2 loại Protocol nhận nhiệm vụ truyền tải và đảm bảo dữ liệu gửi nhận là TCP và UDP. UDP có độ latency thấp hơn TCP, nhất là khi khởi động. Nếu lượng dữ liệu muốn đảm bảo tuyệt đối, không mất mát thì sử dụng TCP (tất nhiên sẽ chậm), còn UDP thì không đảm bảo, tuy nhiên với lượng dữ liệu mất đi một chút không ảnh hưởng nhiều. Chú ý: dữ liệu truyền tải dưới 2 hình thức này chỉ mất khi gặp sự cố ví dụ: mạng trục trặc, dữ liệu bị treo giữa chừng giữa các điểm nối, dữ liệu bị ăn cắp (packet capture)…
Ví dụ: HTTP, POP3… sử dụng TCP; Peer2Peer sử dụng UDP.

Công cụ cần thiết để bắt đầu với lập trình Network với C#.
-Visual Studio 2005+
-.NET Framework 2.0+ (không nên xài thấp hơn như 1.1 vì có quá nhiều Deprecate và Obsolete).
-Component sử dụng chính: System.Net

Kết thúc Phần 1.