network programming 3

26
Bùi Quang Minh Network Programming

Upload: nguyenxuantiep89

Post on 08-Apr-2015

216 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Network Programming 3

Bùi Quang Minh

Network Programming

Page 2: Network Programming 3

Socket Options

Application

TCP/UDP

IP

Data Link

Data

Port

Address

Application

TCP/UDP

IP

Data Link

Data

Port

Address

Gửi Nhận Socket API Socket API

Page 3: Network Programming 3

Socket Options Socket API: cung cấp các thông tin (Data,

Port, Address…). Hệ thống: Đóng gói và bóc tách thông tin

từ và tới các hàm API. HẠN CHẾ Cần phải có cách để can thiệp vào quá

trong đóng gói và bóc tách thông tin của hệ thống

Page 4: Network Programming 3

Socket Options

Application

TCP/UDP

IP

Data Link

Data

Port

Address

Application

TCP/UDP

IP

Data Link

Data

Port

Address

Gửi Nhận

Socket API Socket API Options Options

Page 5: Network Programming 3

Socket Options Socket API liên quan đến xử lý Option

int setsockopt (

SOCKET s,

int level,

int optname,

const char FAR * optval,

int optlen

);

Page 6: Network Programming 3

Socket Options

Level: các kiểu socket áp dụng options.

SOL_SOCKET: option áp dụng các kiểu socket

IPPROTO_TCP: option áp dụng cho tầng TCP

IPPROTO_IP: option áp dụng cho tầng IP

Optname: Các kiểu options được định nghĩa sẵn

IP_TTL (IPPROTO_IP): Thiết lập TTL cho cho gói

tin IP.

SO_MAX_MSG_SIZE (SOL_SOCKET): Thiết lập

kích thước tối đa của một gói tin.

SO_KEEPALIVE (SOL_SOCKET):

Page 7: Network Programming 3

Socket Options

Ví dụ sử dụng setsockopt

Hàm getsockopt()

Page 8: Network Programming 3

Socket Options

Socket I/O ?

Ioctlsocket(), WSAioctl()

int ioctlsocket(

__in SOCKET s,

__in long cmd,

__inout u_long *argp

);

Page 9: Network Programming 3

Socket Options

Cmd: cờ lệnh

FIONBIO: đặt I/O ở chế độ không chờ.

FIONREAD: yêu cầu số lượng dữ liệu

đọc trên socket.

Argp: tham số phụ thuộc cờ lệnh

Ví dụ

Page 10: Network Programming 3

Winsock I/O – Chế độ I/O T

ime

Chế độ chờ (blocking)

Application System

init socket

send()/recv()

close socket

Page 11: Network Programming 3

Winsock I/O – Chế độ I/O T

ime

Chế độ không chờ (non-blocking)

Application System

init socket

send()/recv()

close socket

Làm việc khác

Page 12: Network Programming 3

Winsock I/O – Mô hình I/O

Mô hình I/O: một số cách thức vào ra dữ liệu.

Sử dụng các hàm winsock để cài đặt mô hình.

Kết hợp sử dụng chế độ I/O để nâng cao hiệu năng ứng dụng.

Page 13: Network Programming 3

Winsock I/O – Chế độ I/O T

ime

Mô hình Select

Application System

init socket

Cài đặt select

close

socket

Đọc

Ghi

Xử lý dữ liệu

Đọc

Page 14: Network Programming 3

Winsock I/O – Mô hình I/O Cài đặt mô hình Select

int select( int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds, const struct timeval FAR * timeout ); FD_SET(), FD_ISSET(), FD_ZERO()

Ví dụ

Page 15: Network Programming 3

Winsock I/O – Mô hình I/O

Mô hình WSAAsyncSelect

Giống mô hình Select nhưng sử dụng cơ chế thông điệp của Windows.

Hàm WSAAsyncSelect()

Mô hình WSAEventSelect

Giống mô hình Select nhưng sử dụng Event Object.

WSAEventSelect(), WSAWaitForMultipleEvents().

Page 16: Network Programming 3

Winsock I/O – Mô hình I/O Mô hình Overlapped

Các mô hình I/O đã giới thiệu yêu cầu vào ra và xử lý lần lượt.

Overlapped cho phép thực hiện nhiều các thao tác vào ra cùng một lúc. tăng hiệu năng.

Các phương thức cài đặt mô hình Overlapped Event notification: WSACreateEvent(),

WSAWaitForMultipleEvents(), WSAResetEvent()…

Completion routines: hàm CALLBACK routine, WSARecv(routine), WSASend(routine).

Page 17: Network Programming 3

Winsock I/O – Mô hình I/O

Mô hình Completion Port

Kết hợp mô hình Overlapped + nhiều worker thread

Page 18: Network Programming 3

Winsock I/O – Mô hình I/O

Có rất nhiều mô hình Socket I/O trên

môi trường Windows

Ứng dụng mạng nên chọn mô hình nào

thì phù hợp ?

Client & Server có thể sử dụng bất cứ

mô hình dữ liệu.

Server yêu cầu hiệu năng cao nên sử

dụng mô hình Completion Port.

Page 20: Network Programming 3

Socket Application

Ứng dụng

Client-Server

B

Socket I/O

C Protocol

(RFC)

A Socket

cơ bản

Page 21: Network Programming 3

SMTP

Email System

Mail

Server

Google Mail

Yahoo Mail

HotMail

Argomail Server Software

Mail

Client

Mail

Client

Mail

Client

POP3

Outlook Mail

Page 22: Network Programming 3

SMTP Protocol

Giao thức gửi mail từ Client đến

Server

RFC 821

Cổng 25

Ví dụ

Page 23: Network Programming 3

MIME

Với những email có nội dung phức tạp ?

Sử dụng MIME

RFC

RFC 2045: Format of Internet

Message Bodies

RFC 2046: Media Types

RFC 2049

Chú ý: Base64

Page 24: Network Programming 3

POP3

Giao thức nhập Mail từ Server về Client

RFC 1939

Cổng 110

Page 25: Network Programming 3

HOMEWORK

Làm việc theo nhóm.

2 tuần để hoàn thành.

Trình bày những gì đã làm một cách ngắn gọn.

Phần mềm có giao diện

12/10/2010

Điểm giữa kỳ.

Page 26: Network Programming 3

HOMEWORK SMTP Protocol:

Gửi email có nội dung là text (do người dùng nhập vào) đến một địa chỉ email khác.

Test: ArgoMail Server nhận mail từ ứng dụng, nhận email đó bằng outlook

POP3 Protocol: Nhận email có nội dung bất kỳ tư mail server

Test: Outlook gửi mail, ứng dụng kết nối argomail để nhận mail và ghi ra file nội dung nhận được.

MIME: Sinh file có định dạng MIME (nội dung chính của email

+ đính kèm 1 file bất kỳ).

Test: mở file sinh ra bằng Outlook.