Khái niệm và các yêu cầu của giao thức mạng
2. Nguyên tắc thiết kế giao thức Internet
Nguyên tắc cuối cuối (End-to-end arguments)
Nguyên tắc phân tầng
Mô hình mạng OSI
Mô hình mạng TCP/IP
3. Giao thức tầng mạng
4. Giao thức tầng giao vận
5. Giao thức tầng ung dung
40 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1302 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Mạng và truyên thông máy tính - Tổng quan về giao thức mạng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Network programming 1
Tổng quan về giao thức mạng
Giảng viên: Nguyễn Hoài Sơn
Bộ môn Mạng và Truyền thông máy tính
Khoa Công nghệ thông tin
2Network programming
Nội dung bài học
1. Khái niệm và các yêu cầu của giao thức mạng
2. Nguyên tắc thiết kế giao thức Internet
Nguyên tắc cuối cuối (End-to-end arguments)
Nguyên tắc phân tầng
Mô hình mạng OSI
Mô hình mạng TCP/IP
3. Giao thức tầng mạng
4. Giao thức tầng giao vận
5. Giao thức tầng ung dung
3Network programming
Giao thức là gì?
Giao thức là “quy ước giữa hai bên truyền tin về cách thức truyền tin”
Ví dụ Cuộc nói chuyện giữa hai người, phát thanh truyền hình,
Độ phức tạp của giao thức phụ thuộc vào yêu cầu và số lượng của các
bên tham gia truyền tin
Ví dụ Giao thức trong một cuộc gọi điện thoại: Người gọi – Điện thoại, Điện
thoại – tổng đài, tổng đài – tổng đài, tổng đài – điện thoại, điện thoại - người
nghe, người gọi – người nghe
4Network programming
Giao thức mạng là gì?
Giao thức mạng là tập hợp các quy ước về
định dạng và ý nghĩa của các thông báo
được gửi giữa các máy tính thông qua mạng
máy tính
Có nhiều loại giao thức mạng
Giao thức nội mạng: Ethernet, AppleTalk, PPP,
X.25,
Giao thức giữa các mạng: ATM, MPLS,TCP/IP,
IPX,
Giao thức ứng dụng mạng: HTTP, FTP, SIP,
5Network programming
Yêu cầu với các giao thức mạng
Phía người dùng mạng:
Chất lượng dịch vụ mà ứng dụng của họ cần
Đảm bảo mỗi thông báo được gửi đến đúng địa chỉ
không lỗi trong một khoảng thời gian nhất định
Nhà cung cấp dịch vụ:
Thiết kế hiệu quả
Đảm bảo tài nguyên mạng được sử dụng hiệu quả và
công bằng với mọi người dùng
Hệ thống dễ điều hành và quản lý
Dễ dàng phát hiện và xử lý các lỗi hệ thống
6Network programming
Internet
Mạng công cộng kết nối các mạng máy
tính
Quy mô toàn cầu
Mục đích chung, công cộng
Công nghệ đa dạng
Giao thức trên Internet
Sử dụng giao thức TCP/IP
Chuẩn mở:
được chuẩn hoá bởi Internet Engineering Task
Force (IETF)
Phát triển bởi cộng đồng nghiên cứu
IP
TCP, UDP
HTTP,FTP,
RTP,
Ethernet,
ATM,
7Network programming
Giao thức Internet được thiết kế và
xây dựng như thế nào?
Nguyên tắc Điểm cuối-cuối
A function can only be completely and correctly
implemented with the knowledge and help of the
applications standing at the communication
endpoints
“The network is fool,
the terminal is clever”
“The network is clever,
the terminal is fool”
Internet Telephone network
8Network programming
Giao thức Internet được thiết kế và xây
dựng như thế nào?(2)
Nguyên tắc phân tầng:
Chia giao thức mạng thành các tầng, mỗi tầng giao thức giải
quyết một phần chức năng của truyền tin
Ưu điểm của việc phân tầng
Cấu trúc rõ ràng – Cho phép định nghĩa rõ ràng các mối quan hệ
giữa các giao thức mạng
Trừu tượng hóa chức năng – Có thể thay đổi một tầng giao thức
mà không làm ảnh hưởng các tầng trên hoặc dưới
Sử dụng lại – Các tầng trên có thể sử dụng lại các chức năng
được cung cấp bởi tầng dưới
Nhược điểm của việc phân tầng
Che dấu thông tin – Giảm hiệu quả trong việc thực thi giao thức
9Network programming
Mô hình mạng phân tầng
Giao thức tầng cao sẽ tạo thông báo và gửi xuống giao
thức tầng thấp thông qua giao diện giữa các tầng
Giao thức tầng cao sẽ thêm thông tin điều khiển bao
gồm các khóa giao thức vào tiêu đề của thông báo
Thông báo của giao thức tầng trên sẽ được xử lý như
dữ liệu của giao thức tầng dưới
Giao thức tầng dưới sẽ sử dụng các khóa giao thức
trong tiêu đề để xác định đúng giao thức tầng trên
10Network programming
Ví dụ về mô hình mạng phân tầng
Toi yeu VN
I love VN
I love VNL:EngDHost
Application
Transport
Network
DHost = Destination service host
L: Eng
Application
Transport
Network
J’aime le Vn
I Love VN
I love VN L:Eng DHost
L:Eng
11Network programming
Mô hình mạng TCP/IP(1)
Lịch sử phát triển
Được phát triển vào những năm 1970 bởi các kỹ
sư thuộc dự án ARPANET
Được chuẩn hóa vào năm 1982 và được thực thi
trên hệ điều hành BSD Unix
Đang tiếp tục được chuẩn hóa bới IETF (Internet
Engineering Task Force )
12Network programming
Mô hình mạng TCP/IP(2)
Network Device Controller/Drivers
TCP UDP
IP (ICMP)
Ethernet or other physical medium
FTP Telnet Ping H.323 RTPHTTPApplication
Transport
Internet
Network
interface
Hardware
13Network programming
OSI vs. TCP/IP
OSI: Định nghĩa khái niệm rõ ràng: dịch vụ, giao diện, giao thức
TCP/IP: Được thực thi thành công
Application
Presentation
Session
Transport
Network
Datalink
Physical
IPv4, IPv6, ICMP
Network interface
TCP UDP
Application
Hardware
OSI TCP/IP
14Network programming
Ví dụ về giao thức TCP/IP
“Xin chào”
TCP
Header
“Xin
chào”
TCP
Header
“Xin
chào”
IP
Header
TCP
Header
“Xin
chào”
IP
Header
Ethernet
Header
“Xin chào”
TCP
Header
“Xin
chào”
TCP
Header
“Xin
chào”
IP
Header
TCP
Header
“Xin
chào”
IP
Header
Ethernet
Header
Sending host Receiving host
Router
15Network programming
Ví dụ về giao thức TCP/IP(2)
Dst
MAC
addr
Src
MAC
addr
Protcl
Type
=0800
Src
IP
Addr
Dst
IP
Addr
Protcl
Type =
6
Src
Port =
11111
Dst
Port =
110
Data = “Xin chào”
charset=UTF-8
FCS
Ethernet header IP header TCP/UDP
header
Ethernet’s
Frame
Check
Sequence
Give the type of
upper protocol
Give the type of
upper protocol
Header & data
of application
protocol
Give the type of
upper protocol
The order to creating dataThe order of processing data
Data link Network
Transport Session
Presentation
Application
16Network programming
Giao thức tầng mạng
Vận chuyển thông báo điểm cuối-cuối dựa
trên địa chỉ IP
Không kết nối: Các gói tin được xử lý tách biệt
Không tin cậy: Việc vận chuyển gói tin không
được đảm bảo
Phân mảnh/ ghép mảnh
Phát hiện lỗi
17Network programming
Địa chỉ IP
Xác định một máy tính trên Internet
là duy nhất
độ dài 32 bit trong trường hợp của IPv4
Bao gồm ID mạng (network ID) và ID máy (host ID) được
phân biệt bởi subnet mask (netmask)
E.g. 132.168.1.100/255.255.255.0
Trên thực tế địa chỉ IP gán cho một card mạng chứ không phải gán cho
một máy
Các lớp địa chỉ
A: 1.0.0.0 tới 127.255.255.255 (8 bit network address)
B: 128.0.0.0 tới 191.255.255.255 (16 bit network address)
C: 192.0.0.0 tới 223.255.255.255 (24 bit network address)
D,E: 224.0.0.0 and higher (multicast and reserved)
Địa chỉ quảng bá : 255.255.255.255
Subnet mask
Chia một địa chỉ mạng thành nhiều phần mạng nhỏ hơn
18Network programming
Địa chỉ IP riêng
Chỉ dùng cho các mạng riêng, không dùng
cho mạng chung
Có thể truyền tin với các máy trên Internet thông
qua Network Address Translator (NAT)
Bao gồm 3 subnets
10.0.0.0 ~ 10.255.255.255 (10/8)
172.16.0.0 ~ 172.31.255.255 (172.16/12)
192.168.0.0 ~ 192.168.255.255 (192.168/16)
19Network programming
Tiêu đề của gói tin IP
20Network programming
Khai báo tiêu đề của gói tin IP
struct ip{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ip_hl:4; /* header length */
unsigned int ip_v:4; /* version */
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned int ip_v:4; /* version */
unsigned int ip_hl:4; /* header length */
#endif
u_int8_t ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off; /* fragment offset field */
u_int8_t ip_ttl; /* time to live */
u_int8_t ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src, ip_dst; /* source and
dest address */
};
#include
char packetBuffer[1500];
struct ip *ipPkt;
ipPkt = (struct ip *)packetBuffer;
21Network programming
Giao thức tầng giao vận
- Giao thức TCP
Hướng kết nối:
Thiết lập kết nối ảo bằng Bắt tay 3-bước trước khi dữ liêu được truyền đi
Một kết nối TCP được định danh bởi (srcIP, dstIP, src Port, dst Port)
Tin cậy:
Bên nhận sẽ xác nhận việc nhận gói tin
Bên gửi sẽ gửi lại gói tin nếu không nhận được xác nhận của bên gửi
Full-duplex:
Truyền và nhận gói tin cùng lúc
Truyền theo dòng:
Đảm bảo việc truyền thông tin theo thứ tự của dòng bytes
Điều khiển luồng:
Điều khiển chống tắc nghẽn
22Network programming
Thiết lập kết nối TCP
Bắt tay 3 bước
Số thứ tự
J,K
Kiểu thông báo
Synchronize (SYN)
Acknowledge (ACK)
Mở thụ động
Máy chủ chờ kết nối đến từ
máy khách
Mở chủ động
Máy khách bắt đầu một kết
nối đến máy chủ
Client Server
Time flows down
listen
Passive open
Active open
23Network programming
Khái niệm số hiệu cổng
Số hiệu cổng dùng để định danh tiến
trình trên mỗi máy
Số hiệu cổng có thể là
Well-known (port 0-1023)
Registered (port 1024-49151)
Dynamic or private (port 49152-
65535)
Máy chủ thường sử dụng well-known
ports
Mọi máy khách có thể xác định được máy
chủ/ dịch vụ cung cấp
HTTP = 80, FTP = 21, Telnet = 23, ...
/etc/service định nghĩa well-known ports
Máy khách thường sử dụng dynamic ports
được gán bởi hệ thống khi khởi tạo
TCP/UDP
IP
Ethernet Adapter
NTP
daemon
Web
server
port 123 port 80
24Network programming
Well-known port numbers
Port number Protocol Keyword Application
20 TCP ftp-data File transfer (Default data)
21 TCP ftp File transfer (Control)
22 TCP ssh SSH Remote Login Protocol
23 TCP telnet telnet
25 TCP smtp Simple Mail Transfer Protocol
53 TCP domain Domain Name Server
80 TCP http HTTP
110 TCP pop3 Post Office Protocol – Ver 3
123 TCP ntp Network Time Protocol
443 TCP https HTTPS
7 UDP echo Echo
13 UDP daytime Daytime
53 UDP domain Domain Name Server
123 UDP ntp Network Time Protocol
25
CLOSED
BEGIN
LISTEN
Server Passive Open
SYN SENT
Active Open
send SYN
Client Active Open
send SYN
SYN RCVD rcv SYN
send SYN,ACK
rcv SYN
send SYN,ACK
rcv RST
ESTABLISHED
rcv ACK of SYN
rcv SYN,ACK
send ACK
FIN WAIT-1
FIN WAIT-2
CLOSE_WAIT
CLOSING
TIME_WAIT
LAST_ACK
send FIN
rcv ACK
rcv FIN
send ACK
timer ~ 1 min
rcv FIN,ACK
send ACK
rcv FIN
send ACK
rcv ACK
send FIN
rcv FIN
send ACK
send FIN
rcv ACK
Trạng thái kết nối TCP
26Network programming
Tiêu đề TCP
27Network programming
Khai báo tiêu đề TCP
struct tcphdr{
u_int16_t th_sport; /* source port */
u_int16_t th_dport; /* destination port */
tcp_seq th_seq; /* sequence number */
tcp_seq th_ack; /* acknowledgement number */
# if __BYTE_ORDER == __LITTLE_ENDIAN
u_int8_t th_x2:4; /* (unused) */
u_int8_t th_off:4; /* data offset */
# endif
# if __BYTE_ORDER == __BIG_ENDIAN
u_int8_t th_off:4; /* data offset */
u_int8_t th_x2:4; /* (unused) */
# endif
u_int8_t th_flags;
u_int16_t th_win; /* window */
u_int16_t th_sum; /* checksum */
u_int16_t th_urp; /* urgent pointer */
};
28Network programming
Giao thức UDP
Viết tắt của User Datagram Protocol
Cung cấp dịch vụ truyền tin không kết nối cho
các chương trình tầng ứng dụng
Truyền tin không tin cậy
Không đảm bảo việc truyền tin đến đúng địa chỉ và
không bị trùng lặp
Truyền không giới hạn
Không có điều khiển luồng
Yêu cầu xử lý nhỏ
29Network programming
Tiêu đề UDP
30Network programming
Khai báo tiêu đề UDP
struct udphdr
{
u_int16_t uh_sport; /* source port */
u_int16_t uh_dport; /* destination port */
u_int16_t uh_ulen; /* udp length */
u_int16_t uh_sum; /* udp checksum */
};
31Network programming
Giao thức tầng ứng dụng:
Mô hình truyền tin khách/chủ
Truyền tin bất đối xứng
Máy khách gửi yêu cầu
Máy chủ gửi trả lời
Máy chủ
Sử dụng định dạng đã biết (e.g., IP
address + port)
Đợi kết nối đến
Xử lý yêu cầu, gửi trả lời
Máy khách
Bắt đầu mộtkết nối
Đợi trả lời từ máy chủ
Client
Server
Client
Client
Client
32Network programming
Giao thức tầng ứng dụng:
Mô hình truyền tin khách chủ(2)
Mô hình dịch vụ
Xử lý tuần tự:
Máy chủ chỉ xử lý yêu cầu của một máy khách tại mỗi thời điểm
E.g. Voice communication
Xử lý đồng thời:
Máy chủ xử lý nhiều yêu cầu của các máy khách khác nhau cùng
một lúc
E.g. Web server
Lai:
Máy chủ tạo ra nhiều kết nối với nhiều máy khách, nhưng xử lý yêu
cầu của các máy khách một cách tuần tự
Không có ranh giới rõ ràng giữa hai khái niệm máy khách và
máy chủ
Một máy chủ có thể là máy khách của một máy chủ khác
Một máy chủ có thể là máy khách của chính máy khách của nó
33
Giao thức tầng ứng dụng:
Mô hình truyền tin ngang hàng
Các node trong mạng đóng cả hai vai trò máy chủ/máy khách
Cung cấp và sử dụng tài nguyên
Bất cử node nào cũng có thể khởi tạo kết nối
Không có máy chủ dữ liệu trung tâm
“The ultimate form of democracy on the Internet”
“The ultimate threat to copy-right protection on the Internet”
Network programming
Node
Node
Node Node
Node
Internet
34
Giao thức tầng ứng dụng
Sử dụng các dịch vụ truyền tin cung cấp bởi
tầng dưới
Thông qua giao diện socket (= “bit pipe”)
Network programming
process
TCP with
buffers,
variables
socket
controlled by
application
developer
controlled by
operating
system
host or
server
process
TCP with
buffers,
variables
socket
controlled by
application
developer
controlled by
operating
system
host or
server
internet
35
Các yêu cầu về dịch vụ giao vận của các
ứng dụng phổ biến
Network programming
Application
file transfer
e-mail
Web documents
real-time audio/video
stored audio/video
interactive games
financial apps
Data loss
no loss
no loss
loss-tolerant
loss-tolerant
loss-tolerant
loss-tolerant
no loss
Bandwidth
elastic
elastic
elastic
audio: 5Kb-1Mb
video:10Kb-5Mb
same as above
few Kbps up
elastic
Time Sensitive
no
no
no
yes, 100’s msec
yes, few secs
yes, 100’s msec
yes and no
36
Một số giao thức tầng ứng dụng
Network programming
Application
e-mail
remote terminal access
Web
file transfer
streaming multimedia
remote file server
Internet telephony
Application
layer protocol
smtp [RFC 821]
telnet [RFC 854]
http [RFC 2068]
ftp [RFC 959]
proprietary
(e.g. RealNetworks)
NSF
proprietary
(e.g., Vocaltec)
Underlying
transport protocol
TCP
TCP
TCP
TCP
TCP or UDP
TCP or UDP
typically UDP
37
Ví dụ về giao thức tầng ứng dụng
HTTP
Network programming
http: hypertext transfer protocol
Giao thức tầng ứng dụng của
Web
Mô hình khách chủ
máy khách: Trình duyệt gửi
yêu cầu, nhận kết quả và
hiển thị trang Web
Máy khách: Máy chủ Web
gửi trang Web khi nhận
được yêu cầu của máy
khách
http1.0: RFC 1945
http1.1: RFC 2068
PC running
Explorer
Server
running
NCSA Web
server
Mac running
Navigator
38
Định dạng thông báo yêu cầu
Network programming
39
Ví dụ về thông báo yêu cầu
GET /hello.html
Host: www.abc.xyz.edu
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1;
Accept: text/xml,application/xml,application/xhtml+xml,
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: SignOnDefault=ATWOLF
Network programming
40
Định dạng thông báo trả lời
Network programming
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 ...
status line
(protocol
status code
status phrase)
header
lines
data, e.g.,
requested
html file
Các file đính kèm theo tài liệu này:
- ltm_bai_2_tong_quan_ve_giao_thuc_internet_3969.pdf