Bài giảng Lập trình mạng - Giới thiệu về TCP/IP

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á

pdf144 trang | Chia sẻ: maiphuongdc | Lượt xem: 3301 | Lượt tải: 1download
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:

  • pdfch01_1656.pdf
Tài liệu liên quan