ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG
BÁO CÁO
ĐỒ ÁN SỞ 4
ĐỀ TÀI: Lập trình chương trình chat room sử dụng
giao thfíc TCP socket
Sinh viên thực hiện : QUANG DUẬT Lớp: 17IT1
ĐỖ NGỌC TN Lớp: 17IT3
Giảng viên hướng dẫn : ThS.TRẦN ĐÌNH SƠN
Đà nẵng, tháng 01 năm 2020
ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG
BÁO CÁO
ĐỒ ÁN SỞ 4
ĐỀ TÀI: Lập trình chương trình chat room sử dụng giao thfíc TCP
socket
Đà Nẵng, tháng 01 năm 2020
MỞ ĐẦU
Đào tạo bậc đại học hệ Kđòi hỏi sinh viên ngoài việc thành thạo k
năng lập trình thì việc hiểu bản chất của c giao thfíc, ngôn ngfi lập trình
môi trường…là rất quan trọng.Chínhvậy ngoài việc giảng dạy về ngôn ngfi lập
trình cùng giải thuật thì các Thầy(Cô) giảng viên tại Khoa luôn luôn hướng sinh
viên đến cái cốt lõi nhất để sinh viên hiểu nắm được bản chất. Chuẩn bị tốt
cho việc tốt nghiệp kiến thfíc sau này. Với ớng đi đó, nhóm chúng em đã
chọn đề tài “Lập trình một chương trình chat room sfí dụng giao thfíc TCP
socket”, bằng việc fíng dụng nhfing đã học trong môn Lâp trình mạng. Tuy đề
tài không mới nhưng việc nắm rõ được bản chất thành thạo khnăng lập trình
đòi hỏi thời gian và kiến thfíc thật chắc.
Với việc đã tfing học về các hình phân tầng mạng, quá trình biến đổi
dfi liệu để truyền, nhận dfi liệu cũng như hình client server, em đã tfing bước
hoàn thành đề tài được giao, tuy vậy vẫn n nhiều thiếu sót cần hoàn thiện
tiếp tục phát triển.
Trong quá trình hoàn thành đồ án của nhóm, được giảng viên hướng dẫn
ThS.Trần Đình Sơn hướng dẫn cụ thểtận tình, thầy đã chỉ ra nhfing thiếu sót
và nhfing điểm cần hoàn thiện. Cuối cùng em xin gfíi lời cảm ơn chân thành nhất
đến Thầy cũng như các Thầy cô trong Khoa đã tạo điều kiện giúp đỡ nhóm chúng
em trong thời gian qua để có thể hoàn thành tốt được đề tài của mình.
Đà Nẵng, tháng 01 năm 2020
NHẬN XÉT
(Của giảng viên hướng dẫn)
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
Chữ xác nhận của Giảng vn
MỤC LC
Chương 1 Tổng quan về lập trình mạng .............................................................. 6
1.1 Tổng quan về mạng máy tính .................................................................... 6
1.1.1 Mạng máy tính gì? .......................................................................... 6
1.1.2 hình mạng ..................................................................................... 6
1.1.3 Phân loại mạng ................................................................................... 8
1.2 hình mạng OSI .................................................................................... 9
1.3 Giao thfíc truyền thông ............................................................................ 11
Chương 2 Xây dựng chương trình Client-Server với giao thfíc TCP .......... 13
2.1 Tổng quan về giao thfíc TCP ................................................................... 13
2.2 Khái niệm về Socket ................................................................................ 15
2.3 Sfí dụng TCP socket ................................................................................ 16
2.4 Các bước thuật toán xây dựng chương trình Client-Server ................ 17
2.4.1 Các bước y dựng chương trình server ........................................... 17
2.4.2 Thuật toán y dựng chương trình client-server tổng qt ............... 18
Chương 3 Triển khai xây dựng chương tnh ................................................ 20
3.1 Bài toán Chat Room ................................................................................ 20
3.2 Tổng quan về ngôn ngfi Java ................................................................... 20
3.2.1 Java gì ? ........................................................................................ 20
3.2.2 Ứng dụng của Java............................................................................ 20
3.2.3 Nhfing đặc điểm bản của Java ..................................................... 20
3.3 Viết chương trình server hoạt động đa tuyến(multi threading) ............... 21
3.4 Viết chương trình client ........................................................................... 26
3.5 Kết quả chương trình ............................................................................... 29
KẾT LUẬN .......................................................................................................... 31
1. Kết quả..................................................................................................... 31
2. Hạn chế .................................................................................................... 31
DANH MỤC TÀI LIỆU THAM KHẢO .............................................................. 32
Chương 1 Tổng quan về lập trình mạng
1.1 Tổng quan về mạng máy tính
1.1.1 Mạng máy tính ?
Mạng máy tính hay hệ thống mạng (Computer Network hay
Network System) skết hợp các y tính lại với nhau thông qua các
thiết bị nối kết mạng phương tiện truyền thông (giao thfíc mạng, môi
trường truyền dẫn) theo một cấu trúc nào đó các máy tính y trao đổi
thông tin qua lại với nhau.
1.1.2 hình mạng
1.1.2.1 Mạng hình sao (Star Network)
Có tất cả các trạm được kết nối với một thiết bị trung tâm nhiệm
vụ nhận tín hiệu tfi các trạm chuyển đến trạm đích. Tùy theo yêu cầu
truyền thông trên mạng thiết bị trung tâm thể hub, switch, router
hay y chủ trung tâm. Vai trò của thiết bị trung tâm thiết lập các liên
kết Point – to Point.
- Ưu điểm: Thiết lập mạng đơn giản, dễ dàng cấu hình lại mạng
(thêm, bớt các trạm), dễ dàng kiểm soát khắc phục sự cố, tận
dụng được tối đa tốc độ truyền của đường truyền vật lý.
- Khuyết điểm: Độ dài đường truyền nối một trạm với thiết bị trung
tâm bị hạn chế (bán kính khoảng 100m với công nghệ hiện nay).
6
1.1.2.2 Mạng tuyến tính (Bus Network)
tất cả các trạm phân chia trên một đường truyền chung (bus).
Đường truyền chính được giới hạn hai đầu bằng hai đầu nối đặc biệt gọi
terminator. Mỗi trạm được nối với trục chính qua một đầu nối chfi T (T-
connector) hoặc một thiết bị thu phát (transceiver). hình mạng Bus
hoạt động theo các liên kết Point–toMultipoint hay Broadcast.
- Ưu điểm: Dễ thiết kế chi phí thấp.
- Khuyết điểm: Tính ổn định kém, chỉ một nút mạng hỏng toàn bộ
mạng bị ngfing hoạt động.
1.1.2.3 Mạng hình vòng (Ring Network)
Tín hiệu được truyền đi trên vòng theo một chiều duy nhất. Mỗi
trạm của mạng được nối với nhau qua một bộ chuyển tiếp (repeater)
nhiệm vụ nhận tín hiệu rồi chuyển tiếp đến trạm kế tiếp trên vòng. Như
vậy tín hiệu được lưu chuyển trên vòng theo một chuỗi liên tiếp các liên
kết Point–toPoint gifia các repeater.
- Ưu điểm: Mạng hình vòng ưu điểm tương tự như mạng hình sao.
- Khuyết điểm: Một trạm hoặc cáp hỏng toàn bộ mạng bị ngfing
hoạt động, thêm hoặc bớt một trạm khó hơn, giao thfíc truy nhập
mạng phfíc tạp.
7
1.1.3 Phân loại mạng
1.1.3.1 LAN
LAN (local area network), hay còn gọi "mạng cục bộ", mạng
nhân trong một toà nhà, một khu vực (trường học hay quan chẳng
hạn) cỡ chfing vài km. Chúng nối các máy chủ các máy trạm trong
các văn phòng nhà y để chia sẻ tài nguyên trao đổi thông tin.
LAN có 3 đặc điểm:
- Giới hạn về tầm cỡ phạm vi hoạt động tfi vài mét cho đến 1 km.
- Thường dùng kthuật đơn giản chỉ một đường y cáp (cable)
nối tất cả máy. Vận tốc truyền dfi liệu thông thường 10 Mbps,
100 Mbps, 1 Gbps, và gần đây là 100 Gbps.
- Ba kiến trúc mạng kiểu LAN thông dụng bao gồm:
o Mạng bus hay mạng tuyến tính. Các máy nối nhau một cách
liên tục thành một hàng tfi y y sang máy kia. dụ của
nó là Ethernet (chuẩn IEEE 802.3).
o Mạng vòng. Các y nối nhau như trên máy cuối lại
được nối ngược trở lại với y đầu tiên tạo thành vòng kín.
Thí dụ mạng vòng thẻ bài IBM (IBM token ring).
o Mạng sao.
1.1.3.2 MAN
MAN (metropolitan area network), hay còn gọi "mạng đô thị",
mạng cỡ lớn hơn LAN, phạm vi vài km. thể bao gồm nhóm các
8
văn phòng gần nhau trong thành phố, thể công cộng hay nhân
và có đặc điểm:
- Chỉ tối đa hai dây cáp nối.
- Không dùng các k thuật nối chuyển.
- thể hỗ trợ chung vận chuyển dfi liệu đàm thoại, hay ngay cả
truyền hình. Ngày nay người ta thdùng kỹ thuật cáp quang để
truyền tín hiệu. Vận tốc có hiện nay thể đạt đến 10 Gbps.
1.1.3.3 WAN
WAN (wide area network), còn gọi "mạng diện rộng", dùng trong
vùng địa lớn thường cho quốc gia hay clục địa, phạm vi vài trăm cho
đến vài ngàn km. Chúng bao gồm tập hợp các y nhằm chạy các chương
trình cho người dùng. Các y y thường gọi y lưu trfi(host) hay
còn n y chủ, máy đầu cuối. Các máy chính được nối nhau bởi
các mạng truyền thông con (communication subnet) hay gọn hơn là mạng
con (subnet). Nhiệm vụ của mạng con chuyển tải các thông điệp
(message) tfi máy chủ này sang máy chủ khác.
1.2 nh mạng OSI
hình OSI (Open Systems Interconnection Reference Model,
viết ngắn OSI Model hoặc OSI Reference Model) - tạm dịch hình
tham chiếu kết nối c hệ thống mở - một thiết kế dựa vào nguyên
tầng cấp, giải một cách trfiu tượng kthuật kết nối truyền thông gifia
các máy vi tính thiết kế giao thfíc mạng gifia chúng. hình này được
phát triển thành một phần trong kế hoạch Kết nối các hthống mở (Open
Systems Interconnection) do ISO IUT-T khởi xướng. còn được gọi
hình bảy tầng của OSI.
9
Tường trình các tầng cấp của mẫu hình OSI:
- Tầng vật (Physical Layer): Tầng vật định nghĩa tất cả các đặc
tả về điện vật cho các thiết bị. Trong đó bao gồm bố trí của
các chân cắm(pin), các hiệu điện thế, các đặc tả về cáp nối
(cable).
- Tầng liên kết dfi liệu (Data-Link Layer): Tầng liên kết dfi liệu cung
cấp các phương tiện tính chfíc năng quy trình để truyền dfi
liệu gifia các thực thể mạng (truy cập đường truyền, đưa dfi liệu vào
mạng), phát hiện thể sfía chfia các lỗi trong tầng vật nếu có.
- Tầng mạng (Network Layer): Tầng mạng cung cấp các chfíc năng
và quy trình cho việc truyền các chuỗi dfi liệu độ dài đa dạng, tfi
một nguồn tới một đích, thông qua một hoặc nhiều mạng, trong khi
vẫn duy trì chất lượng dịch vụ (quality of service) tầng giao vận
yêu cầu.
- Tầng giao vận (Transport Layer): Tầng giao vận cung cấp dịch vụ
chuyên dụng chuyển dfi liệu gifia các người dùng tại đầu cuối, nhờ
đó các tầng trên không phải quan m đến việc cung cấp dịch vụ
truyền dfi liệu đáng tin cậy và hiệu quả.
10
- Tầng phiên (Session layer): Tầng phiên kiểm soát các (phiên) hội
thoại gifia các y tính. Tầng y thiết lập, quản kết thúc các
kết nối gifia trình fíng dụng địa phương và trình fíng dụng ở xa.
- Tầng trình diễn (Presentation layer): Lớp trình diễn hoạt động như
tầng dfi liệu trên mạng. Lớp y trên y tính truyền dfi liệu m
nhiệm vụ dịch dfi liệu được gfíi tfi tầng Application sang dạng
Fomat chung. tại y tính nhận, lớp này lại chuyển tfi Fomat
chung sang định dạng của tầng Application.
- Tầng fíng dụng (Application layer): Tầng fíng dụng tầng gần với
người sfí dụng nhất. cung cấp phương tiện cho người dùng truy
nhập các thông tin dfi liệu trên mạng thông qua chương trình fíng
dụng. Tầng y giao diện chính để người dùng tương tác với
chương trình fíng
1.3 Giao thfíc truyền thông
- Giao thfíc truyền thông (Communication protocol) hay Giao thfíc
liên mạng, Giao thfíc truyền thông, Giao thfíc trao đổi thông tin -
trong công nghệ thông tin gọi tắt giao thfíc (protocol) - một tập
hợp các quy tắc chuẩn dành cho việc biểu diễn dfi liệu, phát tín
hiệu, chfíng thực phát hiện các lỗi dfi liệu. Đó nhfing việc rất
cần thiết để gfíi thông tin qua các kênh truyền thông, nhờ đó các
thiết bị có thể kết nối và trao đổi thông tin với nhau.
- Các giao thfíc dùng cho việc truyền thông tin tín hiệu số trong mạng
máy tính nhiều tính năng để đảm bảo việc trao đổi dfi liệu một
các đáng tin cậy tqua một kênh truyền thông không hoàn hảo.
- các hình giao thfíc mang tính thuyết, được ngành công
nghệ thông tin n trọng một cách tương đối như hình OSI.
Cũng có nhfing giao thfíc được triển khai fíng dụng rộng rãi như
TCP, IP, HTTP, FTP, SMTP, POP3...
- nhiều giao thfíc được sfí dụng để giao tiếp hoặc truyền đạt thông
tin trên Internet, dưới đây là một số các giao thfíc tiêu biểu:
11
o TCP (Transmission Control Protocol): thiết lập kết nối gifia
các máy tính để truyền dfi liệu. chia nhỏ dfi liệu ra thành
nhfing gói (packet) đảm bảo việc truyền dfi liệu thành
công.
o IP (Internet Protocol): định tuyến (route) các gói dfi liệu khi
chúng được truyền qua Internet, đảm bảo dfi liệu sẽ đến
đúng nơi cần nhận.
o HTTP (HyperText Transfer Protocol): cho phép trao đổi
thông tin (chủ yếu ở dạng siêu văn bản) qua Internet.
o FTP (File Transfer Protocol): cho phép trao đổi tập tin qua
Internet.
o SMTP (Simple Mail Transfer Protocol): cho phép gởi các
thông điệp thư điện tfí (e-mail) qua Internet.
o POP3 (Post Office Protocol, phiên bản 3): cho phép nhận
các thông điệp thư điện tfí qua Internet.
o WAP (Wireless Application Protocol): cho phép trao đổi
thông tin gifia các thiết bị không dây, như điện thoại di động.
12
Chương 2 Xây dựng chương trình Client-Server
với giao thfíc TCP
2.1 Tổng quan về giao thfíc TCP
Giao thfíc TCP giao thfíc truyền thông kết nối (connection oriented) và
tin cậy (reliable). Truyền thông kết nối nghĩa trước khi truyền dfi liệu,
giao thfíc TCP gfíi giao thfíc TCP nhận phải thiết lập kênh truyền trước khi
gfíi/nhận dfi liệu và, trong suốt quá trình trao đổi đfi liệu hai giao thfíc gfíi/nhận
phải duy trì kênh truyền đã được thiết lập.
Quá trình thiết lập kênh truyền được thực hiện cụ thể bởi một quá trình gọi quá
trình bắt tay ba bước (three-way handshake) như sau:
1. Trước hết giao thfíc TCP phía
máy gfíi phải yêu cầu thiết lập
một kênh truyền bằng cách gfíi
một phân đoạn (segment) gọi
là SYN đến giao thfíc TCP
phía máy nhận.
2. Giao thfíc TCP phía máy nhận
trả lại một phân đoạn
(segment) để xác nhận đã nhận
được thành công.
3. Giao thfíc TCP phía máy gfíi
tiếp tục gfíi một phân đoạn
ACK để xác nhận và sau đó
quá trình gfíi dfi liệu.
Hình 1.quá trình bắt tay 3 ớc
13
Truyền thông tin cậy nghĩa nút gfíi biết được gói tin đã được gfíi đến
đích hay không. Nếu không đến được, nút gfíi phải gfíi lại gói tin. Nếu gói tin
đã được gfíi thành công, nút gfíi gfíi gói tin tiếp theo. Cụ thể của quá trìnhy
được thực hiện bằng cách mỗi gói tin được đánh một số thfí tự. Mỗi khi nhận
được gói tin, nút nhận phải gfíi một phản hồi xác nhận (acknowledgment) cho
nút gfíi để thông báo đã nhận được thành công gói tin.
Giao thfíc TCP sfí dụng truyền thông dạng luồng dfi liệu hay dãy các bytes
(byte-stream) liên tục trên kênh truyền, được mô tả như hình vẽ bên dưới:
Hình 2.Minh họa việc truyền dữ liệu bởi giao thức TCP
Mỗi gói tin TCP (hay còn gọi segment) gồm một số
thông tin điều khiển
phần đầu được mô tả ở bảng dưới đây:
Thông tin điều khiển
tả
Số cổng nguồn(Source Port)
Số hiệu cổng TCP của tiến trình gfíi
Số cổng đích(Destination Port)
Số hiệu cổng TCP của tiến trình nhận
Số hiệu gói tin(Sequence Number)
Số thfí tự byte đầu tiên của gói tin TCP
Số hiệu xác nhận(Acknowledgment
Number)
Số thfí tự của byte đầu tiên của gói tin
TCP giao thfíc TCP gfíi chờ nhận tfi
phía nhận
Kích thước bộ đệm(Window)
Kích thước hiện tại của bộ đệm TCP
phía máy gfíi dùng để chfía gói tin TCP
nhận được.
Thông tin kiểm tra lỗi(TCP Checksum)
Dùng để kiểm tra tính toàn vẹn của
phần đầu và dfi liệu của gói tin TCP.
14
Tải bản FULL (32 trang): https://bit.ly/3k8U4Vp
Dự phòng: fb.com/TaiHo123doc.net
Để kết thúc kết nối, giao thfíc TCP cũng sfí dụng chế bắt tay 3 ớc.Điều y
đảm bảo cả hai giao thfíc TCP (gfíi nhận) đã kết thúc truyền dfi liệu tất cả
các dfi liệu đã được gfíi và nhận thành công.
2.2 Khái niệm về Socket
Để xây dựng một chương trình theo hình client-server, cho phép truyền nhận
dfi liệu qua mạng, người lập trình chỉ cần viết chương trình tầng fíng dụng
tìm cách giao tiếp với một trong hai giao thfíc (dịch vụ) tầng Vận chuyền
TCP hoặc UDP. Để m được việc y, các hệ điều hành cung cấp một phương
tiện cho phép fíng dụng người dùng giao tiếp được với các giao thfíc TCP UDP
một cách dễ dàng. Phương tiện đó được gọi Socket, được biêu diễn như hình
vẽ bên dưới:
Hình 3.Mô tả Socket trong hình TCP/IP
Socket được xem như điểm giao tiếp của fíng dụng với mạng, do đó chương trình
client/server sẽ thực hiện hai thao tác cơ bản sau:
Để truyền dfi liệu, chương trình chỉ cần gfíi dfi liệu vào socket
Để nhận dfi liệu, chương trình chỉ cần đọc dfi liệu tfi socket
hai loại socket: socket nối với giao thfíc TCP còn được gọi TCP socket,
tương tự như vậy socket nối với giao thfíc UDP gọi là UDP socket.
Một TCP socket được xem như điểm cuối của kênh kết nối hai chiều lien kết
gifia hai chương trình trên mạng.
15
Tải bản FULL (32 trang): https://bit.ly/3k8U4Vp
Dự phòng: fb.com/TaiHo123doc.net
Hình 4.Socket trong hình ứng dụng client-server
thể nói một kênh kết nối gifia hai chương trình được thiết lập nhờ o hai
socket được gắn ở hai chương trình. Như hình vẽ trên, môi chương trình client
server đêu có một socket được gắn vào nó để có thể truyền và nhận dfi liệu.
2.3 Sử dụng TCP socket
Như trình y mục trên, việc xây dựng chương trình client-server sfí dụng giao
thfíc TCP của tầng Vận chuyên được thực hiện thông qua TCP socket. Do vậy,
người lập trình chỉ cần viết lệnh đề đọc ghi dfi liệu gifia chương trình
TCP socket, sau đó TCP socket sẽ nhiệm vụ liên lạc gfíi, nhận dfi liệu với
TCP socket phía đầu còn lại.
Do đó, các hoạt động của TCP socket sẽ bao gồm như sau:
TCP Socket phía server:
- Lắng nghe yêu cầu nối kết tfi socket phía client
- Chấp nhận kết nối tfi socket phía client
- Gfíi dfi liệu nhận dfi liệu
- Đóng kết nối
TCP Socket phía client:
- Yêu cầu kết nối với socket phía server
- Gfíi dfi liệu
- Nhận dfi liệu
- Đóng kết nối
16
6850022

Preview text:

ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG BÁO CÁO
ĐỒ ÁN SỞ 4
ĐỀ TÀI: Lập trình chương trình chat room sử dụng
giao thfíc TCP socket Sinh viên thực hiện
: QUANG DUẬT Lớp: 17IT1
ĐỖ NGỌC TOÀN Lớp: 17IT3
Giảng viên hướng dẫn : ThS.TRẦN ĐÌNH SƠN
Đà nẵng, tháng 01 năm 2020
ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG BÁO CÁO
ĐỒ ÁN SỞ 4
ĐỀ TÀI: Lập trình chương trình chat room sử dụng giao thfíc TCP socket
Đà Nẵng, tháng 01 năm 2020 MỞ ĐẦU
Đào tạo bậc đại học hệ Kỹ sư đòi hỏi sinh viên ngoài việc thành thạo kỹ
năng lập trình thì việc hiểu rõ bản chất của các giao thfíc, ngôn ngfi lập trình và
môi trường…là rất quan trọng.Chính vì vậy ngoài việc giảng dạy về ngôn ngfi lập
trình cùng giải thuật thì các Thầy(Cô) giảng viên tại Khoa luôn luôn hướng sinh
viên đến cái cốt lõi nhất để sinh viên hiểu và nắm rõ được bản chất. Chuẩn bị tốt
cho việc tốt nghiệp và kiến thfíc sau này. Với hướng đi đó, nhóm chúng em đã
chọn đề tài “Lập trình một chương trình chat room sfí dụng giao thfíc TCP
socket”, bằng việc fíng dụng nhfing gì đã học trong môn Lâp trình mạng. Tuy đề
tài không mới nhưng việc nắm rõ được bản chất và thành thạo khả năng lập trình
đòi hỏi thời gian và kiến thfíc thật chắc.
Với việc đã tfing học về các mô hình phân tầng mạng, quá trình biến đổi
dfi liệu để truyền, nhận dfi liệu cũng như mô hình client server, em đã tfing bước
hoàn thành đề tài được giao, tuy vậy vẫn còn nhiều thiếu sót cần hoàn thiện và tiếp tục phát triển.
Trong quá trình hoàn thành đồ án của nhóm, được giảng viên hướng dẫn
là ThS.Trần Đình Sơn hướng dẫn cụ thể và tận tình, thầy đã chỉ ra nhfing thiếu sót
và nhfing điểm cần hoàn thiện. Cuối cùng em xin gfíi lời cảm ơn chân thành nhất
đến Thầy cũng như các Thầy cô trong Khoa đã tạo điều kiện giúp đỡ nhóm chúng
em trong thời gian qua để có thể hoàn thành tốt được đề tài của mình.
Đà Nẵng, tháng 01 năm 2020 NHẬN XÉT
(Của giảng viên hướng dẫn)
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
Chữ xác nhận của Giảng viên MỤC LỤC
Chương 1 Tổng quan về lập trình mạng .............................................................. 6
1.1 Tổng quan về mạng máy tính .................................................................... 6
1.1.1 Mạng máy tính là gì? .......................................................................... 6
1.1.2 Mô hình mạng ..................................................................................... 6
1.1.3 Phân loại mạng ................................................................................... 8
1.2 Mô hình mạng OSI .................................................................................... 9
1.3 Giao thfíc truyền thông ............................................................................ 11
Chương 2 Xây dựng chương trình Client-Server với giao thfíc TCP .......... 13
2.1 Tổng quan về giao thfíc TCP ................................................................... 13
2.2 Khái niệm về Socket ................................................................................ 15
2.3 Sfí dụng TCP socket ................................................................................ 16
2.4 Các bước và thuật toán xây dựng chương trình Client-Server ................ 17
2.4.1 Các bước xây dựng chương trình server ........................................... 17
2.4.2 Thuật toán xây dựng chương trình client-server tổng quát ............... 18
Chương 3 Triển khai xây dựng chương trình ................................................ 20
3.1 Bài toán Chat Room ................................................................................ 20
3.2 Tổng quan về ngôn ngfi Java ................................................................... 20
3.2.1 Java là gì ? ........................................................................................ 20
3.2.2 Ứng dụng của Java............................................................................ 20
3.2.3 Nhfing đặc điểm cơ bản của Java ..................................................... 20
3.3 Viết chương trình server hoạt động đa tuyến(multi threading) ............... 21
3.4 Viết chương trình client ........................................................................... 26
3.5 Kết quả chương trình ............................................................................... 29
KẾT LUẬN .......................................................................................................... 31 1.
Kết quả..................................................................................................... 31 2.
Hạn chế .................................................................................................... 31
DANH MỤC TÀI LIỆU THAM KHẢO .............................................................. 32 Chương 1
Tổng quan về lập trình mạng
1.1 Tổng quan về mạng máy tính
1.1.1 Mạng máy tính gì?
Mạng máy tính hay hệ thống mạng (Computer Network hay
Network System) là sự kết hợp các máy tính lại với nhau thông qua các
thiết bị nối kết mạng và phương tiện truyền thông (giao thfíc mạng, môi
trường truyền dẫn) theo một cấu trúc nào đó và các máy tính này trao đổi
thông tin qua lại với nhau.
1.1.2 Mô hình mạng 1.1.2.1
Mạng hình sao (Star Network)
Có tất cả các trạm được kết nối với một thiết bị trung tâm có nhiệm
vụ nhận tín hiệu tfi các trạm và chuyển đến trạm đích. Tùy theo yêu cầu
truyền thông trên mạng mà thiết bị trung tâm có thể là hub, switch, router
hay máy chủ trung tâm. Vai trò của thiết bị trung tâm là thiết lập các liên kết Point – to – Point.
- Ưu điểm: Thiết lập mạng đơn giản, dễ dàng cấu hình lại mạng
(thêm, bớt các trạm), dễ dàng kiểm soát và khắc phục sự cố, tận
dụng được tối đa tốc độ truyền của đường truyền vật lý.
- Khuyết điểm: Độ dài đường truyền nối một trạm với thiết bị trung
tâm bị hạn chế (bán kính khoảng 100m với công nghệ hiện nay). 6 1.1.2.2
Mạng tuyến tính (Bus Network)
Có tất cả các trạm phân chia trên một đường truyền chung (bus).
Đường truyền chính được giới hạn hai đầu bằng hai đầu nối đặc biệt gọi là
terminator. Mỗi trạm được nối với trục chính qua một đầu nối chfi T (T-
connector) hoặc một thiết bị thu phát (transceiver). Mô hình mạng Bus
hoạt động theo các liên kết Point–to–Multipoint hay Broadcast.
- Ưu điểm: Dễ thiết kế và chi phí thấp.
- Khuyết điểm: Tính ổn định kém, chỉ một nút mạng hỏng là toàn bộ
mạng bị ngfing hoạt động. 1.1.2.3
Mạng hình vòng (Ring Network)
Tín hiệu được truyền đi trên vòng theo một chiều duy nhất. Mỗi
trạm của mạng được nối với nhau qua một bộ chuyển tiếp (repeater) có
nhiệm vụ nhận tín hiệu rồi chuyển tiếp đến trạm kế tiếp trên vòng. Như
vậy tín hiệu được lưu chuyển trên vòng theo một chuỗi liên tiếp các liên
kết Point–to–Point gifia các repeater.
- Ưu điểm: Mạng hình vòng có ưu điểm tương tự như mạng hình sao.
- Khuyết điểm: Một trạm hoặc cáp hỏng là toàn bộ mạng bị ngfing
hoạt động, thêm hoặc bớt một trạm khó hơn, giao thfíc truy nhập mạng phfíc tạp. 7
1.1.3 Phân loại mạng 1.1.3.1 LAN
LAN (local area network), hay còn gọi là "mạng cục bộ", là mạng
tư nhân trong một toà nhà, một khu vực (trường học hay cơ quan chẳng
hạn) có cỡ chfing vài km. Chúng nối các máy chủ và các máy trạm trong
các văn phòng và nhà máy để chia sẻ tài nguyên và trao đổi thông tin. LAN có 3 đặc điểm:
- Giới hạn về tầm cỡ phạm vi hoạt động tfi vài mét cho đến 1 km.
- Thường dùng kỹ thuật đơn giản chỉ có một đường dây cáp (cable)
nối tất cả máy. Vận tốc truyền dfi liệu thông thường là 10 Mbps,
100 Mbps, 1 Gbps, và gần đây là 100 Gbps.
- Ba kiến trúc mạng kiểu LAN thông dụng bao gồm:
o Mạng bus hay mạng tuyến tính. Các máy nối nhau một cách
liên tục thành một hàng tfi máy này sang máy kia. Ví dụ của
nó là Ethernet (chuẩn IEEE 802.3).
o Mạng vòng. Các máy nối nhau như trên và máy cuối lại
được nối ngược trở lại với máy đầu tiên tạo thành vòng kín.
Thí dụ mạng vòng thẻ bài IBM (IBM token ring). o Mạng sao. 1.1.3.2 MAN
MAN (metropolitan area network), hay còn gọi là "mạng đô thị", là
mạng có cỡ lớn hơn LAN, phạm vi vài km. Nó có thể bao gồm nhóm các 8
văn phòng gần nhau trong thành phố, nó có thể là công cộng hay tư nhân và có đặc điểm:
- Chỉ có tối đa hai dây cáp nối.
- Không dùng các kỹ thuật nối chuyển.
- Có thể hỗ trợ chung vận chuyển dfi liệu và đàm thoại, hay ngay cả
truyền hình. Ngày nay người ta có thể dùng kỹ thuật cáp quang để
truyền tín hiệu. Vận tốc có hiện nay thể đạt đến 10 Gbps. 1.1.3.3 WAN
WAN (wide area network), còn gọi là "mạng diện rộng", dùng trong
vùng địa lý lớn thường cho quốc gia hay cả lục địa, phạm vi vài trăm cho
đến vài ngàn km. Chúng bao gồm tập hợp các máy nhằm chạy các chương
trình cho người dùng. Các máy này thường gọi là máy lưu trfi(host) hay
còn có tên là máy chủ, máy đầu cuối. Các máy chính được nối nhau bởi
các mạng truyền thông con (communication subnet) hay gọn hơn là mạng
con (subnet). Nhiệm vụ của mạng con là chuyển tải các thông điệp
(message) tfi máy chủ này sang máy chủ khác.
1.2 Mô hình mạng OSI
hình OSI (Open Systems Interconnection Reference Model,
viết ngắn là OSI Model hoặc OSI Reference Model) - tạm dịch là hình
tham chiếu kết nối các hệ thống mở - là một thiết kế dựa vào nguyên lý
tầng cấp, lý giải một cách trfiu tượng kỹ thuật kết nối truyền thông gifia
các máy vi tính và thiết kế giao thfíc mạng gifia chúng. Mô hình này được
phát triển thành một phần trong kế hoạch Kết nối các hệ thống mở (Open
Systems Interconnection) do ISO và IUT-T khởi xướng. Nó còn được gọi
hình bảy tầng của OSI. 9
Tường trình các tầng cấp của mẫu hình OSI:
- Tầng vật lý (Physical Layer): Tầng vật lý định nghĩa tất cả các đặc
tả về điện và vật lý cho các thiết bị. Trong đó bao gồm bố trí của
các chân cắm(pin), các hiệu điện thế, và các đặc tả về cáp nối (cable).
- Tầng liên kết dfi liệu (Data-Link Layer): Tầng liên kết dfi liệu cung
cấp các phương tiện có tính chfíc năng và quy trình để truyền dfi
liệu gifia các thực thể mạng (truy cập đường truyền, đưa dfi liệu vào
mạng), phát hiện và có thể sfía chfia các lỗi trong tầng vật lý nếu có.
- Tầng mạng (Network Layer): Tầng mạng cung cấp các chfíc năng
và quy trình cho việc truyền các chuỗi dfi liệu có độ dài đa dạng, tfi
một nguồn tới một đích, thông qua một hoặc nhiều mạng, trong khi
vẫn duy trì chất lượng dịch vụ (quality of service) mà tầng giao vận yêu cầu.
- Tầng giao vận (Transport Layer): Tầng giao vận cung cấp dịch vụ
chuyên dụng chuyển dfi liệu gifia các người dùng tại đầu cuối, nhờ
đó các tầng trên không phải quan tâm đến việc cung cấp dịch vụ
truyền dfi liệu đáng tin cậy và hiệu quả. 10
- Tầng phiên (Session layer): Tầng phiên kiểm soát các (phiên) hội
thoại gifia các máy tính. Tầng này thiết lập, quản lý và kết thúc các
kết nối gifia trình fíng dụng địa phương và trình fíng dụng ở xa.
- Tầng trình diễn (Presentation layer): Lớp trình diễn hoạt động như
tầng dfi liệu trên mạng. Lớp này trên máy tính truyền dfi liệu làm
nhiệm vụ dịch dfi liệu được gfíi tfi tầng Application sang dạng
Fomat chung. Và tại máy tính nhận, lớp này lại chuyển tfi Fomat
chung sang định dạng của tầng Application.
- Tầng fíng dụng (Application layer): Tầng fíng dụng là tầng gần với
người sfí dụng nhất. Nó cung cấp phương tiện cho người dùng truy
nhập các thông tin và dfi liệu trên mạng thông qua chương trình fíng
dụng. Tầng này là giao diện chính để người dùng tương tác với chương trình fíng
1.3 Giao thfíc truyền thông
- Giao thfíc truyền thông (Communication protocol) hay Giao thfíc
liên mạng, Giao thfíc truyền thông, Giao thfíc trao đổi thông tin -
trong công nghệ thông tin gọi tắt là giao thfíc (protocol) - là một tập
hợp các quy tắc chuẩn dành cho việc biểu diễn dfi liệu, phát tín
hiệu, chfíng thực và phát hiện các lỗi dfi liệu. Đó là nhfing việc rất
cần thiết để gfíi thông tin qua các kênh truyền thông, nhờ đó mà các
thiết bị có thể kết nối và trao đổi thông tin với nhau.
- Các giao thfíc dùng cho việc truyền thông tin tín hiệu số trong mạng
máy tính có nhiều tính năng để đảm bảo việc trao đổi dfi liệu một
các đáng tin cậy tqua một kênh truyền thông không hoàn hảo.
- Có các mô hình giao thfíc mang tính lý thuyết, được ngành công
nghệ thông tin tôn trọng một cách tương đối như mô hình OSI.
Cũng có nhfing giao thfíc được triển khai và fíng dụng rộng rãi như
TCP, IP, HTTP, FTP, SMTP, POP3...
- Có nhiều giao thfíc được sfí dụng để giao tiếp hoặc truyền đạt thông
tin trên Internet, dưới đây là một số các giao thfíc tiêu biểu: 11
o TCP (Transmission Control Protocol): thiết lập kết nối gifia
các máy tính để truyền dfi liệu. Nó chia nhỏ dfi liệu ra thành
nhfing gói (packet) và đảm bảo việc truyền dfi liệu thành công.
o IP (Internet Protocol): định tuyến (route) các gói dfi liệu khi
chúng được truyền qua Internet, đảm bảo dfi liệu sẽ đến đúng nơi cần nhận.
o HTTP (HyperText Transfer Protocol): cho phép trao đổi
thông tin (chủ yếu ở dạng siêu văn bản) qua Internet.
o FTP (File Transfer Protocol): cho phép trao đổi tập tin qua Internet.
o SMTP (Simple Mail Transfer Protocol): cho phép gởi các
thông điệp thư điện tfí (e-mail) qua Internet.
o POP3 (Post Office Protocol, phiên bản 3): cho phép nhận
các thông điệp thư điện tfí qua Internet.
o WAP (Wireless Application Protocol): cho phép trao đổi
thông tin gifia các thiết bị không dây, như điện thoại di động. 12 Chương 2
Xây dựng chương trình Client-Server
với giao thfíc TCP
2.1 Tổng quan về giao thfíc TCP
Giao thfíc TCP là giao thfíc truyền thông có kết nối (connection oriented) và
tin cậy (reliable). Truyền thông có kết nối có nghĩa là trước khi truyền dfi liệu,
giao thfíc TCP gfíi và giao thfíc TCP nhận phải thiết lập kênh truyền trước khi
gfíi/nhận dfi liệu và, trong suốt quá trình trao đổi đfi liệu hai giao thfíc gfíi/nhận
phải duy trì kênh truyền đã được thiết lập.
Quá trình thiết lập kênh truyền được thực hiện cụ thể bởi một quá trình gọi là quá
trình bắt tay ba bước (three-way handshake) như sau:
1. Trước hết giao thfíc TCP phía
máy gfíi phải yêu cầu thiết lập
một kênh truyền bằng cách gfíi
một phân đoạn (segment) gọi
là SYN đến giao thfíc TCP phía máy nhận.
2. Giao thfíc TCP phía máy nhận
trả lại một phân đoạn
Hình 1.quá trình bắt tay 3 bước
(segment) để xác nhận đã nhận được thành công.
3. Giao thfíc TCP phía máy gfíi
tiếp tục gfíi một phân đoạn
ACK để xác nhận và sau đó là quá trình gfíi dfi liệu. 13
Truyền thông tin cậy có nghĩa là nút gfíi biết được gói tin đã được gfíi đến
đích hay không. Nếu không đến được, nút gfíi phải gfíi lại gói tin. Nếu gói tin
đã được gfíi thành công, nút gfíi gfíi gói tin tiếp theo. Cụ thể của quá trình này
được thực hiện bằng cách mỗi gói tin được đánh một số thfí tự. Mỗi khi nhận
được gói tin, nút nhận phải gfíi một phản hồi xác nhận (acknowledgment) cho
nút gfíi để thông báo đã nhận được thành công gói tin.
Giao thfíc TCP sfí dụng truyền thông dạng luồng dfi liệu hay dãy các bytes
(byte-stream) liên tục trên kênh truyền, được mô tả như hình vẽ bên dưới:
Hình 2.Minh họa việc truyền dữ liệu bởi giao thức TCP
Mỗi gói tin TCP (hay còn gọi là segment) gồm một số thông tin điều khiển ở
phần đầu được mô tả ở bảng dưới đây:
Tải bản FULL (32 trang): https://bit.ly/3k8U4Vp
Dự phòng: fb.com/TaiHo123doc.net
Thông tin điều khiển tả
Số cổng nguồn(Source Port)
Số hiệu cổng TCP của tiến trình gfíi
Số cổng đích(Destination Port)
Số hiệu cổng TCP của tiến trình nhận
Số hiệu gói tin(Sequence Number)
Số thfí tự byte đầu tiên của gói tin TCP
Số hiệu xác nhận(Acknowledgment Số thfí tự của byte đầu tiên của gói tin Number)
TCP mà giao thfíc TCP gfíi chờ nhận tfi phía nhận
Kích thước bộ đệm(Window)
Kích thước hiện tại của bộ đệm TCP
phía máy gfíi dùng để chfía gói tin TCP nhận được.
Thông tin kiểm tra lỗi(TCP Checksum)
Dùng để kiểm tra tính toàn vẹn của
phần đầu và dfi liệu của gói tin TCP. 14
Để kết thúc kết nối, giao thfíc TCP cũng sfí dụng cơ chế bắt tay 3 bước.Điều này
đảm bảo cả hai giao thfíc TCP (gfíi và nhận) đã kết thúc truyền dfi liệu và tất cả
các dfi liệu đã được gfíi và nhận thành công.
2.2 Khái niệm về Socket
Để xây dựng một chương trình theo mô hình client-server, cho phép truyền nhận
dfi liệu qua mạng, người lập trình chỉ cần viết chương trình ở tầng fíng dụng và
tìm cách giao tiếp với một trong hai giao thfíc (dịch vụ) ở tầng Vận chuyền là
TCP hoặc UDP. Để làm được việc này, các hệ điều hành cung cấp một phương
tiện cho phép fíng dụng người dùng giao tiếp được với các giao thfíc TCP và UDP
một cách dễ dàng. Phương tiện đó được gọi là Socket, được biêu diễn như hình vẽ bên dưới:
Hình 3.Mô tả Socket trong hình TCP/IP
Tải bản FULL (32 trang): https://bit.ly/3k8U4Vp
Dự phòng: fb.com/TaiHo123doc.net
Socket được xem như điểm giao tiếp của fíng dụng với mạng, do đó chương trình
client/server sẽ thực hiện hai thao tác cơ bản sau:
• Để truyền dfi liệu, chương trình chỉ cần gfíi dfi liệu vào socket
• Để nhận dfi liệu, chương trình chỉ cần đọc dfi liệu tfi socket
Có hai loại socket: socket nối với giao thfíc TCP còn được gọi là TCP socket, và
tương tự như vậy socket nối với giao thfíc UDP gọi là UDP socket.
Một TCP socket được xem như là điểm cuối của kênh kết nối hai chiều lien kết
gifia hai chương trình trên mạng. 15
Hình 4.Socket trong hình ứng dụng client-server
Có thể nói một kênh kết nối gifia hai chương trình được thiết lập nhờ vào hai
socket được gắn ở hai chương trình. Như hình vẽ trên, môi chương trình client và
server đêu có một socket được gắn vào nó để có thể truyền và nhận dfi liệu.
2.3 Sử dụng TCP socket
Như trình bày ở mục trên, việc xây dựng chương trình client-server sfí dụng giao
thfíc TCP của tầng Vận chuyên được thực hiện thông qua TCP socket. Do vậy,
người lập trình chỉ cần viết mã lệnh đề đọc và ghi dfi liệu gifia chương trình và
TCP socket, sau đó TCP socket sẽ có nhiệm vụ liên lạc và gfíi, nhận dfi liệu với
TCP socket phía đầu còn lại.
Do đó, các hoạt động của TCP socket sẽ bao gồm như sau:
TCP Socket phía server:
- Lắng nghe yêu cầu nối kết tfi socket phía client
- Chấp nhận kết nối tfi socket phía client
- Gfíi dfi liệu nhận dfi liệu - Đóng kết nối
TCP Socket phía client:
- Yêu cầu kết nối với socket phía server - Gfíi dfi liệu - Nhận dfi liệu - Đóng kết nối 16 6850022