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

BÀI tập lớn 1 môn 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 (103.54 KB, 5 trang )

BÀI TẬP LỚN 1
Môn học: Mạng Máy tính 1

1.

Nhiệm vụ:
Xây dựng ứng dụng chat theo một protocol được cung cấp sẵn, sử dụng giao thức
TCP/IP.
2.
Yêu cầu:
a. Ứng dụng cho phép hai người sử dụng ở hai máy khác nhau có thể chat với nhau
b. Một người có thể chat với nhiều người khác
c. Ứng dụng chat được xây dựng theo mô hình lai giữa Client-server và P2P: hệ
thống có một server trung tâm dùng cho việc đăng ký người sử dụng và quản lý
danh mục người sử dụng đang online, quá trình chat được thực hiện trực tiếp giữa
các client.
d. Ứng dụng cho phép truyền tải file trong quá trình chat giữa hai người.
e. Ứng dụng phải sử dụng Chat Proprocol được mô tả chi tiết ở phần dưới.
3.
Triển khai:
Làm việc theo nhóm.
• Lớp KSTN mỗi nhóm có 3 bạn cùng chung nhóm thực hành.
• Các lớp còn lại mỗi nhóm có 4 bạn cùng chung nhóm thực hành.
4.
Sản phẩm phải nộp:
a. Báo cáo (hard và softcopy) gồm các nội dung sau:
i. Chi tiết các yêu cầu về chức năng của ứng dụng
ii. Chi tiết phương án và quá trình hiện thực ứng dụng
iii. Thiết kế chi tiết ứng dụng
iv. Đánh giá kết quả hiện thực
v. Các chức năng mở rộng của hệ thống ngoài các yêu cầu được qui định ở


phần 2.
vi. Hướng dẫn sử dụng ứng dụng
b. Mã nguồn chương trình (softcopy)
c. Ứng dụng chat (softcopy) được biên dịch từ mã nguồn
5.
Đánh giá:
Bài tập lớn 1 có giá trị bằng 10% điểm số của môn học.
6.
Thời hạn nộp bài:
Trước 17g00 thứ sáu, ngày 30/10/2014
7.
P2P Chat protocol:
Giao thức chat này chỉ qui định cách giao tiếp trong quá trình chat (giữa client – client).
a. Đăng ký tài khoản chat với server
Khởi đầu client gởi đăng ký lên server theo định dạng sau:
<SESSION>
<PEER_NAME>Username</PEER_NAME>


<PORT>port number</PORT>
</SESSION>
55
“Port number” là port mà Peer sẽ sử dụng để chat.
b. Thông báo server tình trạng online
Định kỳ sau 15s, client gửi cập nhật trạng thái cho biết mình vẫn còn online
<SESSION_KEEP_ALIVE>
<PEER_NAME>Username</PEER_NAME>
<STATUS>ALIVE</STATUS>
</SESSION_KEEP_ALIVE>
c. Thông báo server tình trạng offline

Trước khi client offline, client sẽ thông báo cho server theo định dạng sau
<SESSION_KEEP_ALIVE>
<PEER_NAME>Username</PEER_NAME>
<STATUS>OOPS >>>WILL BE KILLED<<< </STATUS>
</SESSION_KEEP_ALIVE>
Trong trường hợp peer offline mà không thông báo cho server, server sẽ đóng kết nối và
xóa ra khỏi danh sách thành viên nếu không nhận được thông báo tình trạng online từ client
trong 1 phút.
d. Phản hồi đăng ký từ phía server khi có client đăng ký
Server sẽ kiểm tra Username đăng ký có bị trùng hay không.
• Nếu Username đó bị trùng Server sẽ gửi thông báo từ chối.
<SESSION_DENY />


Nếu Username không bị trùng thì Server sẽ gửi phản hồi là danh sách các người
dùng trong mạng theo cú pháp sau.
<SESSION_ACCEPT>
<PEER>
<PEER_NAME>Username 1</PEER_NAME>
<IP>IP address 1</IP>
<PORT>port number 1</PORT>
</PEER>
<PEER>
<PEER_NAME>Username 2</PEER_NAME>
<IP>IP address 2</IP>
<PORT>port number 2</PORT>
</PEER>
...
<PEER>
<PEER_NAME>Username n</PEER_NAME>

<IP>IP address n</IP>
<PORT>port number n</PORT>


</PEER>
</SESSION_ACCEPT>
e. Gửi yêu cầu kết nối chat giữa client – client
<CHAT_REQ>
<PEER_NAME>Username</PEER_NAME >
</CHAT_REQ>
Username là tên của bên gửi yêu cầu.
f. Phản hồi của client với một yêu cầu chat từ client khác
• Client không chấp nhận chat
<CHAT_DENY />
• Client chấp nhận chat
<CHAT_ACCEPT />
g. Gửi một chat message
<CHAT_MSG>Chat message</CHAT_MSG>
h. Yêu cầu chuyển file

Nội dung

Mục đích sử dụng

Ghi chú

<FILE_REQ>File
Name</FILE_REQ>

Yêu cầu chuyển file trong quá

trình chat. “File Name” là tên
của file cần chuyển.

<FILE_REQ_NOACK />

Từ chối yêu cầu chuyển file.

<FILE_REQ_ACK>
<PORT>port number</PORT>
</FILE_REQ_ACK>

Xác nhận yêu cầu chuyển file
từ phía nhận. Port number là
port mà phía nhận sẽ sử dụng
để nhận file.

Sau khi chat session
được khởi tạo giữa
hai peer, cả hai peer
đều có thể gởi yêu
cầu chuyển file.
Chỉ được sử dụng sau
khi có có yêu cầu
chuyển file.
Chỉ được sử dụng sau
khi có có yêu cầu
chuyển file.


<FILE_DATA_BEGIN />


<FILE_DATA> File data unit in
binary </FILE_DATA>

<FILE_DATA_END />
<CHAT_CLOSE />

MAX_MSG_SIZE

Bắt đầu chuyển file, được đưa
ra từ phía chuyển

Quá trình chuyển file
chỉ có thể được thực
hiện sau khi bên gửi
và nhận đồng ý.
Trong quá trình
chuyển file, hai phía
đều có thể gửi những
chat message.
Nội dung file cần chuyển.
Có thể chuyển được
Trong trường hợp file lớn, file file nhị phân và file
có thể cắt thành nhiều đoạn
văn bản. Lưu ý: tất
nhỏ và chuyển từng đoạn. Lưu cả nội dung của
ý: kích thước tối đa mỗi
file được chuyển
message là MAX_MSG_SIZE.
dưới dạng binary.

Kết thúc quá trình chuyển file. Do phía chuyển đưa
ra.
Đóng chat session. Có thể được Không thể gửi được
sử dụng bởi bất kỳ bên chat
chat message và
nào.
chuyển file sau khi đã
đóng chat session.
Nếu một bên đưa ra
yêu cầu đóng, trong
khi bên kia vẫn còn
đang
chat
hoặc
chuyển file, thì dữ
liệu không được xử
lý và bị mất.
1024 bytes
Kích thước tối đa của
một message (không
kể các tag), áp dụng
cho nội dung chat và
dữ liệu trong quá trình
truyền file.

Ghi chú: trong trường hợp cần sử dụng các thông tin về các thông số về địa chỉ IP và port
mà chúng không được chỉ rõ trong các trường của protocol, thì các thông tin này được lấy
ra từ socket gửi tới.
Lưu ý: Hai ký tự ‘<’ và ‘>’ là hai ký tự đặc biệt đối với P2P Chat protocol. Nếu hai ký tự
này được sử dụng trong nội dung dữ liệu được truyền tải nội dung chat, cần phải sử dụng

escape character theo qui tắc sau:
- Để chuyển một ký tự ‘<’ trong nội dung, cần thêm một ký tự ‘<’ đi kèm trước nó.
- Để chuyển một ký tự ‘>’ trong nội dung, cần thêm một ký tự ‘>’ đi kèm phía trước.


-

Ví dụ:
o Để chuyển chuỗi: “Tag <CHAT_MSG> dùng cho chat message” trong nội
dung chat. Chuỗi trên sẽ được chuyển thành: “Tag <<CHAT_MSG>> dùng
cho chat message”.
o Để chuyển chuỗi: “ a >> b”, chuỗi sẽ được chuyển thành: “a >>>>b”.



×