1. Trang chủ
  2. » Cao đẳng - Đại học

Bài Giảng Lập Trình Web - CGI & Các Công Cụ lập Trình Web Phổ Biến _ www.bit.ly/taiho123

75 1,4K 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 738,4 KB

Nội dung

Không giữ trạng trái trước đó.Lập trình mạng – Chương 1221.3 Khái niệm về Socket.• Socket API– Được giới thiệu ở BSD4.1 UNIX, 1981 Trang 12 Lập trình mạng – Chương 1231.3 Khái niệm về S

Trang 1

Lập trình mạng – Chương 1 1

Nội dung môn học

CHƯƠNG 1: GIỚI THIỆU VỀ TCP/IP

CHƯƠNG 2: THIẾT KẾ GIẢI THUẬT CHO

CHƯƠNG TRÌNH CLIENT/SERVER CHƯƠNG 3: LẬP TRÌNH MẠNG TRÊN CÁC MÔI

TRUỜNG PHỔ DỤNG CHƯƠNG 4: LẬP TRÌNH MẠNG VỚI JAVA

Lập trình mạng – Chương 1 2

Nội dung môn học(tt)

CHƯƠNG 5: LẬP TRÌNH WEB — CGI

CHƯƠNG 6: LẬP TRÌNH WEB VỚI CÁC CÔNG

NGHỆ PHỔ BIẾN CHƯƠNG 7: ỨNG DỤNG XML TRONG LẬP

TRÌNH MẠNG

CHƯƠNG 8: BẢO MẬT DỮ LIỆU TRUYỀN

Trang 2

Lập trình mạng – Chương 1 3

Tài liệu tham khảo

[1] Douglas E Comer, Internetworking with TCP/IP, Prentice-Hall,1993.

[2] W Richard Stevens, Unix Network Programming, Prentice-Hall,1990.

[3] Arthur Dumas, Programming Winsock, Sams Publishing,1995.

[4] Merlin, Conrad Hughes , Java Network Programming, Manning Publications

Co., 1997

[5] D Travis Dewire, Second-Generation Client/Server Computing, Mc Graw-Hill,

1997.

[6] John Shapley Gray, Interprocess Comunication in UNIX, Prentice-Hall,1997.

[7] Deitel & Deitel Java How to program, 3th edition, Prentice-Hall,1999.

[8] Richard Anderson, , Professional Active Server Pages 3.0, Wrox Press, 1999.

[9] Marty Hall, Core Servlet and Java Server Pages, Prentice-Hall PTR, 2000

• [10] MSDN.

• [11] Tập tài liệu RFC.

Lập trình mạng – Chương 1 4

Trang 3

Lập trình mạng – Chương 1 5

CHƯƠNG 1 GIỚI THIỆU VỀ TCP/IP

1.1 Tổng quát về TCP/IP.

1.2 Các giao thức và dịch vụ trên TCP/IP.

1.3 Khái niệm về Socket.

Transport layer (host level)

Applications layer

TCP/IPOSI

Trang 5

Lập trình mạng – Chương 1 9

1.1 Tổng quát về TCP/IP (tt)

• Địa chỉ Internet:

có netid giống nhau.

Trang 6

transport

network data link physical

network data link physical

network data link physical

network data link physical

network data link physical network

data link physical

logica

l en d-e

nd t ransport

Trang 7

– Dùng chuỗi ký tự để đánh địa chỉ, không phân biệt

chữ hoa, thường, mỗi thành phần có thể 63 ký tự

và tên đầy đủ không dài quá 255, dưới đây gọi là

tên.

– Tên được đặt theo cây phân cấp

– Địa chỉ tài nguyên biểu diễn dạng tên được hình

thành từ nó cho đến root

Trang 8

– Network chỉ hiểu địa chỉ IP (binary) => ánh xạ

giữa địa chỉ IP và tên.

database , quản lý theo dạng phân cấp với name

servers

– Network chỉ hiểu địa chỉ IP (binary) => ánh xạ

giữa địa chỉ IP và tên.

– Mỗi ứng dụng mạng phải chuyển tên sang địa chỉ

IP

Trang 9

Lập trình mạng – Chương 1 17

1.2 Các giao thức và dịch vụ(tt)

• DNS (tt)

– Ứng dụng giao tiếp với

local name server để hỏi

địa chỉ ánh xạ

– Local name server sẽ trả

lời hoặc request tiếp…

requesting host

surf.eurecom.fr

gaia.cs.umass.edu

root name server

local name server

dns.eurecom.fr

1

2 3 4

– Các ứng dụng phải định nghĩa protocol để giao

tiếp với nhau.

– Protocol qui định thứ tự các thông điệp trao đổi,

hành động khi nhận mỗi loại thông điệp.

– Ứng dụng cũng phải hiện thực phần giao tiếp với

người dùng.

Trang 10

• E-mail: mail reader

• streaming audio/video: media player

Trang 11

– Stateless : Mỗi lần request/response thì cầu nối

hủy bỏ Không giữ trạng trái trước đó.

Lập trình mạng – Chương 1 22

1.3 Khái niệm về Socket.

• Socket API

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

– Được ứng dụng khởi tạo, sử dụng hay hủy bỏ

Trang 12

Lập trình mạng – Chương 1 23

1.3 Khái niệm về Socket(tt)

• Socket :

– Là môi trường để các process ứng dụng giao tiếp

với nhau, process ứng dụng có thể chạy trên cùng

một máy hoặc trên hai máy khác nhau.

– Được ứng dụng tạo ra và sử dụng tuy nhiên được

hệ thống (hệ điều hành) kiểm soát.

Lập trình mạng – Chương 1 24

1.3 Khái niệm về Socket(tt)

end-end-transport protocol (UCP or TCP)

process

process

TCP with buffers, variables socket

process

TCP with buffers, variables socket

controlled by application developer controlled by operating system host or

server internet

Trang 13

Lập trình mạng – Chương 1 25

1.3 Khái niệm về Socket(tt)

• Lập trình socket với TCP

– 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

– 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

Trang 14

Lập trình mạng – Chương 1 27

1.3 Khái niệm về Socket(tt)

wait for incoming

create socket, connect to hostid, port=x

clientSocket = Socket()

close

connectionSocket

read reply from clientSocket close clientSocket

Server (running on hostid) Client

send request using clientSocket read request from

connectionSocket

write reply to

connectionSocket

TCP connection setup

String sentence;

String modifiedSentence;

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

Trang 15

Lập trình mạng – Chương 1 29

Example: Java client (TCP), cont.

BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

String clientSentence;

String capitalizedSentence;

ServerSocket welcomeSocket = new ServerSocket(6789);

while(true) { Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

Trang 16

Lập trình mạng – Chương 1 31

Example: Java server (TCP), cont

DataOutputStream outToClient = new DataOutputStream (connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence);

} } }

Lập trình mạng – Chương 1 32

1.3 Khái niệm về Socket(tt)

• Lập trình socket với UTP

– Cung cấp cơ chế truyền không tin cậy các nhóm

các byte (datagrams) giữa client và server.

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

– Sender 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

sender để truyền lại

Trang 17

Lập trình mạng – Chương 1 33

1.3 Khái niệm về Socket(tt)

• Lập trình socket với UTP(tt)

close clientSocket

Server (running on hostid)

read reply from clientSocket

create socket, clientSocket = DatagramSocket()

Client

Create, address (hostid, port=x,

send datagram request using clientSocket

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("hostname");

byte[] sendData = new byte[1024];

byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

Trang 18

Lập trình mạng – Chương 1 35

Example: Java client (UDP), cont.

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);

clientSocket.close();

} }

Create datagram with

DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] receiveData = new byte[1024];

byte[] sendData = new byte[1024];

while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

Trang 19

Lập trình mạng – Chương 1 37

Example: Java server (UDP), cont

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress,

port);

serverSocket.send(sendPacket);

} } }

• server: Web server gởi kết quả

cho client đối với mỗi request.

– http1.0: RFC 1945

– http1.1: RFC 2068

PC running Explorer

Server running NCSA Web server

Mac running Navigator

http request

http request

http re sponse

http response

Trang 20

• server chấp nhận kết nối từ client

• http messages (application-layer protocol messages)

được trao đổi giữa browser (http client) và Web server

1a http client tạo TCP connection

(tạo socket) đến http server ở

www.dit.hcmut.edu.vn Port 80

2 http client gởi http request

message (chứa đường dẫn)

thông qua TCP connection

socket

1b http server ở địa chỉ www.dit.hcmut.edu.vn đang chờ đợi kết nối ở port 80, chấp nhận kết nối

và notifying đến clienttime

Trang 22

Accept: text/html, image/gif,image/jpeg Accept-language:vn

(extra carriage return, line feed)

request line

(GET, POST,

HEAD commands)

header lines Carriage return,

Last-Modified: Mon, 22 Jun 1998 …

Content-Length: 6821 Content-Type: text/html data data data data data

data, e.g.,

requested

html file

Trang 23

Lập trình mạng – Chương 1 45

1.4 Một số ứng dụng mạng(tt)

Authentication goal: control access to

server documents

• stateless: client must present

authorization in each request

• authorization: typically name, password

– authorization: header line in

request

– if no authorization presented, server

refuses access, sends

WWW authenticate:

header line in response

usual http request msg 401: authorization req.

WWW authenticate:

usual http request msg + Authorization:line

usual http response msg

usual http request msg + Authorization:line

usual http response msg time

Browser caches name & password so

that user does not have to repeatedly enter it.

• server matches

presented-cookie with server-stored info

spectific action

Trang 24

cookie-Lập trình mạng – Chương 1 47

1.4 Một số ứng dụng mạng(tt)

Conditional GET

• Goal: don’t send object if client

has up-to-date stored (cached)

version

• client: specify date of cached

copy in http request

If-modified-since: <date>

• server: response contains no

object if cached copy up-to-date:

FTP client local file system

remote file system

user

at host

• File Transfer Protocol (ftp)

– Chuyển file từ local đến server hoặc lấy file từ server về

local

– Hoạt động theo cơ chế client/server

– FTP server chạy ở port 21

– Tham khảo : RFC 959

Trang 25

Lập trình mạng – Chương 1 49

1.4 Một số ứng dụng mạng(tt)

• FTP (tt)

– ftp client giao tiếp đến ftp server qua TCP ở port 21

– Hai cầu nối TCP được thiết lập:

• control: exchange commands, responses between

client, server “out of band control”

• data: file data to/from server

– ftp server hiện thực cơ chế “state”: current directory, earlier

• LIST return list of file in current directory

• RETR filenameretrieves (gets) file

• STOR filenamestores (puts) file onto

remote host

Trang 26

Lập trình mạng – Chương 1 51

1.4 Một số ứng dụng mạng(tt)

Sample return codes

• status code and phrase (as in http)

• 331 Username OK, password required

• 125 data connection already open;

transfer starting

• 425 Can’t open data connection

• 452 Error writing file

mail server

user agent

user agent

user agent

mail server

user agent user

agent

mail server

user agent

SMTPSMTPSMTP

Trang 27

S: 250 Hello crepes.fr, pleased to meet you

C: MAIL FROM: <alice@crepes.fr>

S: 250 alice@crepes.fr Sender ok

C: RCPT TO: <bob@hamburger.edu>

S: 250 bob@hamburger.edu Recipient ok

C: DATA

S: 354 Enter mail, end with "." on a line by itself

C: Do you like ketchup?

C: How about pickles?

transaction phase, client:

• list: list message numbers

• retr: retrieve message by

number

• dele: delete

• quit

C: list S: 1 498 S: 2 912 S: C: retr 1 S: <message 1 contents>

S: C: dele 1 C: retr 2 S: <message 1 contents>

S: C: dele 2 C: quit S: +OK POP3 server signing off

S: +OK POP3 server ready C: user alice

S: +OK C: pass hungry S: +OK user successfully logged on

Trang 28

Lập trình mạng – Chương 2 55

CHƯƠNG 2 THIẾT KẾ GIẢI THUẬT CHO CHƯƠNG

TRÌNH CLIENT/SERVER

2.1 Giao tiếp socket (Socket Interface )

2.2 Thiết kế giải thuật cho chương trình client

2.3 Thiết kế giải thuật cho chương trình server

Lập trình mạng – Chương 2 56

2.1 Giao tiếp socket

• Giao tiếp socket (Socket Interface) là các API

dùng cho việc lập trình các ứng dụng mạng.

• Socket Interface được định nghĩa trong UNIX

BSD, dựa trên việc mở rộng tập các system

calls (access files).

=> Phần này chỉ giới thiệu các khái niệm, ý

tưởng và các hàm, kiểu dữ liệu dùng cho lập

trình mạng với Socket Interface.

Trang 29

Lập trình mạng – Chương 2 57

2.1 Giao tiếp socket (tt)

• Một số cấu trúc dữ liệu

trúc trong ngôn ngữ C Cấu trúc này chỉ có 1 field kiểu

u_long chứa địa chỉ IP 32 bit

Lập trình mạng – Chương 2 58

2.1 Giao tiếp socket (tt)

• Một số cấu trúc dữ liệu (tt)

– Cấu trúc địa chỉ socket :

• địa chỉ này lưu trữ địa chỉ IP, chỉ số port, và dạng

(family protocol)

• Tên cấu trúc là sockaddr_in được biểu diễn ở hình

trong slide kế Trong đó:

– sin_len: lưu trữ chiều dài cấu trúc của sockaddr_in

– sin_family: dạng protocol của socket

– sin_port: chỉ số port

– sin_addr: địa chỉ in Internet của socket

– sin_zero[8]: không dùng, đặt giá trị = 0

Trang 30

sin_len sin_family sin_port sin_addr sin_zero

Hình - Cấu trúc địa chỉ socket

Lập trình mạng – Chương 2 60

2.1 Giao tiếp socket (tt)

• Một số cấu trúc dữ liệu (tt)

– Cấu trúc socket :

• 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 field được mô tả như hình trong

slide kế:

– Family : xác định protocol group

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

– Protocol : là field 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.

Trang 31

Lập trình mạng – Chương 2 61

2.1 Giao tiếp socket (tt)

sin_len sin_family sin_port sin_addr sin_zero

sin_len sin_family sin_port sin_addr sin_zero

Remote Socket Address Local Socket Address

• Giao tiếp socket định nghĩa 3 loại socket có thể dùng

trên môi trường TCP/IP (hình ở slide kế)

• Các loại socket gồm:

– 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.

Trang 32

socket interface

Hình - Các loại socket

Lập trình mạng – Chương 2 64

• Một số cấu trúc dữ liệu (tt)

– Thông tin remote host :

• Thông tin được lưu trữ trong một cấu trúc hostent được

trả về khi ứng dụng muốn ánh xạ địa chỉ tên miền bằng

cách gọi hàm gethostbyname():

struct hostent * gethostbyname(const char * hostname);

struct hostent {

char *h_name; char **h_aliases;

int h_addrtype; int h_length;

char **h_addr_list;

}

Trang 33

Lập trình mạng – Chương 2 65

2.1 Giao tiếp socket (tt)

• Một số cấu trúc dữ liệu (tt)

– Byte Ordering

• Big-Endian Byte Order : byte có trọng số lớn lưu trước

• Little -Endian Byte Order : byte có trọng số nhỏ lưu

trước

• Tuỳ cấu trúc của mỗi máy, lưu trữ số theo một trong hai

cách trên => khi giao tiếp mạng sẽ không đồng nhất

• Giao tiếp socket định nghĩa một số hàm để thực hiện

các thao tác chuyển đổi :

– htons và htonl : chuyển từ dạng lưu trữ của máy sang Network

– ntohs và ntohl : chuyển từ dạng lưu trữ của Network sang dạng

lưu trữ của máy.

Trang 34

Lập trình mạng – Chương 2 67

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket

– Hàm socket() để tạo mới một socket

Hàm này tạo một socket, kết quả trả về là một số

nguyên nhận dạng (socket descriptor), nếu có lỗi

giá trị trả về là -1 Các thông số :

• family: họ socket

• type: kiểu socket (stream hay datagram)

• protocol: giao thức, thường đặt bằng 0

Lập trình mạng – Chương 2 68

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm bind() để đăng ký với hệ thống

Đăng ký socket đã khởi tạo với địa chỉ socket

local Trả về 0 nếu thành công, -1 nếu thất bại

Các thông số :

• sockfd: mô tả socket đã tạo bởi hàm socket()

• localaddr:con trỏ chỉ đến địa chỉ socket của local

• localaddrlen: chiều dài của địa chỉ socket

Trang 35

Lập trình mạng – Chương 2 69

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm connect() để kết nối đến server

Dùng cho chương trình client thiết lập kết nối đến

server Trả về 0 nếu thành công, -1 nếu thất bại

Các thông số :

• sockfd: mô tả socket đã tạo bởi hàm socket()

• serveraddr:con trỏ địa chỉ socket của server

• serveraddrlen: chiều dài của địa chỉ socket server

Lập trình mạng – Chương 2 70

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm listen() để kết nối đến server

Hàm này dùng cho chương trình server

connection-oriented để đặt socket ở trạng thái chờ,

lắng nghe kết nối từ phía client Trả về 0 nếu thành

công, -1 nếu thất bại Các thông số:

• sockfd: mô tả socket đã tạo bởi hàm socket()

• backlog: số request có thể queued.

Trang 36

Lập trình mạng – Chương 2 71

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm accept() : chấp nhận kết nối từ client đến.

Chấp nhận kết nối từ client, tạo socket mới Giá trị

là một socket descriptor của socket mới Các

thông số :

• sockfd: mô tả socket đã tạo bởi hàm socket()

• clientaddr:con trỏ địa chỉ socket của client kết nối đến.

• clientaddrlen: chiều dài của clientaddr

Lập trình mạng – Chương 2 72

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm read() để đọc dữ liệu từ socket

int read(int sockfd, const void *buf, int len);

Đọc dữ liệu từ connection vào bộ nhớ Trả về số

bytes đọc được nếu thành công, trả về 0 nếu

không có dữ liệu, trả về -1 nếu thất bại Các thông

số :

• sockfd: mô tả socket đã tạo bởi hàm socket()

• buf: con trỏ đến bộ đệm để lưu thông tin đọc được

• len: chiều dài của bộ đệm

Trang 37

Lập trình mạng – Chương 2 73

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm write() để ghi dữ liệu

Ghi dữ liệu từ bộ nhớ lên connection Trả về số

bytes ghi được nếu thành công, trả về -1 nếu thất

bại Các thông số :

• sockfd: mô tả socket đã tạo bởi hàm socket()

• buf: con trỏ đến bộ đệm để lưu thông tin đọc được

• len: chiều dài của bộ đệm

Lập trình mạng – Chương 2 74

2.1 Giao tiếp socket (tt)

• Các hàm dùng cho lập trình socket (tt)

– Hàm sendto() để gởi dữ liệu

toaddrlen);

Gởi dữ liệu đến một địa chỉ socket từ xa Trả về

số bytes gởi được nếu thành công, trả về -1 nếu

Ngày đăng: 18/10/2015, 23:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w