Khái niệm Socket
• Socket :
–Là môi trườngđểcác process ứng dụng giao
tiếpvớ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ạoravàsửdụng tuy nhiên
đượchệthống (hệđiều hành) kiểm soá
144 trang |
Chia sẻ: maiphuongdc | Lượt xem: 3301 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình mạng - Giới thiệu về TCP/IP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ress (e.g.)maskclass
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 40
Finding the Subnetwork Address
• Apply the mask to the IP address
• Boundary-Level Masking
– If the masking is at the boundary level (the
mask numbers are either 255 or 0), finding the
subnetwork address is very easy. Follow these
two rules:
1.The bytes in the IP address that correspond to 255 in the mask will be
repeated in the subnetwork address
2.The bytes in the IP address that correspond to 0 in the mask will
change to 0 in the subnetwork address.
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 41
Finding the Subnetwork Address
Boundary-Level Masking example
IP address 45 . 23 . 21 . 8
Mask 255 . 255 . 0 . 0
---------------------------------------------------------
Subnetwork address 45 . 23 . 0 . 0
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 42
Finding the Subnetwork Address
• Nonboundary-level Masking
– If the masking is not at the boundary level
(the mask numbers are not just 255 or 0),
finding the subnetwork address involves using
the bit-wise operator. Follow these three
rules:
1. The bytes in the IP address that correspond to 255 in the
mask will be repeated in the subnetwork address
2. The bytes in the IP address that correspond to 0 in the
mask will change to 0 in the subnetwork address.
3. For other bytes, use the bit-wise AND operator.
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 43
Finding the Subnetwork Address
• Nonboundary-level masking example
IP address 45 . 123 . 21 . 8
Mask 255 . 192 . 0 . 0
--------------------------------------------------------
Subnetwork 45 . ? . 0 . 0
Address ? use bit-wise AND operator
123 0 1 1 1 1 0 1 1
192 1 1 0 0 0 0 0 0
-----------------------------------
0 1 0 0 0 0 0 0 = 64
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 44
Finding the Subnetwork Address
• Another nonboundary-level masking
example
IP address 213 . 23 . 47 . 37
Mask 255 . 255 . 255 . 240
--------------------------------------------------------
Subnetwork 213 . 23 . 47 . ?
Address ? use bit-wise AND operator
37 0 0 1 0 0 1 0 1
240 1 1 1 1 0 0 0 0
-----------------------------------
0 0 1 0 0 0 0 0 = 32
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 45
IP addressing: CIDR
• Classful addressing:
– inefficient use of address space, address space
exhaustion
– e.g., class B net allocated enough addresses for 65K
hosts, even if only 2K hosts in that network
• CIDR: Classless InterDomain Routing
– network portion of address of arbitrary length
– address format: a.b.c.d/x, where x is # bits in network
portion of address
11001000 00010111 00010000 00000000
network
part
host
part
200.23.16.0/23
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 46
IP addresses: how to get one?
Network (network portion):
• get allocated portion of ISP’s address space:
ISP's block 11001000 00010111 00010000 00000000 200.23.16.0/20
Organization 0 11001000 00010111 00010000 00000000 200.23.16.0/23
Organization 1 11001000 00010111 00010010 00000000 200.23.18.0/23
Organization 2 11001000 00010111 00010100 00000000 200.23.20.0/23
... ….. …. ….
Organization 7 11001000 00010111 00011110 00000000 200.23.30.0/23
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 47
Các giao thức khác trong lớp network
• ARP (Address Resolution Protocol)
• RARP (Reverse Address Resolution
Protocol)
• ICMP (Internet Control Message Protocol)
• IGMP (Internet Group Message Protocol)
More references:
TCP/IP Protocol Suite, 2/e, Behrouz A. Forouzan,
DeAnza College
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 48
ARP và RARP
Vấn đề phân giải địa chỉ
• Hai giao thức dùng để phân giải địa chỉ là
ARP (Address Resolution Protocol) và
RARP (Reverse ARP)
– ARP dùng phân giải địa chỉ IP 32 bits sang địa
chỉ Ethernet 48 bits
– RARP dùng phân giải địa chỉ Ethernet 48 bits
sang địa chỉ IP 32 bits
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 49
ARP và RARP
• Địa chỉ mạng (lớp Internet) và địa chỉ MAC
(lớp Network Interface) cần có sự chuyển
đổi qua lại:
– Lớp Internet gởi dữ liệu cho lớp Network
Interface, chỉ cung cấp địa chỉ IP của máy nhận
– Lớp Network Interface cần địa chỉ MAC của
máy nhận để truyền thông tin
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 50
ARP và RARP
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 51
Position of ARP and RARP
in TCP/IP protocol suite
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 52
ARP
©The McGraw-Hill Companies, Inc., 001
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 53
ARP
• Là giao thức được dùng để hỏi địa chỉ vật lý
một máy khi đã biết địa chỉ IP
• Cần cho lớp Network Interface để đóng gói
một Ethernet Frame
• Khi cần địa chỉ vật lý, máy sẽ broadcast
trên mạng để hỏi địa chỉ vật lý tương ứng
với địa chỉ IP, máy có địa chỉ IP tương ứng
sẽ reply thông tin
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 54
Các thành phần chính trong ARP
• ARP table: bảng thông tin được lưu trữ
trong bộ nhớ, nếu không tìm được thông tin
trong bảng này thì phần tử gởi sẽ broadcast
ARP request để hỏi thông tin
• ARP request: gởi broadcast để hỏi địa chỉ
vật lý
• ARP reply: gởi lại máy hỏi thông tin địa chỉ
IP của máy mình
• ARP reply caching: lưu thông tin vào ARP
table trong một khoảng thời gian (5 phút)
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 55
Phân giải ngược địa chỉ RARP
• Dùng cho việc liên kết giữa lớp Network
Interface và lớp Internet
• Sử dụng khi máy biết địa chỉ Ethernet
nhưng không biết địa chỉ IP. Thường dùng
trong các trường hợp:
– Các hệ thống diskless
– Các hệ thống JumpStartTM
• Kèm với các giao thức DHCP, BOOTP
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 56
RARP
operation
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 57
RARP packet
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 58
Lớp transport
• Có hai dạng dịch vụ:
– TCP (Transmission
Control Protocol)
– UDP (User Datagram
Protocol)
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
data link
physical
l o g i c a l e n d - e n d t r a n s p o r t
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 59
Lớp transport
• Cung cấp sự truyền nhận luận lý giữa các
process ứng dụng giữa các máy trong
mạng
• Các giao thức lớp transport hoạt động ở
các hệ thống đầu cuối
• Lớp transport so với lớp network:
– network layer: dữ liệu truyền nhận giữa các hệ thống
– transport layer: dữ liệu được truyền nhận giữa các
processes, dựa trên các dịch vụ của lớp network và mở
rộng một số chức năng
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 60
Lớp Transport
• Lớp TCP/IP transport cung cấp cơ chế cho
source process gởi dữ liệu destination
process qua mạng
• Định nghĩa một tập các kết nối mức khái
niệm cho các processes gọi là protocol
ports. Một protocol port là một điểm đích
(buffer) dùng để lưu dữ liệu cho một
process cụ thể
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 61
Transport layer
• Việc quản lý giao tiếp giữa các processes và các
ports tương ứng được hệ điều hành cung cấp
• Các protocol lớp transport là port-to-port
protocols, truyền dữ liệu giữa process gởi đên
process nhận
• Mỗi port được xác định bằng một số nguyên
dương 16 bits nhị phân
– 65,536 (0 to 65535) ports
– Port 0?
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 62
Lớp Transport
• Mở rộng cách
đánh địa chỉ cho
process.
– Địa chỉ port : xác
định ứng dụng
mạng trên mỗi
máy.
– Địa chỉ của một
ứng dụng mạng
(IP,port)
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 63
Port Addresses
McGraw-Hill ©The McGraw-Hill Companies, Inc., 2000
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 64
Transport-layer protocols
Internet transport services:
• reliable, in-order unicast delivery (TCP)
– congestion
– flow control
– connection setup
• unreliable (“best-effort”), unordered unicast or
multicast delivery: UDP
• services not available:
– real-time
– bandwidth guarantees
– reliable multicast
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 65
User Datagram Protocol (UDP)
• User datagram protocol (UDP) là protocol đơn
giản trong hai protocol ở lớp transport
• Chỉ thêm thông tin về các địa chỉ port, điều khiển
lỗi checksum và độ dài thông tin length
information
• UDP chỉ cung cấp các chức năng cơ bản cho cơ
chế truyền end-to-end, không cung cấp các chức
năng xử lý lỗi và truyền lại dữ liệu bị hỏng hoặc
mất.
• Có cơ chế báo lỗi nếu kèm với giao thức ICMP
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 66
UDP Datagram Format
McGraw-Hill ©The McGraw-Hill Companies, Inc., 2000
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 67
Transmission Control Protocol (TCP)
• Cung cấp các dịch vụ đầy đủ cho các ứng dụng
• Là giao thức port-to-port tin cậy, connection-
oriented: kết nối phải được thiết lập trước khi dữ
liệu được truyền
• Khi thiết lập kết nối, TCP tạo một mạch ảo (virtual
circuit ) giữa bên gởi và bên nhận trong suốt quá
trình truyền nhận
• Có sự thông báo khi truyền dữ liệu đến phần tử
nhận. Sau khi kết thúc việc truyền nhận thì đóng
kết nối
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 68
TCP
• IP và UDP xem các datagrams trong một single
transmission là các đơn vị hoàn toàn độc lập,
không liên quan với nhau. Mỗi datagram đến
phần tử nhận cũng là các đơn vị phân biệt, và
không có sự thông báo cho phần tử nhận
• Khác với IP và UDP, TCP là dịch vụ connection-
oriented, cung cấp cơ chế truyền tin cậy cho toàn
bộ stream chứa trong message mà ứng dụng gởi
đi
• Cơ chế truyền tin cậy đảm bảo bằng việc cung
cấp việc phát hiện lỗi và truyền lại những dữ liệu
hỏng
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 69
TCP
• Khi truyền dữ liệu, TCP chia dữ liệu thành các
đơn vị nhỏ hơn gọi là segment.
• Tất các các segment phải được nhận đủ và phản
hồi (acknowledge) trước khi sự truyền nhận hoàn
thành và mạch ảo được hủy
• Mỗi segment có một số tuần tự (sequencing
number) để sắp xếp lại sau khi nhận kết hợp với
ACK ID number và field window-size cho cửa sổ
dịch (sliding window)
• Các segments TCP truyền trên mạng được chứac
trong các IP datagrams. Ở phần tử nhận, TCP
nhận mỗi datagram theo thứ tự đến và dựa vào
số tuần tự để sắp xếp lại
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 70
TCP segment format
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 71
TCP segment format (cont.)
• Sequence number. Shows the position of the
data in the original data stream (application data)
• Acknowledgment number. Used to
acknowledge the receipt of data
• Control. 6 bits of control define the use of
segment or server validity check for others fields
– URG: urgent,
– ACK: acknowledgment
– PSH: need higher throughput,
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 72
TCP segment format (cont.)
• Control (cont.)
– RST: reset,
– SYN: used for sequence number synchronization
(connection request, connection confirmation-with ACK
set, confirmation acknowledgement-with ACK set)
– FIN: used in termination confirmation
• Window size. Defines the sliding window
• Checksum. Used for error detection
• Urgent Pointer. Valid if URG is set. Define the
end of urgent data and the start of normal data
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 73
Lớp ứng dụng
Comparison between OSI and TCP/IP
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 74
Lớp ứng dụng
• Định nghĩa các giao thức cho các ứng dụng
mạng
• Nhìn ở góc độ hệ điều hành, ứng dụng
được hiểu như là các processes. Các giao
thức lớp ứng dụng phải định nghĩa cách
thức giao tiếp giữa các processes qua các
vấn đề:
– Định dạng của message
– Thứ tự của các message trao đổi
– Các công việc phải thực thi khi một process
nhận hay truyền dữ liệu
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 75
Lớp ứng dụng
• Các ứng dụng mạng hoạt động theo mô
hình client/server
– Server : là phần tử thụ động
• Chờ yêu cầu từ client, xử lý và trả kết quả cho client
– Client : là phần tử chủ động
• Kết nối đến server để gởi yêu cầu.
• Chờ nhận kết quả trả về và xử lý kết quả.
• Vấn đề quan trọng khi lập trình các ứng
dụng mạng là định nghĩa giao thức giữa
client và server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 76
Lớp ứng dụng
• User agent là giao tiếp giữa người sử dụng và
ứng dụng mạng.Mỗi ứng dụng mạng client phải
có hiện thực việc giao tiếp giữa user và chương
trình mạng
– Web:browser
– E-mail: mail reader
– streaming audio/video: media player
• Khái niệm stateful và stateless
– Stateful : lưu giữ trạng thái giữa các lần kết nối
(request/response).
– 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
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 77
Mô hình client-server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 78
Quan hệ giữa client và server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 79
Các loại server
Concurrent: xử lý đồng thời, cơ chế xử lý nhiều
processes trên một hệ thống chỉ có một CPU
≠ Parallel
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 80
Connectionless iterative server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 81
Connection-oriented concurrent server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 82
Programs và Processes
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 83
Server với cơ chế multi-process
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 84
Khái niệm Socket
• Socket: “cửa” nằm giữa process ứng dụng và end-end-
transport protocol (UDP hoặc TCP)
• TCP service: dịch vụ truyền tin cậy chuỗi bytes giữa hai
process
process
TCP with
buffers,
variables
socket
controlled by
application
developer
controlled by
operating
system
host or
server
process
TCP with
buffers,
variables
socket
controlled by
application
developer
controlled by
operating
system
host or
server
internet
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 85
Khái niệm Socket
• 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
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 86
Khái niệm 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ỏ
– Dùng cơ chế client/server
– Cung cấp hai dịch vụ chuyển dữ liệu thông qua
socket API:
• unreliable datagram
• reliable, byte stream-oriented
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 87
Các loại socket
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 88
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 và kết nối đến
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 89
Lập trình socket với TCP
• 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.
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 90
Lập trình socket với TCP
wait for incoming
connection request
connectionSocket =
welcomeSocket.accept()
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
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
clientSocketread request from
connectionSocket
write reply to
connectionSocket
TCP
connection setup
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 91
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Create
input stream
Create
client socket,
connect to server
Create
output stream
attached to socket
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 92
Example: Java client (TCP), cont.
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
Create
input stream
attached to socket
Send line
to server
Read line
from server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 93
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
Create
welcoming socket
at port 6789
Wait, on welcoming
socket for contact
by client
Create input
stream, attached
to socket
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 94
Example: Java server (TCP), cont
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
Read in line
from socket
Create output
stream, attached
to socket
Write out line
to socket
End of while loop,
loop back and wait for
another client connection
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 95
Lập trình socket với UDP
• 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.
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 96
Lập trình socket với UTP
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
create socket,
port=x, for
incoming request:
serverSocket =
DatagramSocket()
read request from
serverSocket
write reply to
serverSocket
specifying client
host address,
port umber
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 97
Example: Java client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
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();
sendData = sentence.getBytes();
Create
input stream
Create
client socket
Translate
hostname to IP
address using DNS
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 98
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 data-to-send,
length, IP addr, port
Send datagram
to server
Read datagram
from server
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 99
Example: Java server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Create
datagram socket
at port 9876
Create space for
received datagram
Receive
datagram
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 100
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);
}
}
}
Get IP addr
port #, of
sender
Write out
datagram
to socket End of while loop,
loop back and wait for
another datagram
Create datagram
to send to client
Lập trình mạng – Chương 1
© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 101
Các giao thc và dch v
• Hệ thống tên miền DNS
• Hệ thống World
Các file đính kèm theo tài liệu này:
- ch01_1656.pdf