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

Tìm hiểu lập trình socket trong java và ứng dụng truyền file qua mạng

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 (609.58 KB, 29 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN





NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
ĐỒ ÁN
……………………………………………………………………………………..
……………………………………………………………………………………..
CÔNG LẬP TRÌNH MẠNG
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
Đề tài:
……………………………………………………………………………………..
TÌM


HIỂU LẬP TRÌNH SOCKET TCP TRONG JAVA VÀ
……………………………………………………………………………………..
ỨNG DỤNG TRUYỀN FILE QUA MẠNG
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
GVHD :
ThS. Trần Hồ Thuỷ Tiên
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
Lớp :
10T4
……………………………………………………………………………………..
Nhóm :
11B
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
Đà Nẵng, tháng 5 năm 2014
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..

……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..


ĐỒ ÁN LẬP TRÌNH MẠNG

LỜI CẢM ƠN

Để hoàn thành được Đồ án Lập Trình Mạng với đề tài “ Tìm hiểu lập trình
Socket trong Java và ứng dụng truyền File qua mạng”, bên cạnh sự nổ lực của cả
nhóm đã vận dụng những kiến thức tiếp thu được ở trường, tìm tòi học hỏi cũng như
thu thập thông tin số liệu có liên quan đến đề tài chúng em luôn nhận được sự giúp
đỡ, hướng dẫn tận tình của các thầy cô cùng với những lời động viên khuyến khích
từ phía bạn bè trong những lúc em gặp khó khăn.
Chúng em xin gửi lời cảm ơn đến Ban chủ nhiệm khoa CNTT Đại Học Bách
Khoa Đà Nẵng. Em xin chân thành cảm Cô Trần Hồ Thủy Tiên, người đã hướng dẫn
em làm đề tài này, cô đã tạo mọi điều kiện thuận lợi và là nguồn động lực quan trọng
để em hoàn thành đề tài này.
Em cũng xin gửi lời cảm ơn đến thầy Mai Văn Hà.Thầy đã trực tiếp giảng dạy
và cũng cấp cho chúng em những kiến thức đầy đủ và tổng quan về môn Lập Trình
Mạng và đã tạo điều kiện tốt nhất cho em áp dụng một số phương pháp vào đề tài
của nhóm
Xin cảm ơn các bạn khóa 10T cũng như các bạn thuộc nhóm học phần 11B là
những người hỗ trợ chúng em hoàn thành đồ án này .
Với thời gian và khả năng còn hạn chế, Đề tài đồ án của chúng em không thể
tránh khỏi những thiếu sót. Chúng em mong nhận được sự góp ý chân tình từ các
thầy cô và các bạn.


Chúng em xin chân thành cảm ơn!

2


ĐỒ ÁN LẬP TRÌNH MẠNG

MỤC LỤC

BỐI CẢNH ĐỀ TÀI, MỤC TIÊU, NHIỆM VỤ.............................................7
CƠ SỞ LÝ THUYẾT........................................................................................8
1. Căn bản về mạng máy tính...........................................................................................8
2. Mô hình tham chiếu OSI.............................................................................................10
3. Mô hình kiến trúc TCP/IP..........................................................................................13
4. Địa chỉ IP-Các địa chỉ dành riêng, cổng giao tiêp (PORT)......................................14
5. Giao thức mạng............................................................................................................17
6. Mô hình Client/Server.................................................................................................19
7. Giao thức truyền File FTP..........................................................................................20

LẬP TRÌNH MẠNG VỚI SOCKET.............................................................21
8. Tìm hiểu về ngôn ngữ Java.........................................................................................21
9. Tìm hiểu về Socket TCP trong lập trình Java..........................................................21

XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG.............................................24
10. Phân tích yêu cầu đề tài............................................................................................24
11. Giải Thuật..................................................................................................................24
12. Sơ đồ hoạt động.........................................................................................................26
13. Demo chương trình....................................................................................................27


ĐÁNH GIÁ CHƯƠNG TRÌNH HƯỚNG PHÁT TRIỂN...........................29
14. Ưu điểm:.....................................................................................................................29
15. Nhược điểm:...............................................................................................................29
16. Hướng phát triển:......................................................................................................29

TÀI LIỆU THAM KHẢO VÀ PHỤ LỤC.....................................................29
17. Tài liệu tham khảo.....................................................................................................29
18. Phụ Lục.......................................................................................................................29

3


ĐỒ ÁN LẬP TRÌNH MẠNG

DANH MỤC BẢNG BIỂU VÀ HÌNH ẢNH

4


ĐỒ ÁN LẬP TRÌNH MẠNG

5


ĐỒ ÁN LẬP TRÌNH MẠNG

LỜI MỞ ĐẦU

Lập trình mạng là một trong những nhiệm vụ căn bản để phát triển các ứng dụng
doanh nghiệp. Một chương trình mạng được viết ra để các chương trình trên các máy

tính khác nhau có thể truyền tin với nhau một cách hiệu quả và an toàn cho dù chúng
được cài đặt trên mạng LAN, WAN hay mạng toàn cầu Internet, đây là điều căn bản
đối với sự thành công của nhiều hệ thống. Hiểu được tầm quan trọng đó Khoa công
nghê thông tìn của Trường Đại Học Bách Khóa Đà Nẵng đã tiến hành đưa vào học
tập và giảng dạy bộ môn Lập Trình Mạng .
Môn lý thuyết Lập Trình Mạng cung cấp cho sinh viên những kiến thức về mặt lý
thuyết. Còn đễ hiểu và đưa những lý thuyết đó và thực tế, cũng như đánh giá quá
trình tiếp thu môn học đó chính là điều mà môn Đồ án Lập Trình Mạng hướng đến.
Báo cáo Đồ án là một trong những yêu cầu mà Cô hướng dẫn đã yêu cầu sinh
viên phải hoàn thành, đễ đánh giá thề quá trình học tập của sinh viên. Nó thể hiện
hầu hết các yêu cầu đề tài mà học sinh đã đăng ký
Đề Tài nhóm em chọn : Tìm hiểu lập trình Socket trong Java và ứng dụng truyền
File qua mạng
Mặc dù đã cố găng hết sức nhưng trong quá trình làm vẫn không thể tránh khỏi sai
sót. Chúng em mong thầy hướng dẫn và các bạn có thể giúp đễ bài làm của chúng em
có thể hoàn thiện hơn.

Chúng em xin chân thành cảm ơn!

6


ĐỒ ÁN LẬP TRÌNH MẠNG

BỐI CẢNH ĐỀ TÀI, MỤC TIÊU, NHIỆM VỤ
1. Giới thiệu đề tài
Hiện nay vấn đề toàn cầu hoá thông tin và tốc độ phát triển của khoa học
công nghệ diễn ra một cách nhanh chóng, một kỷ nguyên mới được mở ra kỷ
nguyên của xã hội hóa thông tin. Máy tính đã trở thành công cụ đắc lực và
không thể thiếu của con người. Các tổ chức, công ty hay các cơ quan cần phải

xây đựng hệ thống mạng máy tính cho riêng mình để trao đổi dữ liệu giữa các
bộ phận. Dữ liệu được truyền đi trên mạng phải đảm bảo: dữ liệu được chuyển
tới đích nhanh chóng và đúng đắn. Hầu hết dữ liệu được truyền qua mạng là
truyền dưới dạng file.
Truyền file qua mạng là một trong những ứng dụng phổ biến trên mạng
LAN và Internet như: tải xuống các file từ một máy chủ file ở xa, gửi/nhận thư
điện tử,... Truyền file qua mạng dựa trên Socket TCP là một phương pháp
truyền file có độ tin cậy cao bởi vì trước khi truyền nó cần thiết lập thành công
kênh truyền dữ liệu, Dữ liệu được gửi đi theo chê độ bảo đảm: Có kiểm tra lỗi
truyền lại gói tin lỗi hay mất bảo đảm thứ tự đến của các gói tin...Nhận thấy đề
tài này là một để tài tuy không mới nhưng phù hợp với môn học cũng như khả
năng của nhóm em .Dù năng lực đang còn hạn chế và còn nhiều điều chưa rõ
nhưng quá trình vừa làm vừa học hỏi sẽ khiến chúng em được phát triển hơn.
Đó là lý do chúng em chọn đề tài này.
2. Mục tiêu
• Tìm hiểu cách thức làm việc của mô hình Client-Server.
• Tìm hiểu các loại giao thức mạng TCP, UDP, các mô hình hoạt động của
mạng máy tính.
• Tìm hiểu về mô hình OSI và TCP/IP
• Khái niệm về socket, socket trong java và một số lớp trong lập trình java
socket.
• Xây dựng chương trình ứng dụng truyền file qua mạng: Mô hình và một số
giao diện chương trình phía server và phía client.
3. Yêu cầu
• Tìm hiểu rõ phần lý thuyết bổ trợ cho đề tài.
• Xây dựng ứng dụng truyền File qua mạng, giao diện người dùng
client/server.
• Chương trình phải hoạt động tốt , truyền nhận được File.
• Lập báo cáo định kỳ và thông đồ án theo lịch của giáo viên hướng dẫn.
7



ĐỒ ÁN LẬP TRÌNH MẠNG

4. Lựa chọn ngôn ngữ
Lý do lựa chọn ngôn ngữ : Những ứng dụng mạng kiểu này sẽ gọn gàng
hơn khi viết bằng Java, với Java sẽ có ít dòng mã hơn, và mỗi dòng có thể
dễ dàng giải thích với cả những người lập trình mới bắt đầu.
Những chương trình ứng dụng mô hình clients/server lập trình bang Java
đã gia tăng ngày càng thông dụng.Ngoài ra Java có cơ chế bẫy lỗi (điều
quản các ngoại lệ), có thể giải quyết hàu nó các lỗi xảy ra trong quá trình
xuất/nhập

CƠ SỞ LÝ THUYẾT
1. Căn bản về mạng máy tính
1.1. Khái niệm 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.
Ngày nay,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 trinh, 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à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ử đụng chung thì nó mang lại cho người sử dụng khả năng tổ chức lại các
8


ĐỒ ÁN LẬP TRÌNH MẠNG
công việc .
1.2. Phân loại mạng máy tính
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
- 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.
+ Băng thông mức trung binh, đủ để 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
offme 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
Mạng Internet: Là trường hợp đặc biệt của mạng WAN, nó cung cấp các dịch
9


ĐỒ ÁN LẬP TRÌNH MẠNG
vụ toàn cầu như mail, web, chat, ftp và phục vụ miễn phí cho mọi người.


2. Mô hình tham chiếu OSI
Mô hình OSI (Open System Interconnection): là mô hình được tổ chức
ISO đề xuất từ 1977 và công bố lần đầu vào 1984. Để các máy tính và các thiết
bị mạng có thể truyền thông với nhau phải có những qui tắc giao tiếp được các
bên chấp nhận. Mô hình OSI là một khuôn mẫu giúp chúng ta hiểu dữ liệu đi
xuyên qua mạng như thế nào đồng thời cũng giúp chúng ta hiểu được các chức
năng mạng diễn ra tại mỗi lớp. Trong mô hình OSI có bảy lớp, mỗi lớp mô tả
một phần chức năng độc lập. Sự tách lớp của mô hình này mang lại những lợi
ích sau:
 Chia hoạt động thông tin mạng thành những phần nhỏ hơn, đơn giản
hơn giúp chúng ta dễ khảo sát và tìm hiểu hơn.
 Chuẩn hóa các thành phần mạng để cho phép phát triển mạng từ
nhiều nhà cung cấp sản phẩm.
 Ngăn chặn được tình trạng sự thay đổi của một lớp làm ảnh hưởng
đến các lớp khác, như vậy giúp mỗi lớp có thể phát triển độc lập và
nhanh chóng hơn. Mô hình tham chiếu OSI định nghĩa các qui tắc
cho các nội dung sau:
 Cách thức các thiết bị giao tiếp và truyền thông được với nhau.
 Các phương pháp để các thiết bị trên mạng khi nào thì được truyền
dữ liệu, khi nào thì không được.
 Các phương pháp để đảm bảo truyền đúng dữ liệu và đúng bên nhận.
 Cách thức vận tải, truyền, sắp xếp và kết nối với nhau.
 Cách thức đảm bảo các thiết bị mạng duy trì tốc độ truyền dữ liệu
thích hợp.
Cách biểu diễn một bit thiết bị truyền dẫn.

Hình 1: Mô hình tham chiếu OSI
10



ĐỒ ÁN LẬP TRÌNH MẠNG
 Mô hình tham chiếu OSI được chia thành bảy lớp với các chức năng sau:
 Lớp ứng dụng (Application Layer): là giao diện giữa các chương trình
ứng dụng của người dùng và mạng. Lớp Application xử lý truy nhập mạng
chung, kiểm soát luồng và phục hồi lỗi. Lớp này không cung cấp các dịch
vụ cho lớp nào mà nó cung cấp dịch vụ cho các ứng dụng như: truyền file,
gởi nhận E-mail, Telnet, HTTP, FTP, SMTP…
 Lớp trình bày (Presentation Layer): lớp này chịu trách nhiệm thương
lượng và xác lập dạng thức dữ liệu được trao đổi. Nó đảm bảo thông tin mà
lớp ứng dụng của một hệ thống đầu cuối gởi đi, lớp ứng dụng của hệ thống
khác có thể đọc được. Lớp trình bày thông dịch giữa nhiều dạng dữ liệu
khác nhau thông qua một dạng chung, đồng thời nó cũng nén và giải nén dữ
liệu. Thứ tự byte, bit bên gởi và bên nhận qui ước qui tắc gởi nhận một
chuỗi byte, bit từ trái qua phải hay từ phải qua trái. Nếu hai bên không thống
nhất thì sẽ có sự chuyển đổi thứ tự các byte bit vào trước hoặc sau khi
truyền. Lớp presentation cũng quản lý các cấp độ nén dữ liệu nhằm giảm số
bit cần truyền. Ví dụ: JPEG, ASCCI, EBCDIC....
 Lớp phiên (Session Layer): lớp này có chức năng thiết lập, quản lý, và kết
thúc các phiên thông tin giữa hai thiết bị truyền nhận. Lớp phiên cung cấp
các dịch vụ cho lớp trình bày. Lớp Session cung cấp sự đồng bộ hóa giữa
các tác vụ người dùng bằng cách đặt những điểm kiểm tra vào luồng dữ liệu.
Bằng cách này, nếu mạng không hoạt động thì chỉ có dữ liệu truyền sau
điểm kiểm tra cuối cùng mới phải truyền lại. Lớp này cũng thi hành kiểm
soát hội thoại giữa các quá trình giao tiếp, điều chỉnh bên nào truyền, khi
nào, trong bao lâu. Ví dụ như: RPC, NFS,... Lớp này kết nối theo ba cách:
Haft-duplex,Simplex, Full-duplex.
 Lớp vận chuyển (Transport Layer): Lớp vận chuyển phân đoạn dữ liệu từ
hệ thống máy truyền và tái thiết lập dữ liệu vào một luồng dữ liệu tại hệ
thống máy nhận đảm bảo rằng việc bàn giao các thông điệp giữa các thiết bị
đáng tin cậy. Dữ liệu tại lớp này gọi là segment. Lớp này thiết lập, duy trì và

kết thúc các mạch ảo đảm bảo cung cấp các dịch vụ sau:
- Xếp thứ tự các phân đoạn: khi một thông điệp lớn được tách thành nhiều
phân đoạn nhỏ để bàn giao, lớp vận chuyển sẽ sắp xếp thứ tự các phân đoạn
trước khi ráp nối các phân đoạn thành thông điệp ban đầu.
- Kiểm soát lỗi: khi có phân đoạn bị thất bại, sai hoặc trùng lắp, lớp vận
chuyển sẽ yêu cầu truyền lại.
- Kiểm soát luồng: lớp vận chuyển dùng các tín hiệu báo nhận để xác nhận.
Bên gửi sẽ không truyền đi phân đoạn dữ liệu kế tiếp nếu bên nhận chưa gởi
11


ĐỒ ÁN LẬP TRÌNH MẠNG
tín hiệu xác nhận rằng đã nhận được phân đoạn dữ liệu trước đó đầy đủ.
 Lớp mạng (Network Layer): lớp mạng chịu trách nhiệm lập địa chỉ các
thông điệp, diễn dịch địa chỉ và tên logic thành địa chỉ vật lý đồng thời nó
cũng chịu trách nhiệm gởi packet từ mạng nguồn đến mạng đích. Lớp này
quyết định đường đi từ máy tính nguồn đến máy tính đích. Nó quyết định dữ
liệu sẽ truyền trên đường nào dựa vào tình trạng, ưu tiên dịch vụ và các yếu
tố khác. Nó cũng quản lý lưu lượng trên mạng chẳng hạn như chuyển đổi
gói, định tuyến, và kiểm soát sự tắc nghẽn dữ liệu. Nếu bộ thích ứng mạng
trên bộ định tuyến (router) không thể truyền đủ đoạn dữ liệu mà máy tính
nguồn gởi đi, lớp Network trên bộ định tuyến sẽ chia dữ liệu thành những
đơn vị nhỏ hơn, nói cách khác, nếu máy tính nguồn gởi đi các gói tin có
kích thước là 20Kb, trong khi Router chỉ cho phép các gói tin có kích thước
là 10Kb đi qua, thì lúc đó lớp Network của Router sẽ chia gói tin ra làm 2,
mỗi gói tin có kích thước là 10Kb. Ở đầu nhận, lớp Network ráp nối lại dữ
liệu. Ví dụ: một số giao thức lớp này: IP, IPX,... Dữ liệu ở lớp này gọi
packet hoặc datagram.
 Lớp liên kết dữ liệu (Data link Layer): cung cấp khả năng chuyển dữ liệu
tin cậy xuyên qua một liên kết vật lý. Lớp này liên quan đến:

- Địa chỉ vật lý.
- Mô hình mạng.
- Cơ chế truy cập đường truyền.
- Thông báo lỗi.
- Thứ tự phân phối frame.
- Điều khiển dòng.
Tại lớp data link, các bít đến từ lớp vật lý được chuyển thành các frame dữ
liệu bằng cách dùng một số nghi thức tại lớp này. Lớp data link được chia
thành hai lớp con:
- Lớp con LLC (logical link control).
- Lớp con MAC (media access control).
Lớp con LLC: là phần trên so với các giao thức truy cập đường truyền khác,
nó cung cấp sự mềm dẻo về giao tiếp. Bởi vì lớp con LLC hoạt động độc lập
với các giao thức truy cập đường truyền, cho nên các giao thức lớp trên hơn
(ví dụ như IP ở lớp mạng) có thể hoạt động mà không phụ thuộc vào loại
phương tiện LAN. Lớp con LLC có thể lệ thuộc vào các lớp thấp hơn trong
việc cung cấp truy cập đường truyền. Lớp con MAC :cung cấp tính thứ tự
truy cập vào môi trường LAN. Khi nhiều trạm cùng truy cập chia sẻ môi
trường truyền, để định danh mỗi trạm, lớp cho MAC định nghĩa một trường
12


ĐỒ ÁN LẬP TRÌNH MẠNG
địa chỉ phần cứng, gọi
là địa chỉ MAC address. Địa chỉ MAC là một con số đơn nhất đối với mỗi
giao tiếp LAN (card mạng).
 Lớp vật lý (Physical Layer): định nghĩa các qui cách về điện, cơ, thủ tục và
các đặc tả chức năng để kích hoạt, duy trì và dừng một liên kết vật lý giữa
các hệ thống đầu cuối. Một số các đặc điểm trong lớp vật lý này bao gồm:
- Mức điện thế.

- Khoảng thời gian thay đổi điện thế.
- Tốc độ dữ liệu vật lý.
- Khoảng đường truyền tối đa.

3. Mô hình kiến trúc TCP/IP

Hình 2:Mô Hình các tầng tương ứng IOS và TCP/IP
 Chức năng của các tầng

• Application layer: hỗ trợ các ứng dụng cho các giao thức tầng Host-toHost. Cung cấp giao diện cho người sử dụng mô hình TCP/IP. Các giao
thức ứng dụng gồm HTTP, TELNET, FTP, SMTP ,...
• Transport layer: thực hiện những kết nối giữa hai máy chủ trên mạng
bằng 2 giao thức: TCP (Transmission Control Protocol) và UDP
( UserDatagram Protocol).
• Internet Layer: Giao thức IP cùng với các giao thức định tuyến RIP,
OSPF tầng mạng cho phép kết nối một cách mềm dẻo và linh hoạt các loại
mạng "vật lý" khác nhau như: Ethernet, Token Ring, X.25...ánh xạ địa chỉ
MAC-IP bằng giao thức ARP và RARP.
• Network Access Layer: cung cấp các phương tiện kết nối vật lý cáp, bộ
chuyển đổi, Card mạng, giao thức kết nối, giao thức truy nhập đường
13


ĐỒ ÁN LẬP TRÌNH MẠNG
truyền CSMA/CD, Tolen Ring, Token Bus... Cung cấp các dịch vụ cho
tầng Internet.

4. Địa chỉ IP-Các địa chỉ dành riêng, cổng giao tiêp (PORT)
4.1. Địa chỉ IP
- Mỗi địa chì IP có độ dài 32 bits (đối với IP4) được tách thành 4 vùng (mỗi

vùng 1 bỵte), có thể được biểu thị dưới dạng thập phân, bát phân, thập lục phân hoặc
nhị phân, Cách viết phô biên nhất là dùng ký pháp thập phân có dâu chấm đé tách
giữa các vùng. Địa chỉ IP là để định danh duy nhất cho một host bất kỳ trên liên
mạng. Khuôn dạng địa chỉ IP: mỗi host trên mạng TCP/IP được định danh duy nhất
bởi một địa chi có khuôn dạng <Network Number, Host number>
4.1.1.
IP Public
Mỗi 1 địa chỉ IP ngoài Internet là duy nhất. Để các Network có những địa chỉ duy
nhất ngoài Internet, thì Internet Assigned Numbers Authority (IANA) sẽ chia những
khoảng địa chỉ không dự trữ thành những phần nhỏ và ủy thác trách nhiệm phân phối
địa chỉ cho các tổ chức Đăng Kí Miền khắp thế giới. Những tổ chức đó là AsiaPacific Network Information Center (APNIC), American Registry for Internet
Numbers (ARIN), and Réseaux IP Européens (RIPE NCC). Những tổ chức này sẽ
phân phối những khối địa chỉ đến 1 số nhà các Internet Service Provider (ISP) lớn và
các ISP lớn này sau đó sẽ gán những khối nhỏ hơn cho các đại lý và các ISP nhỏ
hơn.
- ISP sẽ cấp 1 IP Public cho mỗi máy tính của bạn để các máy tính này có thể kết nối
trực tiếp đến ISP. Các địa chỉ này được cấp 1 cách tự động dến mỗi máy tính khi
máy tính kết nối và có thể là địa chỉ tĩnh nếu đường line của bạn thuê riêng hay các
tài khoàn Dial-up
4.1.2.
IP Private
IANA đã dự trữ một ít địa chỉ IP mà các địa chỉ này không bao giờ được sử dụng
trên Internet. Những địa chỉ IP Private này được sử dụng cho những Host yêu cầu có
IP để kết nối nhưng không cần được thấy trên các mạng Public. Ví dụ, 1 user kết nối
những máy tính trong mạng TCP/IP ở nhà thì ko cần cấp 1 địa chỉ IP Public cho mỗi
Host. User có thể lấy những khoảng IP ở bảng dưới đây để cung cấp địa chỉ cho các
Host trong mạng.
Starting Address
10.0.0.0
172.16.0.0

192.168.0.0

Ending Address
10.255.255.254
173.31.255.254
192.168.255.254

Hình 3:Bảng địa chị IP Private

14


ĐỒ ÁN LẬP TRÌNH MẠNG
4.1.3.
Lớp địa chỉ:
Có 5 lớp địa chỉ IP để tạo các mạng có kích thước khác nhau gồm: Lớp A, Lớp B,
Lớp C, Lớp D, Lớp E.
- TCP/IP hỗ trợ gán địa chỉ lớp A, lớp B, lớp C cho các trạm.
- Các lớp này có chiều dài phần NET ID và HOST ID khác nhau nên số lượng Mạng
và số lượng Trạm trên mỗi mạng cũng khác nhau:
+ Lớp A: Được gán cho các Mạng có kích thước cực lớn. Trong lớp địa chỉ này Byte
đầu tiên xác định NET ID, Bit cao nhất của Byte này luôn được đặt là 0. 3 Byte còn
lại xác định Host ID. Do đó lớp A có thể cấp cho 126 Mạng với 16.777.214 Trạm
trên mỗi Mạng.
+ Lớp B: Được gán cho các Mạng có kích thước vừa và lớn. Trong lớp địa chỉ này 2
Byte đầu tiên xác định NET ID, 2 Bit cao nhất của Byte đầu tiên luôn được đặt là 1
0. 2 Byte còn lại xác định Host ID. Do đó lớp B có thể cấp cho 16.384 Mạng với
65.534 Trạm trên mỗi Mạng.
+ Lớp C: Được gán cho các Mạng có kích thước nhỏ. Trong lớp địa chỉ này 3 Byte
đầu tiên xác định NET ID, 3 Bit cao nhất của Byte đầu tiên luôn được đặt là 1 1 0.

Byte cuối cùng xác định Host ID. Do đó lớp C có thể cấp cho 2.097.152 Mạng với
254 Trạm trên mỗi Mạng.
+ Lớp D: Các địa chỉ lớp này sử dụng cho Truyền Đa Hướng (Multicast). 1 nhóm
Multicast có thể chứa 1 hoặc nhiều Trạm. Trong lớp này 4 Bit cao nhất của Byte đầu
tiên luôn được đặt là 1 1 1 0, các Bit còn lại định nghĩa nhóm Multicast. Địa chỉ lớp
D không được chia thành Net ID và Host ID. Các gói(Packets) Multicast được truyền
tới 1 nhóm Trạm cụ thể và chỉ có các Trạm đăng kí vào nhóm này mới nhận được
gói.
+ Lớp E: Là lớp địa chỉ thực nghiệm, nó không được thiết kế cho mục đích sử dụng
chung. Lớp E được dự phòng cho các ứng dụng tương lai. Các Bit cao nhất của Byte
đầu tiên luôn được đặt là 1 1 1 1.
4.2. Port – Cổng giao tiếp
Trong giao thức TCP và UDP, port là số nguyên 16 bit được chèn vào phần đầu
(header) của mỗi gói tia Chẳng hạn, phía người dùng (client) có thể yêu cầu một máy
chủ nào đó trên Internet cung cấp dịch vụ chia sẻ tập tin (file) qua máy chủ FTP. Đe
đáp ứng yêu càu này, lớp phần mềm TCP trên máy của bạn phải nhận diện được port
số 21 (đăng ký sẵn cho dịch vụ FTP) trong số các port 16 bit số nguyên được ghép
theo gói tin yêu cầu của bạn. Tại máy chủ, lớp TCP sẽ đọc port 21 và chuyển tiép
yêu càu đén máy chủ FTP.
Hay nói cách khác, với một địa chỉ IP, chúng ta chỉ có thể xác định được một
máy tính duy nhất trên mạng, tuy nhiên khi một máy tính chạy nhiều dịch vụ khác
nhau thì chứng phải được phân biệt bởi khái niệm port. Ví dụ, máy chủ A (Server A)
15


ĐỒ ÁN LẬP TRÌNH MẠNG
có dịch vụ web, DNS và FTP server, có địa chỉ IP là 210.245.126.14. Các máy tốđi
khác khi muốn đến Server A thì cần đến địa chỉ IP (hay tên miền), nhưng để phân
biệt dịch vụ là web, DNs hay FTP, cần xác định thêm port. Chẳng hạn, khi máy в
muốn truy nhập dịch vụ web trên server Ạ, trong gói tin gửi đi, IP đích sẽ là

210.245.126.14 và port đích sẽ là 80. Cùng lúc đó có máy с trụy nhập đến dịch vụ
DNS trên server A thì ừong gói tin IP gửi đi, IP đích vẫn là 210.245.126.14 nhưng
port đích sẽ là 53. Tương tự, máy D truy cập đến dịch vụ FTP trên server A, IP đích
sẽ là 210.245.126.14 và port là 21. Thông thường các ứng dụng thường ẩn các port
này để giảm tính phức tạp của giao thức TCP/IP.
Có tất cả 65535 cổng (port) và được chia thành 3 đoạn; Well Known Port (WKP),
Registered Port (RP) và Dynamic/Private Port (D/PP). WKP gồm các port từ 0 đến
1023 và được giữ cho các ứng dụng phổ biến như web (port 80), mail (port 25), ftp
(port 21)... RP gồm các port từ 1024 đến 49151. Còn D/PP là các port từ 49152 đến
65535. IANA qui định WKP và RP phải được đãng ký vói IANA (iana.org) trước khi
sử dụng.
Danh sách các Port thông dụng:
20

TCP

File Transfer - FTP data

21

TCP

File Transfer - FTP control

22

TCP/UDP

SSH Remove Login Protocol/ pcAnywhere


23

TCP

Telnet

25

TCP

Simple Mail Transfer Protocol (SMTP)

38

TCP UDP

Route Access Protocol(RAP)

42

UDP

Host Name Server - Microsoft WINS

45

TCP

Message Processing Modile(recieve)


46

TCP

Message Processing Module (send)

50

TCP UDP

Remote Mail Checking Protocol (RMCP)

66

TCP UDP

Oracle SQL*NET

69

TCP UDP

Trivial File Transfer Protocol (TFTP)

88

TCP UDP

Kerberos Network Authentication Servive


101

TCP UDP

Network Infomation Center (NIC) Hostname Server

110

TCP UDP

Post Office Protocol (POP) Version 3

118

TCP UDP

SQL Services

119

TCP UDP

Network News Transfer Protocol

130

TCP UDP

Cisco FNATIVE


143

TCP UDP

Internet Message Access Protocol (IMAP) Mail Server

161

TCP UDP

SNMP
Hình 4:Danh sách các Port thông dụng

16


ĐỒ ÁN LẬP TRÌNH MẠNG

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.
5.1. Giao thức TCP
Giao thức TCP (Transmission Control Protocol ):Giao thức điều khiển truyền
vận là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các
ứng dụng trên các máy chủ được nối mạng có thể tạo các kết nối với nhau, mà qua
đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển

giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt
giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử)
đồng thời chạy trên cùng một máy chủ.
Các trường header được liệt kê trong bảng sau:
Trường
Độ dài
Mô tả
Cổng nguồn (source 2 bytes Số hiệu cổng của nguồn
port)
Cổng đích
2 bytes Số hiệu cổng đích
(destination port)
Số thứ tự (Sequence 4 bytes Số thứ tự được tạo ra bởi nguồn và được sử dụng
Number)
bởi đích để sắp xếp lại các gói tin để tạo ra thông
điệp ban đầu, và gửi xác thực tới nguồn.
Acknowledge
4 bytes
Number
Data offset
4 bits
Các chi tiết về nơi dữ liệu gói tin bắt đầu
Reserved
6 bit
Dự phòng
Control
Window Size
2 bytes Trường này chỉ ra kích thước của vùng đệm
nhận. Phía nhận có thể thông báo cho phía gửi
kích thước dữ liệu tối đa mà có thể được gửi đi

bằng cách sử dụng các thông điệp xác thực
Checksum
2 bytes Checksum cho header và dữ liệu để xác định xem
gói tin có bị hỏng không
Urgent Pointer
2 bytes Trường này thông báo cho phía nhận biết có dữ
liệu khẩn
Options
Padding
Hình 5:Các trường Header của giao thức TCP
17


ĐỒ ÁN LẬP TRÌNH MẠNG
Giao thức TCP là một giao thức phức tạp và mất thời gian do cơ chế bắt tay,
nhưng giao thức này đảm bảo các gói tin đến đúng đích.
Một số giao thức ứng dụng sử dụng TCP như HTTP, FTP, SMTP, và Telnet.
TCP yêu cầu một liên kết phải được thiết lập trước khi dữ liệu được gửi đi. Ứng
dụng server phải thực hiện một thao tác mở thụ động để tạo một liên kết với một số
hiệu cổng cho trước.
5.2. Giao thức UDP
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.
Ngược với giao thức TCP, UDP là một giao thức có tốc độ truyền tin nhanh vì
nó chỉ xác định cơ chế tối thiểu để truyền dữ liệu. Tất nhiên điều này có một số
nhược điểm. Các thông điệp có thể được nhận theo bất kỳ thứ tự nào. Thông điệp
được gửi đầu tiên có thể được nhận sau cùng. Không có gì đảm bảo là các gói tin sẽ
đến đích, và các thông điệp có thể bị thất lạc, hoặc thậm chí có thể nhận được hai bản
sao của cùng một thông điệp.

UDP không cần giai đoạn thiết lập liên kết, dữ liệu được gửi đi ngay khi cần.
UDP không gửi các thông điệp xác thực, vì vậy dữ liệu có thể nhận được hoặc bị thất
lạc. Nếu cần truyền dữ liệu có độ tin cậy nó phải được thực hiện trong một giao thức
mức cao hơn.
Vậy đâu là ưu điểm của giao thức UDP, tại sao chúng ta lại cần sử dụng một
giao thức có độ tin cậy thấp như vậy? Để hiểu được lý do tại sao ta lại phải sử dụng
giao thức UDP ta cần phân biệt giữa truyền unicast, broadcast và multicast.
Một thông điệp unicast được gửi từ nút này tới nút khác. Kiểu truyền tin là
truyền tin điểm-điểm. Giao thức TCP chỉ hỗ trợ truyền tin unicast. Nếu một server
muốn truyền tin với nhiều client bằng cách sử dụng giao thức UDP, mỗi client phải
thiết lập một liên kết, vì các thông điệp chỉ có thể gửi tới một nút. Truyền tin
broadcast nghĩa là một thông điệp có thể được gửi tới tất cả các nút trong một mạng.
Multicast cho phép các thông điệp được truyền tới một nhóm các nút được lựa chọn.
UDP có thể được sử dụng cho truyền tin unicast nếu cần tới tốc độ truyền tin
nhanh, như truyền tin đa phương tiện, nhưng ưu điểm chính của UDP là truyền tin
broadcast và truyền tin multicast. Thông thường chúng ta không muốn tất cả các nút
gửi về các xác thực cho server vì như vậy sẽ làm cho server quá tải.
Header UDP ngắn và đơn giản hơn rất nhiều so với TCP
Trường thông tin
Độ dài
Source port (Cổng nguồn) 2 byte

Destination Port
Length

2 byte
2 byte

Mô tả
Xác định cổng nguồn là một tùy chọn với

UDP. Nếu trường này được sử dụng, phía
nhận thông điệp có thể gửi một phúc đáp tới
cổng này
Số hiệu cổng đích
Chiều dài của thông điệp bao gồm header và
18


ĐỒ ÁN LẬP TRÌNH MẠNG

Checksum

2 byte

dữ liệu
Để kiểm tra tính đúng đắn

Hình 6:Các trường Header giao thức UDP

6. Mô hình Client/Server
Mô hình Client/Server là một hệ thống gồm ít nhất một máy chủ ( Server ) và các
máy trạm ( Workstation hay Client ) nối vào máy chủ đó thông qua môi trường
mạng. Trên Server cài đặt hệ điều hành mạng ( Network Operating System ) để điều
khiển hệ thống. Trên Client có thể cài đặt bất cứ phần mềm nào, miễn là có khả năng
giao tiếp với Server. Hệ thống mạng ở đây có thể là mạng cục bộ hay mạng diện
rộng. Đôi khi Server cũng đóng vai trò của một Client khi nó yêu cầu tài nguyên từ
một Server khác. Có thể nói mô hình Client/Server là mô hình có ảnh hưởng lớn đến
ngành Công nghệ thông tin.
Mô hình Client/Server đã biến những máy tính riêng lẻ có khả năng xử lí thấp
thành một mạng các máy chủ và các máy trạm có khả năng xử lí gấp hàng ngàn lần

những chiếc máy tính mạnh nhất.
Mô hình Client/Server cho phép một ứng dụng được chia thành nhiều nhiệm vụ.
Mỗi nhiệm vụ có thể thực hiện trên các môi trường khác nhau dưới hệ điều hành
khác nhau, giao thức mạng khác nhau, được phát triển và duy trì độc lập cũng như
thực hiện trên nhiều máy tính khác nhau trong mạng.
Client thông qua phần mềm gởi yêu cầu truy vấn thông tin hoặc cập nhật thông
tin như xem dung lượng đĩa, sửa đổi hay xoá bỏ tập tin, thư mục.v.v....... về cho
Server, Server nhận được yêu cầu, sau khi kiểm tra quyền truy cập của người dùng,
tiến hành giải quyết yêu cầu đó rồi gởi trả về cho Client.
Khi nhận được yêu cầu cập nhật thông tin, ngoài việc kiểm tra quyền cập nhật,
Server còn đảm bảo tính hoàn thiện của việc cập nhật. Mô hình Client/Server đã giúp
phát triển một phương thức ứng dụng mới là việc phân chia ứng dụng thành nhiều
thành phần, mỗi thành phần thực hiện những chức năng chuyên biệt. Thông thường
một ứng dụng được chia làm 03 phần :
Giao diện người dùng ( User interface ) : Thành phần này liên quan đến các
chức năng tương tác với người dùng như phát ra yêu cầu dữ liệu đối với người dùng
hoặc cách thức đón nhận dữ liệu từ người sử dụng. Để tiến hành thực hiện giao diện
này thuộc về phần Logic trình bày.
Logic trình bày ( Presentation Logic ) : Thành phần này là cầu nối giữa người
dùng và ứng dụng như cung cấp chức năng của ứng dụng cho người dùng và nhận
những lệnh từ người dùng cho ứng dụng. Vì thành phần này đảm đương trách nhiệm
hiển thị, định dạng các thành phần giao tiếp với người dùng như định dạng màn hình,
quản lí các hộp thoại, các cửa sổ, đọc ghi các thông tin trên màn hình, điều khiển bàn

19


ĐỒ ÁN LẬP TRÌNH MẠNG
phím, chuột, .... hoặc các cơ chế trợ giúp theo ngữ cảnh, kiểm tra quyền truy cập cho
nên thành phần này được thiết kế sao cho càng thân thiện với người dùng càng tốt.

Logic ứng dụng ( Application Logic ) : Thành phần này đóng vai trò quan
trọng, là phần lõi của một chương trình. Nó đảm đương việc thực thi ứng dụng, cung
cấp tất cả các chức năng có thể có của chương trình cho thành phần logic trình bày ở
trên như đáp ứng các yêu cầu từ người dùng, quản lí các cơ sở dữ liệu, ... Thông
thường nó gồm hai phần : Thao tác dữ liệu ( Data Processing logic ) và Xử lí dữ liệu
(Database Processing).

7. Giao thức truyền File FTP
FTP (viết tắt của tiếng Anh File Transfer Protocol, "Giao thức truyền tập tin")
thường được dùng đê trao đổi tập tin qua mạng lưới truyền thông dùng giao thức
TCP/IP (chang hạn như Internet - mạng ngoại bộ - hoặc intranet - mạng nội bộ). Hoạt
động cúa FTP cần có hai máy tính, một máy chú và một máy khách). Mảy chủ FTP,
dùng chạy phần mềm cung cấp dịch vụ FTP, gọi là trình
7.1. Mô hình hoạt động của FTP:
Các tiến trình phía server:
Các tiến trình phía server bao gồm hai giao thức:
- Server Protocol Interpreter (Server-PI): chịu trách nhiệm quản lý kênh điều
khiển trên server. Nó lắng nghe yêu cầu kết nối hướng tới từ users trên cổng dành
riêng. Khi kết nối đã được thiết lập, nó sẽ nhận lệnh từ phía User-PI, trả lời lại, và
quản lý tiến trình truyền dữ liệu trên server.
- Server DataTransfer Process (Server-DTP): làm nhiệm vụ gửi hoặc nhận file từ
bộ phận User-DTP. Server-DTP vừa làm nhiệm thiết lập kết nối kênh dữ liệu và lắng
nghe một kết nối kênh dữ liệu từ user. Nó tương tác với server file trên hệ thống cục
bộ để đọc và chép file.
Các tiến trình phía client:
-User Protocol Interpreter (User-PI): chịu trách nhiệm quản lý kênh điều khiển
phía client. Nó khởi tạo phiên kết nối FTP bằng việc phát ra yêu cầu tới phía ServerPI. Khi kết nối đã được thiết lập, nó xử lý các lệnh nhận được trên giao diện người
dùng, gửi chúng tới Server-PI, và nhận phản hồi trở lại. Nó cũng quản lý tiến trình
User-DTP.
- User Data Transfer Process (User-DTP): là bộ phận DTP nằm ở phía người

dùng, làm nhiệm vụ gửi hoặc nhận dữ liệu từ Server-DTP. User-DTP có thể thiết lập
hoặc lắng nghe yêu cầu kết nối kênh dữ liệu trên server. Nó tương tác với thiết bị lưu
trữ file phía client.
- User Interface: cung cấp giao diện xử lý cho người dùng. Nó cho phép sử dụng
các lệnh đơn giản hướng người dùng, và cho phép người điều khiển phiên FTP theo
dõi được các thông tin và kết quả xảy ra trong tiến trình.
7.2. Thiết lập kênh điều khiển và chứng thực người dùng trong FTP
Mô hình hoạt động của FTP mô tả rõ các kênh dữ liệu và điều khiển được thiết
lập giữa FTP client và FTP server. Trước khi kết nối được sử dụng để thực sự truyền
20


ĐỒ ÁN LẬP TRÌNH MẠNG
file, kênh điều khiển cần phải được thiết lập. Một tiến trình chỉ định sau đó được
dùng để tạo kết nối và tạo ra phiên FTP lâu bền giữa các thiết bị để truyền files.
7.3. Quản lý kênh dữ liệu FTP
Kênh điều khiển được tạo ra giữa Server-PI và User-PI sử dụng quá trình thiết
lập kết nối và chứng thực được duy trì trong suốt phiên kết nối FTP. Các lệnh và các
hồi đáp được trao đổi giữa bộ phận PI (Protocol Interpreter) qua kênh điều khiển,
nhưng dữ liệu thì không.
Mỗi khi cần phải truyền dữ liệu giữa server và client, một kênh dữ liệu cần phải được
tạo ra. Kênh dữ liệu kết nối bộ phận User-DTP với Server-DTP. Kết nối này cần thiết
cho cả hoạt động chuyển file trực tiếp (gửi hoặc nhận một file) cũng như đối với việc
truyền dữ liệu ngầm, như là yêu cầu một danh sách file trong thư mục nào đó trên
server.
Chuẩn FTP chỉ định hai phương thức khác nhau để tạo ra kênh dữ liệu. Khác biệt
chính của hai phương thức đó là ở mặt thiết bị: phía client hay phía server là phía đã
đưa ra yêu cầu khởi tạo kết nối. Điều này nghe qua có vẻ khá đơn giản, nhưng kỳ
thực nó lại khá quan trọng.


LẬP TRÌNH MẠNG VỚI SOCKET
8. Tìm hiểu về ngôn ngữ Java
Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập
đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong
máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác. Không chỉ là
một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó
máy ảo Java, bộ thông dịch có vai trò trung tâm.
Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java
Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể
tải về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều
hành có hỗ trợ Java. Ban đầu, Java chủ yếu dùng để phát triển các Applet, các ứng
dụng nhúng vào trình duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức
tẻ nhạt hồi đó. Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu
của xã hội, Java Applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng
đồng ủng hộ Java đã phát triển nó theo một hướng khác.

9. Tìm hiểu về Socket TCP trong lập trình Java
9.1. Socket dưới ngôn ngữ Java
Java hỗ trợ lập trình mạng thông qua các lớp trong gói java.net. Một số lớp tiêu biểu
được dùng cho lập trình Client-Server sử dụng socket làm phương tiện giao tiếp như:
• InetAddress: Lớp này quản lý địa chỉ Internet bao gồm địa chỉ IP và tên máy
tính.
• Socket: Hỗ trợ các phương thức liên quan đến Socket cho chương trình Client ở
chế độ có nối kết.
21


ĐỒ ÁN LẬP TRÌNH MẠNG





ServerSocket: Hỗ trợ các phương thức liên quan đến Socket cho chương trình
Server ở chế độ có nối kết.
DatagramSocket: Hỗ trợ các phương thức liên quan đến Socket ở chế độ không
nối kết cho cả Client và Server.
DatagramPacket: Lớp cài đặt gói tin dạng thư tín người dùng (Datagram Packet)
trong giao tiếp giữa Client và Server ở chế độ không nối kết.

9.2. Xây dựng chương trình Client Server với Socket TCP
9.2.1.
Xây dựng chương trình Client ở chế độ có nối kết
Các bước tổng quát:
- Mở một socket nối kết đến server đã biết địa chỉ IP (hay tên miền) và số
hiệu cổng.
- Lấy InputStream và OutputStream gán với Socket.
- Tham khảo Protocol của dịch vụ để định dạng đúng dữ liệu trao đổi với
Server.
- Trao đổi dữ liệu với Server nhờ vào các InputStream và OutputStream.
- Đóng Socket trước khi kết thúc chương trình.
Lớp java.net.Socket
Lớp Socket hỗ trợ các phương thức cần thiết để xây dựng các chương
trình client sử dụng socket ở chế độ có nối kết. Dưới đây là một số phương
thức thường dùng để xây dựng Client:

public Socket(String HostName, int PortNumber)
throws IOException
Phương thức này dùng để nối kết đến một server có tên là HostName,
cổng là PortNumber. Nếu nối kết thành công, một kênh ảo sẽ được hình
thành giữa Client và Server.

HostName: Địa chỉ IP hoặc tên logic theo dạng tên miền.
PortNumber: có giả trị từ 0 ..65535
Ví dụ: Mở socket và nối kết đến Web Server đăng ký tín chỉ Bách Khoa
Đà Nẵng.
Socket
s=new
Socket(“www.tinchi.dut.udn.vn”,80);
hoặc
Socket s = new Socket(“203.162.36.149”,80);
 public InputStream getInputStream()
Phương thức này trả về InputStream nối với Socket. Chương trình Client
dùng InputStream này để nhận dữ liệu từ Server gởi về.
Ví dụ: Lấy InputStream của Socket s:
InputStream is = s.getInputStream();
 public OutputStream getOutputStream()
Phương thức này trả về OutputStream nối với Socket. Chương trình Client
dùng OutputStream này để gởi dữ liệu cho Server.
Ví dụ: Lấy OutputStream của Socket s:
22


ĐỒ ÁN LẬP TRÌNH MẠNG
OutputStream os = s.getOutputStream();
 public close()
Phương thức này sẽ đóng Socket lại, giải phóng kênh ảo, xóa nối kết giữa
Client và Server.
Ví dụ: Đóng Socket s:
s.close();
9.2.2.
Xây dựng chương trình Server ở chế độ có nối kết

Lớp java.net.ServerSocket
Lớp ServerSocket hỗ trợ các phương thức cần thiết để xây dụng các
chương trình Server sử dụng socket ở chế độ có nối kết. Dưới đây là một số
phương thức thường dùng để xây dựng Server:

public ServerSocket(int PortNumber);
Phương thức này tạo một Socket với số hiệu cổng là PortNumber mà sau
đó Server sẽ lắng nghe trên cổng này.
Ví dụ: Tạo socket cho Server với số hiệu cổng là 7:
ServerSocket ss = new ServerSocket(7);

public Socket accept()
Phương thức này lắng nghe yêu cầu nối kết của các Client. Đây là một
phương thức hoạt động ở chế độ nghẽn. Nó sẽ bị nghẽn cho đến khi có một
yêu cầu nối kết của client gởi đến.
Khi có yêu cầu nối kết của Client gởi đến, nó sẽ chấp nhận yêu cầu nối
kết, trả về một Socket là một đầu của kênh giao tiếp ảo giữa Server và Client
yêu cầu nối kết.
Ví dụ: Socket ss chờ nhận yêu cầu nối kết:

Socket s = ss.accept();
Server sau đó sẽ lấy InputStream và OutputStream của Socket mới s để
giao tiếp với Client.
Server sau đó sẽ lấy InputStream và OutputStream của Socket mới s để
giao tiếp với Client.
 Xây dựng chương trình Server phục vụ tuần tự
Một Server có thể được cài đặt để phục vụ các Client theo hai cách: phục
vụ tuần tự hoặc phục vụ song song.
Trong chế độ phục vụ tuần tự, tại một thời điểm Server chỉ chấp nhận một
yêu cầu nối kết. Các yêu cầu nối kết của các Client khác đều không được đáp

ứng (đưa vào hàng đợi).
Ngược lại trong chế độ phục vụ song song, tại một thời điểm Server chấp
nhận nhiều yêu cầu nối kết và phục vụ nhiều Client cùng lúc.
Các bước tổng quát của một Server phục vụ tuần tự:
− Tạo socket và gán số hiệu cổng cho server.
− Lắng nghe yêu cầu nối kết.
− Với một yêu cầu nối kết được chấp nhận thực hiện các bước sau:
− Lấy InputStream và OutputStream gắn với Socket của kênh ảo vừa
được hình thành.
− Lặp lại công việc sau:
− Chờ nhận các yêu cầu (công việc).
23


ĐỒ ÁN LẬP TRÌNH MẠNG





Phân tích và thực hiện yêu cầu.
Tạo thông điệp trả lời.
Gởi thông điệp trả lời về Client.
Nếu không còn yêu cầu hoặc Client kết thúc, đóng Socket và quay
lại bước 2.
 Server phục vụ song song
Server phục vụ song song gồm 2 phần thực hiện song song nhau:
Phần 1: Xử lý các yêu cầu nối kết.
 Lắng nghe yêu cầu nối kết của khách hàng.
 Chấp nhận một yêu cầu nối kết.

 Tạo kênh giao tiếp ảo mới với khách hàng.
 Tạo Phần 2 để xử lý các thông điệp yêu cầu của khách hàng.
Phần 2: Xử lý các thông điệp yêu cầu từ khách hàng.
 Chờ nhận thông điệp yêu cầu của khách hàng.
 Phân tích và xử lý yêu cầu.
 Gởi thông điệp trả lời cho khách hàng.
Phần 2 sẽ kết thúc khi kênh ảo bị xóa đi.

XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG
10. Phân tích yêu cầu đề tài
Yêu cầu đầu vào :
Phía Server :
• Số hiệu cổng (Port)

• Số lượng Client
• Đường dẫn tới File và Tên File (Nếu Server truyền )
Phía Client :

• Địa Chỉ IP máy chủ
• Số hiệu cổng máy chủ
• Đường dẫn tới File và Tên File (Nếu Client truyền)
Yêu cầu đầu ra: Thông báo có File gửi đến, xác nhận nhận File, và nhận File thành
công

11. Giải Thuật
Tại Client:
Xét quá trình gửi file: Socket thì được gọi là clientSocket. Còn luồng (stream)
inFromHardDisk có kiểu là FileInputStream, là một luồng nhập đến chương trình; nó thì
đính kèm với ổ cứng máy tính. Một khi ta đã chọn được đường dẫn và tên file thì dữ liệu
của file đó sẽ được “chảy” vào luồng inFromHardDisk. Còn luồng outToServer có kiểu là

ObjectOutputStream là một luồng xuất của chương trình; nó được đính kèm với
clientSocket. Dữ liệu mà client gửi đến mạng chảy trong luồng outToServer.
Xét quá trình nhận File: Luồng inFromServer có kiểu là ObjectInputStream, là một
luồng nhập đến chương trình; nó được đính kèm với socket. Dữ liệu đến từ network sẽ chảy
vào luồng inFromServer. Còn luồng outToHardDisk có kiểu là FileOutputStream, là luồng
xuất của chương trình; nó được đính kèm với ổ cứng, dữ liệu từ luồng inFromServer sẽ đi
vào luồng outToHardDisk, từ đó nó sẽ ghi file ra ổ cứng máy tính
24


ĐỒ ÁN LẬP TRÌNH MẠNG
Tại Server:
Quá trình giao nhận file và send file cũng diễn ra tương tự như bên client với 4 luồng
inFromHardDisk, outToHardDisk, inFromClient, outToClient và connectionSocket.
Chỉ có một chú ý quan trọng là trong ứng dụng này cho phép giao nhận file giữa một server
và nhiều máy con đồng thời trong một hệ thống mạng nên để tối ưu hoá quá trình hoạt động
thì ta khai báo thêm một lớp nữa gọi là ThreadedConnectionSocket, lớp này định nghĩa một
đối tượng socket cũng tương tự như connectionSocket đã mô tả ở trên nhưng lớp này là lớp
mở rộng của lớp Thread, điều này sẽ tận dụng được tính năng đa xâu (multithreading) của
Java. Và những ThreadedConnectionSocket lại được đưa vào lớp Vector. Kết quả là ta có
thể giao nhận file giữa một server và nhiều client trong một mạng với tốc độ xử lý tối ưu.

 Xây dựng chương trình Server phục vụ tuần tự
Một Server có thể được cài đặt để phục vụ các Client theo hai cách: phục
vụ tuần tự hoặc phục vụ song song.
Trong chế độ phục vụ tuần tự, tại một thời điểm Server chỉ chấp nhận một
yêu cầu nối kết. Các yêu cầu nối kết của các Client khác đều không được đáp
ứng (đưa vào hàng đợi).
Ngược lại trong chế độ phục vụ song song, tại một thời điểm Server chấp
nhận nhiều yêu cầu nối kết và phục vụ nhiều Client cùng lúc.

Các bước tổng quát của một Server phục vụ tuần tự:
− Tạo socket và gán số hiệu cổng cho server.
− Lắng nghe yêu cầu nối kết.
− Với một yêu cầu nối kết được chấp nhận thực hiện các bước sau:
− Lấy InputStream và OutputStream gắn với Socket của kênh ảo vừa
được hình thành.
− Lặp lại công việc sau:
− Chờ nhận các yêu cầu (công việc).
− Phân tích và thực hiện yêu cầu.
− Tạo thông điệp trả lời.
− Gởi thông điệp trả lời về Client.
− Nếu không còn yêu cầu hoặc Client kết thúc, đóng Socket và quay
lại bước 2.

25


×