Tải bản đầy đủ (.doc) (39 trang)

Giáo trình mạng máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (483.59 KB, 39 trang )

Truyền file qua mạng

MỤC LỤC
Chương 1. CĂN BẢN VỀ MẠNG MÁY TÍNH.............................................................3
1.1 Định nghĩa mạng máy tính........................................................................................3
1.2. Nhu cầu phát triển mạng máy tính..........................................................................4
1.3.Phân loại mạng máy tính...........................................................................................5
1.4. Một số topo mạng thông dụng..................................................................................7
1.5. Giao thức mạng.........................................................................................................8
1.5.1 Giao thức TCP.........................................................................................................8
1.5.2 Giao thức UDP.......................................................................................................10
1.6. Các mô hình hoạt động của mạng máy tính..........................................................11
1.6.1. Mô hình hoạt động peer to peer..........................................................................12
1.6.2. Mô hình hoạt động clients/ server.......................................................................12
Chương 2. LẬP TRÌNH MẠNG VỚI SOCKET..........................................................13
2.1.TỔNG QUAN VỀ C#...............................................................................................13
2.1.1.Cơ Bản Về NET Framework................................................................................13
2.1.2.Các thành phần của .NET Framework................................................................13
2.1.3.Các tính năng cơ bản của ngôn ngữ lập trình C#...............................................14
2.1.4.Các ứng dụng của C#............................................................................................14
2.1.5.Các lợi ích của C#..................................................................................................15
2.2.GIỚI THIỆU VỀ LẬP TRÌNH SOCKET..............................................................15
2.3.LẬP TRÌNH MẠNG VỚI TCPSOCKET..............................................................16
2.3.1.Mô hình giao thức..................................................................................................16
2.3.2.Thiết lập kết nối.....................................................................................................17
2.3.3.Truyền nhận dữ liệu..............................................................................................18
2.3.4.Đóng liên kết..........................................................................................................19
2.4.LẬP TRÌNH MẠNG VỚI UDP SOCKET.............................................................20
2.4.1.Giao thức UDP.......................................................................................................20
2.4.2.Một số thuật ngữ UDP..........................................................................................20
SVTH: Nguyễn Văn Tiến – Lớp: 10T4



Trang 1


Truyền file qua mạng
2.4.3.Hoạt động của giao thức UDP..............................................................................22
2.4.4.Các nhược điểm của giao thức UDP....................................................................22
2.4.5.Các ưu điểm của UDP...........................................................................................23
2.4.6.Khi nào thì nên sử dụng UDP...............................................................................24
2.5.MÔ HÌNH CLIENT/SERVER................................................................................24
2.5.1.Tổng quan..............................................................................................................24
2.5.2.Giao thức cho ứng dụng Client/Server................................................................32
Chương 3. XÂY DỰNG VÀ THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH...............36
3.1.GIỚI THIỆU VỀ CHƯƠNG TRÌNH.....................................................................36
3.2.KỸ THUẬT CHIA NHỎ VÀ NỐI FILE................................................................36
PHƯƠNG THỨC GỞI FILE.................................................................................36
PHƯƠNG THỨ NHẬN FILE................................................................................37
3.3.GIAO DIỆN VÀ SỬ DỤNG CHƯƠNG TRÌNH:..................................................37
3.3.1.Giao diện:............................................................................................................... 37
3.3.1.1.Chương trình Server :........................................................................................37
3.3.1.2.Chương trình Client...........................................................................................38
TÀI LIỆU THAM KHẢO.............................................................................................39

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 2


Truyền file qua mạng


Chương 1.

CĂN BẢN VỀ MẠNG MÁY TÍNH

1.1 Định nghĩa mạng máy tính.
Mạng máy tính là một tập hợp các máy tính được nối với nhau bởi đường truyền
theo một cấu trúc nào đó và thông qua đó các máy tính trao đổi thông tin qua lại cho
nhau.
Đường truyền là hệ thống các thiết bị truyền dẫn có dây hay không dây dùng để
chuyển các tín hiệu điện tử từ máy tính này đến máy tính khác. Các tín hiệu điện tử đó
biểu thị các giá trị dữ liệu dưới dạng các xung nhị phân (on - off). Tất cả các tín hiệu được
truyền giữa các máy tính đều thuộc một dạng sóng điện từ. Tùy theo tần số của sóng điện
từ có thể dùng các đường truyền vật lý khác nhau để truyền các tín hiệu. Ở đây đường
truyền được kết nối có thể là dây cáp đồng trục, cáp xoắn, cáp quang, dây điện thoại, sóng
vô tuyến ... Các đường truyền dữ liệu tạo nên cấu trúc của mạng. Hai khái niệm đường
truyền và cấu trúc là những đặc trưng cơ bản của mạng máy tính.

Hình 1.1 Một mô hình các máy tính liên kết trong mạng

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 3


Truyền file qua mạng
1.2. Nhu cầu phát triển mạng máy tính
Ngày nay, khi máy tính được sử dụng một cách rộng rãi và số lượng máy tính
trong một văn phòng hay cơ quan được tăng lên nhanh chóng thì việc kết nối chúng trở
nên vô cùng cần thiết và sẽ mang lại nhiều hiệu quả cho người sử dụng.
Với một lượng lớn về thông tin, nhu cầu xử lý thông tin ngày càng cao, mạng máy

tính đã trở nên quá quen thuộc đối với chúng ta trong mọi lĩnh vực như: khoa học, quân
sự, quốc phòng, thương mại, dịch vụ, giáo dục...
Người ta thấy được việc kết nối các máy tính thành mạng cho chúng ta những khả
năng mới to lớn như:
-

Sử dụng chung tài nguyên: những tài nguyên (như thiết bị, chương trình, dữ

liệu) khi được trở thành các tài nguyên chung thì mọi thành viên của mạng đều có thể tiếp
cận được mà không quan tâm tới những tài nguyên đó ở đâu.
-

Tăng độ tin cậy của hệ thống: người ta có thể dễ dàng bảo trì máy móc, lưu

trữ (backup) các dữ liệu chung và khi có trục trặc trong hệ thống thì chúng có thể được
khôi phục nhanh chóng. Trong trường hợp có trục trặc trên một trạm làm việc thì người ta
cũng có thể sử dụng những trạm khác thay thế.
-

Nâng cao chất lượng và hiệu quả khai thác thông tin: khi thông tin có thể

được sử dụng chung thì nó mang lại cho người sử dụng khả năng tổ chức lại các công
việc với những thay đổi về chất như:
+ Ðáp ứng những nhu cầu của hệ thống ứng dụng kinh doanh hiện đại.
+ Cung cấp sự thống nhất giữa các dữ liệu.
+ Tăng cường năng lực xử lý nhờ kết hợp các bộ phận phân tán.
+ Tăng cường truy nhập tới các dịch vụ mạng khác nhau đang được cung
cấp trên thế giới.
Với nhu cầu đòi hỏi ngày càng cao của xã hội nên vấn đề kỹ thuật trong mạng
là mối quan tâm hàng đầu của các nhà tin học. Ví dụ như làm thế nào để truy xuất

thông tin một cách nhanh chóng và tối ưu, trong khi việc xử lý thông tin trên mạng
SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 4


Truyền file qua mạng
quá nhiều, đôi khi có thể làm tắc nghẽn và gây ra mất thông tin một cách đáng tiếc.
Hiện nay, việc làm sao có được một hệ thống mạng chạy thật tốt, thật an toàn với
lợi ích kinh tế cao đang rất được quan tâm.
1.3.Phân loại mạng máy tính
Do hiện nay mạng máy tính được phát triển khắp nơi với những ứng dụng ngày càng
đa dạng cho nên việc phân loại mạng máy tính là một việc rất phức tạp.
Dựa theo phạm vi phân bố của mạng ta có thể phân ra các loại mạng như sau:
- Mạng cục bộ LAN (Local Area Network):
Mạng LAN là một nhóm máy tính và các thiết bị truyền thông mạng được nối kết
với nhau trong một khu vực nhỏ như một tòa nhà cao ốc, khuôn viên trường đại học, khu
giải trí… Các mạng LAN thường có đặc điểm sau:
+ Băng thông lớn, có khả năng chạy các ứng dụng trực tuyến như xem phim, hội
thảo qua mạng.
+ Kích thước mạng bị giới hạn bởi các thiết bị
+ Chi phí các thiết bị mạng LAN tương đối rẻ
+ Quản trị đơn giản

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 5


Truyền file qua mạng

- Mạng đô thị MAN (Metropolitan Area Network): Mạng MAN gần giống như
mạng LAN nhưng giới hạn của nó là một thành phố hay một quốc gia. Mạng MAN nối
kết các mạng LAN lạ với nhau thông qua các phương tiện truyền dẫn khác nhau (cáp
quang, cáp đồng, sóng….) và các phương thức truyền thông khác nhau.
Đặc điểm của mạng MAN:
+ Băng thông mức trung bình, đủ để phục vụ các ứng dụng cấp thành phố hay quốc
gia như chính phủ điện tử, thương mại điện tử, các ứng dụng của các ngân hàng…
+ Do MAN nối kết nhiều LAN với nhau nên độ phức tạp cũng tăng đồng thời công
tác quản trị sẽ khó khăn hơn.
+ Chi phí các thiết bị mạng MAN tương đối đắt tiền.
- Mạng diện rộng WAN (Wide Area Network): Mạng WAN bao phủ vùng địa lý
rộng lớn có thể là một quốc gia, một lục địa hay toàn cầu. Mạng WAN thường là mạng
của các công ty đa quốc gia hay toàn cầu, điển hình là mạng internet. Do phạm vi rộng
lớn của mạng WAN nên thông thường mạng WAN là tập hợp các mạng LAN, WAN nối
lại với nhau bằng các phương tiện như: vệ tinh (satellites), sóng biva (microwave), cáp
quang, cáp điện thoại.
Đặc điểm của mạng WAN:
+ Băng thông thấp, dễ mất kết nối, thường chỉ phù hơp với các ứng dụng offine như
e-mail, web, ftp…
+ Phạm vi hoạt động rộng lớn không giới hạn
+ Do kết nối của nhiều LAN, WAN lại với nhau nên mạng rất phức tạp và có tính
toàn cầu nên thường là có tổ chức quốc tế đứng ra quản trị
+ Chi phí cho các thiết bị và các công nghệ mạng WAN rất đắt tiền

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 6


Truyền file qua mạng


- Mạng Internet: Là trường hợp đặc biệt của mạng WAN, nó cung cấp các dịch
vụ toàn cầu như mail, web, chat, ftp và phục vụ miễn phí cho mọi người.
1.4. Một số topo mạng thông dụng
Theo định nghĩa về mạng máy tính, các máy tính được nối với nhau bởi các đường
truyền vật lý theo một kiến trúc nào đó, các kiến trúc đó gọi là Topology. Thông thường
mạng có ba loại kiến trúc đó là: mạng hình sao (Star Topology), mạng dạng tuyến (Bus
Topology), mạng dạng vòng(Ring Topology).
- Ring Topology: Mạng được bố trí vòng tròn, đường dây cáp được thiết kế làm
thành một vòng khép kín, tín hiệu chạy theo một chiều nào đó. Các nút truyền tín hiệu cho
nhau tại một thời điểm được một nút mà thôi. Mạng dạng vòng có thuận lợi là có thể nới
rộng ra xa nhưng đường dây phải khép kín, nếu bị ngắt ở một nơi nào đó thì toàn bộ hệ
thống cũng bị ngưng.

- Bus Topology: Ở dạng Bus tất cả các nút được phân chia một đường truyền chính
(bus). Đường truyền này được giới hạn hai đầu bởi một loại đầu nối đặc biệt gọi là
Terminator. Khi một nút truyền dữ liệu, tín hiệu được quảng bá trên hai chiều của bus,
mọi nút còn lại đều được nhận tín hiệu trực tiếp. Loại mạng này dùng dây cáp ít, dễ lắp
SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 7


Truyền file qua mạng
đặt. Tuy vậy cũng có những bất lợi đó là sẽ có sự ùn tắc giao thông khi di chuyển với lưu
lượng lớn và khi có sự hỏng hóc ở đoạn nào đó thì rất khó phát hiện, nếu một nút ngừng
hoạt động sẽ ảnh hưởng tới toàn bộ hệ thống.

- Star Topology: Mạng hình sao bao gồm một bộ tập trung và các nút thông tin. Các
nút thông tin có thể là các trạm cuối, các máy tính hay các thiết bị khác của mạng. Mạng

hoạt động theo nguyên lý nối song song nên nếu có một nút bị hỏng mạng vẫn hoạt động
bình thường. Mạng có thể mở rộng hoặc thu hẹp tùy theo yêu cầu của người sử dụng, tuy
nhiên mở rộng phụ thuộc và khả năng của trung tâm.
1.5. Giao thức mạng
Giao thức mạng là một tập các quy tắc, quy ước để trao đổi thông tin giữa hai hệ thống
máy tính hoặc hai thiết bị máy tính với nhau. Nói một cách hình thức thì giao thức mạng là
một ngôn ngữ được các máy tính trong mạng sử dụng để trao đổi dữ liệu với nhau. Có
nhiều loại giao thức được sử dụng trong mạng máy tính như: Apple Talk, DLC, NetBEUI,
… nhưng hiện nay giao thức được sử dụng phổ biến nhất trong mạng máy tính là giao thức
TCP/IP.
1.5.1 Giao thức TCP
Định nghĩa: TCP(Transmission Control Protocol) là giao thức hướng kết nối, nó cung
cấp một đường truyền dữ liệu tin cậy giữa hai máy tính. Tính tin cậy thể hiện ở việc nó
đảm bảo dữ liệu được gửi sẽ đến được đích và theo đúng thứ tự như khi nó được gửi.
Khi hai ứng dụng muốn giao tiếp với nhau một cách tin cậy, chúng sẽ tạo ra đường kết
nối giữa chúng và gửi dữ liệu thông qua đường này. Cách trao đổi dữ liệu này tương tự
như cách chúng ta gọi điện thoại. Hãy lấy ví dụ khi bạn nhấc điện thoại lên và quay số
SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 8


Truyền file qua mạng
của người họ hàng này, lúc dó một kết nối sẽ được tạo ra giữa điện thoại của bạn và người
họ hàng, sau đó bạn gửi và nhận dữ liệu (dưới dạng âm thanh) bằng cách nói và nghe qua
điện thoại của bạn. Toàn bộ việc thực hiện kết nối và truyền dữ liệu giữa hai máy điện
thoại được thực hiện bởi công ty điện thoại thông qua các trạm và đường dây điện thoại,
nhiệm vụ duy nhất của bạn là quay số để cung cấp cho nhà cung cấp dịch vụ điện thoại
biết số điện thoại bạn muốn liên lạc. Giống như vậy, trong việc truyền dữ liệu qua mạng
thì TCP đóng vai trò như nhà cung cấp dịch vụ điện thoại ở ví dụ trên, nó làm nhiệm vụ

tạo kết nối và truyền dữ liệu giữa hai điểm giao tiếp để đảm bảo dữ liệu không bị mất và
tới đích theo đúng trật tự như khi chúng ta gửi.
Tính tin cậy của đường truyền được thể hiện ở hai điểm sau:


Mọi gói tin cần gửi sẽ đến được đích. Để làm được điều này thì mỗi lần phía gửi

gửi xong một gói tin nó sẽ chờ nhận một xác nhận từ bên nhận rằng đã nhận được gói tin.
Nếu sau một khoảng thời gian mà phía gửi không nhận được thông tin xác nhận phản hồi
thì nó sẽ phát lại gói tin. Việc phát lại sẽ được tiến hành cho đến khi việc truyền tin thành
công, tuy nhiên sau một số lần phát lại max nào đó mà vẫn chưa thành công thì phía gửi
có thể suy ra là không thể truyền tin được và sẽ dừng việc phát tin.


Các gói tin sẽ được trình ứng dụng nhận được theo đúng thứ tự như chúng được

gửi. Bởi các gói tin có thể được dẫn đi trên mạng theo nhiều đường khác nhau trước khi
tới đích nên thứ tự khi tới đích của chúng có thể không giống như khi chúng được phát.
Do đó để đảm bảo có thể sắp xếp lại gói tin ở phía nhận theo đúng thứ tự như khi chúng
được gửi, giao thức TCP sẽ gắn vào mỗi gói tin một thông tin cho biết thứ tự của chúng
trong cả khối tin chung được phát nhờ vậy bên nhận có thể sắp xếp lại các gói tin theo
đúng thứ tự của chúng.
Như vậy có thể thấy TCP cung cấp cho chúng ta một kênh truyền thông điểm- điểm
phục vụ cho các ứng dụng đòi hỏi giao tiếp tin cậy như HTTP (HyperText Transfer
Protocol), FTP (File Tranfer Protocol), Telnet…. Các ứng dụng này đòi hỏi một kênh
giao tiếp tin cậy bởi thứ tự của dữ liệu được gửi và nhận là yếu tố quyết định đến sự
thành công hay thất bại của chúng. Hãy lấy ví dụ khi HTTP được sử dụng để đọc thông
tin từ một địa chỉ URL, dữ liệu phải được nhận theo đúng thứ tự mà chúng được gửi nếu
SVTH: Nguyễn Văn Tiến – Lớp: 10T4


Trang 9


Truyền file qua mạng
không thứ mà bạn nhận được có thể là một trang HTML với nội dung lộn xộn hoặc một
file zip bị lỗi và không giải nén….
1.5.2 Giao thức UDP
Định nghĩa: UDP (User Datagram Protocol) là giao thức không hướng kết nối, nó
gửi các gói dữ liệu độc lập gọi là datagram từ máy tính này đến máy tính khác mà không
đảm bảo việc dữ liệu sẽ tới đích.
Ở phần trước chúng ta đã thấy trong giao thức TCP khi hai chương trình muốn giao
tiếp với nhau qua mạng chúng tạo ra một kết nối liên kết hai ứng dụng và trao đổi dữ liệu
qua kết nối đó. Trái lại ở giao thức UDP khi hai ứng dụng muốn giao tiếp với nhau chúng
không tạo ra kết nối mà chỉ đơn thuần gửi các gói tin một cách độc lập từ máy này tới
máy khác.Các gói tin như vậy gọi là các datagram. Việc gửi các gói tin như vậy tương tự
như việc chúng ta gửi thư qua đường bưu điện. Các bức thư bạn gửi độc lập với nhau, thứ
tự các thư là không quan trọng và không có gì đảm bảo là thư sẽ đến được đích. Trong
truyền thông bằng UDP thì các datagram giống như các lá thư, chúng chứa thông tin cần
gửi đi cùng thông tin về địa chỉ đích mà chúng phải đến, tuy nhiên chúng khác với các lá
thư ở một điểm là nếu như trong việc gửi thư, nếu lá thư của bạn không đến được đích thì
nó sẽ được gửi trả lại nơi gửi nêu trên lá thư đó bạn có đề địa chỉ gửi còn UDP sẽ không
thông báo gì cho phía gửi về việc lá thư đó có tới được đích hay không.
Vậy nếu UDP là một giao thức không đảm bảo giao tiếp tin cậy thì tại sao người ta
lại dùng chúng. Điều đó là bởi nếu như giao thức TCP đảm bảo một kết nối tin cậy giữa
các ứng dụng thì chúng cũng đòi hỏi nhiều thời gian để truyền tin do chúng phải kiểm tra
các header các gói tin để đảm bảo thứ tự các gói tin cũng như để phát lại các gói tin không
đến được đích do đó trong một số trường hợp thì điều này không cần thiết. Dưới đây là
một số trường hợp trong đó giao thức không hướng kết nối là thích hợp hơn so với giao
thức hướng kết nối:
Khi chỉ một gói dữ liệu cần truyền đi và việc đó đến được đích hay không là không

quan trọng, sử dụng giao thức UDP sẽ loại bỏ được các thủ tục tạo và hủy kết nối. So
sánh một chút chúng ta sẽ thấy giao thức hướng kết nối TCP phải dùng đến bẩy gói tin để
SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 10


Truyền file qua mạng
gửi một gói tin do nó cần phát và nhận các gói tin yêu cầu và chấp nhận kết nối cũng như
các gói tin yêu cầu và xác nhận việc hủy kết nối, trong khi đó giao thức không kết nối
UDP chỉ sử dụng duy nhất một gói tin chính là gói tin chứa dữ liệu cần chuyển đi.
Chúng ta lấy ví dụ về một server đồng hồ, nhiệm vụ của nó là gửi thời gian hiện tại
của nó cho các ứng dụng trên client khi có yêu cầu. Nếu gói tin chứa thời gian bị thất lạc
trên đường truyền và không tới được đích thì client cũng sẽ không đòi hỏi server phải gửi
lại gói tin đó bởi khi gói tin đó được phát lại lần hai và tới được client thì thông tin thời
gian chứa trong nó đã không còn đúng nữa. Nếu client tạo ra hai yêu cầu và nhận được
các gói tin trả lời không theo đúng thứ tự mà server đã gửi thì client cũng không gặp phải
vấn đề gì bởi nó
hoàn toàn có thể suy ra được rằng các gói đã không được chuyển đến đúng thứ tự
bằng cách tính thời gian được chứa trong các gói. Trong trường hợp này tính tin cậy của
TCP là không cần thiết bởi nó làm giảm hiệu suất và có thể cản trở hoạt động của server.
Trường hợp thứ hai chúng ta xem xét việc sử dụng giao thức UDP là các ứng dụng
đòi hỏi chặt chẽ về thời gian như các ứng dụng nghe audio thời gian thực. Trong trường
hợp này việc hướng tới một kênh giao tiếp tin cậy không phải là ưu điểm mà ngược lại đó
là một nhược điểm bởi nếu việc phải chờ cho khi một gói tin bị mất được nhận có thể gây
ra những tác động dễ nhận thấy hoặc khiến chương trình phải tạm ngừng. Với các ứng
dụng này giao thức không hướng kết nối đã được phát triển và chúng làm việc tốt hơn
hẳn. Chúng ta có thể tham khảo ứng dụng RealAudio, trong đó người ta sử dụng một giao
thức không hướng kết nối để truyền các dữ liệu âm thanh qua mạng.
Bảng sau so sánh sự khác biệt giữa hai chế độ giao tiếp hướng kết nối và không

hướng kết nối.
1.6. Các mô hình hoạt động của mạng máy tính
Mô hình hoạt động của mạng máy tính có hai loại:
- Mô hình hoạt động peer to peer
- Mô hình hoạt động clients/server

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 11


Truyền file qua mạng
1.6.1. Mô hình hoạt động peer to peer
Không tồn tại bất kỳ máy chuyên dụng hoặc cấu trúc phân cấp giữa các máy
tính. Mọi máy tính đều bình đẳng và có vai trò như nhau. Thông thường mỗi
máy tính hoạt động với cả vai trò máy khách và máy phục vụ. Vì vậy không có
máy nào được chỉ định quản lý toàn mạng. Người dùng ở từng máy tự quyết
định dữ liệu nào trên máy của mình sẽ được chia sẻ để dùng chung trên mạng.

Hình 1.7- Mô hình peer to peer
1.6.2. Mô hình hoạt động clients/ server
Trong mạng hoạt động theo mô hình Clients/Server có một hoặc nhiều máy
có nhiệm vụ cung cấp một số dịch vụ cho các máy khác ở trong mạng. Các
máy này được gọi là server còn các máy tính được phục vụ gọi là máy clients.

Hình 1.8- Mô hình mạng Client/ Server
Đây là mô hình tổng quát, trên thực tế server có thể được nối với nhiều
server khác để tăng hiệu quả làm việc. Khi nhận được yêu cầu từ client, server
có thể xử lý yêu cầu đó hoặc gửi tiếp yêu cầu vừa nhận được cho một server
khác.

Máy server sẽ thi hành các nhiệm vụ do máy client yêu cầu. Có rất nhiều
dịch vụ trên mạng hoạt động theo nguyên lý nhận các yêu cầu từ client sau đó
xử lý và trả lại các kết quả cho client yêu cầu.
SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 12


Truyền file qua mạng

Chương 2. LẬP TRÌNH MẠNG VỚI SOCKET

2.1.TỔNG QUAN VỀ C#
2.1.1.Cơ Bản Về NET Framework
NET Framework là một thành phần cơ bản của Windows cho việc xây
dựng và chạy các ứng dụng viết bởi các ngôn ngữ lập trình mới (ứng dụng thế hệ kế
tiếp).
NET Framework được thiết kế để:


Cung cấp một môi trường nhất quán cho lập trình hướng đối
tượng.



Tối ưu hóa việc phát triển phần mềm và sự xung đột phiên bản
bằng việc cung cấp một môi trường thực hiện code.




Cung cấp môi trường thực thi code an toàn hơn.



Cung cấp trải nghiệm (experience) nhất quán cho những người
phát triển trong việc tạo ra các kiểu ứng dụng khác nhau từ các ứng dụng trên
nền tảng Windows, các ứng dụng trên nền tảng Web cho đến các ứng dụng trên
nền tảng thiết bị di động, các ứng dụng nhúng…

2.1.2.Các thành phần của .NET Framework
NET Framework bao gồm 2 thành phần chính:

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 13


Truyền file qua mạng
-

CLR (Common Language Runtime – Môi trường quản lý ngôn ngữ chung): đây là
thành phần cốt lỗi (xương sống – backbone) của NET Framework thực hiện các
chức năng sau:

-

o

Quản lý bộ nhớ.


o

Thực hiện code.

o

Xử lý lỗi.

o

Xác nhận sự an toàn của code.

o

Thu gom rác.

Framework Class Library (FCL): là một tập hợp các kiểu dữ liệu có khả năng sử
dụng lại (tập hợp các lớp) và hướng đối tượng hoàn toàn, được sử dụng để phát
triển các ứng dụng từ những ứng dụng dòng lệnh truyền thống cho đến những ứng
dụng với giao diện đồ họa.

2.1.3.Các tính năng cơ bản của ngôn ngữ lập trình C#
C# là một ngôn ngữ lập trình hướng đối tượng thuần túy
(pure object oriented programming). Kiểm tra an toàn kiểu.
-

Thu gom rác tự động: giảm bớt gánh nặng cho người lập trình viên trong việc phải
viết các đoạn code thực hiện cấp phát và giải phóng bộ nhớ.

-


Hỗ trợ các chuẩn hóa được ra bởi tổ chức ECMA (European Computer
Manufactures Association).

-

Hỗ trợ các phương thức và các kiểu phổ quát (chung).

2.1.4.Các ứng dụng của C#
C# có thể sử dụng để viết các kiểu ứng dụng khác nhau:
-

Các ứng game.

-

Các ứng dụng cho doanh nghiệp.

-

Các ứng dụng cho thiết bị di động: PC Pocket, PDA , cell phone.

-

Các ứng dụng quản lý đơn giản: ứng dụng quản lý thư viện, quản lý thông tin cá
nhân…

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 14



Truyền file qua mạng
-

Các ứng dụng phân tán phức tạp trải rộng qua nhiều thành phố, đất nước.

2.1.5.Các lợi ích của C#
-

Cross Language Support: hỗ trợ khả năng chuyển đổi dễ dàng giữa các ngôn ngữ.

-

Hỗ trợ các giao thức Internet chung.

-

Triển khai đơn giản.

-

Hỗ trợ tài liệu XML: các chú thích XML có thể được thêm vào các đoạn code và
sau đó có thể được chiết xuất để làm tài liệu cho các đoạn code để cho phép các lập
trình viên khi sử dụng biết được ý nghĩa của các đoạn code đã viết.

-

thiết bị cầm tay với .NET Framework Compact 2.0.


2.2.GIỚI THIỆU VỀ LẬP TRÌNH SOCKET
-

Sockets cung cấp một interface để lập trình mạng tại tầng Transport. Một socket là
một end-point của một liên kết giữa hai ứng dụng. Ngày nay, Socket được hỗ trợ
trong hầu hết các hệ điều hành như MS Windows (WinSock), Linux và được sử
dụng trong nhiều ngôn ngữ lập trình khác nhau: như C, C++, Java, Visual Basic,
C#, . . .

-

Windows Socket Application Programming Interface (Winsock API) là một thư
viện các hàm socket. Winsock hỗ trợ các lập trình viên xây dựng các ứng dụng
mạng trên nền TCP/IP.

-

Là giao diện lập trình ứng dụng (API), giao diện giữa chương trình ứng dụng với
lớp mạng trong hệ thống mạng TCP/IP.Thông qua giao diện này chúng ta có thể
lập trình điều khiển việc truyền thông giữa hai máy sử dụng các giao thức mức
thấp làTCP,UDP…

-

Thiết lập các lập kênh giao tiếp với mỗi đầu kênh được đánh dấu bằng một cổng.
Dữ liệu có thể đi vào và ra khỏi kênh giao tiếp thông qua cổng này.
o Cơ chế giao tiếp:
 Một trong hai quá trình phải công bố số hiệu cổng của socket mà mình sử
dụng để nhận và gởi dữ liệu.


SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 15


Truyền file qua mạng
 Các quá trình khác có thể giao tiếp với quá trình đã công bố cổng cũng bằng
cách tạo ra một socket.
o Các loại socket:
 Socket hướng kết nối (TCP Socket)
 Socket không hướng kết nối (UDP Socket)
 Raw Socket

Hình II - . Các giao thức trong lập trình Socket
2.3.LẬP TRÌNH MẠNG VỚI TCPSOCKET
2.3.1.Mô hình giao thức

-

TCP là một giao thức "có liên kết" (connection - oriented), nghĩa là cần phải thiết
lập liên kết giữa hai thực thể TCP trước khi chúng trao đổi dữ liệu với nhau. Một
tiến trình ứng dụng trong một máy tính truy nhập vào các dịch vụ của giao thức
TCP thông qua một cổng (port) của TCP. Số hiệu cổng TCP được thể hiện bởi 2
bytes.

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 16



Truyền file qua mạng

Hình II - . Kết nối TCP
-

Một cổng TCP kết hợp với địa chỉ IP tạo thành một đầu nối TCP/IP (socket) duy
nhất trong liên mạng. Dịch vụ TCP được cung cấp nhờ một liên kết logic giữa một
cặp đầu nối TCP/IP. Một đầu nối TCP/IP có thể tham gia nhiều liên kết với các
đầu nối TCP/IP ở xa khác nhau. Trước khi truyền dữ liệu giữa 2 trạm cần phải
thiết lập một liên kết TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì
liên kết đó sẽ được giải phóng.

-

Các thực thể của tầng trên sử dụng giao thức TCP thông qua các hàm gọi (function
calls) trong đó có các hàm yêu cầu để yêu cầu, để trả lời. Trong mỗi hàm còn có
các tham số dành cho việc trao đổi dữ liệu.

2.3.2.Thiết lập kết nối
-

Các bước thực hiện để thiết lập một liên kết TCP/IP: Thiết lập một liên kết mới có
thể được mở theo một trong 2 phương thức: chủ động (active) hoặc bị động
(passive).
o

Phương thức bị động, người sử dụng yêu cầu TCP chờ đợi một yêu cầu liên kết
gửi đến từ xa thông qua một đầu nối TCP/IP (tại chỗ). Người sử dụng dùng
hàm passive Open có khai báo cổng TCP và các thông số khác (mức ưu tiên,
mức an toàn)


SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 17


Truyền file qua mạng
o

Với phương thức chủ động, người sử dụng yêu cầu TCP mở một liên kết với
một một đầu nối TCP/IP ở xa. Liên kết sẽ được xác lập nếu có một hàm Passive
Open tương ứng đã được thực hiện tại đầu nối TCP/IP ở xa đó.

-

Khi người sử dụng gửi đi một yêu cầu mở liên kết sẽ được nhận hai thông số trả lời
từ TCP.
o

Thông số Open ID được TCP trả lời ngay lập tức để gán cho một liên kết cục
bộ (local connection name) cho liên kết được yêu cầu. Thông số này về sau
được dùng để tham chiếu tới liên kết đó. (Trong trường hợp nếu TCP không thể
thiết lập được liên kết yêu cầu thì nó phải gửi tham số Open Failure để thông
báo.)

o

Khi TCP thiết lập được liên kết yêu cầu nó gửi tham số Open Success được
dùng để thông báo liên kết đã được thiết lập thành công. Thông báo này dược
chuyển đến trong cả hai trường hợp bị động và chủ động. Sau khi một liên kết

được mở, việc truyền dữ liệu trên liên kết có thể được thực hiện.

2.3.3.Truyền nhận dữ liệu
-

Các bước thực hiện khi truyền và nhận dữ liệu: Sau khi xác lập được liên kết người
sử dụng gửi và nhận dữ liệu. Việc gửi và nhận dữ liệu thông qua các hàm Send và
receive.
o

Hàm Send: Dữ liệu được gửi xuống TCP theo các khối (block). Khi nhận được
một khối dữ liệu, TCP sẽ lưu trữ trong bộ đệm (buffer). Nếu cờ PUSH được
dựng thì toàn bộ dữ liệu trong bộ đệm được gửi, kể cả khối dữ liệu mới đến sẽ
được gửi đi. Ngược lại cờ PUSH không được dựng thì dữ liệu được giữ lại
trong bộ đệm và sẽ gửi đi khi có cơ hội thích hợp (chẳng hạn chờ thêm dữ liệu
nữa để gửi đi với hiệu quả hơn).

o

Hàm receive: Ở trạm đích dữ liệu sẽ được TCP lưu trong bộ đệm gắn với mỗi
liên kết. Nếu dữ liệu được đánh dấu với một cờ PUSH thì toàn bộ dữ liệu trong
bộ đệm (kể cả các dữ liệu được lưu từ trước) sẽ được chuyển lên cho người sử

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 18


Truyền file qua mạng
dụng. Còn nếu dữ liệu đến không được đánh dấu với cờ PUSH thì TCP chờ tới

khi thích hợp mới chuyển dữ liệu với mục tiêu tăng hiệu quả hệ thống.
-

Nói chung việc nhận và giao dữ liệu cho người sử dụng đích của TCP phụ thuộc
vào việc cài đặt cụ thể. Trường hợp cần chuyển gấp dữ liệu cho người sử dụng thì
có thể dùng cờ URGENT và đánh dấu dữ liệu bằng bit URG để báo cho người sử
dụng cần phải sử lý khẩn cấp dữ liệu đó.

2.3.4.Đóng liên kết
-

Các bước thực hiện khi đóng một liên kết: Việc đóng một liên kết khi không cần
thiết được thực hiên theo một trong hai cách: dùng hàm Close hoặc dùng hàm
Abort.
o

Hàm Close: yêu cầu đóng liên kết một cách bình thường. Có nghĩa là việc
truyền dữ liệu trên liên kết đó đã hoàn tất. Khi nhận được một hàm Close TCP
sẽ truyền đi tất cả dữ liệu còn trong bộ đệm thông báo rằng nó đóng liên kết.
Lưu ý rằng khi một người sử dụng đã gửi đi một hàm Close thì nó vẫn phải tiếp
tục nhận dữ liệu đến trên liên kết đó cho đến khi TCP đã báo cho phía bên kia
biết về việc đóng liên kết và chuyển giao hết tất cả dữ liệu cho người sử dụng
của mình.

o

Hàm Abort: Người sử dụng có thể đóng một liên kết bất và sẽ không chấp nhận
dữ liệu qua liên kết đó nữa. Do vậy dữ liệu có thể bị mất đi khi đang được
truyền đi. TCP báo cho TCP ở xa biết rằng liên kết đã được hủy bỏ và TCP ở
xa sẽ thông báo cho người sử dụng của mình.


Một số hàm khác của TCP:
o

Hàm Status: cho phép người sử dụng yêu cầu cho biết trạng thái của một liên
kết cụ thể, khi đó TCP cung cấp thông tin cho người sử dụng.

o

Hàm Error: thông báo cho người sử dụng TCP về các yêu cầu dịch vụ bất hợp
lệ liên quan đến một liên kết có tên cho trước hoặc về các lỗi liên quan đến môi
trường.

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 19


Truyền file qua mạng
2.4.LẬP TRÌNH MẠNG VỚI UDP SOCKET
2.4.1.Giao thức UDP
-

UDP (User Datagram Protocol) là giao thức theo phương thức không liên kết được
sử dụng thay thế cho TCP ở trên IP theo yêu cầu của từng ứng dụng. Khác với
TCP, UDP không có các chức năng thiết lập và kết thúc liên kết. Tương tự như IP,
nó cũng không cung cấp cơ chế báo nhận (acknowledgment), không sắp xếp tuần
tự các gói tin (datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu
mà không có cơ chế thông báo lỗi cho người gửi. Qua đó ta thấy UDP cung cấp
các dịch vụ vận chuyển không tin cậy như trong TCP.


-

Khuôn dạng UDP datagram được mô tả với các vùng tham số đơn giản hơn nhiều
so với TCP segment.

Hình II - . Dạng thức của gói tin UDP
-

UDP cũng cung cấp cơ chế gán và quản lý các số hiệu cổng (port number) để định
danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. Do ít chức năng
phức tạp nên UDP thường có xu thế hoạt động nhanh hơn so với TCP. Nó thường
được dùng cho các ứng không đòi hỏi độ tin cậy cao trong giao vận.

2.4.2.Một số thuật ngữ UDP
-

Trước khi kiểm tra xem giao thức UDP hoạt động như thế nào, chúng ta cần làm
quen với một số thuật ngữ. Trong phần dưới đây, chúng ta sẽ định nghĩa một số
thuật ngữ cơ bản có liên quan đến giao thức UDP.
o

Packet: Trong truyền số liệu, một packet là một dãy các số nhị phân, biểu diễn
dữ liệu và các tín hiệu điều khiển, các gói tin này được chuyển đi và chuyển tới
tới host. Trong gói tin,thông tin được sắp xếp theo một khuôn dạng cụ thể.

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 20



Truyền file qua mạng
o

Datagram: Một datagram là một gói tin độc lập, tự chứa, mang đầy đủ dữ liệu
để định tuyến từ nguồn tới đích mà không cần thông tin thêm.

o

MTU: là viết tắt của Maximum Transmission Unit. MTU là một đặc trưng của
tầng liên kết mô tả số byte dữ liệu tối đa có thể truyền trong một gói tin. Mặt
khác, MTU là gói dữ liệu lớn nhất mà môi trường mạng cho trước có thể
truyền. Ví dụ, Ethernet có MTU cố định là 1500 byte. Trong UDP, nếu kích
thước của một datagram lớn hơn MTU, IP sẽ thực hiện phân đoạn, chia
datagram thành các phần nhỏ hơn (các đoạn), vì vậy mỗi đoạn nhỏ có kích
thước nhỏ hơn MTU.

o

Port: UDP sử dụng các cổng để ánh xạ dữ liệu đến vào một tiến trình cụ thể
đang chạy trên một máy tính. UDP định đường đi cho packet tại vị trí xác định
bằng cách sử dụng số hiệu cổng được xác định trong header của datagram. Các
cổng được biểu diễn bởi các số 16-bit, vì thế các cổng nằm trong dải từ 0 đến
65535. Các cổng cũng được xem như là các điểm cuối của các liên kết logic, và
được chia thành ba loại sau:

-




Các cổng phổ biến: Từ 0 đến 1023



Các cổng đã đăng ký: 1024 đến 49151



Các cổng động/dành riêng 49152 đến 65535

Chú ý rằng các cổng UDP có thể nhận nhiều hơn một thông điệp ở một thời điểm.
Trong một số trường hợp, các dịch vụ TCP và UDP có thể sử dụng cùng một số
hiệu cổng, như 7 (Echo) hoặc trên cổng 23 (Telnet).

UDP có các cổng thông dụng sau:

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 21


Truyền file qua mạng

o

TTL (Time To Live) Giá trị TTL cho phép chúng ta thiết lập một giới hạn trên
của các router mà một datagram có thể đi qua. Giá trị TTL ngăn ngừa các gói
tin khỏi bị kẹt trong các vòng lặp định tuyến vô hạn. TTL được khởi tạo bởi
phía gửi và giá trị được giảm đi bởi mỗi router quản lý datagram. Khi TTL
bằng 0, datagram bị loại bỏ.


o

Multicasting: là phương pháp dựa trên chuẩn có tính chất mở để phân phối các
thông tin giống nhau đến nhiều người dùng. Multicasting là một đặc trưng
chính của giao thức UDP. Multicasting cho phép chúng ta truyền tin theo kiểu
một nhiều, ví dụ gửi tin hoặc thư điện tử tới nhiều người nhận, đài phát thanh
trên Internet, hoặc các chương trình demo trực tuyến.

2.4.3.Hoạt động của giao thức UDP
Khi một ứng dụng dựa trên giao thức UDP gửi dữ liệu tới một host khác trên mạng,
UDP thêm vào một header có độ dài 8 byte chứa các số hiệu cổng nguồn và đích, cùng
với tổng chiều dài dữ liệu và thông tin checksum. IP thêm vào header của riêng nó vào
đâu mỗi datagram UDP để tạo lên một datagram IP:
2.4.4.Các nhược điểm của giao thức UDP
So với giao thức TCP, UDP có những nhược điểm sau:
SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 22


Truyền file qua mạng
o

Thiếu các tín hiệu bắt tay. Trước khi gửi một đoạn, UDP không gửi các tín hiệu
bắt tay giữa bên gửi và bên nhận. Vì thế phía gửi không có cách nào để biết
datagram đã đến đích hay chưa. Do vậy, UDP không đảm bảo việc dữ liệu đã
đến đích hay chưa.

o


Sử dụng các phiên. Để TCP là hướng liên kết, các phiên được duy trì giữa các
host.

o

TCP sử dụng các chỉ số phiên (session ID) để duy trì các liên kết giữa hai host.
UDP không hỗ trợ bất kỳ phiên nào do bản chất phi liên kết của nó.

o

Độ tin cậy. UDP không đảm bảo rằng chỉ có một bản sao dữ liệu tới đích. Để
gửi dữ liệu tới các hệ thống cuối, UDP phân chia dữ liệu thành các đoạn nhỏ.
UDP không đảm bảo rằng các đoạn này sẽ đến đích đúng thứ tự như chúng đã
được tạo ra ở nguồn. Ngược lại, TCP sử dụng các số thứ tự cùng với số hiệu
cổng và các gói tin xác thực thường xuyên, điều này đảm bảo rằng các gói tin
đến đích đúng thứ tự mà nó đã được tạo ra.

o

Bảo mật. TCP có tính bảo mật cao hơn UDP. Trong nhiều tổ chức, firewall và
router cấm các gói tin UDP, điều này là vì các hacker thường sử dụng các cổng
UDP.

o

Kiểm soát luồng. UDP không có kiểm soát luồng; kết quả là, một ứng dụng
UDP được thiết kế tồi có thể làm giảm băng thông của mạng.

2.4.5.Các ưu điểm của UDP

-

Không cần thiết lập liên kết. UDP là giao thức phi liên kết, vì thế không cần phải
thiết lập liên kết. Vì UDP không sử dụng các tín hiệu handshaking, nên có thể
tránh được thời gian trễ. Đó chính là lý do tại sao DNS thường sử dụng giao thức
UDP hơn là TCP-DNS sẽ chậm hơn rất nhiều khi dùng TCP.
o

Tốc độ. UDP nhanh hơn so với TCP. Bởi vì điều này, nhiều ứng dụng thường
được cài đặt trên giao thức UDP hơn so với giao thức TCP.

o

Hỗ trợ hình trạng (Topology). UDP hỗ trợ các liên kết 1-1, 1-n, ngược lại TCP
chỉ hỗ trợ liên kết 1-1.

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 23


Truyền file qua mạng
o

Kích thước header. UDP chỉ có 8 byte header cho mỗi đoạn, ngược lại TCP cần
các header 20 byte, vì vậy sử dụng băng thông ít hơn.

Bảng dưới đây tổng kết những sự kác nhau giữa hai giao thức TCP và UDP:

2.4.6.Khi nào thì nên sử dụng UDP

-

Rất nhiều ứng dụng trên Internet sử dụng UDP. Dựa trên các ưu và nhược điểm
của UDP chúng ta có thể kết luận UDP có ích khi:
o

Sử dụng cho các phương thức truyền broadcasting và multicasting khi chúng ta
muốn truyền tin với nhiều host.

o

Kích thước datagram nhỏ và trình tự đoạn là không quan trọng

o

Không cần thiết lập liên kết

o

Ứng dụng không gửi các dữ liệu quan trọng

o

Không cần truyền lại các gói tin

o

Băng thông của mạng đóng vai trò quan trọng

2.5.MÔ HÌNH CLIENT/SERVER

2.5.1.Tổng quan
-

Trong nhiều năm gần đây, thuật ngữ client/server đã trở nên phổ biến trong lĩnh
vực công nghệ thông tin. Các công ty xem client/server như là một mô hình công

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 24


Truyền file qua mạng
nghệ mang tính cách mạng để trợ giúp cho việc quản lý và điều hành các hoạt
động của công ty.
-

Nhiều năm trước, khi các máy tính lớn mainframe của IBM còn thống trị trong các
lĩnh vực điện toán, một cách tiếp cận mới công nghệ mạng máy tính với tên gọi
“client/server” đã xuất hiện vào đầu thập niên 80 và nhanh chóng phổ biến. Đến
cuối thập niên 80, các mô hình client/server thật sự được chấp nhận và đã xuất
hiện các ứng dụng đầu tiên. Ngày nay, “client/server” đã trở nên thông dụng và
phổ biến đến mức hầu hết các ứng dụng mạng đều dựa trên nguyên tắc
client/server. Mô hình này đã được chứng minh là phương pháp hiệu quả về chi
phí khi xây dựng nhiều loại mạng và dịch vụ mạng, đặc biệt đối với mạng LAN
( PCs ) chạy các ứng dụng end-user database.
Khái Niệm
-

Một mô hình kiến trúc tính toán (computational architecture) gồm các tiến trình
khách (client ) yêu cầu dịch vụ từ các tiến trình phục vụ ( server )

Mô hình kiến trúc ứng
dụng

-

Client/server là dạng phổ biến của mô hình ứng dụng phân tán trong đó phần
mềm được chia thành các tiến trình client và các tiến trình server. Một client sẽ
gửi yêu cầu cho một server theo một giao thức định sẵn (để server có thể hiểu
được yêu cầu của client), để lấy thông tin hoặc chỉ thị server thực hiện một tác
vụ nào đó. Sau khi thực hiện xong yêu cầu của client, server sẽ trả lời.

-

Ví dụ : Mối quan hệ tương tác qua lại tương tự như người khách hàng gửi một
đơn đặt hàng theo một mẫu đến một nhà cung cấp, sau đó sẽ cung cấp hàng và
hóa đơn. Mấu đơn hàng và hóa đơn là một phần của giao thức.Client/server
thường được dịch qua tiếng Việt là khách/chủ. Tuy nhiên ý nghĩa của nó không
hoàn toàn giống như vậy mà gần với quan hệ: khách hàng/người cung cấp dịch
vụ. Tuy nhiên, đó không phải là mô tả chung cho hoạt động của
client/server. Bản thân thuật ngữ client/server, cũng giống như các thuật ngữ tin

SVTH: Nguyễn Văn Tiến – Lớp: 10T4

Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×