Bộ giao thức TCP/IP là tập hợp của một số các giao thức liên kết gọi là giao thức lõi của TCP/IP.Tất cả các ứng dụng và các giao thức khác đều dựa trên các dịch vụ cung cấp bởi các giao thức sau: IP, ARP, ICMP, IGMP, TCP và UDP.
Internet protocol (IP)
IP là giao thức chịu trách nhiệm đánh địa chỉ và định tuyến các gói giữa các máy. IP không phải là giao thức kết nối có nghĩa là nó không có các phiên đợc thành lập trớc khi trao đổi dữ liệu. IP cũng không phải là giao thức tin cậy có nghĩa là các gói tin truyền đi không đợc bảo đảm. Một gói tin IP có thể bị mất, bị trễ hay bị truyền thừa và IP cũng không khắc phục lại các lỗi đó. Sự đảm bảo và khôi hục lại các gói tin bị mất hay bị lỗi do các giao thức ở tầng trên đảm bảo. Chính là TCP. Đơn vị dữ liệu dùng trong IP đợc gọi Datagram có định dạng nh sau:
Một gói IP bao gồm một IP header và các thông tin. Bảng sau mô tả các thành phần trong IP header.
Tham số Mô tả
VER(4bits) Chỉ version hiện hành của IP
IHL(4bits) Chỉ độ dài phần đầu(Internet Header Length) của
datagram
Type of service Đặc tả các tham số về dịch vụ
Total length(16 bits) Chỉ độ dài toàn bộ datagram
Identification(16 bits) Cùng với các tham số khác nh Source Address và
Destination Address để định danh duy nhất cho một datagram khi nó còn trên mạng
Flag(3 bits) Liên quan tới phân đoạn
Fragment offset(13 bits)
Chỉ vị trí đoạn ở trong datagram
Time to Live (8bits) Quy định thời gian tồn tại(s) của datagram trong
mạng Option (Độ dài thay
đổi)
Khai báo các tuỳ chọn do ngời dùng thay đổi Padding(Độ dài thay
đổi)
Vùng đệm
Source IP Address Địa chỉ IP thực của nơi gửi
Destination IP Address Địa chỉ của đích cuối cùng
Protocol Cho biết IP tại nơi đích sẽ chuyển gói tin sang
giao thức nào TCP,UDP,ICMP… Header Checksum(16
bits)
Một cơ chế tính toán đơn giản để kiểm tra sự toàn vẹn của IP header
Data(Độ dài thay đổi) Vùng dữ liệu có độ dài là bội của 8bits và tối đa là
65535 bytes
IPv6 (IP version 6)
IPv6 là một phiên bản mới của giao thức IP dựa trên IPv4. IPv6 tăng độ dài lên 128 bits để có thể đáp ứng đợc số địa chỉ mạng ngày càng tăng. IPv6 hỗ trợ khả năng mở rộng và tuỳ chọn. Định dạng của IPv6 header nh sau :
Tham số Mô tả
Source port Số cổng của nguồn
Destination port Số cổng của đích
Sequence number Số sequence của data octet đầu tiên trong một
đoạn
Acknowledgment number Nếu bit ACK đợc set thì nó chức giá trịn tiếp
theo của Sequence number
Data offset(4bits) Xác định vị trí dữ liệu bắt đầu
Reserved(6bits) Cha dùng
Control bits(6 bits) Có thể là U,A,P,R,F,S,F
Window(16 bits) Số data octet của đoạn dữ liệu
Checksum Một cơ chế tính toán đơn giản để kiểm tra sự
toàn vẹn của IP header Bảng 5.6 IP header v6
Sự phân mảnh và tập hợp lại
Nếu router nhận đợc một gói tin quá lớn để có thể truyền đợc trên mạng thì nó sẽ chia gói tin này thành các gói tin nhỏ hơn. Khi gói tin đợc nhận tại địa chỉ đích thì IP tại đây sẽ tập hợp các gói này thành gói tin ban đầu. Quá trình đó đợc gọi là phân mảnh và tập hợp lại. Quá trình Phân mảnh và tập hợp lại diễn ra nh sau:
- Khi một gói IP đợc gửi đi từ một nơi nó đặt một giả trị duy nhất trong trờng
Identification .
- Gói tin đợc nhận tại router. IP của router xác nhận đơn vị nhỏ nhất có thể
truyền của mạng để có thể phân mảnh gói tin.
- IP chia gói tin thành các gói nhỏ và các gói này đợc chuyển đi với các Header
Khi các gói nhỏ phân mảnh này đợc nhận tại một IP nào đó thì nó sẽ đợc tập hợp lại thành một gói nh ban đầu.
ARP(Address Resolution Protocol)
Các máy tính trên cùng một mạng vật lý chỉ có thể liên lạc với nhau khi biết địa chỉ vật lý của nhau. Giao thức ARP cho phép một máy tính tìm đại chỉ vật lý của máy đích trên cùng một mạng vật lý, chỉ cần biết địa chỉ IP của máy đích.
ICMP(Internet Control Message Protocol)
Để cho phép một bộ định tuyến trong mạng thông báo lỗi hoặc cung cấp thông tin về những tình huống không mong đợi, những nhà thiết kế đã cung cấp thêm một cơ chế thông báo có mục đích đặc biệt cho các giao thức TCP/IP. Cơ chế này gọi là ICMP. ICMP cho phép một bộ định tuyến gửi thông báo lỗi và thông báo điều khiển đến các bộ định tuyến khác hoặc các máy khác. ICMP cung cấp phơng tiện thông tin liên lạc giữa phần mềm IP trên một máy và phần mềm IP trên maý khác. Khi một datagram gây lỗi, ICMP chỉ có thể thông báo điều kiện lỗi trở về nguồn ban đầu của datagram. Nguồn này phải liên lạc lỗi với từng chơng trình ứng dụng hoặc thực hiện thao tác khác để sửa lôĩ.
TCP (Transmission control protocol)
TCP là giao thức kiểu có liên kết (connection oriented) nghĩa là cần thành lập liên kết giữa các cặp thực thể TCP trớc khi chúng trao đổi dữ liệu với nhau. Đơn vị sử dụng trong TCP là segment(đoạn dữ liệu) có định dạng nh sau:
Các tham số trong định dạng:
Tham số Mô tả
Destination port(16bits) Số hiệu cổng của trạm đích
Sequence number(32bits) Số hiệu của số byte đầu tiên của segment nếu bit SYN không đợc thiết lập.
Acknowledment number (32bits)
Số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận.
Data offset(4 bits) Số lợng từ (word ) trong TCP header
Reserved(6 bits) Cha dùng
Control bits Các bits điều khiển
Window(16 bits) Số lợng các byte dữ liệu bắt đầu từ byte đợc chỉ
ra trong vùng ACK number
Checksum (16 bits) Mã kiểm soát lỗi
Urgent Pointer(16 bits) Con trỏ này trỏ tới số hiệu tuần tự của byte đi
theo sau dữ liệu khẩn,cho phép bên nhận biết đ- ợc độ dài của dữ liệu khẩn
Option(Độ dài thay đổi) Các lựa chọn
Pading(Độ dài thay đổi) Phần chèn thêm vào header để bảo đảm phần
header luôn kết thúc ở mốc 32 bits
TCP data(Độ dài thay đổi) Chứa dữ liệu của tầng trên,có độ dài tối đa ngầm
định là 536 bytes.Giá trị nà có thể thay đổi trong vùng option.Một tiến trình 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.Một cổng kết hợp với địa chỉ IP tạo thành một socket duy nhất trong liên mạng. 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 không còn nhu cầu truyền dữ liệu thì liên kết đ- ợc giải phóng.
5.3 Giao diện ứng dụng TCP/IP
Để ứng dụng có thể truy cập các dịch vụ của các giao thức lõi của TCP/IP theo một cách chuẩn hệ điều hành mạng cung cấp chuẩn công nghệ gọi là Application programming Interface(API).API là một tập các hàm và lệnh đợc lập trình để cho phép thực hiện các dịch vụ mạng.Hình 6.3 minh hoạ hai giao diện lạpp trình mạng thông dụng là Winsock và NetBIOS và các giao thức lõi của nó.
Hình 5.5 Giao diện lập trình TCP/IP
5.3.1 Windows Sockets Interface
Windows Sockets API là API chuẩn của Windows cho ứng dụng sử dụng giao thức TCP và UDP.Các ứng dụng viết dới Windows socket API có thể chạy trên các version của TCP/IP. Window socket cung cấp dịch vụ cho phép kết hợp một cổng và địa chỉ IP để thành lập một kết nối ,gửi và nhận dữ liệu.
5.3.2 NetBIOS
NetBIOS đợc phát triển cho IBM bởi Sytek Corporation cho phép các ứng dụng giao kết qua mạng.NetBIOS là một chuẩn API cho phép lập trình I/O, điều khiển dới các phần mềm điều khiển giao thức mạng . NetBIOS cung cấp các lệnh và hỗ trợ NetBIOS Name Management,NetBIOS Datagram và NetBISO session.
5.4 Địa chỉ IP
Một hệ thống liên lạc đợc gọi là cung cấp dịch vụ thông tin liên lạc toàn cầu nếu nó cho phép bất kỳ máy tính liên lạc đựoc với máy tính khác. Để cho hệ thông tin liên lạc là toàn cầu thì cần có phơng pháp đợc chấp nhận toàn cầu về việc xác định mỗi máy tính nối vào nó. Thông thuờng định danh của máy tính đợc phân loại theo tên, địa chỉ.Mỗi máy tính TCP/IP đợc định nghĩa bởi một địa chỉ logic IP. Địa chỉ IP là một địa chỉ lớp mạng và nó không phụ thuộc vào địa chỉ MAC. Địa chỉ IP xác định vị trí của máy tính trên mạng giống nh địa chỉ của nhà trong thành phố. Một địa chỉ IP là một số duy nhất toàn cầu và có định dạng thống nhất. Mỗi địa chỉ IP bao gồm : network ID và host ID. Network ID (hay còn gọi là địa chỉ mạng) xác định vị trí của một hệ thống trên cùng một mạng vật lý đựoc xác định bởi IP router. Tất cả các hệ thống trên một mạng vật lý phải có địa chỉ mạng giống nhau. Địa chỉ mạng phải là duy nhất trên một liên mạng. Host ID (hay gọi là địa chỉ host) xác định một trạm một server, một router hay một host TCP/IP khác trên mạng. Địa chỉ Host ID là duy nhất trên một địa chỉ mạng. Một địa chỉ IP gồm 32 bits.Thay vì làm việc với 32 bits một lần ,thông thờng địa chỉ IP đợc chia ra làm 4 đoạn 8 bits đựoc gọi là octet. Mỗi octet đựoc chuyển sang số thập phân trong một trờng từ 0-255 và đựoc phân chia bởi các dấu chấm. Ví dụ của một địa chỉ IP trong dạng nhị phân và dạng thập phân :
Binary Format Dotted Decimal Notation
11000000 10101000 00000011 00011000 192.168.3.24
Bảng 5.7 Ví dụ địa chỉ IP
Hình 5.6 Địa chỉ IP
5.4.1 Address Classes
Mọi địa chỉ IP đều gồm 2 phần là Network ID và Host IP nhng định dạng của chúng không giống nhau. Bởi vì cỡ của các đoạng mạng là không giống nhau, tuỳ theo các kích cỡ mạng khác nhau chia ra 4 loại class khác nhau. Class của địa chỉ IP định nghĩa số bits đợc sử dụng cho network ID và số bits sử dụng cho Host ID .Số bít sử dụng cho Network ID quyến định số mạng và số bits sử dụng cho Host ID quyết định số host có thể trên một mạng.Các class là A, B, C, D, E. Tuỳ thuộc vào số mạng và số host mà ta chọn các class khác nhau. Class A định nghĩa một số lợng nhỏ mạng và số lợng lớn các
host trên mạng. Ngợc lại class C lại định nghĩa nhiều mạng và số host trên mạng là ít. Class B nằm giữa class A và C nó thích hợp cho các mạng có số mạng vừa và số host trên mạng cũng không lớn. Class D hơi khác so với các class khác là nó sử dụng cho mutilCast. Class E là thiết kế cho tơng lai và hiện tại cha sử dụng. Bảng sau mô tả Network ID và Host ID của địa chỉ IP class A, B, C.
Class IP Address Net ID Host ID
A a.b.c.d a b.c.d
B a.b.cd a.b b.c
C a.b.c.d a.b.c D
Bảng 5.8 Network ID và Host ID của các class
Có thể nhận biết class của một địa chỉ IP bởi nhìn bit đầu tiên trong dạng nhị phân hay trờng trong biểu thị thập phân. Bảng sau biểu thị cách nhận biết các class A, B, C và số host và số network tối đa trong cho mỗi địa chỉ IP.
IP Address class IP Address Format Leading bits Decimal range Max networks Max Host/network A N.H.H.H 0 1- 127 127 16.777.216 B N.N.H.H 10 128-191 16.384 65.534 C N.N.N.H 110 192-223 2.097.152 254
Bảng 5.9 Số network và host tối đa trong các class Class B có địa chỉ 192.168.*.* thì có thể có 65.534 máy tính trên mạng.
Hình 5.6 Các class của địa chỉ IP
5.4.2 Subnet và Subnet Mask
Một địa chỉ IP gồm địa chỉ Network ID và host ID và đợc chia thành các class khác nhau.Ta thấy trong class A có thể có 254 network và có tới hơn 16 tỉ host trên mạng. Nh vậy để đánh địa chỉ cho các host trên mạng ta cần hơn 16 tỉ địa chỉ.Tất cả các host trên cùng một mạng vật lý thì sẽ cùng chia sẻ giao thông đờng truyền. Nh vậy nếu không sử dụng hết hơn 16 tỉ host thì rất lãng phí đờng truyền. Ta có thể chia nhỏ mạng ra và khi đó sẽ có địa chỉ IP mới. Điịa chỉ IP này sẽ dựa trên địa chỉ IP ban đầu.Địa chỉ IP của mạng con này cũng có Network ID và Host ID, Network ID lấy một phần từ Host ID của mạng ban đầu.Ví dụ một mạng Class B có địa chỉ IP 139.12.0.0 thì có thể có 65534 host. Nh vậy số host quá nhiều không sử dụng hết dẫn đến lãng phí đờng
truyền. Ta có thể chia mạng ra thành các mạng nhỏ với các địa chỉ IP riêng mà không ảnh hởng tới địa chỉ IP của mạng trong một liên mạng.
Hình 5.7 Mạng trớc khi chia nhỏ
Mạng đợc chia nhỏ bằng cách sử dụng 8 bits của địa chỉ Host làm địa chỉ Network ID mới. Mạng sau khi chia nhỏ minh hoạ nh hình 5.8
Hình 5.8 Mạng sau khi chia
Một vấn đề đặt ra là làm thế nào để router có thể biết đợc địa chỉ IP của mạng con và thiết lập lại địa chỉ IP. Subnet mask đợc sử dụng để xác đinh rõ địa chỉ IP của mạng ban đầu cũng nh địa chỉ IP của mạng con.
Subnet mask
Subnet mask là một giá trị 32 bits đợc sử dụng để phân biệt Network ID và Host ID trên mạng khi chia mạng thành các mạng con. Các bits của subnet mask đợc định nghĩa nh sau:
- Tất cả các bit biểu thị Network ID thì có giá trị là 1
- Tất cả các bit biểu thị Host ID thì có giá trị là 0
Mỗi host trên mạng cần sử dụng một subnet mask, có thể sử dụng subnet mask mặc định của mạng ban đầu hoặc thay đổi khi chia thành các mạng con. Subnet mask mặc định đợc biểu thị nh sau:
Address class
Bits for subnet mask Subnet Mask
Class A 11111111 00000000 00000000 00000000 255.0.0.0
Class B 11111111 11111111 00000000 00000000 255.255.0.0
Class C 11111111 11111111 11111111 00000000 255.255.255.0
Bảng 5.10 Subnet Mask
Khi chia nhỏ mạng thành các mạng con thì subnet mask đợc biểu thị khác.Ví dụ 138.96.58.0 là địa chỉ IP của một host trong mạng class B.8 bits trong địa chỉ Host ID ở mạng ban đầu đợc sử dụng làm địa chỉ Network ID của mạng con.Subnet mask cần sử dụng 24 bits để biểu thị Network ID trong mạng con.(255.255.255.0).
Chú ý: Subnet mask không phải là địa chỉ IP và thay vì biểu thị subnet mask bằng các bits 1,0 ngời ta có thể dụng tiền tố để biểu thị.Ví dụ một host trong mạng class B có địa chỉ IP 138.96.0.0 và subnet mask 255.255.0.0 có thể biêu thị nh sau: 138.96.0.0/16
Address
class Bits for subnet mask Network Prefix
Class A 11111111 00000000 00000000 00000000 /8
Class B 11111111 11111111 00000000 00000000 /16
Class C 11111111 11111111 11111111 00000000 /24
Bảng 5.11 Biểi diễn dới dạng prefix
Xác định địa chỉ Network ID
Để biết chính xác network ID của một host trong một mạng con ta sử dụng một phép toán logic AND giữa địa chỉ IP và subnet mask của host.Ví dụ để tìm Network ID của một host có địa chỉ IP là 129.56.189.41 và địa chỉ IP là 255.255.240.0 ta thực hiện phép toán AND giữa địa chỉ IP và subnet mask:
10000001 00111000 10111101 00101001 IP Address 11111111 11111111 11110000 00000000 Subnet Mask 10000001 00111000 10110000 00000000 Network ID 5.4.3 Subnetting
Khái niệm về chia mạng thì đơn giản nhng thực tế việc chia mạng ohức tạp hơn một chút. Chia nhỉ một mạng cần ba bớc sau:
2. Liệt kê các network ID trong mạng mới
3. Liệt các địa chỉ IP cho mỗi network ID trong mạng mới
Bớc 1 : Xác định số bits sử dụng cho Host
Đây là bớc xác định số mạng con(subnet) và số host trên mỗi mạng con. Trớc khi xác định số bít sử dụng cho host nên tính toán số lợng subnet và số host trên mỗi subnet. Việc sử dụng nhiều bits cho subnet mask sẽ mất rất nhiều thời gian để xét địa chỉ IP sau này. Càng nhiều host bits đợc sử dụng thì càng có nhiều subnet.Ví dụ sử dụng 8 bits host trong class của Class B. Nếu sử dụng 1 bits thì sẽ có 2 mạng con và có 16382