Mục lục
Lời nói đầu
Chơng I
Họ giao thức TCP/IP
I.1.1. Họ giao thức TCP/IP
TCP/IP là một họ giao thức để cung cấp phơng tiện truyền thông liên
mạng và nó đợc cấu trúc theo kiểu phân cấp.
Khác với mô hình OSI/ISO tầng liên mạng sử dụng giao thức kết nối
mạng "không liên kết" (connectionless) IP, tạo thành hạt nhân hoạt động của
Internet. Cùng với các thuật toán định tuyến RIP, OSPF, BGP, tầng liên mạng
IP cho phép kết nối một cách mềm dẻo và linh hoạt các loại mạng "vật lý"
khác nhau nh: Ethernet, Token Ring , X.25...
Giao thức trao đổi dữ liệu "có liên kết" (connection - oriented) TCP đợc
sử dụng ở tầng vận chuyển để đảm bảo tính chính xác và tin cậy việc trao đổi
dữ liệu dựa trên kiến trúc kết nối "không liên kết" ở tầng liên mạng IP.
Các giao thức hỗ trợ ứng dụng phổ biến nh truy nhập từ xa (telnet),
chuyển tệp (FTP), dịch vụ World Wide Web (HTTP), th điện tử (SMTP), dịch
vụ tên miền (DNS) ngày càng đợc cài đặt phổ biến nh những bộ phận cấu
thành của các hệ điều hành thông dụng nh UNIX (và các hệ điều hành chuyên
dụng cùng họ của các nhà cung cấp thiết bị tính toán nh AIX của IBM, SINIX
của Siemens, Digital UNIX của DEC), Windows9x/NT, Novell Netware,...
1
OSI
Application
Application
Presentation
Presentation
Session
Session
Transprort
Transprort
Stream là dòng số liệu đợc truyền trên cơ sở đơn vị số liệu là Byte.
Số liệu đợc trao đổi giữa các ứng dụng dùng TCP đợc gọi là stream, trong khi
dùng UDP, chúng đợc gọi là message.
Mỗi gói số liệu TCP đợc gọi là segment còn UDP định nghĩa cấu trúc dữ liệu
của nó là packet.
Lớp Internet xem tất cả các dữ liệu nh là các khối và gọi là datagram. Bộ giao
thức TCP/IP có thể dùng nhiều kiểu khác nhau của lớp mạng dới cùng, mỗi
loại có thể có một thuật ngữ khác nhau để truyền dữ liệu.
2
Hình 13. Mô hình thanm chiếu TCP/IP với chuẩn OSI 7 lớp
Phần lớn các mạng kết cấu phần dữ liệu truyền đi dới dạng các packets hay là
các frames.
Application Stream
Transport Segment/datagram
Internet Datagram
Network Access Frame
Cấu trúc dữ liệu tại các lớp của TCP/IP
Lớp truy nhập mạng
Network Access Layer là lớp thấp nhất trong cấu trúc phân bậc của TCP/IP.
Những giao thức ở lớp này cung cấp cho hệ thống phơng thức để truyền dữ
liệu trên các tầng vật lý khác nhau của mạng. Nó định nghĩa cách thức truyền
các khối dữ liệu (datagram) IP. Các giao thức ở lớp này phải biết chi tiết các
phần cấu trúc vật lý mạng ở dới nó (bao gồm cấu trúc gói số liệu, cấu trúc địa
chỉ...) để định dạng đợc chính xác các gói dữ liệu sẽ đợc truyền trong từng loại
mạng cụ thể.
So sánh với cấu trúc OSI/OSI, lớp này của TCP/IP tơng đơng với hai lớp
Datalink, và Physical.
Chức năng định dạng dữ liệu sẽ đợc truyền ở lớp này bao gồm việc nhúng các
gói dữ liệu IP vào các frame sẽ đợc truyền trên mạng và việc ánh xạ các địa
chỉ IP vào địa chỉ vật lý đợc dùng cho mạng.
không, ngời gửi phải tách lấy phần địa chỉ mạng trong phần địa chỉ IP. Nếu hai
địa chỉ này có địa chỉ mạng giống nhau thì datagram sẽ đợc truyền đi trực tiếp;
ngợc lại phải xác định một gateway, thông qua gateway này chuyển tiếp các
datagram.
Khi một trạm muốn gửi các gói dữ liệu đến một trạm khác thì nó phải đóng
gói datagram vào một khung (frame) và gửi các frame này đến gateway gần
nhất. Khi một frame đến một gateway, phần datagram đã đợc đóng gói sẽ đợc
tách ra và IP routing sẽ chọn gateway tiếp dọc theo đờng dẫn đến đích.
Datagram sau đó lại đợc đóng gói vào một frame khác và gửi đến mạng vật lý
để gửi đến gateway tiếp theo trên đờng truyền và tiếp tục nh thế cho đến khi
datagram đợc truyền đến trạm đích.
Chiến l ợc định tuyến : Trong thuật ngữ truyền thống của TCP/IP chỉ có hai
kiểu thiết bị, đó là các cổng truyền (gateway) và các trạm (host). Các cổng
truyền có vai trò gửi các gói dữ liệu, còn các trạm thì không. Tuy nhiên khi
4
Network ANetwork BNetwork CN
Host A1H Host C1H
một trạm đợc nối với nhiều mạng thì nó cũng có thể định hớng cho việc lu
chuyển các gói dữ liệu giữa các mạng và lúc này nó đóng vai trò hoàn toàn nh
một gateway.
Các trạm làm việc lu chuyển các gói dữ liệu xuyên suốt qua cả bốn lớp, trong
khi các cổng truyền chỉ chuyển các gói đến lớp Internet là nơi quyết định
tuyến đờng tiếp theo để chuyển tiếp các gói dữ liệu.
Các máy chỉ có thể truyền dữ liệu đến các máy khác nằm trên cùng một mạng
vật lý. Các gói từ A1 cần chuyển cho C1 sẽ đợc hớng đến gateway G1 và G2.
Trạm A1 đầu tiên sẽ truyền các gói đến gateway G1 thông qua mạng A. Sau
đó G1 truyền tiếp đến G2 thông qua mạng B và cuối cùng G2 sẽ truyền các gói
trực tiếp đến trạm C1, bởi vì chúng đợc nối trực tiếp với nhau thông qua mạng
C. Trạm A1 không hề biết đến các gateway nằm ở sau G1. A1 gửi các gói số
liệu cho các mạng B và C đến gateway cục bộ G1 và dựa vào gateway này để
gói dữ liệu nhận đợc từ một mạng nào đó mà lớn hơn MTU của một mạng
khác thì nó cần đợc phân mảnh ra thành các gói nhỏ hơn, gọi là fragment. Quá
trình này gọi là quá trình phân mảnh. Dạng của một fragment cũng giống nh
dạng của một gói dữ liệu thông thờng. Từ thứ hai trong phần header chứa các
thông tin để xác định mỗi fragment và cung cấp các thông tin để hợp nhất các
fragment này lại thành các gói nh ban đầu. Trờng identification dùng để xác
định fragment này là thuộc về gói dữ liệu nào.
Giao thức ICMP
ICMP ((Internet Control Message Protocol) là một giao thức điều khiển của
mức IP, đợc dùng để trao đổi các thông tin điều khiển dòng số liệu, thông báo
lỗi và các thông tin trạng thái khác của bộ giao thức TCP/IP. Ví dụ:
- Điều khiển lu lợng dữ liệu (Flow control): khi các gói dữ liệu đến quá
nhanh, thiết bị đích hoặc thiết bị định tuyến ở giữa sẽ gửi một thông
điệp ICMP trở lại thiết bị gửi, yêu cầu thiết bị gửi tạm thời ngừng việc
gửi dữ liệu.
- Thông báo lỗi: trong trờng hợp địa chỉ đích không tới đợc thì hệ thống
sẽ gửi một thông báo lỗi "Destination Unreachable".
- Định hớng lại các tuyến đờng: một thiết bị định tuyến sẽ gửi một
thông điệp ICMP "định tuyến lại" (Redirect Router) để thông báo với
một trạm là nên dùng thiết bị định tuyến khác để tới thiết bị đích.
Thông điệp này có thể chỉ đợc dùng khi trạm nguồn ở trên cùng một
mạng với cả hai thiết bị định tuyến.
- Kiểm tra các trạm ở xa: một trạm có thể gửi một thông điệp ICMP
"Echo" để kiểm tra xem một trạm có hoạt động hay không.
6
Sau đây là mô tả một ứng dụng của giao thức ICMP thực hiện việc định tuyến
lại (Redirect):
Ví dụ: giả sử host gửi một gói dữ liệu IP tới Router R1. Router R1 thực hiện
việc quyết định tuyến vì R1 là router mặc định của host đó. R1 nhận gói dữ
liệu và tìm trong bảng định tuyến và nó tìm thấy một tuyến tới R2. Khi R1 gửi
RARP không phải là bộ phận của IP mà IP sẽ dùng đến chúng khi cần.
Giao thức ARP
Giao thức TCP/IP sử dụng ARP để tìm địa chỉ vật lý của trạm đích. Ví dụ khi
cần gửi một gói dữ liệu IP cho một hệ thống khác trên cùng một mạng vật lý
Ethernet, hệ thông gửi cần biết địa chỉ Ethernet của hệ thống đích để tầng liên
kết dữ liệu xây dựng khung gói dữ liệu.
Thông thờng, mỗi hệ thống lu giữ và cập nhật bảng thích ứng địa chỉ IP-
MAC tại chỗ (còn đợc gọi là bảng ARP cache). Bảng thích ứng địa chỉ đợc cập
nhật bởi ngời quản trị hệ thống hoặc tự động bởi giao thức ARP sau mỗi lần
ánh xạ đợc một địa chỉ thích ứng mới.
Mỗi khi cần tìm thích ứng địa chỉ IP - MAC, có thể tìm địa chỉ MAC tơng
ứng với địa IP đó trớc tiên trong bảng địa chỉ IP - MAC ở mỗi hệ thống. Nếu
không tìm thấy, có thể sử dụng giao thức ARP để làm việc này. Trạm làm việc
gửi yêu cầu ARP (ARP_Request) tìm thích ứng địa chỉ IP -MAC đến máy
phục vụ ARP - server. Máy phục vụ ARP tìm trong bảng thích ứng địa chỉ IP -
MAC của mình và trả lời bằng ARP_Response cho trạm làm việc. Nếu không,
máy phục vụ chuyển tiếp yêu cầu nhận đợc dới dạng quảng bá cho tất cả các
trạm làm việc trong mạng. Trạm nào có trùng địa chỉ IP đợc yêu cầu sẽ trả lời
với địa chỉ MAC của mình. Tóm lại tiến trình của ARP đợc mô tả nh sau
8
129.1.1.1
IP
ARP request
IP
ARP request
IP
ARP request
1
2,5
4
6. Truyền dữ liệu sử dụng cơ chế song công (full-duplex).
Một tiến trình ứng dụng trong một host truy nhập vào các dịch vụ của TCP
cung cấp thông qua một cổng (port) nh sau:
Một cổng kết hợp với một địa chỉ IP tạo thành một socket duy nhất trong liên
mạng. TCP đợc cung cấp nhờ một liên kết logic giữa một cặp socket. Một
socket có thể tham gia nhiều liên kết với các socket ở xa khác nhau. Trớc khi
truyền dữ liệu giữa hai trạm cần phải thiết lập một liên kết TCP giữa chúng và
khi kết thúc phiên truyền dữ liệu thì liên kết đó sẽ đợc giải phóng. Cũng giống
nh ở các giao thức khác, các thực thể ở tầng trên sử dụng TCP thông qua các
hàm dịch vụ nguyên thuỷ (service primitives), hay còn gọi là các lời gọi hàm
(function call).
10
1 2 3
TCP
IP
NAP
Userprocess
1 2
TCP
IP
NAP
Userprocess
Host
Host
Internet
TCP_A TCP_B
Syn, Seq=x
Syn, Seq=y
Ack(x+1)
Ack(y+1)
của tiến trình trạm (bớc 2).
Tiến trình trạm trả lời lại gói SYN của thực thể dịch vụ bằng một thông báo trả
lời ACK cuối cùng. Bằng cách này, các thực thể TCP trao đổi một cách tin cậy
các giá trị ISN của nhau và có thể bắt đầu trao đổi dữ liệu. Không có thông
điệp nào trong ba bớc trên chứa bất kỳ dữ liệu gì; tất cả thông tin trao đổi đều
nằm trong phần tiêu đề của thông điệp TCP (bớc 3).
11
TCP_A TCP_B
Syn, Seq=x
Syn, Seq=y
Ack(x+1)
Ack(y+1)
a) thiết lập kết nối
TCP_A TCP_B
Fin, Seq=x
Ack(x+1)
Fin, Seq=y,
Ack(x+1)
Ack(y+1)
b) Kết thúc kết nối
Quá trình kết nối theo 3 bớc
Kết thúc kết nối
Khi có nhu cầu kết thúc kết nối, thực thể TCP, ví dụ cụ thể A gửi yêu cầu kết
thúc kết nối với FIN=1. Vì kết nối TCP là song công (full-duplex) nên mặc dù
nhận đợc yêu cầu kết thúc kết nối của A (A thông báo hết số liệu gửi) thực thể
B vẫn có thể tiếp tục truyền số liệu cho đến khi B không còn số liệu để gửi và
thông báo cho A bằng yêu cầu kết thúc kết nối với FIN=1 của mình. Khi thực
12
TCP_A TCP_B
Syn, Seq=x
- Leased Line
Trên thế giới có nhiều hãng phát triển và trợ giúp các hệ thống này, nhất
là hãng National Instruments, hãng này đã phát triển các điều khiển ActiveX
dành cho thu thập dữ liệu đo lờng, phát triển giao diện, xử lí dữ liệu và phát
tán dữ liệu đo lờng với tốc độ cao qua mạng Internet dựa trên cơ sở công nghệ
DataSocket. Với các th viện đó ngời sử dụng dễ dàng phát triển các ứng dụng
đo lờng và điều khiển qua mạng TCP/IP với sự tích hợp mạnh mẽ của công
nghệ WEB, nó cho phép ngời sử dụng truy cập dữ liệu đo lờng không khác gì
truy cập các trang Web thông thờng, đồng thời điều đó cũng cho cơ hội dễ
dàng tích hợp dữ liệu đo lờng với các công nghệ khác.
1. DataSocket là gì ?
DataSocket là một công nghệ lập trình mới dựa trên cơ sở chuẩn công
nghiệp TCP/IP, để làm đơn giản hóa việc trao đổi dữ liệu giữa các ứng dụng
khác nhau trên một máy tính hoặc giữa những máy tính đợc kết nối với nhau
qua mạng. DataSocket thực hiện một giao diện lập trình có hiệu năng cao và
14