Để truyền thông điệp tới một máy chủ trên mạng, nơi gửi phải biết địa chỉ phần cứng của máy chủ đích. Địa chỉ phần cứng, còn gọi là địa chỉ MAC (Media Access Control). Địa chỉ IP không phải là đia chỉ vật lý, nó chỉ chứa địa chỉ nhận dạng máy chủ (Host) và mạng (Net) là địa chỉ 32 bit, trong khi đó địa chỉ MAC là 48 bit. Vì thế có một cơ chế linh động để xác định địa chỉ MAC khi biết địa chỉ IP của máy chủ, cơ chế này đ−ợc thực hiện nh− một giao thức riêng đ−ợc gọi là ARP.
Phần lớn các trạm mạng TCP đều duy trì một bảng chuyển từ địa chỉ LAN vật lý sang địa chỉ IP. Thực tế nó chỉ là một vùng RAM chứa tham chiếu (mapping) từ địa chỉ MAC sang địa chỉ IP mà nó học đ−ợc trên mạng. Quá trình học này nh− sau:
Một trạm (Host A) gửi một khung truyền d−ới dạng Broadcast gọi là khung yêu cầu ARP trên mạng, khung này chứa địa IP của Host B (nơi cần xác định địa chỉ) và địa chỉ MAC và địa chỉ IP của máy gửi (Host A). Tất cả các nút nhận đ−ợc khung truyền này sẽ so sánh địa chỉ của nó với địa chỉ IP trong yêu cầu ARP. Chỉ có máy chủ có cùng địa chỉ IP với địa chỉ trong khung yêu cầu ARP mới đáp lại. Nếu Host B tồn tại trên mạng, nó sẽ phản ứng lại địa chỉ IP mã hoá trong một khung trả lời ARP. Host B khởi động bảng chứa ARP và nhớ lại địa chỉ này, các giá trị chứa trong bảng này sẽ hết hiệu lực sau một khoảng thời gian nào đó (thời gian này có thể đ−ợc cấu hình trong một số ứng dụng TCP/IP).
Một số chú ý về ARP:
• ARP không phải là một phần của giao thức IP nên nó không chứa phần Header của IP.
• Các yêu cầu và trả lời của ARP đều là các địa chỉ vật lý. • Trong vùng Ethertypes ARP đ−ợc gán 0806h.
• ARP có khả năng xoá bỏ các địa chỉ đã lâu không dùng. • Nếu một máy gửi yêu cầu cho chính nó, nó phải tự trả lời.
c)Thủ tục phân giải ng−ợc (RARP- Reverse Address Resolution)
Giao thức này đ−ợc dùng trong tr−ờng hợp khi một trạm trên mạng chỉ biết địa chỉ phần cứng (MAC) mà không biết địa chỉ IP và có thể đ−ợc sử dụng trong các trạm làm việc không đĩa (ví dụ nh− Sun Microsystem).
T−ơng tự nh− ARP, máy yêu cầu sẽ gửi một gói RARP yêu cầu tới máy chủ (Server) tại một vị trí nào đó mà dịch vụ RARP chạy trên đó. Máy RARP server sẽ trả lời bằng địa chỉ IP một trạm nào đó.
2.4 Các giao thức tầng giao vận.
Trong bộ giao thức TCP/IP có hai giao thức thông dụng nhất cho tầng Transport là UDP và TCP
2.4.1.Giao thức bó dữ liệu ng−ời dùng-UDP (User Datagram Protocol).
UDP là một dịch vụ không kết nối không tin cậy, nghĩa là nó có thể truyền dữ liệu mà không đòi hỏi thiết lập một mạch dữ liệu, nó cũng không có cơ chế báo nhận, không sắp xếp thứ tự các gói gửi tới. Do vậy nó có thể làm mất hoặc trùng lặp dữ liệu mà không báo lỗi nào cho bên gửi (t−ơng tự nh−
IP).
Mỗi đơn vị UDP đ−ợc cung cấp địa chỉ IP nguồn và đích cùng với số cổng nhận dạng các tiến trình mức ứng dụng liên quan đến việc trao đổi dữ liệu (t−ơng tự dịch vụ b−u chính). Phần header của UDP rất đơn giản và sẽ có dạng nh− sau:
0 15 16 31
Source port Destination port
Message length Checksum
DATA
UDP có phần header nhỏ hơn TCP, độ tin cậy nhỏ hơn TCP do nó chỉ có một Checksum để kiểm tra dữ liệu, các chức năng cũng ít phức tạp hơn do đó nó hoạt động nhanh và linh hoạt hơn TCP. Vì thế nó rất thích hợp cho các ứng dụng đ−ợc truyền có tính chất quảng bá hay những ứng dụng trong các mạng có độ tin cậy cao nh− mạng LAN.
UDP th−ờng đ−ợc dùng cho các ứng dụng không đòi hỏi độ tin cậy cao nh−
NFS, DNS, SNMP, TFTP. UDP cũng đ−ợc sử dụng trong IP Tunneling đ−ợc dùng để truyền dữ liệu ứng dụng phi TCP/IP trên một mạng TCP/IP. Trong thực tế khi đi qua các mạng, 99% các bản tin UDP đ−ợc giao nhận.
2.4.2. Giao thức điều khiển truyền dữ liệu - TCP (Transmission Control Protocol ). Control Protocol ).
TCP là giao thức kết nối kiểu có liên kết và đáng tin cậy cho phép các máy chủ hoạt động song công. Nghĩa là phải cung cấp một kết nối logic (t−ơng tự các mạch điện thoại) giữa hai thực thể tr−ớc khi trao đổi dữ liệu với nhau, khi mạch ảo này đ−ợc thiết lập thì dữ liệu có thể đ−ợc truyền một cách đồng thời. Kết nối đ−ợc đ−ợc duy trì trong thời gian truyền dữ liệu. TCP dùng cơ chế báo nhận và các số tuần tự để duy trì phiên truyền dữ liệu. Số tuần tự để xác định thứ tự của gói dữ liệu nhằm nhận ra gói bị thất lạc hay trùng lặp. TCP là giao thức tuần tự h−ớng byte, nghĩa là TCP truyền gói dữ liệu (nhiều byte) và gán cho mỗi gói một số tuần tự.
TCP cung cấp cơ chế gán và quản lý các số hiệu cổng (port number) để định danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. 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, các liên kết ảo chính là liên kết giữa các Socket.
a.Header của TCP sẽ có dạng nh− sau:
0 31
Source Port Destination Port
Sequence Number Acknowledgement Number Data Offset Reserveed U R G A C K P S H R S T S Y N F I N Window
Checksum Urgent Pointer
Options Padding TCP data
Các tham số có ý nghĩa nh− sau:
• Source Port (16 bits): Số hiệu cổng trạm nguồn. • Destination Port (16 bits): Số hiệu cổng trạm đích.
• Sequence Number (32 bits): Số hiệu byte đầu tiên của segment trừ khi bit SYN đ−ợc thiết lập. Nếu bit SYN đ−ợc thiết lập thì Sequence Number là số hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN+1.
• Acknowledgement Number (32 bits): Số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận và chỉ ra rằng đã nhận tốt các segment mà trạm nguồn đã gửi. Mồi khi kết nối đ−ợc thiết lập tr−ờng này luôn luôn đ−ợc đặt.
• Data Offset (4 bits): Chỉ ra số l−ợng từ (32-bit words) của phần TCP Header.
• Reserved (6 bits): Đ−ợc để dành cho t−ơng lai. • Control Bits:
+ URG (Urgent Poiter): Vùng con trỏ khẩn có hiệu lực, phải xử lý số liệu tr−ớc các số liệu khác.
+ ACK (Acknowledgement): Nếu đ−ợc đặt, gói tin sẽ chứa thông tin báo nhận.
+ PSH (Push): Chức năng chuyển số liệu (push) mà không cần chờ đầy. + RST (Reset): Thiết lập lại kết nối khi cần (th−ờng do lỗi phần cứng hay
phần mềm).
+ SYN (Synchronous): Đồng bộ hoá các số hiệu tuần tự để thiết lập lại kết nối.
+ FIN: Không còn dữ liệu từ trạm nguồn - kết thúc kết nối.
• Windows (16 bits): Là số l−ợng các byte (octets) dữ liệu bắt đầu từ byte đ−ợc chỉ ra trong vùng ACK mà trạm nguồn đã sẵn sàng để nhận.
• CheckSum (16 bits): Mã kiểm soát lỗi (theo kiểu CRC) cho toàn bộ
Segment (bao gồm cả header và data).
• Urgent Pointer (16 bits): Con trỏ này trỏ tới số hiệu tuần tự của byte đi 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. Vùng này chỉ có hiệu lực khi bit URG đ−ợc thiết lập.
+ Kết thúc danh sách tuỳ chọn (End of option list). + Không hoạt động (No operation).
+ Độ dài tối đa của Segment.
• Padding (độ dài thay đổi): Phần chèn thêm vào Header để đảm bảo
Header có độ dài là bội số của 32 bits. Phần thêm này chứa toàn số 0. • TCP Data: Chứa dữ liệu của tầng trên.
b.Các dịch vụ đ−ợc TCP cung cấp.
• Thiết lập, duy trì và kết thúc kết nối.
• Chuyển các gói dữ liệu một cách tin cậy qua tiến trình có báo nhận. • Dùng các gói dữ liệu tuần tự.
• Có cơ chế điều khiển lỗi.
• Có khả năng hỗ trợ nhiều kết nối đồng thời với các tiến trình khác nhau thông qua dùng Port.
• Trao đổi dữ liệu song công.