1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề Lập trình mạng và internet pdf

122 1,4K 4

Đ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 122
Dung lượng 1,29 MB

Nội dung

Các giao thức mạng• Transmission Control Protocol/Internet Protocol TCP/IP • Asynchronous Transfer Mode ATM • NetWare Internetwork Packet Exchange/Sequenced Packet Exchange IPX/SPX •

Trang 1

Chuyên đề

Lập trình mạng và internet

30 tiết lý thuyết

maianhthuvn@gmail.com

Trang 2

Học lập trình mạng để làm gì?

• Có được sự hiểu biết để quản trị các dịch vụ có sẳn trên mạng tốt hơn.

• Có kiến thức để có thể lập được các tiện ích

khai thác tài nguyên trên mạng internet

• Bước đầu lập được các ứng dụng server và

client phục vụ cho một mục đích riêng nào đó.

Trang 3

Nội dung

• Chương 1: Nhắc lại một số khái niệm

• Chương 2: Liên lạc dữ liệu bằng NetBIOS

• Chương 3: Liên lạc dữ liệu bằng Pipe

• Chương 4: Liên lạc dữ liệu bằng Socket

• Chương 5: Lập trình socket với NET

• Chương 6: Một số bài tập ứng dụng

Trang 5

Chương 1

Nhắc lại một số khái niệm

Trang 6

Mô hình 7 lớp OSI

(Open Systems Interconnection)

Trang 7

Các giao thức mạng

• Transmission Control Protocol/Internet Protocol (TCP/IP)

• Asynchronous Transfer Mode (ATM)

• NetWare Internetwork Packet Exchange/Sequenced

Packet Exchange (IPX/SPX)

• NetBIOS Enhanced User Interface (NetBEUI)

• AppleTalk

• Data Link Control (DLC)

• Infrared Data Association (IrDA)

Các giao thức (protocols) định hình các gói được chuẩn

hoá (standardized packets) của dữ liệu mà chúng được

lập đúng cho việc chia sẻ thông tin trên mạng.

Trang 8

Giao thức TCP/IP ánh xạ thành mô hình 4 lớp kiểu như mô hình

DARPA Bốn lớp của mô hình DARPA là: Application, Transport,

Internet, và Network Interface Mỗi lớp trong mô hình DARPA tương ứng với một hoặc một vài lớp trong mô hình 7 lớp OSI.

Kiến trúc lớp trong TCP/IP

Trang 9

Lớp giao tiếp mạng (Network Interface Layer)

• Lớp Network Interface (còn gọi là lớp Network Access) chịu trách

nhiệm đặt các gói TCP/IP trên phần trung gian của mạng và nhận các gói TCP/IP cuối phần trung gian của mạng

• TCP/IP được thiết kế độc lập với phương pháp truy xuất, dạng khung (frame format) và phần trung gian Theo cách này, TCP/IP có thể được

sủ dụng để kết nối với các kiểu mạng khác nhau Chúng bao gồm các công nhệ LAN như Ethernet, Token Ring và các công nghệ WAN như X.25, Frame Relay.

• Sự độc lập với mọi công nghệ mạng làm cho TCP/IP có thể thích nghi với các công nghệ mới như ATM (Asynchronous Transfer Mode )

• Lớp Network Interface đối sánh với các lớp Data Link và lớp Physical của mô hình OSI

Các lớp trong kiến trúc TCP/IP

Trang 10

Lớp internet (Internet Layer)

• Internet Protocol (IP) là một giao thức con có nhiệm vụ địa chỉ hoá IP,

chọn đường, phân mảnh và tụ hội lại các gói.

• Address Resolution Protocol (ARP) có nhiệm vụ phân giải địa chỉ

Internet đến lớp Network Interface như là địa chỉ phần cứng

• Internet Control Message Protocol (ICMP) có nhiệm vụ cung cấp các

chức năng dò tìm lỗi và lập các báo cáo lỗi cho các thao tác nhận gói IP không thành công.

• Internet Group Management Protocol (IGMP) có nhiệm vụ quản lý các

nhóm IP multicast

• Lớp Internet là tương tự như lớp Network của mô hình OSI.

Các lớp trong kiến trúc TCP/IP (tiếp)

Trang 11

Lớp truyền (Transport Layer)

• Lớp Transport (được hiểu như là lớp Host-to-Host Transport) có nhiệm

vụ cung cấp cho lớp Application các phiên và các dịch vụ liên lạc

datagram Cốt lõi của lớp Transport là Transmission Control Protocol

(TCP) và User Datagram Protocol (UDP).

- TCP cung cấp kết nối one-to-one, connection-oriented, dịch vụ liên lạc đảm bảo TCP chịu trách nhiệm về việc thiết lập một kết nối TCP, tuần tự và đáp ứng việc đẩy các gói và hồi phục các gói bị mất trong quá trình chuyển

- UDP cung cấp các kết nối one-to-one hoặc one-to-many, không cần kết nối, các dịch vụ liên lạc không đảm bảo UDP được sử dụng kho khối lượng dữ liệu chuyển quá nhỏ (chẳng hạn như dữ liệu được cắt thành các gói đơn), khi sự kết nối TCP là không được mong muốn hoặc các ứng dụng hoặc các giao thức của lớp trên cung cấp sự giao nhận là được đảm bảo.

• Lớp Transport tương ứng với lớp Transport và một vài chức năng trong lớp Session của mô hình OSI.

Các lớp trong kiến trúc TCP/IP (tiếp)

Trang 12

Application Layer

• Hypertext Transfer Protocol (HTTP) được dùng để chuyển các file được thiết lập

như là các trang Web của World Wide Web

• File Transfer Protocol (FTP) được sử dụng như là công cụ chuyển file

• Simple Mail Transfer Protocol (SMTP) được sử dụng cho việc chuyển các thông

địep thư diên tử và các tư liệu kèm (mail messages and attachments)

• Telnet, là một giao thức trạm cuối, được sử dụng để đăng nhập theo dạng từ xa

• Routing Information Protocol (RIP) là một giao thức chọn đường trong đó các

router dùng để hoán chuyển sự chọn đường thông tin trên một mạng internet IP.

• Simple Network Management Protocol (SNMP) được sử dụng giữa màn hình

quản trị mạng và các thiết bị mạng (routers, bridges, intelligent hubs) để tập hợp và chuyển đổi thông tin quản trị mạng.

Các lớp trong kiến trúc TCP/IP (tiếp)

Trang 13

Truyền dữ liệu trên các lớp

TCP/IP

Trang 14

• Địa chỉ IP là số nguyên 32 bit phân thành các phần định danh lớp (class id), việc định danh mạng (network id) và định danh máy (host id)

• Định danh lớp (class id) trong địa chỉ IP xác định có bao nhiêu bit trong đc IP dành cho network id và dành cho host ip

Địa chỉ IP

Trang 15

Địa chỉ IP (tiếp)

Lớp A

Lớp B

Lớp C

Trang 16

Địa chỉ IP (tiếp)

Dạng biểu diễn địa chỉ IP

Trang 17

Liên lạc dữ liệu giữa các máy tính

- NetBIOS

- Pipe

- Socket

Trang 18

Chương 2

Liên lạc dữ liệu bằng

NetBIOS

Trang 19

NetBIOS là gì ?

• NetBIOS (Network Basic Input/Output System) là một chương trình cho phép các ứng dụng trong các máy tính khác nhau liên lạc bên trong một mạng cục bô (LAN) Nó được phát triển bởi IBM.

• NetBIOS được dùng trong các mạng Ethernet và Token Ring và coi như là một phần của NetBIOS Extended User Interface (NetBEUI), trong hệ điều hành Microsoft Windows

• NetBIOS cung cấp các dịch vụ session và transport được mô tả

trong mô hình OSI Nó không cung cấp khung chuẩn (standard

frame) hoặc định dạng dữ liệu (data format) cho việc truyền mà khung chuẩn được cung cấp bởi NetBUI.

• NetBIOS cung cấp 2 kiểu liên lạc là session và datagram Session:

là kiểu liên lạc giữa 2 máy tính thông qua thủ tục kết nối, nó cho

phép truyền được các messages kích thướclớn, xác định lỗi và sử lỗi.

• Datagram là kiểu liên lạc không cần thủ tục kết nối (connectionless) messages nhỏ, và nó hỗ trợ kiểu truyên quảng bá (broadcast) một message đến mỗi máy tính trên mạng LAN.

Trang 20

Tổ chức thực hiện lệnh của NetBIOS

Máy tính 1

Máy tính 2

Trang 21

• Tên (name):

Tên là định danh logic cho một trạm trên mạng

Độ dài tên không quá 16 ký tự.

• Lệnh (command):

Lệnh là số nguyên 1 byte xác định chức năng của một thao tác mạng.

• Các phiên giao dịch (session):

Là một logic kết nối trong kiểu liên lạc session

• Datagrams:

Làm một cách thức liên lạc khác kiểu session

Các khái niệm

Trang 22

NCB (network control block)

NCB_COMMAND 1 byte ; Mã lệnh

NCB_RETCODE 1 byte ; Mã kết quả trả lại (sau khi thực hiện lệnh) NCB_LSN 1 byte ; Chỉ số Local session

NCB_NUM 1 byte ; Chỉ số tên (Name number)

NCB_BUFFER 4 byte ; Địa chỉ bộ đếm dữ liệu D (segment:offset) NCB_LENGTH 2 byte ; độ dài bộ đệm dữ liệu D

NCB_CALLNAME 16 byte ; Tên máy tính từ xa (remote adapter)

NCB_NAME 16 byte ; Tên máy tính cục bộ (local adapter)

NCB_RTO 1 byte ;Timeout cho các lệnh nhận (receive)

NCB_STO 1 byte ;Timeout cho các lệnh đẩy (send).

NCB_POST 4 byte ;Con trỏ đến post routine (segment:offset) NCB_LANA_NUM 1 byte ;Chỉ số adapter được sử dụng

NCB_CMD_CPLT 1 byte ;Nếu lệnh lỗi, nó là 0FFH.

NCB_RESERVE 1 byte 14 DUP(?) ;Dự trữ

Là khối bộ nhớ 64 byte được chia thành các field như sau:

Trang 23

Cách thực một hiện lệnh

1 Điền các field cần thiết ứng với lệnh cần thực hiện vào NCB Các field không cần điền nên lấp đầy các byte 0.

2 Đặt dữ liệu cần chuyển vào bộ đệm dữ liệu (nếu lệnh cần thực hiện

là các lệnh đẩy như SEND…)

3 Đặt điạ chỉ của NCB vào hai thanh ghi ES:BX.

4 Thực hiện lệnh: Gọi thực hiện lệnh ngắt (CPU) INT 5CH.

5 Đợi cho đến khi lệnh hoàn thành, không đươc thay đổi gì trong NCB

6 Khi lệnh hoàn thành, NetBIOS sẽ đặt mã kết quả vào NCB tại field NCB_RETCODE) và có thể một vài field khác Nếu là lệnh nhận dữ liệu (RECEIVE) thì dữ liệu nhận được sẽ được NetBIOS đặt vào bộ đệm dữ liệu.

Trang 24

NCB_POST = Địa chỉ cho post routine (nếu dùng lệnh dạng dị bộ).

NCB_LANA_NUM = Adapter number (0)

Fields Returned:

NCB_RETCODE = Final return code

NCB_NUM = Name number

Final Return Codes:

00H = Good return

03H = Invalid command

0DH = Duplicate name in local name table

0EH = Name table is full

15H = First byte of NCB_NAME is "*" or 00H

16H = Name in use on remote station

19H = Name conflict detected

21H = Interface busy

22H = Too many commands outstanding

Trang 25

Một số lệnh về tên (tiếp)

Bỏ một tên (DELETE NAME)

Fields Required:

NCB_COMMAND = 31H (Wait form) or 0B1H (No-wait form)

NCB_NAME = 16-character name to be removed from the name table

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

Final return code:

00H = Good return

03H = Invalid command

0FH = Name has active sessions and is now de-registered

15H = First byte of NCB_NAME is "*" or 00H

Trang 26

Liên lạc kiểu session

Trang 27

Các lệnh cho session

6.2 LISTEN : Đặt server vào trạng thái chờ kết nối

Fields Required:

NCB_COMMAND = 11H (Wait form) or 91H (No-wait form)

NCB_CALLNAME = 16-character name that you are listening for

If the first byte is "*", then listen for a CALL from any name

NCB_NAME = 16-character local name to use

NCB_RTO = Timeout for all RECEIVE and CHAIN RECEIVE commands for this

session, in units of 500 milliseconds A value of 00H means that there is no timeout

NCB_STO = Timeout for all SEND, CHAIN SEND, and INCOMPLETE SEND commands

for this session, in units of 500 milliseconds A value of 00H means that there is no timeout.NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

NCB_LSN = Local session number for this session

NCB_CALLNAME = 16-character name that issued the CALL

Final Return Codes:

Trang 28

Các lệnh cho session (tiếp)

CALL: Gửi một yêu cầu kết nối

Fields Required:

NCB_COMMAND = 10H (Wait form) or 90H (No-wait form)

NCB_CALLNAME = 16-character name that you are calling

NCB_NAME = 16-character local name to use

NCB_RTO = Timeout for all RECEIVE and CHAIN RECEIVE commands for this session, in units of 500 milliseconds A value of 00H means that there is no timeout

NCB_STO = Timeout for all SEND, CHAIN SEND, and INCOMPLETE SEND commands for this

session, in units of 500 milliseconds A value of 00H means that there is no timeout

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

NCB_LSN = Local session number for this session

Final return code:

00H = Good return

03H = Invalid command

05H = Command timed out (called name did not respond in time)

Trang 29

Các lệnh cho session (tiếp)

SEND: Đây dữ liệu đến máy từ xa

Fields Required:

NCB_COMMAND = 14H (Wait form) or 94H (No-wait form)

NCB_LSN = Local session number

NCB_BUFFER = Address of data buffer

NCB_LENGTH = Length of data buffer

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

Final Return Codes:

Trang 30

Các lệnh cho session (tiếp)

RECEIVE: Nhận dữ liệu do lệnh SEND chuyển đến

Fields Required:

NCB_COMMAND = 15H (Wait form) or 95H (No-wait form)

NCB_LSN = Local session number

NCB_BUFFER = Address of data buffer

NCB_LENGTH = Length of data buffer

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

NCB_LENGTH = Number of data bytes that were placed into the buffer

Final Return Codes:

Trang 31

Các lệnh cho session (tiếp)

HANG UP: Cắt kết nối, đóng session

Fields Required:

NCB_COMMAND = 12H (Wait form) or 92H (No-wait form)

NCB_LSN = Local session number

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

Final Return Codes:

Xem souce code ví dụ áp dụng liên lạc kiểu session

Trang 32

Liên lạc kiểu datagram

ADD NAME

SEND DATAGRAM SEND_BCST_DATAGRAM_WAIT

DELETE NAME

ADD NAME

RECEIVE DATAGRAM RECEIVE_BCST_DATAGRAM_WAIT

DELETE NAME

Trang 33

Lệnh đẩy, nhận cho kiểu datagram

7.1 SEND DATAGRAM

Fields Required:

NCB_COMMAND = 20H (Wait form) or 0A0H (No-wait form)

NCB_NUM = Name number of the local name that is sending the datagram

NCB_BUFFER = Address of data buffer

NCB_LENGTH = Length of data buffer

NCB_CALLNAME = Name to which datagram is to be sent

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

Final Return Codes:

00H = Good return

01H = Illegal buffer length (NCB_LENGTH greater than 512)

Trang 34

Lệnh đẩy, nhận cho kiểu datagram (tiếp)

SEND BROADCAST DATAGRAM

Fields Required:

NCB_COMMAND = 22H (Wait form) or 0A2H (No-wait form)

NCB_NUM = Name number of the local name that is sending the datagram

NCB_BUFFER = Address of data buffer

NCB_LENGTH = Length of data buffer

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

Final Return Codes:

00H = Good return

01H = Illegal buffer length (NCB_LENGTH greater than 512)

Trang 35

Lệnh đẩy, nhận cho kiểu datagram (tiếp)

7.3 RECEIVE DATAGRAM

Fields Required:

NCB_COMMAND = 21H (Wait form) or 0A1H (No-wait form)

NCB_NUM = Name number of the name for which you want to receive a datagram If this field equals 0FFH, then receive a datagram for any of your names

NCB_BUFFER = Address of data buffer

NCB_LENGTH = Length of data buffer

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

NCB_NUM = Name number of name for which datagram was received

NCB_LENGTH = Number of data bytes that were placed into the buffer

NCB_CALLNAME = Name that sent the datagram

Final Return Codes:

00H = Good return

03H = Invalid command

06H = Message incomplete

Trang 36

Lệnh đẩy, nhận cho kiểu datagram (tiếp)

RECEIVE BROADCAST DATAGRAM

Fields Required:

NCB_COMMAND = 23H (Wait form) or 0A3H (No-wait form)

NCB_NUM = Name number of the name for which you want to receive a broadcast datagram

If this field equals 0FFH, then receive a broadcast datagram for any of your names

NCB_BUFFER = Address of data buffer

NCB_LENGTH = Length of data buffer

NCB_POST = Address of post routine (if no-wait command form is used)

NCB_LANA_NUM = Adapter number

Fields Returned:

NCB_RETCODE = Final return code

NCB_LENGTH = Number of data bytes that were placed into the buffer

NCB_CALLNAME = Name that sent the broadcast datagram

Final Return Codes:

Trang 37

Chương 3

Liên lạc dữ liệu bằng

kỹ thuật Pipe

Trang 38

Pipe là gì?

• Pipe là một bộ đệm dữ liệu được thực hiện trong bộ nhớ bởi hệ thống, nó

được sử dụng như là chuyển dòng dữ liệu liên tục giữa các tiến trình hoặc giữa các máy tính.

• Các Pipe làm việc như là các file giả Do đó, một số hàm I/O API về file có thể

áp dụng (tất nhiên không phải là tất cả)

• Có 2 kiểu pipe: anonymous và named pipes

- Anonymous pipes : kiểu unidirectional, được sử dụng để liên lạc giữa các

tiến trình

- Named pipes: có thể là bi directional và thường được sử dụng để liên lạc

giữa các trạm trên mạng.

Trang 39

Lược đồ hoạt động kiểu named pipe

Trang 40

Các hàm API cho trong kiểu

Named pipe

Ngày đăng: 05/08/2014, 19:22

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w