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 1Chuyên đề
Lập trình mạng và internet
30 tiết lý thuyết
maianhthuvn@gmail.com
Trang 2Họ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 3Nộ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 5Chương 1
Nhắc lại một số khái niệm
Trang 6Mô hình 7 lớp OSI
(Open Systems Interconnection)
Trang 7Cá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 8Giao 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 9Lớ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 10Lớ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 11Lớ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 12Application 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 13Truyề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 17Liên lạc dữ liệu giữa các máy tính
- NetBIOS
- Pipe
- Socket
Trang 18Chương 2
Liên lạc dữ liệu bằng
NetBIOS
Trang 19NetBIOS 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 20Tổ 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 22NCB (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 23Cá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 24NCB_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 25Mộ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 26Liên lạc kiểu session
Trang 27Cá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 28Cá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 29Cá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 30Cá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 31Cá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 32Liê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 33Lệ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 37Chương 3
Liên lạc dữ liệu bằng
kỹ thuật Pipe
Trang 38Pipe 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 39Lược đồ hoạt động kiểu named pipe
Trang 40Các hàm API cho trong kiểu
Named pipe