Tải bản đầy đủ (.pptx) (80 trang)

Lập trình mạng 8 1 chuyên đề java tcp

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 (1.66 MB, 80 trang )




GV: Nguyễn Thị Thanh Vân - CNTT
1
Java Simplified / Session 22 / 2 of 45

Giao tiếp Socket

Đặc điểm, cấu trúc Socket

TCP Socket

UDP Socket

Thiết kế giải thuật server/client

Các lớp trong gói java.net

Ứng dụng client/server qua TCP socket

Ứng dụng client/server qua UDP socket
Objectives
Objectives
2
Java Simplified / Session 22 / 3 of 45

Trong quá trình truyền tin có thể xảy ra nhiều sự cố:

một hay nhiều gói bị mất hay bị hỏng


cần phải truyền lại hay không hoặc

các gói tin đến không theo đúng trình tự.

Cần xử lý;

việc phân chia dữ liệu thành các gói,

tạo các header, phân tích header của các gói đến,

quản lý danh sách các gói đã nhận được/ chưa nhận được…

=> nhiều công việc cần phải thực hiện, và đòi hỏi rất nhiều phần mềm phức
tạp để xử lý.
=> Socket
Giới thiệu
Giới thiệu
3
Java Simplified / Session 22 / 4 of 45

Socket API – Socket Application Programming Interface:

là một cuộc cách mạng của Berkeley UNIX.

được giới thiệu ở BSD4.1 UNIX, 1981

Xuất phát từ ý tưởng quan trọng nhất của UNIX:

tất cả các thao tác vào/ra giống như vào ra tệp tin


Socket xem một liên kết mạng như là một luồng mà có thể đọc dữ liệu ra hay
ghi dữ liệu vào từ luồng này.

Nó che dấu người lập trình khỏi các chi tiết mức thấp của mạng như môi kiểu đường
truyền, các kích thước gói, yêu cầu truyền lại gói, các địa chỉ mạng
Giới thiệu
Giới thiệu
4
Java Simplified / Session 22 / 5 of 45

Socket:

“cơ chế ổ cắm”

Các máy có khả năng kết nối được với nhau.

Dùng cơ chế client/server

Cung cấp hai dịch vụ chính chuyển dữ liệu thông qua socket API:

unreliable datagram (UDP)

reliable, byte stream-oriented (TCP)
KHÁI NIỆM VỀ SOCKET
KHÁI NIỆM VỀ SOCKET
5
Java Simplified / Session 22 / 6 of 45
Socket trong TCP/IP Model
Socket trong TCP/IP Model
6

Java Simplified / Session 22 / 7 of 45
Socket trong TCP/IP Model
Socket trong TCP/IP Model
7
Java Simplified / Session 22 / 8 of 45

socket được định nghĩa trong hệ điều hành bằng một cấu trúc, được xem như
điểm nối để hai procceses giao tiếp với nhau.

Cấu trúc socket gồm 5 fields:

Family : xác định protocol group

Type : xác loại socket, stream, datagram hay raw socket.

Protocol : kieu gthuc. thường gán giá trị bằng 0

Local Socket Address và

Remote Socket Address : là địa chỉ socket của process cục bộ và từ xa.
Socket
Socket
8
Java Simplified / Session 22 / 9 of 45
Cấu trúc socket
Cấu trúc socket
9
Java Simplified / Session 22 / 10 of 45

Địa chỉ của một socket trên mạng TCP/IP gồm có hai phần:


Địa chỉ IP: một số nguyên 32 bits xác định duy nhất một card mạng trên máy tính (host)

Cổng dịch vụ: một số nguyên 16 bits xác định điểm kết nối với một ứng dụng trên một host.
Các ứng dụng thương mại hay các dịch vụ thông dụng sử dụng các cổng dịch vụ chuẩn đã được
đăng ký
Địa chỉ của một socket
Địa chỉ của một socket
10
Java Simplified / Session 22 / 11 of 45
Ví dụ mô tả đặc trưng địa chỉ IP và port trong các socket giao tiếp 3 dịch vụ khác nhau
SERVER
IP: 192.168.0.1
HTTP-SERVER
FTP-SERVER
SQL-SERVER
Port 80
Port 21
Port 1433
CLIENT
IP: 192.168.0.15
Web browser
FTP-client
data
application
Kết nối với socket(192.168.0.1, 80)
Kết nối với socket(192.168.0.1, 21)
Kết nối với socket(192.168.0.1, 1433)
Java Simplified / Session 22 / 12 of 45
struct sockaddr_in

{
u_char sin_len;
u_short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
Cấu trúc địa chỉ socket
Cấu trúc địa chỉ socket
12
Java Simplified / Session 22 / 13 of 45
1.
Hàm socket() để tạo mới một socket
2.
Hàm bind() Đăng ký socket đã khởi tạo với địa chỉ socket local. Trả về 0 nếu
thành công, -1: thất bại.
3.
Hàm connect() để client kết nối đến server
4.
Hàm listen() đặt socket ở trạng thái chờ, lắng nghe kết nối từ phía client
5.
Hàm accept() : chấp nhận kết nối từ client đến
6.
Hàm read() để đọc dữ liệu từ socket vào bộ nhớ
7.
Hàm write() để ghi dữ liệu từ bộ nhớ -> socket
8.
Hàm sendto() để gởi dữ liệu đến một socket từ xa
9.
Hàm recvfrom(): nhận dữ liệu đến từ 1 socket từ xa

Các hàm socket (in System Calls Interface )
Các hàm socket (in System Calls Interface )
13
Java Simplified / Session 22 / 14 of 45

Stream Socket: dùng cho connection-oriented protocol như TCP.

Datagram Socket: dùng cho connectionless protocol như UDP.

Raw Socket: dùng cho một số protocol của một số ứng dụng đặc biệt, dùng
các dịch vụ trực tiếp của lớp IP.
Các loại Socket
Các loại Socket
14
Java Simplified / Session 22 / 15 of 45

Có thể sử dụng để liên lạc theo mô hình client/server

Có 1 đường kết nối ảo giữa 2 phía Server/client

Một trong 2 phía phải đợi tiến trình kia yêu cầu kết nối

Server lắng nghe và chấp nhận yêu cầu kết nối

Mỗi thông điệp gửi đều có xác nhận trở về

Các gói tin chuyển đi tuần tự
TCP socket – đặc điểm
TCP socket – đặc điểm
15

Java Simplified / Session 22 / 16 of 45

Client phải kết nối đến server

server process phải chạy trước (phần tử thụ động)

server phải tạo một socket để lắng nghe và chấp nhận các kết nối từ client

Client kết nối đến server bằng cách:

Khởi tạo TCP socket ở local

Xác định IP address, port number của server process và kết nối đến

Sau khi client khởi tạo socket, nó sẽ thiết lập kết nối đến server

Khi server nhận yêu cầu kết nối, nó sẽ chấp nhận yêu cầu và khởi tạo socket
mới để giao tiếp với client.

Cho phép server chấp nhận nhiều client tại một thời điểm.
TCP socket – hoạt động
TCP socket – hoạt động
16
Java Simplified / Session 22 / 17 of 45
TCP socket - hoạt động
TCP socket - hoạt động
17
Java Simplified / Session 22 / 18 of 45

Cung cấp cơ chế truyền không tin cậy các nhóm bytes (datagrams) giữa client

và server.

Không cần thiết lập kết nối giữa client với server.

Client phải gởi kèm địa chỉ IP và port đích

Server khi nhận dữ liệu sẽ phân tích địa chỉ của client để truyền lại.


Thông điệp có thể gửi nhiều lần

Người gửi không chắc chắn thông điệp tới người nhận

Thông điệp sau có thể đến đích trước thông điệp gửi trước nó
UDP socket – đặc điểm
UDP socket – đặc điểm
18
Java Simplified / Session 22 / 19 of 45
UDP socket – hoạt động
UDP socket – hoạt động
19
Java Simplified / Session 22 / 20 of 45

Một trong 2 quá trình phải công bố số hiệu cổng của socket mà mình sử dụng

Mỗi cổng giao tiếp thể hiện 1 địa chỉ xác định trong hệ thống

Có thể nhận dữ liệu gửi đến cổng giao tiếp này từ các quá trình khác.
Số hiệu cổng của socket
Số hiệu cổng của socket

20
Java Simplified / Session 22 / 21 of 45

Thiết kế giải thuật cho client/Server.

Công cụ viết

Dùng các class trong Java

Example
Viết các ứng dụng Socket
Viết các ứng dụng Socket
21
Java Simplified / Session 22 / 22 of 45

Giải thuật cho chương trình client/Server dùng TCP

Giải thuật cho chương trình client/Server dùng UDP

Chương trình server có hai loại:

Lặp (iterative)

Đồng thời (concurrent).

Hai dạng giao thức chương trình server:

Connection-oriented (TCP)

Connectionless. (UDP)

Thiết kế giải thuật cho client/Server
Thiết kế giải thuật cho client/Server
22
Java Simplified / Session 22 / 23 of 45

Client
1.
Xác định địa chỉ server.
2.
Tạo socket.
3.
Kết nối đến Server
4.
Gởi/nhận dữ liệu theo giao thức đã thiết kế.
5.
Đóng socket.

Server
1.
Tạo socket
2.
Đăng ký với hệ thống
3.
Lắng nghe kết nối
4.
Chấp nhận kết nối
5.
Gửi nhận dữ liệu theo đúng giao thức đã thiết kế.
6.
Đóng kết nối sau khi đã hoàn thành và trở lại trạng thái lắng nghe chờ kết nối mới

Giải thuật cho client/Server TCP
Giải thuật cho client/Server TCP
23
Java Simplified / Session 22 / 24 of 45

Client
1.
Xác định địa chỉ server.
2.
Tạo socket.
3.
Gởi/nhận dữ liệu theo giao thức đã thiết kế.
4.
Đóng socket.

Server
1.
Tạo socket
2.
Đăng ký với hệ thống
3.
Lặp công việc đọc dữ liệu từ client gửi đến và gửi trả kết quả cho client theo đúng
giao thức lớp ứng dụng đã thiết kế.
4.
Đóng Socket
Giải thuật cho client/Server UDP
Giải thuật cho client/Server UDP
24
Java Simplified / Session 22 / 25 of 45


Tạo socket và đăng ký với hệ thống

Đặt socket ở chế độ chờ, lắng nghe kết nối.

Khi có request từ client, Server sẽ:

chấp nhận kết nối,

tạo một process con để xử lý.

Quay lại trạng thái chờ, lắng nghe kết nối mới

Công việc của process con:

Nhận thông tin kết nối của client

Giao tiếp với client theo giao thức lớp ứng dụng đã thiết kế

Đóng kết nối và kết thúc process con.

Đóng socket
Thiết kế giải thuật cho Server – concurrent, connection-oriented
(TCP)
Thiết kế giải thuật cho Server – concurrent, connection-oriented
(TCP)
25

×