Bài giảng Lập trình mạng - Phùng Hữu Phú

pdf 144 trang hoanguyen 3192
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình mạng - Phùng Hữu Phú", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_mang_phung_huu_phu.pdf

Nội dung text: Bài giảng Lập trình mạng - Phùng Hữu Phú

  1. MônMôn hhọọcc LLậậpp trìnhtrình mmạạngng CBGD:CBGD: PhùngPhùng HHữữuu PhúPhú Email:Email: phu@dit.hcmut.edu.vn URL:URL:
  2. Nội dung môn học CHƯƠNG 1: GII THINU VH TCP/IP CHƯƠNG 2: THIFT KF GI6I THUT CHO CHƯƠNG TRÌNH CLIENT/SERVER CHƯƠNG 3: LP TRÌNH M4NG TRÊN CÁC MÔI TRUNG PHV D`NG CHƯƠNG 4: LP TRÌNH M4NG VI JAVA Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 1
  3. Nội dung môn học(tt) CHƯƠNG 5: LP TRÌNH WEB – CGI CHƯƠNG 6: LP TRÌNH WEB VI CÁC CÔNG NGHN PHV BIFN CHƯƠNG 7: NG D`NG XML TRONG LP TRÌNH M4NG CHƯƠNG 8: B6O MT D LINU TRUYHN Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 2
  4. CHƯƠNG 1-GII THINU VH TCP/IP 1.1 TWng quát vI TCP/IP. GiithiOu Lp Network Lp Transport (TCP và UDP) Lp Appication 1.2 Cácgiaothcvàdch va trên Internet. 1.3 GiithiOumtsSng dang m5ng Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 3
  5. TWng quát vI TCP/IP •Mộtsốđặc tính : – Độclậpvề hình thái củamạng. – Độclậpvề phầncứng củamạng. –Cácchuẩngiaothứcmở. –Môhìnhđịachỉ toàn cầu. –Nềntảng client/server mạnh mẽ. –Cácchuẩnvề giao thức ứng dụng mạnh mẽ. Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 4
  6. GiithiOu OSI TCP/IP Application Applications layer Telnet FTP SMTP DNS SNMP Presentation Session Transport layer TCP UDP Transport (host level) ICMP Internet layer Network (gateway level) ARP IP Data link Network Ethernet Token Ring FDDI WANs Physical interface layer Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 5
  7. TCP/IP and OSI model Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 6
  8. TCP/IP Protocol Stack 55.,943 . 33 6:I333 /! O: ;# .. /. ;a .4 3$¬& /'3$ %7,385479 + , /! O: $!, .. O 9S3$ ;# .:3$ .95 ;O. 97: .5 253$ .4 .. 3$ /a3$ 9/3$ 6:,9¬ ;O3 $84.309 096473 %72 8¬&3$ .4 5,.309 933 . $4E. .. 9G9 - $,4 9G5 253$ 97?3 29 2 9@3 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 7
  9. Những điểm khác giữa OSI và TCP/IP •Lớp ứng dụng trong TCP/IP xử lý các chức năng củacáclớp 5,6, và 7 trong mô hình OSI •Lớp transport trong TCP/IP cung cấpcơ chế UDP truyềndữ liệu không tin cậy, khác vớilớp transport trong mô hình OSI là luôn đảmbảodữ liệutruyềntin cậy Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 8
  10. TCP/IP • TCP/IP là mộttậpcủa các protocols (một bộ giao thức) định nghĩacáchthứctruyền dữ liệu qua môi trường Internet • TCP/IP là tên củamôhìnhmạng được ghép giữa hai giao thức chính trong mạng là TCP (Transmission Control Protocol) và IP (Internet Protocol) Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 9
  11. TCP/IP và mạng Internet •Một liên mạng(internet) dùng TCP/IP được xem như là mộtmạng đơnkếtnốicácmáy tính vớinhiềuloại •Mạng Internet là sự kếtnỗigiữacácmạng vật lý độclập thông qua các thiếtbị liên mạng •Với mô hình TCP/IP, các mạng khác nhau kết nốivới nhau được xem như là mộtmạng lớn đồng nhất, không quan tâm đếnsự khác nhau giữacácthiếtbị vật lý hay môi trường •Mỗimáykếtnốivàomạng xem như kếtnối đếnmộtmạng luận lý, không quan tâm đến mạng vậtlý Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 10
  12. An Internet according to TCP/IP McGraw-Hill ©The McGraw-Hill Companies, Inc., 2001 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 11
  13. TCP/IP và OSI • TCP/IP đượcxâydựng trướcmôhìnhOSI nên các lớp trong bộ giao thức TCP/IP không hoàn toàn giống vớibộ giao thức trong mô hình OSI. Có 4 lớp trong mô hình TCP/IP • Ở lớp transport, TCP/IP định nghĩa hai protocol là TCP và UDP. Ở lớp network, protocol chính là IP và có các protocol khác hỗ trợ việctruyềndữ liệu • Ở lớp physical & data link, TCP/IP không định nghĩa protocol nào, không phụ thuộc vào phần cưng bên dưới •Mộtmạng trong một liên mạng TCP/IP có thể là mạng LAN, MAN hoặcWAN. Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 12
  14. Đóng gói dữ liệu trong TCP/IP 1. Đơnvị dữ liệu trong lớp ứng dụng gọilà message 2. Giao thức TCP và UDP tạoramột đơnvị dữ liệutương ứng là segment và user datagram. 3. Đơnvị dữ liệu trong lớpIP đượcgọilà datagram 4. Datagram phải được đóng gói (encapsulate) trong một frame để truyềntrênmạng vậtlý 5. Frame sẽđượctruyền theo dạng tín hiệutrên đường truyềnvậtlý Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 13
  15. Đóng gói dữ liệu trong TCP/IP Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 14
  16. LớpNetwork •Nội dung: –Lớp Internet – Địachỉ IP –Cácđánh địachỉ, phân mạng con – Các giao thứcphụ trong lớp Network Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 15
  17. Lớp Internet • Mô hình TCP/IP cung cấpgiaothức liên mạng (internetwork protocol -IP), là mộtcơ chế truyềndữ liệukhôngtin cậy và không kếtnối (connectionless) • Các giao thứchỗ trợ cho việctruyềndữ liệu bao gồm: ARP, RARP, ICMP và IGMP. Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 16
  18. Internetwork Protocol (IP) •Giaothức IP không tin cậy (unreliable) vì không cung cấpcơ chế kiểmtralỗi hay tracking. •IP xemnhư lớp bên dướisẽ thựchiệnviệc truyềnnhậnmộtcáchtốtnhất, không có sự đảmbảo •Nếucácdịch vụ cầncơ chế truyềntin cậy thì kếthợpvớigiaothứctin cậyTCP. •Tương tự như hệ thống bưu điện Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 17
  19. IP (tt) •IP cắtdữ liệu ra thành các gói. các gói gọilà datagrams, và mỗi gói được truyền độclập • Datagram có thểđi theo các đường khác nhau và có thểđến không đúng thứ tự hoặc trùng nhau. IP không giữ thông tin đường đicũng như không sắpxếplại các gói lại khi chúng đến •IP làmộtdịch vụ connectionless, nó không khởi tạo Virtual Circuits và không có sự thông báo đến phầntử nhận Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 18
  20. Datagram Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,1 92001
  21. IP Datagram • Version. Version number of IP current version is 4 (0100 in binary). • HLEN. Header length. The HLEN field defines the length of the header in multiple of 4 bytes ( 0 – 15 # maximum 60 bytes) • Service type. The service type field defines how the datagram should be handled. It includes bits that define the priority of the datagram. • Total length. The total length field defines the total length of the IP datagram. It is a two-byte field (16 bits) and can define up to 65,535 bytes • Identification. The identification field is used in fragmentation. A datagram, when passing through different networks, may be divided fragments to match the network frame size. When this happens, each fragment is identified with a sequence number in this field. Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 20
  22. IP Datagram (cont.) • Flags. The bits in this field deal with fragmentation • Fragmentation offset. A pointer that shows the offset of the data in original datagram • Time to live. The time to live field defines the number of hops a datagram can travel before it is discarded. • Protocol. Defined which upper-layer protocol (TCP, UDP, ICMP ) • Header checksum. Check the integrity of the header • Option. Give more functionality to the IP datagram, can control routing, timing, management and alignment Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 21
  23. IP Fragmentation and Reassembly length ID fragflag offset =4000 =x =0 =0 One large datagram becomes several smaller datagrams length ID fragflag offset =1500 =x =1 =0 length ID fragflag offset =1500 =x =1 =1480 length ID fragflag offset =1040 =x =0 =2960 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 22
  24. Địachỉ IP •Làđịachỉ luận lý trong mạng để xác định địachỉ củacácmáytrongmạng (ngoài địa chỉ vật lý) cho việctruyềnnhậndữ liệu • Địachỉ IP có 32 bit nhị phân chia ba phần: class type, netid, hostid Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 23
  25. Phân lớp địachỉ Để xác định netid (Network Identifier) và hostid (Host Identifier) Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 24
  26. Addressing–Dotted-decimal notation • Để biểudiễn ở dạng ngắnhơnvàdễđọc, địa chỉ IP được chia thành dạng 4 phần x 8 bit, cách nhau bằng dấuchấm, mộtphần được biểudiễn theo giá trị thập phân Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 25
  27. Class Ranges of Internet Addresses Lậptrìnhmạng–Chương 1 McGraw-Hill© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,26 2001
  28. Examples What is the class of each of the following addresses? A. 10011101 10001111 11111110 11001111 B. 01111011 11110000 10101010 11110000 C. 11110101 10001111 11111110 11001111 Write each of following in dotted-decimal notation: A. 10011101 10001111 11111100 11001111 B. 11011101 10001111 11111101 00001111 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 27
  29. Solutions • Classes identify A. Class B B. Class A C. Class E • Dotted-decimal notation A. 157.143.252.207 B. 221.143.253.15 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 28
  30. Mộtsốđịachỉ IP đặcbiệt Maximum number of unique addresses in each class Class A 2^7 – 2 = 126 Class B 2^14 – 2 = 16,382 Class C 2^21 – 2 = 2,097,150 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 29
  31. Mộtmáyvới nhiều địachỉ • Địachỉ IP định nghĩachomỗikếtnối đến mộtmạng •Mộtphầntử mạng có nhiềukếtnối đếncác mạng khác nhau ( ví dụ như router) phảicó các địachỉ IP tương ứng vớimạng đó •Mộtmáycómộtgiaotiếpmạng cũng có thể định nghĩa nhiều địachỉ IP, tuỳ theo nhu cầu Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 30
  32. A Sample Internetnetwork Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,3 12001
  33. Subneting Hình minh hoạ mộtmạng có hai lớpphâncấp Lậptrìnhmạng–Chương 1 McGraw-Hill© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,32 2001
  34. Subneting • Không có subnetting, địachỉ có 2 lớp (bao gồm netid và hostid) không hiệuquả, không thể có nhiềumạng vậtlý •Với mô hình này, các máy không thể tổ chức thành các nhóm và cùng mộtmức. Điều này rất khó cho việcquảnlýđốivớicácmạng có nhiều máy • Phân mạng con (subnetting) là giải pháp cho vấn đề này, là sự chia mộtmạng lớn thành các mạng nhỏ hơngọilàmạng con (subnetworks) Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 33
  35. Subneting Hình vẽ minh họamạng được chia thành 3 cấp Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,34 2001
  36. Addresses with and without Subnetting Lậptrìnhmạng–Chương 1 McGraw-Hill© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,35 2001
  37. Masking • Masking là cách để tính địachỉ vậtlýcủa mạng từđịachỉ IP, có thể tính kể cả mạng có phân mạng con hoặc không •Nếu có phân mạng con, masking sẽ lấy được địachỉ mạng từđịachỉ IP •Nếumạng đượcchiamạng con thì masking sẽ lấy được thông tin địachỉ củamạng con (subnetwork address) từđịachỉ IP Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 36
  38. Masking example Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 37
  39. Masks without Subneting • Depending on class • Following table show mask for unsubneted networks class mask Address (e.g.) Network address (e.g.) A 255.0.0.0 15.32.56.7 15.0.0.0 B 255.255.0.0 135.67.13.9 135.67.0.0 C 255.255.255.0 201.34.12.72 201.34.12.0 D N/A N/A N/A E N/A N/A N/A Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 38
  40. Masks with Subneting • Khi có chia mạng con thì mỗimạng con sẽ có mặtnạ mạng (mask) khác nhau • Examples: class mask Address (e.g.) Network address (e.g.) A 255.255.0.0 15.32.56.7 15.32.0.0 B 255.255.255.0 135.67.13.9 135.67.13.0 C 255.255.255.192 201.34.12.72 201.34.12.64 D N/A N/A N/A E N/A N/A N/A Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 39
  41. 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ậptrìnhmạ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
  42. 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ậptrìnhmạ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
  43. 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ậptrìnhmạ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
  44. 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ậptrìnhmạ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
  45. 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ậptrìnhmạ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
  46. 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 network host part part 11001000 00010111 00010000 00000000 200.23.16.0/23 Lậptrìnhmạ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
  47. 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ậptrìnhmạ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
  48. Các giao thức khác trong lớpnetwork • 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ậptrìnhmạ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
  49. ARP và RARP Vấn đề phân giải địachỉ • Hai giao thứcdùngđể phân giải địachỉ là ARP (Address Resolution Protocol) và RARP (Reverse ARP) – ARP dùng phân giải địachỉ IP 32 bits sang địa chỉ Ethernet 48 bits – RARP dùng phân giải địachỉ Ethernet 48 bits sang địachỉ IP 32 bits Lậptrìnhmạ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
  50. ARP và RARP • Địachỉ mạng (lớp Internet) và địachỉ MAC (lớp Network Interface) cầncósự chuyển đổi qua lại: –Lớp Internet gởidữ liệucholớp Network Interface, chỉ cung cấp địachỉ IP của máy nhận –Lớp Network Interface cần địachỉ MAC của máy nhận để truyền thông tin Lậptrìnhmạ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
  51. ARP và RARP Lậptrìnhmạ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
  52. Position of ARP and RARP in TCP/IP protocol suite Lậptrìnhmạ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
  53. ARP Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,52 2001
  54. ARP • Làgiaothức được dùng để hỏi địachỉ vậtlý mộtmáykhiđãbiết địachỉ IP •Cầncholớp Network Interface để đóng gói một Ethernet Frame •Khicần địachỉ vậtlý, máysẽ broadcast trên mạng để hỏi địachỉ vậtlýtương ứng với địachỉ IP, máy có địachỉ IP tương ứng sẽ reply thông tin Lậptrìnhmạ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
  55. Các thành phần chính trong ARP • ARP table: bảng thông tin đượclưutrữ trong bộ nhớ, nếu không tìm được thông tin trong bảng này thì phầntử gởisẽ broadcast ARP request để hỏi thông tin • ARP request: gởi broadcast để hỏi địachỉ vậtlý •ARP reply: gởilạimáyhỏi thông tin địachỉ IP củamáymình • ARP reply caching: lưu thông tin vào ARP table trong mộtkhoảng thời gian (5 phút) Lậptrìnhmạ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
  56. Phân giảingược địachỉ RARP • Dùng cho việc liên kếtgiữalớpNetwork Interface và lớp Internet •Sử dụng khi máy biết địachỉ Ethernet nhưng không biết địachỉ IP. Thường dùng trong các trường hợp: –Cáchệ thống diskless –Cáchệ thống JumpStartTM •Kèmvới các giao thức DHCP, BOOTP Lậptrìnhmạ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
  57. RARP operation Lậptrìnhmạ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
  58. RARP packet Lậptrìnhmạ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
  59. Lớp transport • Có hai dạng dịch vụ: – TCP (Transmission application transport Control Protocol) network data link network physical data link lo gnetwork physical – UDP (User Datagram dataic link a physicall e n network d Protocol) data link -e n physical network d data link t r a physical n s p network o rdata link tphysical application transport network data link physical Lậptrìnhmạ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
  60. Lớp transport • Cung cấpsự truyềnnhậnluậnlýgiữacác process ứng dụng giữa các máy trong mạng • Các giao thứclớp transport hoạt động ở các hệ thống đầucuối •Lớp transport so vớilớp network: – network layer: dữ liệutruyềnnhậngiữacáchệ thống – transport layer: dữ liệu đượctruyềnnhậngiữacác processes, dựatrêncácdịch vụ củalớp network và mở rộng mộtsố chứcnăng Lậptrìnhmạ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
  61. Lớp Transport •Lớp TCP/IP transport cung cấpcơ chế cho source process gởidữ liệu destination process qua mạng • Định nghĩamộttậpcáckếtnốimứckhái niệm cho các processes gọilàprotocol ports. Một protocol port là một điểm đích (buffer) dùng để lưudữ liệuchomột process cụ thể Lậptrìnhmạ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
  62. Transport layer •Việcquảnlýgiaotiếpgiữa các processes và các ports tương ứng đượchệđiều hành cung cấp • Các protocol lớp transport là port-to-port protocols, truyềndữ liệugiữa process gởi đên process nhận •Mỗi port đượcxácđịnh bằng mộtsố nguyên dương 16 bits nhị phân – 65,536 (0 to 65535) ports – Port 0? Lậptrìnhmạ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
  63. Lớp Transport •Mở rộng cách đánh địachỉ cho process. – Địachỉ port : xác định ứng dụng mạng trên mỗi máy. – Địachỉ củamột ứng dụng mạng (IP,port) Lậptrìnhmạ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
  64. Port Addresses Lậptrìnhmạng–Chương 1 McGraw-Hill© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,63 2000
  65. 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ậptrìnhmạ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
  66. 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 địachỉ port, điềukhiển lỗi checksum và độ dài thông tin length information •UDP chỉ cung cấpcácchứcnăng cơ bảnchocơ chế truyền end-to-end, không cung cấpcácchức năng xử lý lỗivàtruyềnlạidữ liệubị hỏng hoặc mất. •Cócơ chế báo lỗinếukèmvớigiaothứcICMP Lậptrìnhmạ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
  67. UDP Datagram Format Lậptrìnhmạng–Chương 1 McGraw-Hill© 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ©TheĐH Bách McGraw-Hill Khoa TP.HCM Companies, Inc.,66 2000
  68. Transmission Control Protocol (TCP) • Cung cấpcácdịch vụđầy đủ cho các ứng dụng • Làgiaothức port-to-port tin cậy, connection- oriented: kếtnốiphải đượcthiếtlậptrướckhidữ liệu được truyền •Khithiếtlậpkếtnối, TCP tạomộtmạch ảo(virtual circuit ) giữa bên gởi và bên nhận trong suốtquá trình truyềnnhận •Cósự thông báo khi truyềndữ liệu đếnphầntử nhận. Sau khi kết thúc việc truyềnnhậnthìđóng kếtnối Lậptrìnhmạ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
  69. TCP • IP và UDP xem các datagrams trong một single transmission là các đơnvị hoàn toàn độclập, không liên quan với nhau. Mỗi datagram đến phầntử nhậncũng là các đơnvị phân biệt, và không có sự thông báo cho phầntử nhận • Khác với IP và UDP, TCP là dịch vụ connection- oriented, cung cấpcơ chế truyềntin cậy cho toàn bộ stream chứa trong message mà ứng dụng gởi đi •Cơ chế truyềntin cậy đảmbảobằng việc cung cấpviệc phát hiệnlỗivàtruyềnlạinhững dữ liệu hỏng Lậptrìnhmạ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
  70. TCP • Khi truyềndữ liệu, TCP chia dữ liệu thành các đơnvị nhỏ hơngọi là segment. •Tất các các segment phải đượcnhận đủ và phản hồi (acknowledge) trướckhisự truyềnnhận hoàn thành và mạch ảo đượchủy •Mỗi segment có mộtsố tuầntự (sequencing number) để sắpxếplạisaukhinhậnkếthợpvới ACK ID number và field window-size cho cửasổ dịch (sliding window) • Các segments TCP truyền trên mạng đượcchứac trong các IP datagrams. Ở phầntử nhận, TCP nhậnmỗi datagram theo thứ tựđếnvàdựavào số tuầntựđểsắpxếplại Lậptrìnhmạ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
  71. TCP segment format Lậptrìnhmạ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
  72. 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ậptrìnhmạ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
  73. 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ậptrìnhmạ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
  74. Lớp ứng dụng Comparison between OSI and TCP/IP Lậptrìnhmạ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
  75. Lớp ứng dụng • Định nghĩa các giao thứcchocácứng dụng mạng •Nhìnở góc độ hệđiều hành, ứng dụng đượchiểunhư là các processes. Các giao thứclớp ứng dụng phải định nghĩacách thứcgiaotiếpgiữ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ệcphảithựcthi khimột process nhận hay truyềndữ liệu Lậptrìnhmạ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
  76. Lớp ứng dụng •Cácứng dụng mạng hoạt động theo mô hình client/server – Server : là phầntử thụđộng •Chờ yêu cầutừ client, xử lý và trả kếtquả cho client – Client : là phầntử chủđộng •Kếtnối đếnserver để gởiyêucầu. •Chờ nhậnkếtquả trả về và xử lý kếtquả. •Vấn đề quan trọng khi lậptrìnhcácứng dụng mạng là định nghĩagiaothứcgiữa client và server Lậptrìnhmạ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
  77. Lớp ứng dụng • User agent là giao tiếpgiữangườisử dụng và ứng dụng mạng.Mỗi ứng dụng mạng client phải có hiệnthựcviệcgiaotiếpgiữ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ưugiữ trạng thái giữacáclầnkếtnối (request/response). – Stateless : Mỗilần request/response thì cầunốihủybỏ. Không giữ trạng trái trước đó. Lậptrìnhmạ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
  78. Mô hình client-server Lậptrìnhmạ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
  79. Quan hệ giữa client và server Lậptrìnhmạ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
  80. Các loạiserver Concurrent: xử lý đồng thời, cơ chế xử lý nhiều processes trên mộthệ thống chỉ có mộtCPU ≠ Parallel Lậptrìnhmạ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
  81. Connectionless iterative server Lậptrìnhmạ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
  82. Connection-oriented concurrent server Lậptrìnhmạ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
  83. Programs và Processes Lậptrìnhmạ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
  84. Server vớicơ chế multi-process Lậptrìnhmạ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
  85. Khái niệm Socket • Socket: “cửa” nằmgiữa process ứng dụng và end-end- transport protocol (UDP hoặcTCP) • TCP service: dịch vụ truyềntin cậychuỗi bytes giữahai process controlled by controlled by process process application application developer developer socket socket TCP with controlled by controlled by TCP with operating operating buffers, buffers, internet system system variables variables host or host or server server Lậptrìnhmạ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
  86. Khái niệm Socket • Socket : –Làmôitrườ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át. Lậptrìnhmạ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
  87. Khái niệm Socket • Socket API – Đượcgiớithiệu ở BSD4.1 UNIX, 1981 – Được ứng dụng khởitạo, sử dụng hay hủybỏ – Dùng cơ chế client/server – Cung cấp hai dịch vụ chuyểndữ liệu thông qua socket API: • unreliable datagram • reliable, byte stream-oriented Lậptrìnhmạ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
  88. Các loại socket Lậptrìnhmạ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
  89. Lập trình socket vớiTCP • Client phảikếtnối đếnserver – server process phảichạytrước (phầntử thụ động) – server phảitạomộtsocket để lắng nghe và chấpnhậncáckếtnốitừ client • Client kếtnối đếnserver bằng cách: –Khởitạo TCP socket ở local –Xácđịnh IP address, port number của server process và kếtnối đến Lậptrìnhmạ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
  90. Lập trình socket vớiTCP • Sau khi client khởitạo socket, nó sẽ thiết lậpkếtnối đếnserver • Khi server nhậnyêucầukếtnối, nó sẽ chấp nhậnyêucầuvàkhởitạo socket mới để giao tiếpvới client. – Cho phép server chấpnhận nhiều client tạimột thời điểm. Lậptrìnhmạ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
  91. Lập trình socket vớiTCP Server (running on hostid) Client create socket, port=x, for incoming request: welcomeSocket = ServerSocket() TCP wait for incoming create socket, connection request connection setup connect to hostid, port=x connectionSocket = clientSocket = welcomeSocket.accept() Socket() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket Lậptrìnhmạ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
  92. Example: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; Create BufferedReader inFromUser = input stream new BufferedReader(new InputStreamReader(System.in)); Create client socket, Socket clientSocket = new Socket("hostname", 6789); connect to server DataOutputStream outToServer = Create new DataOutputStream(clientSocket.getOutputStream()); output stream attached to socket Lậptrìnhmạ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
  93. Example: Java client (TCP), cont. BufferedReader inFromServer = Create new BufferedReader(new input stream InputStreamReader(clientSocket.getInputStream())); attached to socket sentence = inFromUser.readLine(); Send line outToServer.writeBytes(sentence + '\n'); to server modifiedSentence = inFromServer.readLine(); Read line from server System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Lậptrìnhmạ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
  94. Example: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; Create welcoming socket ServerSocket welcomeSocket = new ServerSocket(6789); at port 6789 Wait, on welcoming while(true) { socket for contact Socket connectionSocket = welcomeSocket.accept(); by client Create input BufferedReader inFromClient = stream, attached new BufferedReader(new to socket InputStreamReader(connectionSocket.getInputStream())); Lậptrìnhmạ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
  95. Example: Java server (TCP), cont Create output stream, attached DataOutputStream outToClient = to socket new DataOutputStream(connectionSocket.getOutputStream()); Read in line clientSentence = inFromClient.readLine(); from socket capitalizedSentence = clientSentence.toUpperCase() + '\n'; Write out line outToClient.writeBytes(capitalizedSentence); to socket } } } End of while loop, loop back and wait for another client connection Lậptrìnhmạ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
  96. Lập trình socket với UDP • Cung cấpcơ chế truyền không tin cậycác nhóm các byte (datagrams) giữa client và server. • Không cầnthiếtlậpkếtnốigiữa client với server. • Sender phảigởikèmđịachỉ IP và port đích •Server khinhậndữ liệusẽ phân tích địachỉ của sender để truyềnlại. Lậptrìnhmạ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
  97. Lập trình socket vớiUTP Server (running on hostid) Client create socket, create socket, port=x, for clientSocket = incoming request: DatagramSocket() serverSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket read request from serverSocket write reply to serverSocket specifying client read reply from host address, clientSocket port umber close clientSocket Lậptrìnhmạ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
  98. Example: Java client (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { Create input stream BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Create client socket DatagramSocket clientSocket = new DatagramSocket(); Translate InetAddress IPAddress = InetAddress.getByName("hostname"); hostname to IP address using DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); Lậptrìnhmạ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
  99. Example: Java client (UDP), cont. Create datagram with data-to-send, DatagramPacket sendPacket = length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876); Send datagram clientSocket.send(sendPacket); to server DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Read datagram clientSocket.receive(receivePacket); from server String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } Lậptrìnhmạ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
  100. Example: Java server (UDP) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception Create { datagram socket DatagramSocket serverSocket = new DatagramSocket(9876); at port 9876 byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Create space for received datagram DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Receive serverSocket.receive(receivePacket); datagram Lậptrìnhmạ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
  101. Example: Java server (UDP), cont String sentence = new String(receivePacket.getData()); Get IP addr InetAddress IPAddress = receivePacket.getAddress(); port #, of sender int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); Create datagram sendData = capitalizedSentence.getBytes(); to send to client DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); Write out datagram serverSocket.send(sendPacket); to socket } End of while loop, } loop back and wait for } another datagram Lậptrìnhmạ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
  102. Các giao thcvàdch va •Hệ thống tên miền DNS •Hệ thống World Wide Web ( WWW) –giaothứcHTTP •Hệ thống file FTP –giaothức FTP •Hệ thống e-mail –giaothứcSMTP –giaothứcPOP3 Lậptrìnhmạ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
  103. Hệ thống tên miền DNS • DNS là viếttắtcủa Domain Name System • Dùng chuỗikýtựđểđánh địachỉ, không phân biệtchữ hoa, thường, mỗi thành phần có thể 63 ký tự và tên đầy đủ không dài quá 255, dưới đây gọi là tên. •Tênđược đặt theo cây phân cấp • Địachỉ tài nguyên biểudiễndạng tên được hình thành từ nó cho đến root Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 102
  104. Hệ thống tên miềnDNS Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 103
  105. Domain names và labels Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 104
  106. Zone và domain Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 105
  107. Ánh xạđịachỉ trong DNS •Network chỉ hiểu địachỉ IP (binary) => ánh xạ giữa địachỉ IP và tên. •Mỗi ứng dụng mạng phảichuyển địachỉ từ dạng tên sang địachỉ IP •Hệ thống tên miền đượchiệnthực theo distributed database, quảnlýtheodạng phân cấpvới nhiều name servers Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 106
  108. Sự phân cấpcủa các name server Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 107
  109. Root name servers Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 108
  110. Root name servers • Khi local name server không thể phân giải địachỉ, nó kếtnối đến root name server để hỏi thông tin • root name server: –Kếtnối đến name server tương ứng vớitừng domain (trong trường hợp root name không biết thông tin) –Lấy thông tin ánh xạđịachỉ –trả thông tin về cho local name server •Córất nhiều root name server trong mạng Internet trên toàn thế giới Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 109
  111. DNS trong Internet Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 110
  112. Generic và country domains Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 111
  113. Inverse domain Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 112
  114. Ánh xạđịachỉ trong DNS root name server • Ứng dụng giao tiếp với local name 2 iterated query server để hỏi địachỉ 3 4 ánh xạ. 7 • Local name server local name server intermediate name server sẽ trả lờihoặc dns.eurecom.fr dns.umass.edu 5 6 request tiếp 1 8 authoritative name server dns.cs.umass.edu requesting host surf.eurecom.fr gaia.cs.umass.edu Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 113
  115. Hệ thống World Wide Web • World Wide Web (W W W) – Dùng giao thức http: hypertext transfer protocol – Web’s application layer protocol htt p r – Mô hình client/server equ PC running h est ttp • client: browser gởiyêucầu, Explorer re spo nhậnvàhiểnthị kếtquả. nse • server: Web server gởikếtquả st cho client đốivớimỗi request. ue eq p r se Server tt on – http1.0: RFC 1945 h sp running re tp NCSA Web – http1.1: RFC 2068 ht server Mac running Navigator Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 114
  116. Hệ thống World Wide Web • http: TCP transport service: – client khởitạo TCP connection (tạo socket) đến server, port 80 (default) – server chấpnhậnkếtnốitừ client – http messages (application-layer protocol messages) đượctraođổigiữa browser (http client) và Web server (http server) – đóng TCP connection Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 115
  117. Hệ thống World Wide Web •Vídụ – User đánh địachỉ URL sau lên browser 1a. http client tạo TCP connection (tạosocket) đến http server ở 1b. http server ở địachỉ www.dit.hcmut.edu.vn Port 80 www.dit.hcmut.edu.vn đang chờ time đợikếtnối ở port 80, chấpnhận kếtnối và notifying đến client 2. http client gởihttp request message (chứa đường dẫn) thông qua TCP connection socket Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 116
  118. Hệ thống World Wide Web •Vídụ (tt) 3. http server nhậnyêucầu, tạo response message (/~phu/courses/net- programming/index.html) trả kếtquả, gởi message qua socket 5. http client nhận response 4. http server đóng cầunốiTCP time message chứa file html và hiểnthị. Phân tích file html để tìm các liên kết 6. Lặplạicácbước 1-5 cho mỗi liên kết đến objects Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 117
  119. Hệ thống World Wide Web • W W W (tt) – Có hai dạng message trong http : request, response – http request message: • ASCII (human-readable format) Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 118
  120. Hệ thống World Wide Web • http request message: request line (GET, POST, GET /~phu/index.html HTTP/1.0 HEAD commands) User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg header Accept-language:vn lines Carriage return, (extra carriage return, line feed) line feed indicates end of message Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 119
  121. Hệ thống World Wide Web • http response message: status line (protocol status code HTTP/1.0 200 OK status phrase) Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 header Content-Length: 6821 lines Content-Type: text/html data data data data data data, e.g., requested html file Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 120
  122. Hệ thống World Wide Web Authentication goal: control access to server server documents client •stateless:client must present usual http request msg authorization in each request 401: authorization req. • authorization: typically name, WWW authenticate: password – authorization: header line in usual http request msg request + Authorization:line – if no authorization presented, usual http response msg server refuses access, sends WWW authenticate: header line in response usual http request msg + Authorization:line Browser caches name & password so usual http response msg time that user does not have to repeatedly enter it. Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 121
  123. Hệ thống World Wide Web Cookies • server sends “cookie” client server to client in response usual http request msg message usual http response + Set-cookie: 1678453 Set-cookie: # • client presents cookie in later requests usual http request msg cookie: 1678453 cookie: # cookie- spectific • server matches usual http response msg action presented-cookie with server-stored info usual http request msg – authentication cookie: # cookie- – remembering user spectific preferences, previous usual http response msg action choices Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 122
  124. Hệ thống World Wide Web Conditional GET client server • Goal: don’t send object if client has up-to-date http request msg stored (cached) version If-modified-since: object not • client: specify date of http response modified cached copy in http HTTP/1.0 request 304 Not Modified If-modified-since: http request msg • server: response contains If-modified-since: no object if cached copy object modified up-to-date: http response HTTP/1.0 304 Not HTTP/1.1 200 OK Modified Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 123
  125. Hệ thống FTP • File Transfer Protocol (ftp) FTP file transfer FTP FTP user client server interface user at host local file remote file system system –Chuyển file từ local đến server hoặclấy file từ server về local. –Hoạt động theo cơ chế client/server – FTP server chạy ở port 21. – Tham khảo : RFC 959 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 124
  126. Hệ thống FTP • ftp client giao tiếp đến ftp server qua TCP ở port 21 •Hai cầunốiTCP đượcthiếtlập: – control: exchange commands, responses between client, server. “out of band control” – data: file data to/from server • ftp server hiệnthựccơ chế “state”: current directory, earlier authentication Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 125
  127. Control connection Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 126
  128. Data connection Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 127
  129. Hệ thống FTP Mộtsốđịnh dạng mesage trong giao thức FTP: •Dữ liệu đượcgởi qua control channel theo dạng mã ASCII – USER username – PASS password – LIST trả về list các file và thư mục trong thư mục hiện hành – RETR filename retrieves (gets) file – STOR filename stores (puts) file onto remote host Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 128
  130. Hệ thống FTP Sample return codes • status code and phrase (as in http) • 331 Username OK, password required • 125 data connection already open; transfer starting • 425 Can’t open data connection • 452 Error writing file Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 129
  131. Ví dụ mộtgiaodịch trong FTP Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 130
  132. Sử dụng trình FTP •Mộtsố lệnh ftp cơ bản #ftp [host] #cd #open host #lcd #close #mkdir, rmdir #help #get, mget #reset #put, mput #ls #delete, mdelete #pwd #bye Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 131
  133. Hệ thống E-mail •Hệ thống E-mail user –RFC 821, 822 agent mail user server – SMTP: port 25 agent – POP3: port 110 SMTP mail server user – IMAP: port 143 SMTP agent – MTA: Mail Transfer SMTP Agent mail user – UA: User Agent server agent user outgoing agent message queue user user mailbox agent Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 132
  134. Mô hình hệ thống e-mail Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 133
  135. Quá trình truyềnnhận mail Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 134
  136. Mail message format Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 135
  137. MIME- Multipurpose Internet Mail Extensions RFC 2045, 2046 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 136
  138. MIME header Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 137
  139. Base64 Encoding Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 138
  140. Quoted-printable encoding Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 139
  141. Giao thức SMTP Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 140
  142. Giao thứcSMTP Ví dụ vê SMTP >Telnet mail.hamburger.edu 25 S: 220 hamburger.edu >HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you >MAIL FROM: S: 250 alice@crepes.fr Sender ok >RCPT TO: S: 250 bob@hamburger.edu Recipient ok >DATA S: 354 Enter mail, end with "." on a line by itself >Do you like ketchup? >How about pickles? >. S: 250 Message accepted for delivery >QUIT S: 221 hamburger.edu closing connection Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 141
  143. Các giao thứctruycậpe-mail •IMAP – Internet Mail Access Protocol - RFC 1730 –Cáclệnh phứctạp, cho phép cơ chế lưutrữ và quảnlý e-mail trên mail server •POP3 – Post Office Protocol, version 3 - RFC 1939 – Đăng nhập đến mail server và download email có trong mail box của user về máy client •HTTP – Web-based mail client program –Dùngứng dụng web hiệnthựcgiaothức IMAP hoặc POP3 Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 142
  144. S: +OK POP3 server ready Ví dụ về POP3 C: user alice authorization phase S: +OK C: pass hungry • client commands: S: +OK user successfully logged on – user: declare username C: list – pass: password S:1498 • server responses S:2912 S: . – +OK C: retr 1 – -ERR S: S: . transaction phase, client: C: dele 1 • list: list message numbers C: retr 2 S: • retr: retrieve message by S: . number C: dele 2 C: quit • dele: delete S: +OK POP3 server signing off • quit Lậptrìnhmạng–Chương 1 © 2002-2004 Phùng Hữu Phú & Khoa Công nghệ Thông Tin – ĐH Bách Khoa TP.HCM 143