142
1

Lap Trinh Mang - Full (Hieu3210)

Embed Size (px)

Citation preview

Page 1: Lap Trinh Mang - Full (Hieu3210)

1

Page 2: Lap Trinh Mang - Full (Hieu3210)

CHƯƠNG 1- GIỚI THIỆU VỀ TCP/IP

1.1 Tổng quát về TCP/IP. Giới thiệu

Lớp Network

Lớp Transport (TCP vàUDP)

Lớp Appication

1.2 Các giao thức và dịch vụ trên Internet. 1.3 Giới thiệu một số ứng dụng mạng

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU 2

Page 3: Lap Trinh Mang - Full (Hieu3210)

Tổng quát về TCP/IP

• Một số đặc tính : - Độc lập về hình thái của mạng.

- Độc lập về phần cứng của mạng. - Các chuẩn giao thức mở. - Mô hình địa chỉ toàn cầu. - Nền tảng client/server mạnh mẽ. - Các chuẩn về giao thức ứng dụng mạnh mẽ.

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU 3

Page 4: Lap Trinh Mang - Full (Hieu3210)

Giới thiệu

OSI TCP/IP Application

Presentation

Applications

layer

Telnet FTP

SMTP DNS SNMP

Session

Transport

Transport layer

(host level)

TCP UDP

ICMP

Network

Data link

Physical

Internet layer

(gateway level)

Network

interface layer

ARP

Ethernet Token Ring

IP

FDDI WANs

4

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 5: Lap Trinh Mang - Full (Hieu3210)

TCP/IP and OSI model

5

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 6: Lap Trinh Mang - Full (Hieu3210)

TCP/IP Protocol Stack

6

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

• Application – Xác nhận quyền, nén dữ liệu và

các dịch vụ cho người dùng.

• Transport – Xử lý dữ liệu giữa các hệ thống và

cung cấp việc truy cập cho các ứng dụng thông

qua thư viện BSD socket.

• Network – Tìm đường cho các packet.

• Link – Mức OS hoặc các thiết bị giao tiếp

mạng trên một máy tính.

Page 7: Lap Trinh Mang - Full (Hieu3210)

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ủa các lớp 5,6, và 7 trong mô hình

OSI

• Lớp transport trong TCP/IP cung cấp cơ chế UDP truyền dữ liệu không tin cậy, khác

với lớp transport trong mô hình OSI là luôn

đảm bảo dữ liệu truyền tin cậy

7

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 8: Lap Trinh Mang - Full (Hieu3210)

TCP/IP

• TCP/IP là một tập của các protocols (một

bộ giao thức) định nghĩa cách thức truyền

dữ liệu qua môi trường Internet

• TCP/IP là tên của mô hình mạng được ghép giữa hai giao thức chính trong mạng

là TCP (Transmission Control Protocol) và

IP (Internet Protocol)

8

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 9: Lap Trinh Mang - Full (Hieu3210)

TCP/IP và mạng Internet • Một liên mạng(internet) dùng TCP/IP được

xem như là một mạng đơn kết nối các máy tính với nhiều loại • Mạng Internet là sự kết nỗi giữa các mạng vật lý độc lập thông qua các thiết bị liên mạng • Với mô hình TCP/IP, các mạng khác nhau kết nối với nhau được xem như là một mạng lớn đồng nhất, không quan tâm đến sự khác nhau giữa các thiết bị vật lý hay môi trường • Mỗi máy kết nối vào mạng xem như kết nối đến một mạng luận lý, không quan tâm đến mạng vật lý

9

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 10: Lap Trinh Mang - Full (Hieu3210)

An Internet according to TCP/IP

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2001

10

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 11: Lap Trinh Mang - Full (Hieu3210)

TCP/IP và OSI • TCP/IP được xây dựng trước mô hình OSI

nên các lớp trong bộ giao thức TCP/IP không hoàn toàn giống với bộ 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ệc truyền dữ 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ột mạng trong một liên mạng TCP/IP có thể là mạng LAN, MAN hoặc WAN.

11

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 12: Lap Trinh Mang - Full (Hieu3210)

Đóng gói dữ liệu trong TCP/IP 1. Đơn vị dữ liệu trong lớp ứng dụng gọi là

message 2. Giao thức TCP và UDP tạo ra một đơn vị dữ

liệu tương ứng là segment và user datagram.

3. Đơn vị dữ liệu trong lớp IP được gọi là datagram

4. Datagram phải được đóng gói (encapsulate)

trong một frame để truyền trên mạng vật lý

5. Frame sẽ được truyền theo dạng tín hiệu trên

đường truyền vật lý

12

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 13: Lap Trinh Mang - Full (Hieu3210)

Đóng gói dữ liệu trong TCP/IP

13

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 14: Lap Trinh Mang - Full (Hieu3210)

Lớp Network • Nội dung:

- Lớp Internet - Địa chỉ IP - Các đánh địa chỉ, phân mạng con - Các giao thức phụ trong lớp Network

14

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 15: Lap Trinh Mang - Full (Hieu3210)

Lớp Internet • Mô hình TCP/IP cung cấp giao thức liên

mạng (internetwork protocol -IP), là một cơ

chế truyền dữ liệu không tin cậy và không

kết nối (connectionless)

• Các giao thức hỗ trợ cho việc truyền dữ liệu

bao gồm: ARP, RARP, ICMP và IGMP.

15

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 16: Lap Trinh Mang - Full (Hieu3210)

Internetwork Protocol (IP)

• Giao thức IP không tin cậy (unreliable) vì

không cung cấp cơ chế kiểm tra lỗi hay

tracking.

• IP xem như lớp bên dưới sẽ thực hiện việc

truyền nhận một cách tốt nhất, không có sự

đảm bảo

• Nếu các dịch vụ cần cơ chế truyền tin cậy

thì kết hợp với giao thức tin cậy TCP.

• Tương tự như hệ thống bưu điện

16

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 17: Lap Trinh Mang - Full (Hieu3210)

IP (tt)

• IP cắt dữ liệu ra thành các gói. các gói gọi là

datagrams, và mỗi gói được truyền độc lậ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 đi cũng như không

sắp xếp lại các gói lại khi chúng đến

• IP là một dịch vụ connectionless, nó không khởi

tạo Virtual Circuits và không có sự thông báo đến

phần tử nhận

17

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 18: Lap Trinh Mang - Full (Hieu3210)

Datagram

18

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 19: Lap Trinh Mang - Full (Hieu3210)

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.

19

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 20: Lap Trinh Mang - Full (Hieu3210)

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

20

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 21: Lap Trinh Mang - Full (Hieu3210)

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

21

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 22: Lap Trinh Mang - Full (Hieu3210)

Địa chỉ IP • Là địa chỉ luận lý trong mạng để xác định

địa chỉ của các máy trong mạng (ngoài địa

chỉ vật lý) cho việc truyền nhận dữ liệu

• Địa chỉ IP có 32 bit nhị phân chia ba phần:

class type, netid, hostid

22

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 23: Lap Trinh Mang - Full (Hieu3210)

Phân lớp địa chỉ

Để xác định netid (Network Identifier) và

hostid (Host Identifier)

23

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 24: Lap Trinh Mang - Full (Hieu3210)

Addressing-Dotted-decimal notation

• Để biểu diễn ở dạng ngắn hơn và dễ đọc, địa

chỉ IP được chia thành dạng 4 phần x 8 bit,

cách nhau bằng dấu chấm, một phần được

biểu diễn theo giá trị thập phân

24

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 25: Lap Trinh Mang - Full (Hieu3210)

Class Ranges of Internet Addresses

25

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 26: Lap Trinh Mang - Full (Hieu3210)

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

26

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 27: Lap Trinh Mang - Full (Hieu3210)

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

27

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 28: Lap Trinh Mang - Full (Hieu3210)

Một số địa chỉ IP đặc biệ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

28

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 29: Lap Trinh Mang - Full (Hieu3210)

Một máy với nhiều địa chỉ • Địa chỉ IP định nghĩa cho mỗi kết nối đến

một mạng

• Một phần tử mạng có nhiều kết nối đến các

mạng khác nhau ( ví dụ như router) phải có

các địa chỉ IP tương ứng với mạng đó

• Một máy có một giao tiếp mạng cũng có thể

định nghĩa nhiều địa chỉ IP, tuỳ theo nhu

cầu

29

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 30: Lap Trinh Mang - Full (Hieu3210)

A Sample Internetnetwork

30

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 31: Lap Trinh Mang - Full (Hieu3210)

Subneting

Hình minh hoạ một mạng có hai lớp phân cấp

31

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 32: Lap Trinh Mang - Full (Hieu3210)

Subneting • Không có subnetting, địa chỉ có 2 lớp (bao gồm

netid và hostid) không hiệu quả, không thể có

nhiều mạng vật lý

• 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ột mức. Điều này rất

khó cho việc quản lý đối với các mạ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ột mạng lớn thành các mạng

nhỏ hơn gọi là mạng con (subnetworks)

32

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 33: Lap Trinh Mang - Full (Hieu3210)

Subneting

Hình vẽ minh họa mạng được chia thành 3 cấp

33

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 34: Lap Trinh Mang - Full (Hieu3210)

Addresses with and without Subnetting

34

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 35: Lap Trinh Mang - Full (Hieu3210)

Masking

• Masking là cách để tính địa chỉ vật lý của

mạng từ địa chỉ 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 địa chỉ mạng từ địa chỉ IP

• Nếu mạng được chia mạng con thì masking

sẽ lấy được thông tin địa chỉ của mạng con

(subnetwork address) từ địa chỉ IP

35

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 36: Lap Trinh Mang - Full (Hieu3210)

Masking example

36

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 37: Lap Trinh Mang - Full (Hieu3210)

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

37

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 38: Lap Trinh Mang - Full (Hieu3210)

Masks with Subneting • Khi có chia mạng con thì mỗi mạng con sẽ có

mặt nạ 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

38

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 39: Lap Trinh Mang - Full (Hieu3210)

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.

39

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 40: Lap Trinh Mang - Full (Hieu3210)

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

40

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 41: Lap Trinh Mang - Full (Hieu3210)

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.

41

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 42: Lap Trinh Mang - Full (Hieu3210)

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

42

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 43: Lap Trinh Mang - Full (Hieu3210)

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

43

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 44: Lap Trinh Mang - Full (Hieu3210)

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

44

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 45: Lap Trinh Mang - Full (Hieu3210)

IP addresses: how to get one?

Network (network portion): • get allocated portion of ISP’s address space:

ISP's block

Organization 0

Organization 1

Organization 2

Organization 7

11001000 00010111 00010000 00000000

11001000 00010111 00010000 00000000

11001000 00010111 00010010 00000000

11001000 00010111 00010100 00000000

….. ….

11001000 00010111 00011110 00000000

200.23.16.0/20

200.23.16.0/23

200.23.18.0/23

200.23.20.0/23

….

200.23.30.0/23

45

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 46: Lap Trinh Mang - Full (Hieu3210)

Các giao thức khác trong lớp network

• ARP (Address Resolution Protocol) • RARP (Reverse Address Resolution

Protocol)

• ICMP (Internet Control Message Protocol) • IGMP (Internet Group Message Protocol)

More references:

TCP/IP Protocol Suite, 2/e, Behrouz A. Forouzan,

DeAnza College

46

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 47: Lap Trinh Mang - Full (Hieu3210)

ARP và RARP Vấn đề phân giải địa chỉ

• Hai giao thức dùng để phân giải địa chỉ là

ARP (Address Resolution Protocol) và

RARP (Reverse ARP)

- ARP dùng phân giải địa chỉ IP 32 bits sang địa

chỉ Ethernet 48 bits

- RARP dùng phân giải địa chỉ Ethernet 48 bits

sang địa chỉ IP 32 bits

47

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 48: Lap Trinh Mang - Full (Hieu3210)

ARP và RARP

• Địa chỉ mạng (lớp Internet) và địa chỉ MAC

(lớp Network Interface) cần có sự chuyển

đổi qua lại:

- Lớp Internet gởi dữ liệu cho lớp Network Interface, chỉ cung cấp địa chỉ IP của máy nhận

- Lớp Network Interface cần địa chỉ MAC của

máy nhận để truyền thông tin

48

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 49: Lap Trinh Mang - Full (Hieu3210)

ARP và RARP

49

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 50: Lap Trinh Mang - Full (Hieu3210)

Position of ARP and RARP

in TCP/IP protocol suite

50

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 51: Lap Trinh Mang - Full (Hieu3210)

ARP

51

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 52: Lap Trinh Mang - Full (Hieu3210)

ARP

• Là giao thức được dùng để hỏi địa chỉ vật lý

một máy khi đã biết địa chỉ IP

• Cần cho lớp Network Interface để đóng gói

một Ethernet Frame

• Khi cần địa chỉ vật lý, máy sẽ broadcast

trên mạng để hỏi địa chỉ vật lý tương ứng

với địa chỉ IP, máy có địa chỉ IP tương ứng

sẽ reply thông tin

52

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 53: Lap Trinh Mang - Full (Hieu3210)

Các thành phần chính trong ARP • ARP table: bảng thông tin được lưu trữ

trong bộ nhớ, nếu không tìm được thông tin trong bảng này thì phần tử gởi sẽ broadcast ARP request để hỏi thông tin

• ARP request: gởi broadcast để hỏi địa chỉ vật lý • ARP reply: gởi lại máy hỏi thông tin địa chỉ IP của máy mình • ARP reply caching: lưu thông tin vào ARP table trong một khoảng thời gian (5 phút)

53

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 54: Lap Trinh Mang - Full (Hieu3210)

Phân giải ngược địa chỉ RARP • Dùng cho việc liên kết giữa lớp Network

Interface và lớp Internet

• Sử dụng khi máy biết địa chỉ Ethernet nhưng không biết địa chỉ IP. Thường dùng

trong các trường hợp:

- Các hệ thống diskless - Các hệ thống JumpStartTM

• Kèm với các giao thức DHCP, BOOTP

54

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 55: Lap Trinh Mang - Full (Hieu3210)

RARP operation

55

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 56: Lap Trinh Mang - Full (Hieu3210)

RARP packet

56

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 57: Lap Trinh Mang - Full (Hieu3210)

Lớp transport • Có hai dạng dịch vụ:

- TCP (Transmission

Control Protocol)

- UDP (User Datagram

Protocol)

application transport network data link physical network

data link physical

network data link physical

network data link physical network data link

physical

network data link physical

application transport network data link physical

57

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 58: Lap Trinh Mang - Full (Hieu3210)

Lớp transport • Cung cấp sự truyền nhận luận lý giữa các

process ứng dụng giữa các máy trong

mạng

• Các giao thức lớp transport hoạt động ở

các hệ thống đầu cuối.

• Lớp transport so với lớp network: - network layer: dữ liệu truyền nhận giữa các hệ thống

- transport layer: dữ liệu được truyền nhận giữa các processes, dựa trên các dịch vụ của lớp network và mở

rộng một số chức năng

58

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 59: Lap Trinh Mang - Full (Hieu3210)

Lớp Transport • Lớp TCP/IP transport cung cấp cơ chế cho

source process gởi dữ liệu destination

process qua mạng

• Định nghĩa một tập các kết nối mức khái

niệm cho các processes gọi là protocol

ports. Một protocol port là một điểm đích

(buffer) dùng để lưu dữ liệu cho một

process cụ thể

59

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 60: Lap Trinh Mang - Full (Hieu3210)

Transport layer • Việc quản lý giao tiếp giữa các processes và các

ports tương ứng được hệ điều hành cung cấp

• Các protocol lớp transport là port-to-port protocols, truyền dữ liệu giữa process gởi đên

process nhận

• Mỗi port được xác định bằng một số nguyên

dương 16 bits nhị phân

- 65,536 (0 to 65535) ports - Port 0?

60

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 61: Lap Trinh Mang - Full (Hieu3210)

Lớp Transport • Mở rộng cách

đánh địa chỉ cho

process.

- Địa chỉ port : xác

định ứng dụng

mạng trên mỗi

máy.

- Địa chỉ của một

ứng dụng mạng

(IP,port)

61

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 62: Lap Trinh Mang - Full (Hieu3210)

Port Addresses

62

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 63: Lap Trinh Mang - Full (Hieu3210)

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

63

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 64: Lap Trinh Mang - Full (Hieu3210)

User Datagram Protocol (UDP) • User datagram protocol (UDP) là protocol đơn

giản trong hai protocol ở lớp transport

• Chỉ thêm thông tin về các địa chỉ port, điều khiển

lỗi checksum và độ dài thông tin length information

• UDP chỉ cung cấp các chức năng cơ bản cho cơ

chế truyền end-to-end, không cung cấp các chức

năng xử lý lỗi và truyền lại dữ liệu bị hỏng hoặc

mất.

• Có cơ chế báo lỗi nếu kèm với giao thức ICMP

64

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 65: Lap Trinh Mang - Full (Hieu3210)

UDP Datagram Format

65

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 66: Lap Trinh Mang - Full (Hieu3210)

Transmission Control Protocol (TCP)

• Cung cấp các dịch vụ đầy đủ cho các ứng dụng • Là giao thức port-to-port tin cậy, connection- oriented: kết nối phải được thiết lập trước khi dữ

liệu được truyền

• Khi thiết lập kết nối, TCP tạo một mạch ảo (virtual

circuit ) giữa bên gởi và bên nhận trong suốt quá

trình truyền nhận

• Có sự thông báo khi truyền dữ liệu đến phần tử

nhận. Sau khi kết thúc việc truyền nhận thì đóng

kết nối

66

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 67: Lap Trinh Mang - Full (Hieu3210)

TCP • IP và UDP xem các datagrams trong một single

transmission là các đơn vị hoàn toàn độc lập, không liên quan với nhau. Mỗi datagram đến phần tử nhận cũng là các đơn vị phân biệt, và không có sự thông báo cho phần tử nhận • Khác với IP và UDP, TCP là dịch vụ connection- oriented, cung cấp cơ chế truyền tin cậy cho toàn bộ stream chứa trong message mà ứng dụng gởi đi • Cơ chế truyền tin cậy đảm bảo bằng việc cung cấp việc phát hiện lỗi và truyền lại những dữ liệu hỏng

67

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 68: Lap Trinh Mang - Full (Hieu3210)

TCP • Khi truyền dữ liệu, TCP chia dữ liệu thành các

đơn vị nhỏ hơn gọi là segment. • Tất các các segment phải được nhận đủ và phản hồi (acknowledge) trước khi sự truyền nhận hoàn thành và mạch ảo được hủy • Mỗi segment có một số tuần tự (sequencing number) để sắp xếp lại sau khi nhận kết hợp với

ACK ID number và field window-size cho cửa sổ dịch (sliding window) • Các segments TCP truyền trên mạng được chứa

trong các IP datagrams. Ở phần tử nhận, TCP nhận mỗi datagram theo thứ tự đến và dựa vào số tuần tự để sắp xếp lại

68

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 69: Lap Trinh Mang - Full (Hieu3210)

TCP segment format

69

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 70: Lap Trinh Mang - Full (Hieu3210)

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,

70

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 71: Lap Trinh Mang - Full (Hieu3210)

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

71

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 72: Lap Trinh Mang - Full (Hieu3210)

Lớp ứng dụng

Comparison between OSI and TCP/IP

72

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 73: Lap Trinh Mang - Full (Hieu3210)

Lớp ứng dụng • Định nghĩa các giao thức cho các ứng dụng

mạng • Nhìn ở góc độ hệ điều hành, ứng dụng được hiểu như là các processes. Các giao

thức lớp ứng dụng phải định nghĩa cách thức giao tiếp giữa các processes qua các vấn đề: - Định dạng của message - Thứ tự của các message trao đổi - Các công việc phải thực thi khi một process nhận hay truyền dữ liệu

73

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 74: Lap Trinh Mang - Full (Hieu3210)

Lớp ứng dụng

• Các ứng dụng mạng hoạt động theo mô

hình client/server

- Server : là phần tử thụ động • Chờ yêu cầu từ client, xử lý và trả kết quả cho client

- Client : là phần tử chủ động • Kết nối đến server để gởi yêu cầu.

• Chờ nhận kết quả trả về và xử lý kết quả.

• Vấn đề quan trọng khi lập trình các ứng

dụng mạng là định nghĩa giao thức giữa

client và server

74

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 75: Lap Trinh Mang - Full (Hieu3210)

Lớp ứng dụng • User agent là giao tiếp giữa người sử dụng và

ứng dụng mạng.Mỗi ứng dụng mạng client phải có hiện thực việc giao tiếp giữa user và chương trình mạng:

- Web:browser - E-mail: mail reader - streaming audio/video: media player

• Khái niệm stateful và stateless - Stateful : lưu giữ trạng thái giữa các lần kết nối

(request/response). - Stateless : Mỗi lần request/response thì cầu nối hủy bỏ. Không giữ trạng trái trước đó.

75

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 76: Lap Trinh Mang - Full (Hieu3210)

Mô hình client-server

76

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 77: Lap Trinh Mang - Full (Hieu3210)

Quan hệ giữa client và server

77

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 78: Lap Trinh Mang - Full (Hieu3210)

Các loại server Concurrent: xử lý đồng thời, cơ chế xử lý nhiều

processes trên một hệ thống chỉ có một CPU

≠ Parallel

78

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 79: Lap Trinh Mang - Full (Hieu3210)

Connectionless iterative server

79

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 80: Lap Trinh Mang - Full (Hieu3210)

Connection-oriented concurrent server

80

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 81: Lap Trinh Mang - Full (Hieu3210)

Programs và Processes

81

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 82: Lap Trinh Mang - Full (Hieu3210)

Server với cơ chế multi-process

82

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 83: Lap Trinh Mang - Full (Hieu3210)

Khái niệm Socket • Socket: “cửa” nằm giữa process ứng dụng và end-end-

transport protocol (UDP hoặc TCP)

• TCP service: dịch vụ truyền tin cậy chuỗi bytes giữa hai

process

controlled by controlled by application developer

controlled by operating system

process socket TCP with

buffers, variables

host or server

process socket TCP with

buffers, internet

variables

host or server

application developer controlled by operating system

83

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 84: Lap Trinh Mang - Full (Hieu3210)

Khái niệm Socket • Socket :

- Là môi trường để các process ứng dụng giao

tiếp với nhau, process ứng dụng có thể chạy

trên cùng một máy hoặc trên hai máy khác

nhau.

- Được ứng dụng tạo ra và sử dụng tuy nhiên

được hệ thống (hệ điều hành) kiểm soát.

84

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 85: Lap Trinh Mang - Full (Hieu3210)

Khái niệm Socket

• Socket API - Được giới thiệu ở BSD4.1 UNIX, 1981

- Được ứng dụng khởi tạo, sử dụng hay hủy bỏ - Dùng cơ chế client/server - Cung cấp hai dịch vụ chuyển dữ liệu thông qua

socket API:

• unreliable datagram • reliable, byte stream-oriented

85

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 86: Lap Trinh Mang - Full (Hieu3210)

Các loại socket

86

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 87: Lap Trinh Mang - Full (Hieu3210)

Lập trình socket với TCP • Client phải kết nối đến server

- server process phải chạy trước (phần tử thụ

động)

- server phải tạo một socket để lắng nghe và

chấp nhận các kết nối từ client

• Client kết nối đến server bằng cách: - Khởi tạo TCP socket ở local

- Xác định IP address, port number của server

process và kết nối đến

87

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 88: Lap Trinh Mang - Full (Hieu3210)

Lập trình socket với TCP • Sau khi client khởi tạo socket, nó sẽ thiết

lập kết nối đến server

• Khi server nhận yêu cầu kết nối, nó sẽ chấp

nhận yêu cầu và khởi tạo socket mới để

giao tiếp với client.

- Cho phép server chấp nhận nhiều client tại một

thời điểm.

88

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 89: Lap Trinh Mang - Full (Hieu3210)

Lập trình socket với TCP Server (running on hostid)

create socket, port=x, for incoming request: welcomeSocket = ServerSocket()

TCP

wait for incoming connection setup

connection request connectionSocket = welcomeSocket.accept()

read request from connectionSocket write reply to connectionSocket

close connectionSocket

Client

create socket, connect to hostid, port=x clientSocket = Socket()

send request using clientSocket

read reply from clientSocket close clientSocket

89

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 90: Lap Trinh Mang - Full (Hieu3210)

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

input stream

Create client socket,

connect to server Create

output stream attached to socket

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer =

new DataOutputStream(clientSocket.getOutputStream());

90

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 91: Lap Trinh Mang - Full (Hieu3210)

Example: Java client (TCP), cont.

BufferedReader inFromServer = Create

input stream attached to socket

Send line to server

Read line from server

} }

new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

91

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 92: Lap Trinh Mang - Full (Hieu3210)

Example: Java server (TCP)

import java.io.*; import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception

{

String clientSentence;

Create welcoming socket

at port 6789 Wait, on welcoming

socket for contact by client

Create input stream, attached

to socket

String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789);

while(true) {

Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient =

new BufferedReader(new

InputStreamReader(connectionSocket.getInputStream()));

92

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 93: Lap Trinh Mang - Full (Hieu3210)

Example: Java server (TCP), cont

Create output stream, attached

to socket

Read in line from socket

Write out line to socket

}

DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence); }

} End of while loop,

loop back and wait for another client connection

93

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 94: Lap Trinh Mang - Full (Hieu3210)

Lập trình socket với UDP • Cung cấp cơ chế truyền không tin cậy các

nhóm các byte (datagrams) giữa client và

server.

• Không cần thiết lập kết nối giữa client với

server.

• Sender phải gởi kèm địa chỉ IP và port đích • Server khi nhận dữ liệu sẽ phân tích địa chỉ

của sender để truyền lại.

94

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 95: Lap Trinh Mang - Full (Hieu3210)

Lập trình socket với UTP Server (running on hostid)

create socket, port=x, for incoming request: serverSocket = DatagramSocket()

read request from serverSocket

write reply to serverSocket specifying client

host address,

port number

Client

create socket, clientSocket =

DatagramSocket()

Create, address (hostid, port=x,

send datagram request

using clientSocket

read reply from clientSocket close clientSocket

95

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 96: Lap Trinh Mang - Full (Hieu3210)

Example: Java client (UDP)

import java.io.*; import java.net.*;

class UDPClient { public static void main(String args[]) throws Exception

{

Create input stream

Create client socket

Translate hostname to IP

address using DNS

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("hostname");

byte[] sendData = new byte[1024];

byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

sendData = sentence.getBytes();

96

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 97: Lap Trinh Mang - Full (Hieu3210)

Example: Java client (UDP), cont.

Create datagram with data-to-send,

length, IP addr, port

Send datagram to server

Read datagram from server

}

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);

clientSocket.close();

}

97

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 98: Lap Trinh Mang - Full (Hieu3210)

Example: Java server (UDP)

import java.io.*; import java.net.*;

class UDPServer { public static void main(String args[]) throws Exception

Create {

datagram socket at port 9876

Create space for received datagram

Receive

datagram

DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] receiveData = new byte[1024];

byte[] sendData = new byte[1024];

while(true)

{

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

serverSocket.receive(receivePacket);

98

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 99: Lap Trinh Mang - Full (Hieu3210)

Example: Java server (UDP), cont

String sentence = new String(receivePacket.getData()); Get IP addr

port #, of sender

Create datagram to send to client

Write out datagram to socket }

}

}

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress,

port);

serverSocket.send(sendPacket); End of while loop,

loop back and wait for another datagram

99

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 100: Lap Trinh Mang - Full (Hieu3210)

Các giao thức và dịch vụ

• Hệ thống tên miền DNS • Hệ thống World Wide Web ( WWW) - giao thức HTTP

• Hệ thống file FTP - giao thức FTP

• Hệ thống e-mail - giao thức SMTP

- giao thức POP3

100

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 101: Lap Trinh Mang - Full (Hieu3210)

Hệ thống tên miền DNS

• DNS là viết tắt của Domain Name System • Dùng chuỗi ký tự để đánh địa chỉ, không phân biệt chữ 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 • Địa chỉ tài nguyên biểu diễn dạng tên được

hình thành từ nó cho đến root

101

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 102: Lap Trinh Mang - Full (Hieu3210)

Hệ thống tên miền DNS

102

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 103: Lap Trinh Mang - Full (Hieu3210)

Domain names và labels

103

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 104: Lap Trinh Mang - Full (Hieu3210)

Zone và domain

104

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 105: Lap Trinh Mang - Full (Hieu3210)

Ánh xạ địa chỉ trong DNS • Network chỉ hiểu địa chỉ IP (binary) => ánh

xạ giữa địa chỉ IP và tên. • Mỗi ứng dụng mạng phải chuyển địa chỉ từ dạng tên sang địa chỉ IP • Hệ thống tên miền được hiện thực theo distributed database, quản lý theo dạng phân cấp với nhiều name servers

105

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 106: Lap Trinh Mang - Full (Hieu3210)

Sự phân cấp của các name server

106

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 107: Lap Trinh Mang - Full (Hieu3210)

Root name servers

107

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 108: Lap Trinh Mang - Full (Hieu3210)

Root name servers • Khi local name server không thể phân giải địa chỉ,

nó kết nối đến root name server để hỏi thông tin

• root name server: - Kết nối đến name server tương ứng với từng domain

(trong trường hợp root name không biết thông tin)

- Lấy thông tin ánh xạ địa chỉ - 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

108

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 109: Lap Trinh Mang - Full (Hieu3210)

DNS trong Internet

109

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 110: Lap Trinh Mang - Full (Hieu3210)

Generic và country domains

110

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 111: Lap Trinh Mang - Full (Hieu3210)

Inverse domain

111

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 112: Lap Trinh Mang - Full (Hieu3210)

Ánh xạ địa chỉ trong DNS

root name server

• Ứng dụng giao tiếp với local name

server để hỏi địa chỉ

ánh xạ.

• Local name server

sẽ trả lời hoặc

request tiếp…

2 3

local name server dns.eurecom.fr

1 8

requesting host surf.eurecom.fr

iterated query

4 7 intermediate name server dns.umass.edu

5 6

authoritative name server dns.cs.umass.edu

gaia.cs.umass.edu

112

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 113: Lap Trinh Mang - Full (Hieu3210)

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 - Mô hình client/server

• client: browser gởi yêu cầu,

nhận và hiển thị kết quả. • server: Web server gởi kết quả

cho client đối với mỗi request.

- http1.0: RFC 1945 - http1.1: RFC 2068

PC running Explorer

Server running NCSA Web

server

Mac running Navigator

113

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 114: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web

• http: TCP transport service: - client khởi tạo TCP connection (tạo socket) đến

server, port 80 (default)

- server chấp nhận kết nối từ client - http messages (application-layer protocol messages) được trao đổi giữa browser (http

client) và Web server (http server)

- đóng TCP connection

114

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 115: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web • Ví dụ

- User đánh địa chỉ URL sau lên browser http://www.dit.hcmut.edu.vn/~phu/courses/net-programming/index.html

1a. http client tạo TCP connection (tạo socket) đến http server ở

www.dit.hcmut.edu.vn Port 80

time 2. http client gởi http request

message (chứa đường dẫn)

thông qua TCP connection

socket

1b. http server ở địa chỉ www.dit.hcmut.edu.vn đang chờ

đợi kết nối ở port 80, chấp nhận

kết nối và notifying đến client

115

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 116: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web • Ví dụ (tt)

3. http server nhận yêu cầu,

tạo response message

(/~phu/courses/net- programming/index.html) trả

kết quả, gởi message qua

socket

time

5. http client nhận response

message chứa file html và

hiển thị. Phân tích file html

để tìm các liên kết

6. Lặp lại các bước 1-5 cho mỗi

liên kết đến objects

4. http server đóng cầu nối TCP

116

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 117: Lap Trinh Mang - Full (Hieu3210)

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)

117

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 118: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web

• http request message:

request line (GET, POST,

HEAD commands)

header lines

Carriage return, line feed indicates end

of message

GET /~phu/index.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg

Accept-language:vn

(extra carriage return, line feed)

118

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 119: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web

• http response message: status line

(protocol status code

status phrase)

header lines

data, e.g., requested html file

HTTP/1.0 200 OK

Date: Thu, 06 Aug 1998 12:00:15 GMT

Server: Apache/1.3.0 (Unix)

Last-Modified: Mon, 22 Jun 1998 …...

Content-Length: 6821

Content-Type: text/html

data data data data data ...

119

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 120: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web

Authentication goal: control access to

server documents

client server

• stateless: client must present authorization in each request

• authorization: typically name, password

- authorization: header line in

request

- if no authorization presented,

server refuses access, sends

WWW authenticate:

header line in response

Browser caches name & password so

usual http request msg 401: authorization req. WWW authenticate:

usual http request msg + Authorization:line

usual http response msg

usual http request msg + Authorization:line

usual http response msg

time that user does not have to repeatedly enter it.

120

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 121: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web Cookies

• server sends “cookie” to client in response message

Set-cookie: 1678453

• client presents cookie in later requests

cookie: 1678453

• server matches presented-cookie with

server-stored info - authentication - remembering user preferences, previous

choices

client

usual http request msg

usual http response +

Set-cookie: #

usual http request msg cookie: #

usual http response msg

usual http request msg cookie: #

usual http response msg

server

cookie- spectific action

cookie- spectific action

121

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 122: Lap Trinh Mang - Full (Hieu3210)

Hệ thống World Wide Web Conditional GET

client

server • Goal: don’t send object if

client has up-to-date stored (cached) version • client: specify date of

cached copy in http request If-modified-since: <date>

• server: response contains no object if cached copy

up-to-date: HTTP/1.0 304 Not

Modified

http request msg If-modified-since:

<date>

http response HTTP/1.0

304 Not Modified

http request msg If-modified-since:

<date>

http response HTTP/1.1 200 OK

<data>

object not modified

object modified

122

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 123: Lap Trinh Mang - Full (Hieu3210)

Hệ thống FTP

• File Transfer Protocol (ftp)

FTP user interface

user at host

FTP client

local file system

file transfer

FTP server

remote file system

- Chuyển file từ local đến server hoặc lấ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

123

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 124: Lap Trinh Mang - Full (Hieu3210)

Hệ thống FTP • ftp client giao tiếp đến ftp server qua TCP ở port

21

• Hai cầu nối TCP được thiết lập: - control: exchange commands, responses

between client, server. “out of band control”

- data: file data to/from server

• ftp server hiện thực cơ chế “state”: current

directory, earlier authentication

124

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 125: Lap Trinh Mang - Full (Hieu3210)

Control connection

125

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 126: Lap Trinh Mang - Full (Hieu3210)

Data connection

126

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 127: Lap Trinh Mang - Full (Hieu3210)

Hệ thống FTP Một số định dạng mesage trong giao thức FTP:

• Dữ liệu được gở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

127

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 128: Lap Trinh Mang - Full (Hieu3210)

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

128

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 129: Lap Trinh Mang - Full (Hieu3210)

Ví dụ một giao dịch trong FTP

129

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 130: Lap Trinh Mang - Full (Hieu3210)

Sử dụng trình FTP

• Một số 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

130

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 131: Lap Trinh Mang - Full (Hieu3210)

Hệ thống E-mail • Hệ thống E-mail

- RFC 821, 822 - SMTP: port 25 - POP3: port 110 - IMAP: port 143 - MTA: Mail Transfer Agent

- UA: User Agent

user

agent

mail

server

SMTP

SMTP

SMTP mail

server

user

user agent

mail server user

agent

user agent

outgoing message queue

user mailbox

agent user

agent

131

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 132: Lap Trinh Mang - Full (Hieu3210)

Mô hình hệ thống e-mail

132

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 133: Lap Trinh Mang - Full (Hieu3210)

Quá trình truyền nhận

mail

133

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 134: Lap Trinh Mang - Full (Hieu3210)

Mail message format

134

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 135: Lap Trinh Mang - Full (Hieu3210)

MIME- Multipurpose Internet Mail Extensions

RFC 2045, 2046

135

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 136: Lap Trinh Mang - Full (Hieu3210)

MIME header

136

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 137: Lap Trinh Mang - Full (Hieu3210)

Base64 Encoding

137

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 138: Lap Trinh Mang - Full (Hieu3210)

Quoted-printable encoding

138

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 139: Lap Trinh Mang - Full (Hieu3210)

Giao thức SMTP

139

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 140: Lap Trinh Mang - Full (Hieu3210)

Giao thức SMTP 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: <[email protected]> S: 250 [email protected]... Sender ok

>RCPT TO: <[email protected]> S: 250 [email protected] ... 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

140

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 141: Lap Trinh Mang - Full (Hieu3210)

Các giao thức truy cập e-mail • IMAP

- Internet Mail Access Protocol - RFC 1730 - Các lệnh phức tạp, cho phép cơ chế lưu trữ và quản lý 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ện thực giao thức IMAP hoặc POP3

141

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU

Page 142: Lap Trinh Mang - Full (Hieu3210)

Ví dụ về POP3 authorization phase • client commands: - user: declare username

- pass: password

• server responses - +OK

- -ERR

transaction phase, client: • list: list message numbers

• retr: retrieve message by

number • dele: delete

• quit

S: +OK POP3 server ready

C: user alice

S: +OK

C: pass hungry

S: +OK user successfully logged on

C: list

S: 1 498

S: 2 912

S: .

C: retr 1

S: <message 1 contents>

S: .

C: dele 1

C: retr 2

S: <message 1 contents>

S: .

C: dele 2

C: quit

S: +OK POP3 server signing off

142

Nguyễn Duy Hiếu – Bộ môn: KTMT & Mạng - TBU