1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án CUỐI kỳ lập TRÌNH MẠNG đề tài xây DỰNG ỨNG DỤNG CHAT ROOM sử DỤNG GIAO THỨC UDP

59 20 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

Tiêu đề Xây dựng Ứng dụng Chat Room Sử dụng Giao Thức UDP
Tác giả Nguyễn Khắc Thịnh, Nguyễn Hải Dương, Nguyễn Phương Thanh, Lê Hoàng Minh
Người hướng dẫn TS. Hoàng Hữu Đức
Trường học Trường Đại học Công nghệ Thông tin & Truyền thông Việt-Hàn
Chuyên ngành Khoa học Máy tính
Thể loại Đồ án cuối kỳ lập trình mạng
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 59
Dung lượng 2,42 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Kháiniệm cơbản về Internet (8)
  • 2. NetworkSocket (8)
  • 3. UserDatagram Protocol (UDP) (0)
  • 1. Kháiniệm cơbản về Java (17)
  • 2. Công dụng (17)
  • 3. Sựlựachọnphổ biến (18)
  • 4. Java hoạt động như thế nào (19)
  • 5. Lậptrình hướngđối tượnglàgì (20)
  • 6. Các tính chất củaJava (21)
  • 7. Các loại accessmodifiertrong Java (22)
  • 8. Nested Class (22)
  • 9. Biến (22)
  • 10. Exception (24)
  • 11. Các kiểudữ liệu (25)
  • 12. Épkiểutrong Java (26)
  • 13. Toántử Instanceof (27)
  • 14. Nạp chồng(Overloading)và ghi đè(Overriding) (27)
  • 15. Interface (28)
  • 16. Abstracts (28)
  • 17. Thuật toán (28)
  • 18. Collection (30)
  • 19. Quan hệ kế thừatrong Java (35)
  • 1. Tổngquanvềmạngmáytính (36)
  • 2. MôhìnhmạngOSI (39)
  • 3. Giaothứctruyềnthông (43)
  • 1. Phântíchyêu cầuđề tài (50)
  • 2. Mục đíchxây dựng (51)
  • 3. Xác định yêu cầucủangười dùng (51)
  • 4. Yêu cầugiaodiện (51)
  • 5. Phântíchcácchứcnăng của hệ thống (52)
  • 6. Biểu đồ phân tíchthiết kế hệ thống (52)
  • 7. Thiếtkế giaodiệnvà chứcnăng (53)

Nội dung

Socket thường đề cập cụ thể đến socket Internet hoặc socketTCP.SocketInternetđượcđặctrưngtốithiếubởinhữngđiềusauđây:TCP là một giao thức mạng quan trọng được sử dụng trongviệctruyềndữliệ

Kháiniệm cơbản về Internet

Internet là mạng của các máy tính trên toàn cầu được thành lập từnhữngnăm80bắtnguồntừmạngAPARRNETcủabộquốcphòngMỹ.

Vàom ạ n g I n t e r n e t , b ạ n c ó t h ể t ì m t h ấ y n h i ề u t à i l i ệ u đ ể n g h i ê n cứu,họctập,traođổithưtừ,đặthàng,muabán Mộttrongnh ữngmụctiêucủaInternetlàchia sẻthông ting i ữ a n h ữ n g n g ư ờ i d ù n g t r ê n n h i ề u lĩnhvựckhácnhau.

Mỗimáy tính trên Internet được gọi là một host. Mỗih o s t c ó khản ă n g n h ư n h a u v ề t r u y ề n t h ô n g t ớ i m á y k h á c t r ê n I n t e r n e t M ộ t s ố hostđ ư ợ c n ố i t ớ i m ạ n g b ằ n g đ ư ờ n g n ố i D i a l - u p ( q u a y s ố ) t ạ m t h ờ i , s ố khácđượcnốibằngđườngnốimạngthậtsự100%

 Server: Máy phục vụ-Máy chủ Chứa các chương trình Server, tàinguyên(tậptin,tàiliệu )dùngc h u n g c h o n h i ề u m á y k h á c h S e r v e r luônởtrạngtháichờyêucầuvàđápứngyêucầucủaClient.

 InternetServer:Lànhữngservercungc ấ p c á c d ị c h v ụ I n t e r n e t nhưWebServer,MailServer,FPTServer…

NetworkSocket

Socketl à m ộ t c ấ u t r ú c p h ầ n m ề n t r o n g n ú t m ạ n g c ủ a m ạ n g m á y tínhđ ó n g v a i t r ò l à đ i ể m c u ố i đ ể g ử i v à n h ậ n d ữ l i ệ u t r ê n m ạ n g C ấ u trúcv à t h u ộ c t í n h c ủ a s o c k e t đ ư ợ c x á c đ ị n h b ở i g i a o d i ệ n l ậ p t r ì n h ứ n g d ụng (API) cho kiến trúc mạng Cácổ c ắ m c h ỉ đ ư ợ c t ạ o t r o n g s u ố t t h ờ i giantồntạicủamộtquytrìnhứngdụngđangchạy.

Trong quá trình chuẩn hóa các giao thức TCP/IP để phát triển Internet, thuật ngữ socket được dùng phổ biến nhất trong ngữ cảnh của bộ giao thức Internet và vì vậy thường được gọi là ổ cắm Internet Socket được xác định bởi các thành phần như socket address (địa chỉ socket), transport protocol (giao thức vận chuyển), IP address (địa chỉ IP) và số port (cổng).

Trong lập trình mạng, API cho phép tạo và quản lý socket, mỗi socket được cấp một socket descriptor khi khởi tạo Socket được liên kết với một giao thức mạng cụ thể, địa chỉ IP của máy chủ và số cổng (port) để truyền dữ liệu Port là tài nguyên được đánh số đại diện cho các dịch vụ mạng và khi được tạo bởi một tiến trình, socket có thể nhận kết nối từ máy khách hoặc kích hoạt các kênh truyền dữ liệu giữa hai hoặc nhiều máy NetworkSocket có thể tham gia vào quá trình thiết lập kết nối, liên lạc với các nút khác và có thể tham gia multicast cũng như vận hành ở chế độ có kết nối hoặc không có kết nối tùy thuộc vào giao thức được sử dụng.

P I nàyđượcgọilàlậptrìnhnetworks o c k e t h o ặ c l ậ p t r ì n h m ạ n g A P I soc ket Internet thường dựa trên tiêu chuẩn socket Berkeley Trong tiêuchuẩns o c k e t B e r k e l e y , s o c k e t l à m ộ t d ạ n g m ô t ả t ệ p , d o t r i ế t l ý U n i x rằng" m ọ i t h ứ đ ề u l à t ệ p " v à s ự t ư ơ n g đ ồ n g g i ữ a s o c k e t v à t ệ p C ả h a i đềucóchứcnăngđọc,viết,mởvàđóng.Trongthựctế,sựkhácbiệtlàm căngt h ẳ n g s ự t ư ơ n g t ự v à c á c g i a o d i ệ n k h á c n h a u ( g ử i v à n h ậ n ) đ ư ợ c s ửd ụ n g t r ê n m ộ t s o c k e t T r o n g g i a o t i ế p g i ữ a c á c q u á t r ì n h , m ỗ i đ ầ u thườngcósocketriêng.

Trong các giao thức Internet như TCP/IP, socket address là sự kết hợp của địa chỉ IP và số cổng (port), đại diện cho một đầu nối mạng giữa thiết bị và ứng dụng Mỗi socket được kết nối với một địa chỉ IP và một cổng cụ thể, tương tự như một đầu nối của cuộc gọi điện thoại, cho phép các gói dữ liệu được gửi và nhận giữa máy chủ và khách hàng Socket không bắt buộc có địa chỉ nguồn để gửi dữ liệu, nhưng khi một chương trình thiết lập kết nối socket với một địa chỉ nguồn, socket có thể nhận dữ liệu được gửi đến địa chỉ đó Dựa trên địa chỉ và cổng, socket Internet phân phát các gói dữ liệu cho ứng dụng thích hợp, đảm bảo luồng dữ liệu được xử lý an toàn và hiệu quả.

Socket thường đề cập cụ thể đến socket Internet hoặc socket TCP.SocketInternetđượcđặctrưngtốithiếubởinhữngđiềusauđây:

 Địa chỉs o c k e t c ụ c b ộ , b a o g ồ m đ ị a c h ỉ I P c ụ c b ộ v à ( đ ố i v ớ i T C P vàUDP,nhưngkhôngphảiIP)sốport.

 Giaot h ứ c : G i a o t h ứ c v ậ n c h u y ể n , v í d ụ : T C P , U D P , I P Đ i ề u n à y có nghĩa là các điểm cuối (cụcb ộ h o ặ c t ừ x a ) c ó c ổ n g T C P 5 3 v à c ổ n g UDP53làcácsocketriêngbiệt,trongkhiIPkhôngcóport.

 Một socket đã được kết nối với một socket khác, ví dụ, trong quátrìnhthiếtlậpkếtnốiTCP,cũngcómộtđịachỉsockettừxa.

Internet đãvà đanglàmột phầnkhông thểthiếu trong cuộcs ố n g hàngngàycủachúngta.Tuynhiên,khôngphảiaicũnghiểuđượ ctườngtậnvềcáchthứchoạtđộngcủaInternet.PhươngthứctruyềndẫnmàInternet đang sử dụng là phương thức TCP/IP, một trong những phươngthứctruyền dẫn phổ biếnnhất hiệnnay.

TCP (Transmission Control Protocol) là một giao thức mạng quan trọng dùng để truyền dữ liệu qua mạng máy tính với cơ chế điều khiển và đảm bảo tính tin cậy của từng gói tin Nó xác định tập hợp các quy tắc và trình tự để thiết lập kết nối, kiểm soát luồng dữ liệu và sửa lỗi, giúp các ứng dụng trên nhiều hệ điều hành và vị trí địa lý khác nhau có thể giao tiếp với nhau theo cùng một phương thức chuẩn Nhờ TCP, dữ liệu được truyền một cách có thứ tự và không mất mát, ngay cả khi mạng gặp sự cố hoặc lưu lượng cao, và nó hoạt động như một phần cốt lõi của kiến trúc TCP/IP được sử dụng rộng rãi trên Internet.

TCP khi kết hợp với IP theo một cặp được gọi là TCP/IP, chuẩn giao thức mạng cơ bản cho truyền dữ liệu trên Internet Bạn có thể gặp thuật ngữ này trong phần cài đặt mạng (network settings) trên máy tính, điện thoại thông minh hoặc các thiết bị cầm tay của mình IP chịu trách nhiệm gán địa chỉ và định tuyến các gói tin từ nguồn tới đích, trong khi TCP quản lý việc truyền dữ liệu một cách tin cậy bằng cách kiểm tra lỗi, điều hòa luồng và đảm bảo thứ tự gói tin được duy trì.

Để hai ứng dụng có thể trao đổi dữ liệu, chúng phải thiết lập một kết nối TCP trước khi dữ liệu được truyền Mỗi kết nối TCP là một cặp socket, được định nghĩa bởi địa chỉ IP, cổng sử dụng và giao thức của lớp vận chuyển Quá trình thiết lập kết nối và khởi tạo socket gồm trao đổi thông tin về cổng nguồn và cổng đích, số thứ tự và tín hiệu ACK để đồng bộ hóa luồng dữ liệu Hình 1 mô tả tiến trình bắt tay ba bước của thiết lập một kết nối TCP và quá trình đóng một kết nối TCP.

Trong quá trình thiết lập kết nối TCP giữa máy khách và máy chủ, hai bên sẽ thực hiện ba bước bắt tay để đồng bộ và bắt đầu truyền dữ liệu Máy khách chọn một cổng nguồn tạm thời (ephemeral port), thường từ 1024 trở lên, trong khi máy chủ nghe trên cổng 80 để nhận yêu cầu kết nối Máy khách gửi một segment SYN với số thứ tự khởi tạo (initial sequence number), máy chủ trả lại một segment SYN-ACK chứa số khởi tạo của nó và xác nhận nhận được SYN phía máy khách, rồi máy khách gửi một segment ACK xác nhận và hoàn tất quá trình bắt tay Trong suốt quá trình này, các segment là đơn vị dữ liệu ở lớp vận chuyển được gọi là PDU, và số thứ tự (sequence number) được dùng để theo dõi thứ tự và đảm bảo dữ liệu được truyền đi đúng cách.

Trong phần header của TCP có một tập hợp các trường cờ có giá trị 1 bit được gọi là các cờ (flags) Các cờ này phục vụ cho các mục đích khác nhau, như nhận diện và quản lý các giai đoạn thiết lập kết nối Cờ SYN và cờ ACK cho biết một segment có phải là segment đầu tiên hay là segment thứ hai trong một kết nối TCP mới Cụ thể, một segment có cờ SYN sẽ là segment đầu tiên trong một kết nối TCP, còn một segment có cả cờ SYN và ACK sẽ là segment thứ hai trong liên kết đó Các cờ này giúp việc nhận diện các yêu cầu kết nối mới trở nên dễ dàng hơn Chỉ số khởi tạo (ISN) có thể được gán cho bất kỳ giá trị hợp lệ nào và thường không được gán bằng 0 Trong quá trình khôi phục lỗi, việc sử dụng các giá trị này được thực hiện độc lập ở cả hai chiều giao tiếp.

 Source port và destination port (đều dài 16 bit): được sử dụng đểđịnh danh cho session của giao thức nào đó trên lớp ứng dụng đangđượctruyền tải trongTCPsegment đang xét.

 Sequence number (32 bit): dùng để đánh thứ tụ gói tin (từ sốsequencenósẽtínhrađượcsốbyteđã được truyền).

 Acknowledge number (32 bit): : sùng để báo đã nhận được gói tinnàovàmong nhậnđượcbytemang sốthứtự nàotiếp theo.

 Header length (4 bit): cho biết toàn bộ header dài bao nhiêu tínhtheođơn vị word(1 Word =4 byte).

 Các bit control (9 bit): các bit dùng để điều khiển các cờ

 Window size (16 bit): số lượng byte được thiết bị sẵn sàng tiếpnhận.

 Urgent pointer (16 bit): sử dụng trong trường hợp cần ưu tiên dữliệu.

 Options(tốiđa32bit):chophépthêmvàoTCPcác tínhnăng khác

Tổngkiểmtracó16bitchocảphầnheadervàdữliệu,nóxácminhtínhtoàn vẹn dữ liệucủaTCP.

Khi TCP chạy trênIPv4, phương thức được sử dụng để tính toántổngkiểm trađượcđịnh nghĩanhư sau:

Trường tổng kiểm tra là trường 16 bit chứa giá trị tổng bù 16 bit (ones complement) của tất cả các từ 16 bit trong tiêu đề và dữ liệu Việc tính tổng kiểm tra yêu cầu dữ liệu được căn chỉnh thành các từ 16 bit để tổng được tính đúng Nếu một phân đoạn có số từ 16 bit là lẻ, từ cuối cùng có thể được ghép bằng cách thêm các số 0 ở phía bên phải để tạo thành một từ 16 bit, phục vụ cho tính toán tổng kiểm tra Phần đệm không được truyền như một phần của phân đoạn Trong khi tính tổng kiểm tra, trường tổng kiểm tra được thay thế bằng số 0.

Khi TCP chạy trên , phương thức được sử dụng để tính toán tổngkiểmtrasẽthay đổi:

Đối với bất kỳ giao thức truyền tải hoặc giao thức ở lớp trên nào có tham chiếu đến địa chỉ từ tiêu đề IP trong quá trình tính toán tổng kiểm tra, đều cần được cập nhật để hoạt động trên IPv6, nhằm bao gồm các địa chỉ IPv6 128 bit thay cho các địa chỉ IPv4 32 bit Việc này đảm bảo tính tương thích của các giao thức với mạng IPv6 và cải thiện độ chính xác của phép tính tổng kiểm tra khi xử lý dữ liệu qua mạng hiện đại Các giao thức này cần được sửa đổi để sử dụng đúng địa chỉ IPv6, tối ưu hóa hiệu suất và bảo đảm an toàn thông tin trong hạ tầng mạng hỗ trợ IPv6.

Giao thức TCP có độ tin cậy cao, các gói tin được gửi qua TCP được đảm bảo không bị mất hay hỏng trong quá trình truyền dữ liệu, nhờ đó các file tải xuống không bị hỏng ngay cả khi mạng gặp sự cố Tuy nhiên, nếu phía nhận hoàn toàn ngoại tuyến, máy tính sẽ ngừng kết nối và hiển thị thông báo lỗi cho người dùng rằng máy chủ lưu trữ từ xa không thể giao tiếp.

Kiểm soát tắc nghẽn trong TCP điều chỉnh kích thước cửa sổ (window) để tối ưu hóa việc truyền dữ liệu theo khả năng của mạng; người gửi xác định số byte có thể gửi trước khi nhận được ACK, và người nhận cho biết có sẵn sàng nhận thêm dữ liệu hay không, nếu người nhận bận hoặc không muốn nhận thêm, cửa sổ có thể được đặt về 0 để ngăn dữ liệu bị đẩy vào mạng quá tải RFC 2581 mô tả một cơ chế kiểm soát tắc nghẽn dựa trên AIMD (Additive Increase, Multiplicative Decrease), cho phép tốc độ gửi tăng dần và sau đó giảm nhanh khi phát hiện tắc nghẽn Giai đoạn Slow Start của TCP bắt đầu ở tốc độ thấp và tăng nhanh cho tới ngưỡng đã xác định nhằm nhanh chóng khai thác băng thông có sẵn; khi đạt được ngưỡng hoặc có tín hiệu tắc nghẽn, hệ thống chuyển sang Congestion Avoidance, tức là tăng cửa sổ từ từ để duy trì ổn định Cả hai giai đoạn này đều áp dụng nguyên lý tăng dần và giảm nhân (AIMD), giúp tăng trưởng lưu lượng một cách kiểm soát và giảm thiểu tổn thất gói Khi mạng quá tải hoặc có gói bị mất, các cơ chế như Fast Retransmission và Fast Recovery đóng vai trò phục hồi nhanh, giảm thiểu thời gian gián đoạn và khôi phục tốc độ truyền một cách hiệu quả.

Java là một ngôn ngữ lập trình đa nền tảng được dùng để viết mã cho các ứng dụng web và là lựa chọn phổ biến của các nhà phát triển suốt hai thập kỷ qua Ngày nay Java vẫn được sử dụng rộng rãi với hàng triệu ứng dụng được viết bằng ngôn ngữ này Là một ngôn ngữ hướng đối tượng có khả năng chạy trên nhiều nền tảng, Java có thể làm nền tảng cho backend, máy chủ và các dịch vụ web an toàn, đáng tin cậy và mở rộng Đây là công cụ mạnh mẽ cho phát triển backend, xử lý dữ liệu lớn và tích hợp với các công nghệ đám mây và hệ sinh thái phần mềm mở.

VìJ a v a l à m ộ t n g ô n n g ữ m i ễ n p h í v à l i n h h o ạ t , n ó c ó t h ể đ ư ợ c dùngđểpháttriểncácphần mềmcụcbộvàphântán.Mộtsốcôngdụngphổbiến củaJavabaogồm:

Nhiềutròchơiđiệntử,tròchơimáyt í n h v à d i đ ộ n g n ổ i t i ế n g đượcp h á t t r i ể n b ằ n g J a v a N g a y c ả n h ữ n g t r ò c h ơ i h i ệ n đ ạ i đ ư ợ c t í c h hợpcô ngnghệtiêntiếnnhưm á y h ọ c h a y t h ự c t ế ả o c ũ n g đ ư ợ c p h á t triểnbằngcôngnghệJava.

Javathường đượcgọi là ngôn ngữ WORA( V i ế t m ộ t l ầ n , c h ạ y ở mọin ơ i ) , k h i ế n n ó t r ở t h à n h n g ô n n g ữ l ý t ư ở n g c h o c á c ứ n g d ụ n g p h i tập trung dựa trên đám mây Các nhà cung cấp đám mây chọn ngôn ngữJavađểchạycácchươngtrìnhtrênnhiềunềntảngcơsởkhácnhau.

Java được dùng cho các công cụ xử lý dữ liệu có thể làm việc vớinhữngtậpdữliệuphứctạpvàsốlượngdữliệuthờigianthựckhổnglồ.

Javal à m ộ t t r u n g t â m t h ư v i ệ n m á y h ọ c đ ồ sộ S ự ổ n đ ị n h v à t ố c độc ủ a n g ô n n g ữ n à y r ấ t l ý t ư ở n g c h o v i ệ c p h á t t r i ể n ứ n g d ụ n g t r í t u ệ nhânt ạonhưxửlýngônngữtựnhiênvàhọcsâu.

Java đã ra mắt từ lâu, nên các nhà phát triển mới có thể tiếp cận rất nhiều tài nguyên học tập chất lượng Các tài liệu chi tiết, những cuốn sách toàn diện và các khóa học trực tuyến sẽ hỗ trợ người học trong quá trình tìm hiểu Java Người mới bắt đầu có thể bắt đầu với Java Cơ bản trước khi tiến tới Java Nâng cao để mở rộng kỹ năng và kiến thức.

Khisửdụng Java,nhà phát triển khôngc ầ n p h ả i v i ế t m ọ i c h ứ c năngm ớ i t ừ đ ầ u T h a y v à o đ ó , J a v a c u n g c ấ p m ộ t h ệ s i n h t h á i p h o n g phú gồm cácchức năng và thư viện sẵncóđ ể p h á t t r i ể n h à n g l o ạ t ứ n g dụngđadạng.

Javac ó r ấ t n h i ề u n g ư ờ i d ù n g h o ạ t đ ộ n g v à m ộ t c ộ n g đ ồ n g c ó t h ể hỗt r ợ n h à p h á t t r i ể n k h i h ọ đ ố i m ặ t v ớ i c á c t h á c h t h ứ c t r o n g v i ệ c v i ế t mã. PhầnmềmnềntảngJavacũngđượcduytrìvàc ậ p n h ậ t t h ư ờ n g xuyên.C ô n g c ụ p h á t t r i ể n c h ấ t l ư ợ n g c a o J a v a c u n g c ấ p n h i ề u c ô n g c ụ khácnhauđểhỗtrợ chỉnhsửatựđộng,gỡlỗi,thửnghiệm,triểnkhaivà quản lý thay đổi Những công cụ này khiến việc lập trình bằng Java tiếtkiệmthờigianvàchiphí.

Mã Java có thể chạy trên mọi nền tảng cơ sở như Windows, Linux, iOS và Android mà không cần viết lại, giúp tiết kiệm thời gian và công sức trong phát triển ứng dụng Khả năng đa nền tảng này là yếu tố làm cho Java trở nên đặc biệt mạnh mẽ trong môi trường công nghệ hiện nay, cho phép triển khai và vận hành ứng dụng trên nhiều thiết bị khác nhau một cách đồng nhất.

Ngườid ù n g c ó t h ể t ả i m ã J a v a k h ô n g t i n c ậ y t ừ t r ê n m ạ n g x u ố n g và chạy mã này trong môi trường bảo mật để nó không thể gây hại. Mãkhôngt i n c ậ y s ẽ k h ô n g t h ể l â y n h i ễ m v i - r ú t c h o h ệ t h ố n g m á y c h ủ v à cũngk h ô n g t h ể đ ọ c h o ặ c g h i t ệ p t ừ ổ c ứ n g B ạ n c ũ n g c ó t h ể c ấ u h ì n h nhiềucấpđộvàhạnchếbảomậttrongJava.

Kháiniệm cơbản về Java

Javal à m ộ t n g ô n n g ữ l ậ p t r ì n h đ ư ợ c s ử d ụ n g r ộ n g r ã i đ ể v i ế t m ã cho cácứng dụng web Ngôn ngữ này là lựa chọn phổ biếnc ủ a c á c n h à phátt r i ể n t r o n g h ơ n 2 t h ậ p n i ê n H i ệ n n a y c ó h à n g t r i ệ u ứ n g d ụ n g J a v a đang được sử dụng Java là một ngôn ngữ đa nền tảng, hướng đến đốitượng,l ấ y m ạ n g l à m t r u n g t â m v à c ó t h ể đ ư ợ c s ử d ụ n g n h ư m ộ t n ề n tảng.Đ â y l à m ộ t n g ô n n g ữ l ậ p t r ì n h n h a n h , b ả o m ậ t , đ á n g t i n c ậ y d ù n g đểv i ế t m ã c h o m ọ i t h ứ t ừ ứ n g d ụ n g d i đ ộ n g , p h ầ n m ề m d o a n h n g h i ệ p c hođếncácứngdụngdữliệulớnvàcôngnghệphíamáychủ.

Công dụng

VìJ a v a l à m ộ t n g ô n n g ữ m i ễ n p h í v à l i n h h o ạ t , n ó c ó t h ể đ ư ợ c dùngđểpháttriểncácphần mềmcụcbộvàphântán.Mộtsốcôngdụngphổbiến củaJavabaogồm:

Nhiềutròchơiđiệntử,tròchơimáyt í n h v à d i đ ộ n g n ổ i t i ế n g đượcp h á t t r i ể n b ằ n g J a v a N g a y c ả n h ữ n g t r ò c h ơ i h i ệ n đ ạ i đ ư ợ c t í c h hợpcô ngnghệtiêntiếnnhưm á y h ọ c h a y t h ự c t ế ả o c ũ n g đ ư ợ c p h á t triểnbằngcôngnghệJava.

Javathường đượcgọi là ngôn ngữ WORA( V i ế t m ộ t l ầ n , c h ạ y ở mọin ơ i ) , k h i ế n n ó t r ở t h à n h n g ô n n g ữ l ý t ư ở n g c h o c á c ứ n g d ụ n g p h i tập trung dựa trên đám mây Các nhà cung cấp đám mây chọn ngôn ngữJavađểchạycácchươngtrìnhtrênnhiềunềntảngcơsởkhácnhau.

Java được dùng cho các công cụ xử lý dữ liệu có thể làm việc vớinhữngtậpdữliệuphứctạpvàsốlượngdữliệuthờigianthựckhổnglồ.

Javal à m ộ t t r u n g t â m t h ư v i ệ n m á y h ọ c đ ồ sộ S ự ổ n đ ị n h v à t ố c độc ủ a n g ô n n g ữ n à y r ấ t l ý t ư ở n g c h o v i ệ c p h á t t r i ể n ứ n g d ụ n g t r í t u ệ nhânt ạonhưxửlýngônngữtựnhiênvàhọcsâu.

Sựlựachọnphổ biến

Java đã ra mắt từ lâu nên các nhà phát triển mới có thể dễ dàng tiếp cận nhiều tài nguyên học tập chất lượng cho lập trình Java Tài liệu chi tiết, sách tham khảo và các khóa học trực tuyến sẽ hỗ trợ quá trình học hỏi và nâng cao kỹ năng Người mới làm quen có thể bắt đầu với Java cơ bản trước khi chuyển sang Java nâng cao để xây dựng nền tảng vững chắc cho sự nghiệp lập trình.

Khisửdụng Java,nhà phát triển khôngc ầ n p h ả i v i ế t m ọ i c h ứ c năngm ớ i t ừ đ ầ u T h a y v à o đ ó , J a v a c u n g c ấ p m ộ t h ệ s i n h t h á i p h o n g phú gồm cácchức năng và thư viện sẵncóđ ể p h á t t r i ể n h à n g l o ạ t ứ n g dụngđadạng.

Javac ó r ấ t n h i ề u n g ư ờ i d ù n g h o ạ t đ ộ n g v à m ộ t c ộ n g đ ồ n g c ó t h ể hỗt r ợ n h à p h á t t r i ể n k h i h ọ đ ố i m ặ t v ớ i c á c t h á c h t h ứ c t r o n g v i ệ c v i ế t mã. PhầnmềmnềntảngJavacũngđượcduytrìvàc ậ p n h ậ t t h ư ờ n g xuyên.C ô n g c ụ p h á t t r i ể n c h ấ t l ư ợ n g c a o J a v a c u n g c ấ p n h i ề u c ô n g c ụ khácnhauđểhỗtrợ chỉnhsửatựđộng,gỡlỗi,thửnghiệm,triểnkhaivà quản lý thay đổi Những công cụ này khiến việc lập trình bằng Java tiếtkiệmthờigianvàchiphí.

Java có thể chạy trên nhiều nền tảng cơ sở như Windows, Linux, iOS hoặc Android mà không cần viết lại mã, cho phép triển khai ứng dụng một lần và chạy trên nhiều thiết bị Đây là đặc tính nổi bật của Java trong môi trường công nghệ hiện nay, giúp các doanh nghiệp và nhà phát triển tối ưu hóa quy trình phát triển ứng dụng đa nền tảng và tăng tính di động của phần mềm.

Ngườid ù n g c ó t h ể t ả i m ã J a v a k h ô n g t i n c ậ y t ừ t r ê n m ạ n g x u ố n g và chạy mã này trong môi trường bảo mật để nó không thể gây hại. Mãkhôngt i n c ậ y s ẽ k h ô n g t h ể l â y n h i ễ m v i - r ú t c h o h ệ t h ố n g m á y c h ủ v à cũngk h ô n g t h ể đ ọ c h o ặ c g h i t ệ p t ừ ổ c ứ n g B ạ n c ũ n g c ó t h ể c ấ u h ì n h nhiềucấpđộvàhạnchếbảomậttrongJava.

Java hoạt động như thế nào

Mọi ngôn ngữ lập trình là phương tiện để giao tiếp với máy Phần cứng của máy cho phép việc truyền nhận thông tin và thực thi các lệnh dựa trên tín hiệu điện tử, còn ngôn ngữ lập trình cấp cao như Java đóng vai trò là cầu nối giữa ngôn ngữ của con người và ngôn ngữ của phần cứng Để sử dụng Java, nhà phát triển cần hiểu hai điều căn bản: một là Java là ngôn ngữ lập trình cấp cao giúp chuyển tải ý tưởng thành mã lệnh và API cho máy, hai là Java liên quan đến máy ảo Java và cách nó tương tác với hệ điều hành và phần cứng để thực thi chương trình.

 MáyảoJava: Đâyl à h o ạ t đ ộ n g g i a o t i ế p b a c k - e n d g i ữ a n ề n t ả n g J a v a v à p h ầ n cứngcơsở.Hãycùngxemxétchitiếttừngyế utốnàyởbêndưới.

Lậptrình hướngđối tượnglàgì

Lậptrìnhhướngđ ố i t ư ợ n g ( O b j e c t O r i e n t e d P r o g r a m i n g – O O P ) là một phương pháp để thiết kế một chương trình bởi sửdụng cácl ớ p v à cácđốitượng.

Javalà một ngôn ngữ lậpt r ì n h h ư ớ n g đ ố i t ư ợ n g v ì v ậ y n ó c ũ n g h ỗ trợcácđặctínhcủalậptrìnhhướngđốitượng:

 Đahình(Po ly mor ph ism)

 Nếu chúng ta xem xét một con chó, thuộc tính của nó sẽ là – tên,giống,màusắc,vàcáchànhvilà:sủa,chạy,ăn,…

Nếubạnsosánhcácđốitượngtrongphầnmềmvớimộtđốitượngtrongt hếgiới thực, chúng sẽc ó đ ặ c đ i ể m r ấ t g i ố n g n h a u : t h u ộ c t í n h đ ố i t ư ợ n g t r o n g p h ầ n m ề m đượcl ư u t r ữ t r o n g t r ư ờ n g ( f i e l d ) v à h à n h v i đ ư ợ c l ư u t r ữ t r o n g p h ư ơ n g thức(method).

 Chúng ta có thể xem lớp như một khuôn mẫu (template) của đốitượng(Object).Trongđóbaogồmdữliệucủađốitượng

(fieldshayproperties)vàcácphươngthức(methods)tácđộngl ê n thànhphầnd ữ liệuđógọilàcácphươngthứccủalớp.

Các tính chất củaJava

Đóng gói (Encapsulation) là nguyên tắc trong lập trình hướng đối tượng nhằm che giấu dữ liệu riêng bên trong mỗi đối tượng của một lớp Dữ liệu được ẩn đi và chỉ có thể truy xuất thông qua hệ thống các phương thức có sẵn của lớp, giúp kiểm soát và bảo vệ trạng thái của đối tượng Nhờ đóng gói, các lớp tự quản lý dữ liệu và giao tiếp với phần mềm ngoài thông qua giao diện công khai được thiết kế rõ ràng, tăng tính an toàn, bảo trì và khả năng mở rộng của hệ thống.

Tính đóng gói dùng để bảo vệ dữ liệu, ngăn ngừa việc truy cập vàgáng i á t r ị t r ự c t i ế p c h o t h u ộ c t í n h b ê n t r o n g đ ố i t ư ợ n g , n h ằ m b ả o v ệ tínhchínhxáccủagiátrịthuộctính.

Tínht r ừ u t ư ợ n g t r o n g J a v a l à t í n h c h ấ t k h ô n g t h ể h i ệ n c ụ t h ể m à chỉ nêutênvấnđề. Đól à m ộ t q u á t r ì n h c h e g i ấ u c á c h o ạ t đ ộ n g b ê n t r o n g v à c h ỉ h i ể n thịn hữngtínhnăngthiếtyếucủađốitượngtớingườidùng. Ưuđiểmkhisửdụngtínhtrừutượngđểlậptrình:

 Tínhtrừutượngchophépcáclậptrìnhviênloạibỏtínhchấtphức tạpcủađối tượng bằngcáchchỉđ ư a r a c á c t h u ộ c t í n h v à p h ư ơ n g t h ứ c cần thiết của đối tượng trong lập trình, cải thiện khả năng bảo trì của hệthống.T í n h t r ừ u t ư ợ n g g i ú p c h ú n g t a t ậ p t r u n g v à o n h ữ n g c ố t l õ i c ầ n thiếtcủađốitượngthayvìquantâmđếncáchnóthựchiện.

Javat r ừ u tư ợn g hóat h ô n g quac á c lớptrừ ut ượ ng( Ab st ra ct c l a s s) v àcácgiaodiện(Interface).

Làsựliên quangiữahai classvới nhau,trongđócóclasscha(superclass)v à c l a s s c o n ( s u b c l a s s ) K h i k ế t h ừ a c l a s s c o n đ ư ợ c h ư ở n g tấtcảcácphươngthứcvàthuộctínhcủaclasscha.

Các loại accessmodifiertrong Java

Nested Class

 Staticn e s t e d c l a s s e s : l àc l a s s đượck h a i b á o dạngst a t i c bêntrongmộtclasskhác.

 Non-static nested classes:ba o gồm Inner classes,

Biến

 Biếncụcbộ:làbiếnđượckhởitạobêntrongcácphương thức.và sẽbịhuỷkhiphươngthứcbịhuỷ.

 Biếnst at i c : b i ế nstatic đ ư ợ c k h a i báot r o n g m ộ t class v ớ i từkh óa‘static’,phíabênngoàicácphươngthức,constructorvàblock.

Exception

Một ngoại lệ (Exception) trong Java là một vấn đề phát sinh trongquátrìnhthựct h i c h ư ơ n g t r ì n h K h i x ả y r a n g o ạ i l ệ , l u ồ n g x ử l ý

 Sựkhácnhau giữa“CheckedExceptions” v à “Unchec kedExceptions”trongJava?

 Checked Exceptions xảy ra tại thời gian biên dịch(Compile-timeExceptions).

 UncheckedE x c e p t i o n s l à n g o ạ i lệ có t h ể t r á n h đư ợc bở i l ậ p trìnhviên.

 UncheckedExc ep ti on sk ế thừatừRuntime Exception.

Các kiểudữ liệu

Byte,Short, Int,Long,Char, Boolean,Float,Double.

Épkiểutrong Java

Épk i ể u N ớ i r ộ n g ( Widening):Làq u á t r ì n h l à m t r ò n s ố t ừ k i ể u dữ l i ệ u c ó k í c h t h ư ớ c n h ỏ h ơ n s a n g k i ể u c ó k í c h t h ư ớ c l ớ n h ơ n K i ể u biến đổi này không làm mất thông tin Ví dụ chuyển từ int sang float.Chuyểnk i ể u l o ạ i n à y c ó t h ế đ ư ợ c t h ự c h i ệ n n g ầ m đ ị n h b ở i t r ì n h b i ê n dịch.

Ép kiểu thu hẹp (Narrowing) trong Java là quá trình chuyển đổi từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn, ví dụ từ int sang byte hoặc short Quá trình này có thể làm mất thông tin dữ liệu nếu giá trị ban đầu không còn phù hợp với kiểu đích, và vì vậy nó thường không được thực hiện ngầm định bởi trình biên dịch; người lập trình phải thực hiện chuyển đổi một cách tường minh bằng ép kiểu (explicit casting) Ngược lại, ép kiểu ngầm định (implicit casting) xảy ra khi an toàn về mặt ký hiệu và phạm vi, nhưng khi có rủi ro mất dữ liệu thì cần sự can thiệp của người viết mã để đảm bảo an toàn và đúng kỳ vọng.

Toántử Instanceof

Toán tử instanceof trong java được sử dụng để kiểm tra một đốitượngc ó p h ả i l à t h ể h i ể n c ủ a m ộ t k i ể u d ữ l i ệ u c ụ t h ể k h ô n g ( l ớ p , l ớ p con,interface).

Nạp chồng(Overloading)và ghi đè(Overriding)

 Nạp chồng (Overloading):Là 2 phương thức có cùng tên nhưngkhácthamsốsẽtrảvềkếtquảkhácnhau.

 Ghiđ è ( O v e r r i d i n g ) : l àl ớ p c o n c u n g c ấ p l ạ i m ộ t c à i đ ặ t c ụ t h ể chomộtphươngthứcmàlớpchađãcungcấpthìđ ó g ọ i l à g h i đ è phươn gthức.nóđượcthụchiệndựatrên2lớpcótínhchấtkếthừa.

Interface

Đượcx e m n h ư l à m ộ t b ả n t h i ế t k ế , 1 k h u ô n m ẫ u c ủ a c l a s s , c h ứ a cá cphươngthứctrừutượngkhôngcólệnhthựcthi,cungcấpchứcnăngcho cácclassimplement nó, cácclassi m p l e m e n t c h ú n g s ẽ p h ả i o v e r r i d e lạicácphươngthứccótronginterface,v ì J a v a k h ô n g c h o p h é p đ a k ế thừan ê n I n t e r f a c e l à m ộ t g i ả i p h á p t h a y t h ế đ ể c ó đ ư ợ c t í n h đ a k ế t h ừ a vì1classcóthểimplementnhiềuinterface.

Interface như là một bản thiết kế chức năng cho class, và các classimplementchúngsẽphảioverridenhữngchứcnăngđó.

Abstracts

Abstract class là một lớp được khai báo bằng từ khóa abstract, là một kiểu lớp trừu tượng dùng để mô tả và quy định các thuộc tính và hành vi chung cho tất cả các lớp có cùng bản chất Các thuộc tính và hành vi này có thể bao gồm tính năng, hành vi, kiểu và loài của đối tượng, giúp các lớp con kế thừa và thực thi các đặc trưng cơ bản một cách nhất quán.

Abstract class là một class được khai báo với từ khoá abstract, nóchứacácphươngthứctrừutrượngh o ặ c c á c p h ư ơ n g t h ứ c t h ư ờ n g , abst ractc l a s s k h ô n g t h ể k h ở i t ạ o , c h ỉ c ó t h ế đ ư ợ c k ế t h ừ a b ở i c á c l ớ p con c ó s ự t ư ơ n g q u a n , c á c l ớ p c o n k ế t h ừ a l ớ p c h a s ẽ p h ả i o v e r r i d e l ạ i cácph ươngthứctrừutượngởtronglớpcha.

Thuật toán

 BubbleSort (Sắp xếpnổi bọt)làmột thuật toán sắpx ế p đ ơ n g i ả n , với thao tác cơ bản là so sánh hai phần tử kề nhau, nếu chúng chưa đứngđúngthứtựthìđổichỗ(swap).

Sắpx ế p n ổ i b ọ t c ò n c ó t ê n g ọ i k h á c l à s ắ p x ế p b ằ n g s o s á n h t r ự c tiếp Nó sử dụng phép so sánh các phần tử nên là một giải thuật sắp xếpkiểusosánh.

Thuật toán QuickSort( S ắ p x ế p n h a n h ) c ò n c ó m ộ t t ê n g ọ i k h á c làsắpxếpphânchia(PartSort).

Thuậttoán Quicksort cũnglà thuậttoánđệquy.NgượcvớiMergesortg ọ i đ ệ q u y r ồ i m ớ i x ử l ý , Q u i c k s o r t x ử l ý x o n g m ớ i g ọ i đ ệ quy.

Thuật toán Heap sort là một kỹ thuật sắp xếp dựa trên so sánh dựatrêncấutrúcdữliệuBinaryHeap.

MộtBinaryHeaplàmộtcâynhịphânh o à n c h ỉ n h t r o n g đ ó c á c mụcđ ư ợ c l ư u t r ữ t h e o m ộ t t h ứ t ự đ ặ c b i ệ t s a o c h o g i á t r ị t r o n g n ú t c h a lớnhơn(hoặ cnhỏhơn)sovớigiátrịtronghainútconcủanó.

Loại trước được gọi là max heap và loại sau được gọi là min heap.Heapcóthểđượcbiểudiễnbằngmộtcâyhoặcmảngnhịphân.

Thuậtt o á n B i n a r y S e r a c h (Tìm k i ế m n h ị p h â n ) l à m ộ t t h u ậ t t o á n tìmkiếmtuyếntínhcaocấphơnvớithờigianchạylàO ( l o g N ) Đốiv ớ i c á c d a n h s á c h l ớ n , t h u ậ t t o á n n à y t ố t h ơ n h ẳ n t ì m k i ế m tuyếnt í n h , n h ư n g n ó đ ò i h ỏ i danhs á c h p h ả i đ ư ợ c s ắ p x ế p t ừ t r ư ớ c v à đòihỏikhảnăngtruynhậpngẫunhiên(randomaccess).

Thuật toán tìmkiếmnhị phân thường dùng để tìmkiếmphầnt ử trong một danh sách đã được sắp xếp, ví dụ như trong một danh bạ điệnthoạisắpxếptheotên,cóthểtìmkiếmsốđiệnthoạicủamộtngườitheotên ngườiđó.

Thuật toán tìm kiếm nhị phân chạy nhanh hơn tìm kiếm tuần tựnhưngcũngcómộtsốnhượcđiểm.Nóchậmhơnbảngbăm.

Thuật toán này không chỉ áp dụng trong sắp xếp mà còn ở nhiềubàitoánkhác.

Collection

Set (tập hợp) là kiểu dữ liệu nơi mỗi phần tử xuất hiện duy nhất một lần, giống như tập hợp trong toán học Set cho phép lưu trữ các giá trị không trùng lặp và SetInterface cung cấp các phương thức để tương tác với tập hợp, bao gồm thêm, xóa, kiểm tra thành viên và duyệt danh sách phần tử một cách hiệu quả Việc dùng Set giúp tối ưu hóa việc kiểm tra sự tồn tại của phần tử và đảm bảo tính độc nhất của dữ liệu trong các thao tác xử lý.

I n t e r f a c e được kế thừa từ Collection Interface nên nó cũng có đầy đủ các phươngthức của Collection Interface Một số class thực thi Set Interface thườnggặp:

 EnumSet: là1classdạngsetn h ư 2 c l a s s ở t r ê n , t u y n h i ê n khácv ớ i 2 c l a s s t r ê n l à c á c p h ầ n t ử t r o n g s e t l à c á c e n u m c h ứ k h ô n g phảiobject.

Danh sách (List) là một cấu trúc dữ liệu tuyến tính, trong đó các phần tử được sắp xếp theo một thứ tự xác định List Interface định nghĩa các phương thức để tương tác với danh sách cũng như với các phần tử bên trong danh sách, cho phép thêm, xoá, truy cập và sắp xếp phần tử một cách linh hoạt Tương tự như Set Interface, List Interface cũng được kế thừa và có đầy đủ các phương thức của Collection Interface, bảo đảm các thao tác cơ bản với tập hợp dữ liệu được hỗ trợ khi làm việc với danh sách.

 ArrayList:là 1 class dạng list được implement dựa trên mảng cókíchthướcthayđổiđược.

 LinkedList:l àm ộ t c l a s s d ạ n g l i s t h o ạ t đ ộ n g t r ê n c ơ s ở c ủ a c ấ u trúcdữliệudanhsáchliênkếtđôi(double-linkedlist)

 Vector:l à1 c l a s s t h ự c t h i g i a o d i ệ n L i s t I n t e r f a c e , c ó c á c h t h ự c lưu trữ như mảng tuy nhiên có kích thước thay đổi được, khá là tương tựvớiA r r a y L i s t , t u y n h i ê n đ i ể m k h á c b i ệ t l à V e c t o r l à s y n c h r o n i z e d , h a y là đồng bộ,cóthểhoạtđ ộ n g đ a l u ồ n g m à k h ô n g c ầ n g ọ i s y n c h r o n i z e mộtcáchtườngminh

 Stack:cũnglà1classdạnglist, Stackcócáchh oạ tđ ộn g dựatrê ncơ sở của cấu trúc dữ liệu ngăn xếp (stack) với kiểu vào ra LIFO (last-in-first- outhayvàosauratrước)nổitiếng.

Queue (hàng đợi) là một kiểu dữ liệu phổ biến theo nguyên lý FIFO (first-in, first-out) Khi làm việc với Queue Interface, các queue cho phép thêm và lấy phần tử theo thứ tự nhập trước và có thể được triển khai bằng nhiều cấu trúc khác nhau như PriorityQueue (ưu tiên), ArrayDeque (deque hai đầu) hoặc các lớp dựa trên Collection Queue Interface kế thừa và đầy đủ các phương thức từ Collection Interface, cung cấp các thao tác cơ bản để xử lý hàng đợi: thêm hoặc gắn phần tử (add/offer), lấy và loại bỏ phần tử ở đầu (remove/poll), cùng xem phần tử ở đầu mà không loại bỏ (element/peek) Các lớp phổ biến của Queue trong Java bao gồm PriorityQueue và ArrayDeque, đồng thời còn có các triển khai khác tùy theo nhu cầu về hiệu suất và tính chất bổ sung như deque hai đầu.

 PriorityQueue:là1dạngqueuemàt r o n g đ ó c á c p h ầ n t ử tron gqueuesẽđượcsắpxếp.

 ArrayDeque:là1dạngd e q u e ( q u e u e 2 c h i ề u ) đ ư ợ c imp lementdựatrênmảng

Map( đ ồ t h ị / á n h x ạ ) l à k i ể u d ữ l i ệ u c h o p h é p t a q u ả n l ý d ữ l i ệ u theo dạngcặp key- value, trong đó keylà duyn h ấ t v à t ư ơ n g ứ n g v ớ i

1 keylàmộtgiátrị value.MapInterface cungcấpchotacácphươngthức để tương tác với kiểu dữ liệu như vậy Không giống như các interface ởtrên, Map Interface không kế thừa từ

Collection Interface mà đây là

 TreeMap:l àc l a s s t h ự c t h i g i a o d i ệ n M a p I n t e r f a c e v ớ i d ạ n g câyđỏ đen(Red-Blacktree)t r o n g đ ó c á c k e y đ ã đ ư ợ c s ắ p x ế p

C l a s s nàychophépthờigianthêm,sửa,xóavàtìmkiếm1phầntửtro ngMaplàtươngđươngnhauvàđềulàO(log(n))

 EnumMap:cũng là 1 Map class nữa, tuy nhiên các key trongMaplại làc á c e n u m c h ứ k h ô n g p h ả i o b j e c t n h ư c á c d ạ n g M a p c l a s s ở trên.

 WeakHashMap:tương tự như HashMap tuy nhiên có 1 điểmkhácb i ệ t đ á n g c h ú ý l à c á c k e y t r o n g M a p c h ỉ l à c á c W e a k r e f e r e n c e (hayW e a k k e y ) , c ó n g h ĩ a l à k h i p h ầ n t ử s ẽ b ị x ó a k h i k e y đ ư ợ c g i ả i phónghaykhôngcònmộtbiếnnàothamchiếuđếnkeynữa.

Quan hệ kế thừatrong Java

Is-A là mối quan hệ kế thừa trong lập trình hướng đối tượng Khi bạn kế thừa từ một lớp hiện có, bạn có thể tái sử dụng các phương thức và trường của lớp cha, đồng thời thêm các phương thức mới và trường cho lớp con Loại kế thừa này đại diện cho mối quan hệ Is-A giữa các lớp, cho phép lớp con mở rộng chức năng dựa trên đặc điểm của lớp cha và duy trì tính nhất quán trong hệ thống.

Tổngquanvềmạngmáytính

Mạng máy tính hay hệ thống mạng (Computer Network hoặc Network System) là sự kết hợp giữa các máy tính với nhau thông qua các thiết bị nối kết mạng và các phương tiện truyền thông, bao gồm giao thức mạng và môi trường truyền dẫn, theo một cấu trúc nhất định để các máy tính ngày nay có thể trao đổi thông tin với nhau.

Cótấtcảcáctrạmđượckếtnốivớimộtt h i ế t b ị t r u n g t â m c ó nhiệmv ụ n h ậ n t í n h i ệ u t ừ c á c t r ạ m v à c h u y ể n đ ế n t r ạ m đ í c h T ù y t h e o yêuc ầ u t r u y ề n t h ô n g t r ê n m ạ n g m à t h i ế t b ị t r u n g t â m c ó t h ể l à h u b , switch,rout erhay máychủtrungtâm.Vai trò củat h i ế t b ị t r u n g t â m l à thiếtlậpcácliênkếtPoint–to–Point.

 Ưuđiểm:Thiết lậpmạngđơn giản,d ễ d à n g c ấ u h ì n h l ạ i mạng(thêm,bớtcáctrạm),dễdàngkiểmsoátvàkhắcphụcsự cố,tậndụngđượctốiđatốcđộtruyềncủađườngtruyềnvậtlý.

 Khuyếtđiểm:Độ dàiđ ư ờ n g t r u y ề n n ố i m ộ t t r ạ m v ớ i t h i ế t bị trung tâmbịhạn chế( b á n k í n h k h o ả n g 1 0 0 m v ớ i c ô n g n g h ệ hiệnnay).

Có tất cả các trạm phân chia trên một đường truyền chung (bus).Đườngtruyềnchínhđượcgiớihạnhaiđầubằnghaiđầunốiđặcbiệtgọi làt e r m i n a t o r M ỗ i t r ạ m đ ư ợ c n ố i v ớ i t r ụ c c h í n h q u a m ộ t đ ầ u n ố i c h ữ T (T - c o n n e c t o r ) h o ặ c m ộ t t h i ế t b ị t h u p h á t ( t r a n s c e i v e r ) M ô h ì n h m ạ n g BushoạtđộngtheocácliênkếtPoint–to–MultipointhayBroadcast.

 Khuyết điểm:Tính ổn định kém, chỉ một nút mạng hỏng làtoànbộmạngbịngừnghoạtđộng.

Tính i ệ u đ ư ợ c t r u y ề n đ i t r ê n v ò n g t h e o m ộ t c h i ề u d u y n h ấ t M ỗ i trạm của mạng được nối với nhau qua một bộ chuyển tiếp (repeater) cónhiệmv ụ n h ậ n t í n h i ệ u rồ i c h u y ể n t i ế p đ ế n t r ạ m k ế t i ế p t r ê n v ò n g N h ư v ậytínhiệuđượclưuchuyểntrênvòngtheomộtchuỗiliêntiếpcácliênkếtPoi nt–to–Pointgiữacácrepeater.

 Ưu điểm:Mạng hình vòng có ưu điểm tương tự như mạnghìnhsao.

 Khuyết điểm:Một trạm hoặc cáp hỏng là toàn bộ mạng bịngừng hoạt động, thêm hoặc bớt một trạm khó hơn, giao thức truynhậpmạngphứctạp.

LAN (Local Area Network - mạng cục bộ) là một mạng riêng được triển khai trong một tòa nhà hoặc khu vực nhỏ như trường học hay cơ quan, với phạm vi chỉ vài kilômét Nó kết nối các máy chủ và máy trạm để chia sẻ tài nguyên và trao đổi thông tin giữa các thiết bị trong văn phòng một cách nhanh chóng LAN có ba đặc điểm chính: (1) Tốc độ truyền dữ liệu cao và độ trễ thấp; (2) Phạm vi địa lý hạn chế và dễ quản lý bảo mật; (3) Khả năng tập trung chia sẻ tài nguyên như máy in, thư mục và ứng dụng cho người dùng trong khu vực.

Giới hạn về tầm cỡ phạm vi hoạt động từ vài mét cho đến 1 km.Thườngdùngkỹthuậtđơngiảnchỉcóm ột đườngdâycáp ( ca b le) nốit ấ t c ả m á y V ậ n t ố c t r u y ề n d ữ l i ệ u t h ô n g t h ư ờ n g l à 1 0 M b p s , 1

 Mạngb u s h a y m ạ n g t u y ế n t í n h C á c m á y n ố i n h a u m ộ t c á c h l i ê n tục thành một hàng từ máy này sang máy kia Ví dụ của nó là Ethernet(chuẩnIEEE802.3).

 Mạng vòng Các máy nối nhau như trên và máy cuối lại được nốingượct r ở l ạ i v ớ i m á y đ ầ u t i ê n t ạ o t h à n h v ò n g k í n T h í d ụ m ạ n g v ò n g thẻbàiIBM(IBMtokenring).

MAN( m e t r o p o l i t a n a r e a n e t w o r k ) , h a y c ò n g ọ i l à " m ạ n g đ ô t h ị " , làmạngcócỡlớnhơnLAN,phạmvivàikm.Nócóthểbaogồmnhóm các8 v ă n p h ò n g g ầ n n h a u t r o n g t h à n h p h ố , n ó c ó t h ể l à c ô n g c ộ n g h a y tưnhânv àcóđặcđiểm:

 Có thể hỗ trợ chung vận chuyển dữ liệu và đàm thoại, hay ngay cảtruyềnhình.

Ngàynayngười ta có thểdùngkỹthuật cápquangđểt r u y ề n t í n hiệu.Vậntốccóhiệnnaythểđạtđến10Gbps.

WAN (Wide Area Network) hay mạng diện rộng là hệ thống mạng đủ lớn để kết nối các địa điểm ở xa nhau, từ hàng trăm đến vài ngàn kilômét, gồm các liên kết truyền thông và nhóm thiết bị định tuyến giúp dữ liệu di chuyển giữa các khu vực khác nhau Các máy này thường được gọi là máy lưu trữ (host) hoặc máy chủ, máy đầu cuối, nơi chạy các chương trình phục vụ người dùng ở nhiều vị trí khác nhau Các mạng WAN được hình thành từ các mạng truyền thông và mạng con (subnet), nhằm liên kết các mạng riêng lẻ thành một hệ thống thông suốt và có thể mở rộng để đáp ứng nhu cầu kết nối toàn cầu.

Nhiệmvục ủ a m ạ n g c o n l à c h u y ể n t ả i cácthôngđiệp(message)từmáyc hủnàysangmáychủkhác.

MôhìnhmạngOSI

MôhìnhOSI(OpenSystemsI n t e r c o n n e c t i o n R e f e r e n c e M o d e l , viếtn g ắ n l à O S I M o d e l h o ặ c O S I R e f e r e n c e M o d e l ) - t ạ m d ị c h l à m ô hìnhthamchiếukếtnốicáchệthốngmở- làm ộ t t h i ế t k ế d ự a v à o nguyên lý tầng cấp, lý giải một cách trừu tượng kỹ thuật kết nối truyềnthôngg i ữ a c á c m á y v i t í n h v à t h i ế t k ế g i a o t h ứ c m ạ n g g i ữ a c h ú n g

Figure 8:Mô hình mạng OSITườngtrìnhcáctầngcấpcủamẫuhìnhO

 Tầngvậtlý (PhysicalLayer): Tầng vậtl ý đ ị n h n g h ĩ a t ấ t c ả c á c đặct ả v ề đ i ệ n v à v ậ t l ý c h o c á c t h i ế t b ị T r o n g đ ó b a o g ồ m b ố t r í c ủ a cácchâncắm(pin),cáchiệuđiệnthế,vàcácđặctảvềcápnối(cable).

LinkLayer):T ầ n g l i ê n k ế t d ữ l i ệ u cungc ấ p c á c p h ư ơ n g t i ệ n c ó t í n h c h ứ c n ă n g v à q u y t r ì n h đ ể t r u y ề n d ữ liệug i ữ a c á c t h ự c t h ể m ạ n g ( t r u y c ậ p đ ư ờ n g t r u y ề n , đ ư a d ữ l i ệ u v à o mạng),pháthiệnvàcó thểsửachữacáclỗitrongtầngvậtlýnếucó.

 Tầngm ạ n g ( N e t w o r k L a y e r ) : T ầ n g m ạ n g c u n g c ấ p c á c c h ứ c n ă n g và quy trình cho việc truyền các chuỗi dữ liệu có độ dài đa dạng, từ mộtnguồnt ớ i m ộ t đ í c h , t h ô n g q u a m ộ t h o ặ c n h i ề u m ạ n g , t r o n g k h i v ẫ n d u y trìchấtlượngdịchvụ(qualityofservice)màtầnggiaovậnyêucầu.

 Tầng giao vận (Transport Layer): Tầng giao vận cung cấp dịch vụchuyênd ụ n g c h u y ể n d ữ l i ệ u g i ữ a c á c n g ư ờ i d ù n g t ạ i đ ầ u c u ố i , n h ờ đ ó cáct ầ n g t r ê n k h ô n g p h ả i q u a n t âm đ ế n v i ệ c c u n g c ấp d ị c h v ụ t r u y ề n d ữliệuđángtincậyvàhiệuquả.

 Tầng phiên (Session layer): Tầng phiên kiểm soát các (phiên) hộithoạig i ữ a c á c m á y t í n h T ầ n g n à y t h i ế t l ậ p , q u ả n l ý v à k ế t t h ú c c á c k ế t nốigiữatrìnhứngdụngđịaphươngvàtrìnhứngdụngởxa.

 Tầng trình diễn (Presentation layer): Lớp trình diễn hoạt động nhưtầngdữliệutrênmạng.Lớpnàytrênmáytínhtruyềndữliệulàmnhi ệmvụd ị c h d ữ l i ệ u đ ư ợ c g ử i t ừ t ầ n g A p p l i c a t i o n s a n g d ạ n g F o m a t c h u n g Vàtạimáytínhnhận,lớpnàylạic h u y ể n t ừ F o m a t c h u n g s a n g đ ị n h dạngcủatầngApplication.

 Tầngứngdụng(Applicationlayer):Tầngứ n g d ụ n g l à t ầ n g g ầ n vớ i người sử dụng nhất.N ó c u n g c ấ p p h ư ơ n g t i ệ n c h o n g ư ờ i d ù n g t r u y nhậpc á c t h ô n g t i n v à d ữ l i ệ u t r ê n m ạ n g t h ô n g q u a c h ư ơ n g t r ì n h ứ n g dụng Tầng này là giao diện chính để người dùng tương tác với chươngtrìnhứng.

Giaothứctruyềnthông

Giaot h ứ c t r u y ề n t h ô n g ( C o m m u n i c a t i o n p r o t o c o l ) h a y G i a o t h ứ c liênm ạ n g , G i a o t h ứ c t r u y ề n t h ô n g , G i a o t h ứ c t r a o đ ổ i t h ô n g t i n - t r o n g côngn g h ệ t h ô n g t i n g ọ i t ắ t l à g i a o t h ứ c ( p r o t o c o l ) - l à m ộ t t ậ p h ợ p c á c quytắcchuẩndànhchoviệcbiểudiễndữliệu,pháttínhiệ u,chứngthựcvàpháthiệncáclỗidữliệu.Đólànhững việcrấtcầnthiết đểg ửithôngtinq u a c á c k ê n h t r u y ề n t h ô n g , n h ờ đ ó m à c á c t h i ế t b ị c ó t h ể k ế t n ố i v à traođổithôngtinvớinhau.

Cácgiaothứcdùng choviệctruyềnt h ô n g t i n t í n h i ệ u s ố t r o n g mạngmáytínhcónhiềutínhnăngđểđảmbảo việctr a o đổidữliệumột cácđángtincậytquamộtkênhtruyềnthôngkhônghoànhảo.

Cóc á c m ô h ì n h g i a o t h ứ c m a n g t í n h l ý t h u y ế t , đ ư ợ c n g à n h c ô n g nghệ thông tin tôn trọng một cách tương đối như mô hình OSI Cũng cónhữnggiaothứcđượctriểnkhaivàứngdụngrộngrãin h ư T C P , I P , HTTP,FTP,SMTP,POP3

 TCP(TransmissionControlProtocol):thiếtlậpkếtn ố i g i ữ a c á c máyt ínhđểtruyềndữ liệu.Nóchia nhỏdữliệura thànhn h ữ n g g ó i (packet)vàđảmbảoviệctruyềndữliệuthànhcông.

 IP(InternetProtocol):địnhtuyến( r o u t e ) c á c g ó i d ữ l i ệ u k h i c húngđ ư ợ c t r u y ề n q u a I n t e r n e t , đ ả m b ả o d ữ l i ệ u s ẽ đ ế n đ ú n g n ơ i c ầ n nhận.

 HTTP (HyperText Transfer Protocol): cho phép trao đổi thông tin(chủyếuởdạngsiêuvănbản)quaInternet.

 SMTP(SimpleMailTransferProtocol): chophépgởic á c t h ô n g điệpthưđiệntử(e-mail)quaInternet.

 POP3(PostOfficeProtocol,phiênbản3):c h o p h é p n h ậ n c á c thôn gđiệpthưđiệntửquaInternet.

 WAP (Wireless Application Protocol): cho phép trao đổi thông tingiữacácthiếtbịkhôngdây,nhưđiệnthoạidiđộng.

Websocket là công cụ hỗ trợ việc kết nối qua lại trên internet giữaclient và server Giúp diễn ra nhanh chóng và hiệu quả hơn thông qua việcsửd ụ n g

T C P s o c k e t K h ô n g c h ỉ s ử d ụ n g r i ê n g c h o ứ n g d ụ n g web,Websocket cóthểá p d ụ n g chob ấ t kìứ n g dụngn à o khác c ầ n c ó sự traođổi thông tin trênInternet. ƯuđiểmcủaWebsocketlàgì?

Websocketmang lại nhiều ưu điểm trong việc kết nối giữa client vàserver.Cụthể như sau:

 Dễ pháthiệnvàxử lýtrong trườnghợp cólỗi xảyra

 Dễ dàng sử dụng, không cần cài đặt thêm các phần mềm bổ sungkhác

 Khôngcần sử dụngnhiềuphươngphápkết nốikhác nhau

Một số nhược điểm củaWebsocketmà bạn cần lưu ý khi sử dụng cóthể kểđến như:

 Với các dịch vụ có phạm vi yêu cầu, Websocket chưa hỗ trợ hoàntoàn.

5 WedRTC Đây là các API viết bằng JavaScript, đáp ứng mong muốn giao tiếpthời gian thực Nhờ đó, bạn không cần dùng đến Plugin hay phần mềm hỗtrợ.

Công cụ tích hợp trình duyệt kết nối real – time thông qua VideoCall, Voice Call hay transfer data P2P (peer-to-peer) Ngay từ khi ra đời,ứngdụng đãđượccáclậptrình viênrấtưachuộng.

WebRTC nổi bật với khả năng truyền tải video, âm thanh và dữ liệu giữa hai hoặc nhiều thiết bị Quá trình trao đổi diễn ra trực tiếp và thời gian thực, giúp các kết nối giao tiếp trở nên nhanh chóng và mượt mà Đồng thời, WebRTC không đòi hỏi các bên trung gian hay cài đặt plugin bổ sung, mang lại trải nghiệm liền mạch và tối ưu cho các ứng dụng truyền thông thời gian thực.

WebRTC giúpviệc tươngtácdiễnra chínhxác trongthờigian thực

Appear.in là một trong những nền tảng WebRTC nổi tiếng, cung cấp dịch vụ tạo phòng chat video nhanh chóng và cho phép người dùng sử dụng mà không cần đăng nhập tài khoản.

Ngoài ra, tính ứng dụng còn được thể hiện rõ trong việc tạo ra các tựa game trên trình duyệt, nhờ đó trải nghiệm của người chơi và khả năng tương tác trở nên thuận tiện, thú vị hơn rất nhiều Ưu điểm nổi trội đến từ WebRTC là giải pháp tối ưu cho kết nối mạng của trò chơi trực tuyến trên trình duyệt, giảm thiểu độ trễ, tăng tính đồng bộ và phản hồi nhanh, từ đó nâng cao trải nghiệm người dùng và sức hút của các tựa game trên web.

Không khó để bạn nhận ra những ưu điểm nổi trội đến từ WebRTClàgì.Nhữngđiềunàyđãgiúp côngcụkhẳng định vịthế riêngmình.

- Hình thức mã nguồn mở miễn phí: Google cho biết đây làcông cụ truyền thông thời gian thực hoàn toàn không mất phí Bạnluônthấy sự xuấthiệnsẵnsàng trênmọi trìnhduyệt.

Hỗ trợ đa nền tảng: dù vẫn đang ở giai đoạn phát triển, hệ thống hoạt động tốt trên mọi trình duyệt và mọi hệ điều hành, giúp tiếp cận người dùng ở nhiều nền tảng khác nhau Điều này cho phép lập trình viên viết mã HTML để đảm bảo tương thích và làm việc hiệu quả với cả máy tính để bàn lẫn thiết bị di động, tối ưu hóa trải nghiệm người dùng và tăng khả năng mở rộng của dự án.

WebRTC ensures secure audio and video by using the Secure Real-Time Transport Protocol (SRTP), which encrypts and authenticates media data to protect the confidentiality and integrity of real-time communications Whether you're streaming video or making voice calls, SRTP helps guard against eavesdropping and other unauthorized access to the media streams.

Không cần plugin hoặc phần mềm hỗ trợ ngay từ đầu quá trình tìm hiểu; công cụ được đánh giá cao nhờ khả năng linh hoạt vượt trội, mang đến cho người dùng trải nghiệm tiện lợi và tối ưu tốc độ cùng tiết kiệm chi phí.

Tuyđượcđánh giá caonhưngcôngcụvẫntồntạinhượcđiểmnhấtđịnh.Bạncũngnênlưu ý đểphòng ngừasự cố,bất tiện,…

 Không có cơ chế báo hiệu cài sẵn khi ứng dụng tạo kết nối P2P giữacác trình duyệt.

 Chưa chính thức đi vào hoàn thiện, trong số đó có IE, Safari chưathựcsựđượchỗ trợtốt nhất.

 Giữa các trình duyệt thiếu tính thống nhất được chuẩn video sử dụngchoWebRTC.

 Số lượng hàm API cho mỗi trình duyệt là khác nhau, tăng rủi ro phátsinh lỗi.

Dù vẫn còn tồn tại một số nhược điểm, hãy kiên nhẫn chờ đợi những cải tiến trong tương lai Khi mọi mặt được hoàn thiện, công cụ này hứa hẹn trở thành một trợ thủ đắc lực, mang lại hiệu quả vượt trội cho người dùng.

Trongchươngnàychúng ta sẽphân tích cácy ê u c ầ u c ủ a đ ề t à i nhưv i ệ c t ó m t ắ t h o ạ t đ ộ n g c ủ a h ệ t h ố n g m à d ự á n s ẽ đ ư ợ c ứ n g d ụ n g , phạmviứngdụngcủađềtàivàđốitượngsử dụng,m ụcđíchcủadựán.Xácđịnhyêucầucủangườidùng:Xuấtpháttừyêucầucủa ngườidùngsaoc h o p h ù h ợ p đ ể v ạ c h r a đ ư ợ c y ê u c ầ u h ệ t h ố n g c ầ n x â y d ự n g n h ư việcthiếtkếgiaodiện,yêucầuvềchứcnăng,quyềnriêngtưvàyêuc ầuvềđ ộ b ả o m ậ t T ro n g c h ư ơ n g n à y c h ú n g t a đ i x â y d ự n g m ộ t số b i ể u đ ồ U seCase,biểu đồhoạtđộngcủacácchứcnăngtronghệthốngvàthôngtincơsở dữliệucủaứngdụng.

Phântíchyêu cầuđề tài

1.1 Tóm tắt hoạt động của hệ thống mà dự án sẽ được ứngdụng:

 làm ộ t ứ n g d ụ n g p h ò n g ả o đ ư ợ c d ù n g đ ể g i ú p n g ư ờ i d ù n g g i a o tiếpvớinhauquaInternet,theotruyềnthốngchỉtrongvănbảnđ ơngiản,nócóthểchuyểnthôngtintheonhiềucáchchophéptruyềntải hìnhảnhvàbiểutượngcảmxúctrongmộtđoạnchat.

 Được cập nhật nângc ấ p , c h ỉ n h s ử a , t h a y t h ế c á c c h ứ c n ă n g t h e o gópýcủangườidùng.

 Ngườidùng:từứngdụng,ngườidùngcóthển h ắ n t i n c h i a s ẻ thông tin qua về với nhau giữa người dùng và người dùng, thay thế cùngdùngnhữngchứcnăngcótrongứngdụngđãđượcxâydựng.

Mục đíchxây dựng

Xác định yêu cầucủangười dùng

Hiệnt ạ i c h a t r o o m đ a n g đ ư ợ c s ử d ụ n g m ộ t c á c h d ễ d à n g v à h ữ u dụ ngv ớ i n g ư ờ i d ù n g N g ư ờ i d ù n g n h ắ n t i n q u a l ạ i t r a o đ ổ i t h ô n g t i n cùngnhaut r ò c h u y ệ n h a y l à m những đ i ề u k h á c m à t ừ n h ữ n g chức n ă n g h ệ thống cung cấp Chuyển thông tin đi một cách nhanh chóng và khônggặpcácvấnđềkhác.

Yêu cầugiaodiện

4.1 Giao diện ngườidùng:Phảicómộtgiaodiệ nđơngiản

Biểu đồ phân tíchthiết kế hệ thống

Thiếtkế giaodiệnvà chứcnăng

 Giaod i ệ n n à y d ù n g đ ể q u ả n l ý v à h i ể n t h ị t ấ t c ả t h ô n g t i n c ủ a ngườidùng Hiển thịmộtgiaodiệnđơngiản, dễ sửdụngt ừ đ ó n g ư ờ i dùngdễtiếpcậnvàđểlạiấntượngtốt.

 Giao diện này được thiết lập để kết nối người dùng, liên kết ngườidùng vào phòng chat qua port đã thiết lập ở Server Frame, sau đó đặt têntheoýngườidùngvàthamgia.

 Saukhi haingười dùng đã đồng ýk ế t n ố i v ớ i n h a u s ẽ x u ấ t h i ệ n giaodiệnmessengernhưởhìnhtrên.

KẾTLUẬN Đề tài “Xây dựng ứng dụng chat room sử dụng giao thức socketUDP”t h ự c r a đ ư ợ c t ạ o r a n h ằ m h i ể n t h ị m ộ t ứ n g d ụ n g n h ỏ v à c ơ b ả n nhấtđ ể t ạ o n ê n m ộ t n ề n t ả n g c h a t r o o m l ớ n v à h o à n h ả o h ơ n , đ ể c h o thấysựcầnthiếtvàtiệndụngtớivớingườidùngkhinóđượctạora.

Mặcdùđãcónhiềusựcốgắng,tìmh i ể u k i ế n t h ứ c đ ã h ọ c t ừ giảngviênl ànhữngngườiđitrướcsongsongđókết hợptracứucác tàiliệut r ê n c á c p h ư ơ n g t i ệ n t r u y ề n t h ô n g v à c á c t r a n g m ạ n g n h ư n g d o h ạ n chếv ề m ặ t t h ờ i g i a n , k h ả n ă n g v à k i n h n g h i ệ m n ê n k h ô n g t r á n h k h ỏ i nhữngthiếusótn hấtđịnhnênđềtàihoànthànhởmứcđộ:

Khóa học này tập trung tìm hiểu kiến thức cơ bản về mạng máy tính và các khái niệm về socket để từ đó xây dựng một ứng dụng thực tế, điển hình là chatroom sử dụng giao thức UDP Bài viết trình bày cách triển khai các thành phần socket UDP, cách gửi nhận dữ liệu qua mạng và các yếu tố tối ưu hóa hiệu suất cho một ứng dụng chat mạng, giúp người đọc nắm được quy trình thiết kế và triển khai một hệ chat trên nền tảng mạng máy tính Để hoàn thành đề tài, em xin gửi lời cảm ơn chân thành tới thầy giáo TS Hoàng Hữu Đức, người đã quan tâm, động viên và giúp đỡ nhóm em hoàn thành bài nghiên cứu một cách tốt nhất Em xin chân thành cảm ơn!

Ngày đăng: 25/12/2022, 23:10

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w