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

giáo trình mạng máy tính

202 32 0

Đ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 202
Dung lượng 2,92 MB

Nội dung

Giáo trình: Mạng máy tính Chương Các khái niệm mạng giao thức mạng Mạng máy tính Mạng máy tính Là tập hợp máy tính thiết bị nối với đường truyền vật lý theo kiến trúc Chúng ta phân loại mạng theo qui mơ nó:  Mạng LAN (Local Area Network)-mạng cục bộ: kết nối nút phạm vi giới hạn Phạm vi cơng ty, hay tòa nhà  Mạng WAN (Wide Area Network): nhiều mạng LAN kết nối với tạo thành mạng WAN  MAN (Metropolitan Area Network), tương tự WAN, kết nối nhiều mạng LAN Tuy nhiên, mạng MAN có phạm vi thành phố hay đô thị nhỏ MAN sử dụng mạng tốc độ cao để kết nối mạng LAN trường học, phủ, cơng ty, , cách sử dụng liên kết nhanh tới điểm cáp quang Khi nói đến mạng máy tính, người ta thường đề cập tới mạng xương sống (backbone) Backbone mạng tốc độ cao kết nối mạng có tốc độ thấp Một công ty sử dụng mạng backbone để kết nối mạng LAN có tốc độ thấp Mạng backbone Internet xây dựng mạng tốc độ cao kết nối mạng tốc độ cao Nhà cung cấp Internet kết nối trực tiếp với mạng backbone Internet, nhà cung cấp lớn 1.1 Các đường kết nối mạng WAN Để kết nối tới mạng WAN, có số tùy chọn sau:  Khi khách hàng cụ thể yêu cầu sử dụng mạng với thông lượng xác định, sử dụng đường thuê bao (leased line)  Các đường chuyển mạch (switched lines) sử dụng dịch vụ điện thoại thông thường Một mạch thiết lập phía nhận phát khoảng thời gian thực gọi trao đổi liệu Khi khơng cần dùng đường truyền nữa, cần phải giải phóng đường truyền cho khách hàng khác sử dụng Các ví dụ đường chuyển mạch đường POTS , ISDN, DSL  Mạng chuyển mạch gói mạng mà nhà cung cấp dịch vụ cung cấp công nghệ chuyển mạch để giao tiếp với mạng xương sống Giải pháp cung cấp hiệu cao khả chia sẻ tài nguyên khách hàng Các giao thức sử dụng cho mạng chuyển mạch bao gồm X.25 (64Kbps), Frame Relay (44.736Mbps), ATM (9.953 Gbps) Kiến trúc mạng: Một vấn đề cần quan tâm mạng máy tính kiến trúc mạng Nó cập tới hai khía cạnh Hình trạng mạng Giao thức mạng  Hình trạng mạng: Là cách nối máy tính với Người ta phân loại mạng theo hình trạng mạng mạng sao, mạng bus, mạng ring…  Giao thức mạng: Là tập hợp qui tắc, qui ước truyền thông mạng mà tất thực thể tham gia truyền thông phải tuân theo 1.2 Giao thức Ethernet Để có hiểu biết tốt mạng vật lý hoạt động nào, xem xét số giao thức LAN phổ biến: giao thức Ethernet Chín mươi phần trăm thiết bị gắn với mạng LAN sử dụng giao thức Ethernet, ban đầu phát triển Xerox, Digital Equipement, Intel năm 1972 Ngày nay, Ethernet hỗ trợ đường truyền 100Mbps 1Gbps Rất nhiều cơng nghệ đường truyền sử dụng với Ethernet Người ta sử dụng số qui ước để đặt tên giao thức Enternet Tên tốc độ mạng Ethernet thuộc tính cơng nghệ đường truyền Các tên bắt đầu số để tốc độ truyền tối đa, từ sử dụng để xác định công nghệ truyền dẫn, cuối số để khoảng cách hai nút Ví dụ, 10Base2 ký hiệu Ethernet hoạt động với tốc độ 10Mbps sử dụng kỹ thuật truyền băng tần sở, với cáp có chiều dài tối đa 200m Một số cấu hình thơng dụng khác sau: Chuẩn Ethernet 10Base5 Tốc độ Kiểu cáp 10Mbps 10BaseT 10Mbps Cáp đồng trục Cáp đồng 100BaseTX 100Mbs Cáp đồng 1000BaseSX 1000Mbps Cáp đa chế độ Mô tả Đây chuẩn ban đầu cho Ethernet 10BaseT mạng 10Mbps với cáp xoắn 100Mbps công nghệ cáp xoắn khả truyền song công 1000Mbps với cáp sợi quang S :Short wavelength (850nm) Bảng 1.1  CSMA/CD (Carrier Sense Multiple Access/Collision Detect) Nhiều thiết bị kết nối vào mạng tất có quyền truy xuất đồng thời Khi thơng điệp gửi đi, truyền thơng qua mạng Phía nhận định danh địa nhất, có nút đọc thơng điệp, nút khác bỏ qua Một vấn đề đặt có nhiều nút cố gắng gửi thông điệp thời điểm, điều phá hỏng gói tin Giải pháp cho vấn đề nút mạng giám sát mạng phát mạng rảnh hay bận Một nút bắt đầu gửi liệu khơng có liệu gửi mạng trước CSMA phận CSMA/CD Tuy nhiên có khả hai nút, sau kiểm tra thấy mạng không bận, bắt đầu gửi gói tin thời điểm cáp mạng Điều gây lên xung đột hai gói tin, kết phá hỏng liệu Cả hai phía gửi nhận thức gói tin bị hỏng lắng nghe mạng gửi liệu, phát xung đột Đây CD (Collision Dection) CSMA/CD Cả hai nút dừng việc truyền liệu tức thời, chờ thời điểm định trước kiểm tra mạng trở lại để xem mạng có rỗi hay không truyền lại Mỗi nút mạng sử dụng địa MAC (Media Access Control) để định danh Địa định nghĩa thiết bị giao tiếp mạng Một gói tin gửi mạng, thiết bị mạng không nhận diện host host nhận, bỏ qua gói tin chuyển tiếp  Các giao thức khác IBM phát triển giao thức Token Ring (IEEE802.5), nút mạng kết nối theo vòng Với Ethernet, nút gửi thơng điệp khơng có gói tin mạng Với Token Ring nút có quyền truy xuất tới mạng theo thứ tự định trước Một token lưu chuyển vòng quanh vòng, nút lệnh có thẻ gửi thơng điệp Ngày nay, Ethernet thay dần mạng Token Ring mạng tốn khó cài đặt AppleTalk giao thức mạng LAN phát triển Apple tương đối phổ biến trường học, nhà máy, ATM giao thức khác tìm thấy mạng LAN Nó hỗ trợ mạng tốc độ cao sử dụng kỹ thuật chuyển mạch có đảm bảo chất lượng dịch vụ 1.3 Các thành phần vật lý Một vấn đề quan trọng để biết mạng biết phần cứng Chúng ta xem xét thành phần chủ yếu mạng LAN sau: o Thiết bị giao tiếp mạng o Hub o Switch o Router  Thiết bị giao tiếp mạng (Network Interface Thiết bị) NIC thiết bị giao tiếp sử dụng để kết nối thiết bị với mạng LAN Nó cho phép gửi nhận thơng điệp từ mạng Một NIC có địa MAC mà cung cấp định danh cho thiết bị Địa MAC số 12 byte-hệ 16 gán cho thiết bị mạng Địa thay đổi trình điều khiển mạng cách linh hoạt (như trường hợp hệ thống DECnet, mạng phát triển Digital Equipment), thông thường địa MAC không thay đổi Ta tìm địa MAC máy sử dụng hệ điều hành Windows cách dùng tiện ích dòng lệnh ipconfig DOS với tham số switch Hình 1.1  Hub Nhiều thiết bị kết nối cách dễ dàng với giúp đỡ hub Hub thiết bị kết nối gắn nhiều thiết bị vào LAN Mỗi thiết bị thường kết nối thông qua cáp tới cổng hub Hub hoạt động chuyển tiếp Khi chuyển thơng điệp từ cổng tới cổng khác, chuyển tới mạng Hub thành phần tương đối đơn giản mạng, hoạt động tầng vật lý để truyền liệu mà không cần thao tác xử lý Điều làm cho hub dễ cài đặt quản lý, chúng khơng đòi hỏi cấu hình đặc biệt  Switch Các chuyển mạch (switch) phân chia mạng thành đoạn (segment) So với hub, switch thiết bị thông minh nhiều Switch lưu trữ địa MAC thiết bị kết nối tới cổng bảng lookup Các bảng lookup cho phép switch lọc thông điệp mạng không giống với hub, khơng chuyển tiếp thơng điệp tới cổng Điều loại bỏ xung đột xảy mạng đạt hiệu tốt Chức chuyển mạch thực cách sử dụng phần cứng  Router Router thiết bị trung gian mạng, kết nối nhiều mạng vật lý Một mạng có nhiều host phân chia thành phần riêng, hay gọi subnet Ưu điểm subnet là: a Hiệu cải thiện cách giảm broadcast, broadcast thông điệp gửi tới tất nút mạng b Khả hạn chế người dùng mạng xác định đưa ưu điểm bảo mật c Các subnet nhỏ dễ quản lý so với mạng lớn Các router khơng sử dụng LAN, chúng có vai trò quan trọng WAN Router nhận thơng điệp chuyển tiếp tới đích cách sử dụng đường tốt tới đích Một Router lưu giữ bảng định tuyến liệt kê tất cách mà mạng đạt tới Thơng thường có số đường từ mạng tới mạng khác, có số tốt nhất, đường mơ tả bảng định tuyến Các router truyền tin cách sử dụng giao thức định tuyến để phát router khác mạng, hỗ trợ cho việc trao đổi thông tin mạng gắn với định tuyến Thông tin mà định tuyến thu thập đường mạng gọi độ đo router, bao gồm thơng tin mát gói tin thời gian truyền tin Thông tin sử dụng để tạo độ đo tùy thuộc vào giao thức định tuyến: d Giao thức định tuyến vectơ khoảng cách e Các giao thức RIP(Routing Information Protocol) IGRP(Interior Gateway Routing Protocol) sử dụng biến đếm để số router mà gói tin phải qua để đến đích Các giao thức thường lựa chọn đường với router, mà khơng quan tâm đến tốc độ độ tin cậy f Các giao thức định tuyến trạng thái liên kết g Việc tính toán đường tốt giao thức định tuyến OSPF BGP quan tâm đến nhiều yếu tố tốc độ, độ tin cậy, chí chi phí đường h Các giao thức định tuyến lai i Các giao thức sử dụng kết hợp việc tính tốn trạng thái liên kết vectơ khoảng cách  Vấn đề tìm đường Với cấu hình TCP/IP, gateway mặc định thiết lập Đây địa IP cổng định tuyến mà subnet kết nối tới Bộ định tuyến sử dụng host bên subnet cần liên lạc Ta thấy bảng định tuyến cục hệ điều hành Windows cách sử dụng lệnh ROUTE PRINT dòng lệnh Lệnh hiển thị gateway sử dụng cho liên kết mạng Hình 1.2 Một lệnh hữu ích khác lệnh TRACERT Lệnh cho phép kiểm tra đường sử dụng để tới đích Hình 1.3 Mơ hình phân tầng ISO định nghĩa mơ hình cho mạng chuẩn hóa thay cho TCP/IP,DECNet giao thức khác giao thức mạng sử dụng cho Internet Tuy nhiên, phức tạp OSI, mơ hình khơng cài đặt sử dụng nhiều thực tế TCP/IP đơn giản nhiều tìm thấy nhiều nơi Nhưng có nhiều ý tưởng từ giao thức OSI tìm thấy phiên IP, IPv6 Trong giao thức OSI không xây dựng đầy đủ thực tế, mơ hình bảy tầng thành cơng sử dụng mơ hình tham chiếu để mô tả giao thức mạng khác chức chúng Các tầng mô hình OSI phân chia nhiệm vụ mà giao thức mạng phải thực hiện, mô tả ứng dụng mạng truyền tin Mỗi tầng có mục đích cụ thể kết nối với tầng Bảy tầng mơ hình OSI Hình 1.4  Tầng ứng dụng (Application): định nghĩa giao diện lập trình giao tiếp với mạng cho ứng dụng người dùng  Tầng trình diễn (Presentation): có trách nhiệm mã hóa liệu từ tầng ứng dụng để truyền mạng ngược lại  Tầng phiên (Session): tạo liên kết ảo ứng dụng  Tầng giao vận (Transport): cho phép truyền liệu với độ tin cậy cao  Tầng mạng (Network): cho phép truy xuất tới nút mạng LAN cách sử dụng địa logic  Tâng liên kết liệu (Data Link): truy xuất tới mạng vật lý địa vật lý  Cuối cùng, tầng vật lý (Physical): bao gồm thiết bị kết nối, cáp nối Bây tìm hiểu khái niệm tầng cách xem xét chức tầng chi tiết 2.1 Tầng 1:Tầng vật lý Tầng vật lý bao gồm môi trường vật lý yêu cầu cáp nối, thiết bị kết nối, đặc tả giao tiếp, hub repeater, 2.2 Tầng 2: Tầng liên kết liệu Địa MAC mà đề cập địa tầng Các nút LAN gửi thông điệp cho cách sử dụng địa IP, địa phải chuyển đổi sang địa MAC tương ứng Giao thức phân giải địa (ARP: Address Resolution Protocol) chuyển đổi địa IP thành địa MAC.Một vùng nhớ cache lưu trữ địa MAC tăng tốc độ xử lý này, kiểm tra tiện ích arp -a, 2.3 Tầng 3: Tầng mạng Tầng mạng tầng nằm phía tầng liên kết Trong tầng 3, địa logic sử dụng để kết nối tới nút khác Các địa MAC tầng sử dụng mạng LAN, phải sử dụng cách đánh địa tầng truy xuất tới nút mạng WAN Internet Protocol giao thức tầng 3; sử dụng địa IP để định danh nút mạng Các router tầng sử dụng để định đường mạng 2.4.Tầng 4:Tầng giao vận Tầng mạng định danh host địa logic Tầng ứng dụng nhận biết ứng dụng thông qua gọi điểm cuối (endpoint) Với giao thức TCP, endpoint nhận biết số hiệu cổng địa IP Tầng giao vận phân loại theo cách truyền tin với độ tin cậy hay không Truyền tin với độ tin cậy có lỗi tạo thơng điệp gửi không nhận cách đắn Trong truyền tin có độ tin cậy không cao không kiểm tra xem liệu thông điệp gửi nhận hay chưa Trong truyền tin với độ tin cậy, tầng giao vận có nhiệm vụ gửi gói tin xác thực hay thông điệp truyền lại liệu bị hỏng hay bị thất lạc, hay liệu bị trùng lặp Một cách khác để phân loại mạng truyền tin phân loại mạng theo hướng liên kết hay phi liên kết  Với truyền tin hướng liên kết, liên kết phải thiết lập trước thông điệp gửi nhận  Với truyền tin phi liên kết khơng cần giai đoạn thiết lập liên kết 2.5 Tầng 5: Tầng phiên Với mơ hình OSI, tầng phiên xác định cá dịch vụ cho ứng dụng, đăng nhập đăng xuất ứng dụng Tầng phiên biểu diễn liên kết ảo ứng dụng Liên kết tầng phiên độc lập với liên kết vật lý tầng giao vận, liên kết tầng giao vận yêu cầu cho liên kết tầng phiên 2.6.Tầng 6:Tầng trình diễn Tầng trình diễn sử dụng để định dạng liệu theo yêu cầu ứng dụng Mã hóa, giải mã, nén liệu thường diễn tầng 2.7 Tầng 7:Tầng ứng dụng Để gửi nhận DatagramPacket, bạn phải mở DatagramSocket Trong Java, datagram socket tạo truy xuất thông qua đối tượng DatagramSocket public class DatagramSocket extends Object Tất datagram gắn với cổng cục bộ, cổng sử dụng để lắng nghe datagram đến đặt header datagram gửi Nếu ta viết client khơng cần phải quan tâm đến số hiệu cổng cục DatagramSocket sử dụng để gửi nhận gói tin UDP Nó cung cấp phương thức để gửi nhận gói tin, xác định giá trị timeout sử dụng phương pháp vào không phong tỏa (non blocking I/O), kiểm tra sửa đổi kích thước tối đa gói tin UDP, đóng socket Các phương thức  void close(): đóng liên kết giải phóng khỏi cổng cục  void connect(InetAddress remote_address, int remote_port) InetAddress getInetAddress():phương thức trả địa remote mà socket kết nối tới, giá trị null không tồn liên kết  InetAddress getLocalAddress(): trả địa cục  Int getSoTimeOut() trả giá trị tùy chọn timeout socket Giá trị xác định thời gian mà thao tác đọc phong tỏa trước đưa ngoại lệ InterruptedException Ở chế độ mặc định, giá trị 0, vào không phong tỏa sử dụng  void receive(DatagramPacket dp) throws IOException:phương thức đọc gói tin UDP lưu nộ dung packet xác định  void send(DatagramSocket dp) throws IOException:phương thức gửi gói tin  void setSoTimeOut(int timeout): thiết lập giá trị tùy chọn socket Nhận gói tin Trước ứng dụng đọc gói tin UDP gửi máy xa, phải gán socket với cổng UDP cách sử dụng DatagramSocket, tạo DatagramPacket đóng vai trò chứa cho liệu gói tin UDP Hình vẽ mối quan hệ gói tin UDP với lớp Java khác sử dụng để xử lý ứng dụng thực tế packet Đọc gói tin DatagramSocket Chuyển gói tin vào DatagramSocket DatagramPacket Ứng dụng 187UDP Hình 7.1 Khi ứng dụng muốn đọc gói tin UDP, gọi phương thức DatagramSocket.receive(), phương thức chép gói tin UDP vào DatagramPacket xác định Xử lý nội dung nói tin tiến trình lặp lại cần DatagramPacket byte[256],256); dp=new DatagramPacket(new DatagramSocket ds=new DatagramSocket(2000); boolean finished=false; while(!finished) { ds.receive(dp); //Xử lý gói tin } ds.close(); Khi xử lý gói tin ứng dụng phải làm việc trực tiếp với mảng byte Tuy nhiên ứng dụng đọc văn ta sử dụng lớp từ gói vào để chuyển đổi mảng byte luồng stream reader Bằng cách gắn kết luồng nhập ByteArrayInputStream với nội dung datagram sau kết nối với kiểu luồng khác, bạn truy xuất tới nội dung gói UDP cách dễ dàng Rất nhiều người lập trình thích dùng luồng vào I/O để xử lý liệu, cách sử dụng luồng DataInputStream BufferedReader để truy xuất tới nội dung mảng byte InputStream DatagramPacket Địa IP Địa cổng Dữ liệu gói tin byte[]={…,…} ByteArrayInputStream InputStreamReader 188 Hình 7.2 Ví dụ, để gắn kết luồng DataInputStream với nội dung DatagramPacket, ta sử dụng đoạn mã sau: ByteArrayInputStream ByteArrayInputStream(dp.getData()); bis=new DataInputStream dis=new DataInputStream(bis); //đọc nội dung gói tin UDP Gửi gói tin Lớp DatagramSocket sử dụng để gửi gói tin Khi gửi gói tin, ứng dụng phải tạo DatagramPacket, thiết lập địa thông tin cổng, ghi liệu cần truyền vào mảng byte Nếu muốn gửi thông tin phúc đáp ta biết địa số hiệu cổng gói tin nhận Mỗi gói tin sẵn sàng để gửi, ta sử dụng phương thức send() lớp DatagramSocket để gửi gói tin DatagramSocket Gán cổng UDP Gửi DatagramPacket cách sử dụng DatagramSocket Ứng dụng UDP Packet Xây dựng gói tin DatagramPacket Hình 7.3 //Socket lắng nghe gói tin đến cổng 2000 DatagramSocket socket = new DatagramSocket(2000); DatagramPacket packet = new DatagramPacket (new byte[256], 256); 189 packet.setAddress ( InetAddress.getByName ( somehost ) ); packet.setPort ( 2000 ); boolean finished = false; while !finished ) { // Ghi liệu vào vùng đệm buffer socket.send (packet); // Thực hành động đó, chẳng hạn đọc gói tin kháci kiểm tra xemor // gói tin cần gửi hay không } socket.close(); Ví dụ minh họa giao thức UDP Để minh họa gói tin UDP gửi nhận nào, viết, biên dịch chạy ứng dụng sau Viết chương trình theo mơ hình Client/Server để: Client thực thao tác sau đây:  Client gửi xâu ký tự người dùng nhập từ bàn phím cho server  Client nhận thơng tin phản hồi trở lại từ Server hiển thị thông tin hình Server thực thao tác sau:  Server nhận xâu ký tự client gửi tới in lên hình  Server biến đổi xâu ký tự thành chữ hoa gửi trở lại cho Client import java.net.*; import java.io.*; public class UDPClient { public final static int CONG_MAC_DINH=9; public static void main(String args[]) 190 { String hostname; int port=CONG_MAC_DINH; if(args.length>0) { hostname=args[0]; try{ } catch(Exception e){ port =Integer.parseInt(args[1]); } } else { hostname="127.0.0.1"; } try{ InetAddress dc=InetAddress.getByName(hostname); BufferedReader BufferedReader(new InputStreamReader(System.in)); userInput=new DatagramSocket ds =new DatagramSocket(port); while(true){ String line=userInput.readLine(); if(line.equals("exit"))break; byte[] data=line.getBytes(); DatagramPacket DatagramPacket(data,data.length,dc,port); dp=new ds.send(dp); dp.setLength(65507); ds.receive(dp); ByteArrayInputStream ByteArrayInputStream(dp.getData()); bis =new 191 BufferedReader BufferedReader(new InputStreamReader(bis)); dis =new System.out.println(dis.readLine()); } } catch(UnknownHostException e) { System.err.println(e); } catch(IOException e) { System.err.println(e); } } } import java.net.*; import java.io.*; public class UDPServer { public final static int CONG_MAC_DINH=9; public static void main(String args[]) { int port=CONG_MAC_DINH; try{ } 192 catch(Exception e){ port =Integer.parseInt(args[1]); } try{ DatagramSocket ds =new DatagramSocket(port); DatagramPacket DatagramPacket(new byte[65507],65507); dp=new while(true){ ds.receive(dp); ByteArrayInputStream ByteArrayInputStream(dp.getData()); BufferedReader BufferedReader(new InputStreamReader(bis)); bis dis =new =new String s=dis.readLine(); System.out.println(s); s.toUpperCase(); dp.setData(s.getBytes()); dp.setLength(s.length()); dp.setAddress(dp.getAddress()); dp.setPort(dp.getPort()); ds.send(dp); } } catch(UnknownHostException e) { System.err.println(e); } catch(IOException e) { System.err.println(e); 193 } } } C:\>start java UDPServer C:\>start java UDPClient Hình 7.4 Chương trình Client/Server sử dụng đa tuyến đoạn import java.net.*; import java.io.*; public abstract class UDPServer extends Thread { private int bufferSize; protected DatagramSocket ds; public UDPServer(int port, int bufferSize) throws SocketException { this.bufferSize=bufferSize; this.ds=new DatagramSocket(port); } public UDPServer(int port)throws SocketException { this(port,8192); } 194 public void run() { byte[] buffer=new byte[bufferSize]; while(true) { DatagramPacket dp=new DatagramPacket(buffer,buffer.length); try{ ds.receive(dp); this.respond(dp); } catch(IOException e) { System.err.println(e); } } } public abstract void respond(DatagramPacket req); } Server Echo import java.net.*; import java.io.*; public class UDPEchoServer extends UDPServer { public final static int DEFAULT_PORT=7; public UDPEchoServer()throws SocketException { super(DEFAULT_PORT); } 195 public void respond(DatagramPacket dp) { try{ DatagramPacket outdp=new DatagramPacket(dp.getData(),dp.getLength(),dp.getAddress(),dp.getPort()); ds.send(outdp); } catch(IOException e) { System.err.println(e); } } public static void main(String[] args) { try { UDPServer server=new UDPEchoServer(); server.start(); System.out.println("Server dang da san sang lang nghe lien ket "); } catch(SocketException e) { System.err.println(e); } } } Client import java.net.*; import java.io.*; public class ReceiverThread extends Thread 196 { private DatagramSocket ds; private boolean stopped=false; public ReceiverThread(DatagramSocket ds) throws SocketException { this.ds=ds; } public void halt(){ this.stopped=true; } public void run() { byte buffer[]=new byte[65507]; while(true) { if(stopped) return; DatagramPacket dp=new DatagramPacket(buffer,buffer.length); try{ ds.receive(dp); String s=new String(dp.getData(),0,dp.getLength()); System.out.println(s); Thread.yield(); } catch(IOException e) { System.err.println(e); } } 197 } } import java.net.*; import java.io.*; public class SenderThread extends Thread { private InetAddress server; private DatagramSocket ds; private boolean stopped=false; private int port; public SenderThread(InetAddress address, int port) throws SocketException { this.server=address; this.port=port; this.ds=new DatagramSocket(); this.ds.connect(server,port); } public void halt(){ this.stopped=true; } public DatagramSocket getSocket() { return this.ds; } public void run() { try{ BufferedReader userInput=new BufferedReader(new InputStreamReader(System.in)); while(true) { if(stopped) return; 198 String line=userInput.readLine(); if(line.equals("exit"))break; byte[] data=line.getBytes(); DatagramPacket dp=new DatagramPacket(data,data.length,server,port); ds.send(dp); Thread.yield(); } } catch(IOException e) { System.err.println(e); } } } Client Echo import java.net.*; import java.io.*; public class UDPEchoClient { public final static int DEFAULT_PORT=7; public static void main(String[] args) { String hostname="localhost"; int port= DEFAULT_PORT; if(args.length>0) { hostname=args[0]; } try{ 199 InetAddress ia=InetAddress.getByName(args[0]); SenderThread sender=new SenderThread(ia,DEFAULT_PORT); sender.start(); ReceiverThread receiver=new ReceiverThread(sender.getSocket()); receiver.start(); } catch(UnknownHostException e) { System.err.println(e); } catch(SocketException e) { System.err.println(e); } } } Kết luận Trong chương này, thảo luận khái niệm giao thức UDP so sánh với giao thức TCP Chúng ta đề cập tới việc cài đặt chương trình UDP Java cách sử dụng hai lớp DatagramPacket DatagramSocket Một số chương trình mẫu giới thiệu để bạn đọc tham khảo giúp hiểu sâu vấn đề lý thuyết 200 201 ... Các khái niệm mạng giao thức mạng Mạng máy tính Mạng máy tính Là tập hợp máy tính thiết bị nối với đường truyền vật lý theo kiến trúc Chúng ta phân loại mạng theo qui mơ nó:  Mạng LAN (Local... thức mạng  Hình trạng mạng: Là cách nối máy tính với Người ta phân loại mạng theo hình trạng mạng mạng sao, mạng bus, mạng ring…  Giao thức mạng: Là tập hợp qui tắc, qui ước truyền thông mạng. .. Khi nói đến mạng máy tính, người ta thường đề cập tới mạng xương sống (backbone) Backbone mạng tốc độ cao kết nối mạng có tốc độ thấp Một công ty sử dụng mạng backbone để kết nối mạng LAN có

Ngày đăng: 09/05/2019, 09:09

TỪ KHÓA LIÊN QUAN

w