Tổng quan: để các máy tính có thể truyền thông với nhau thì chúng phải sử dụng cùng giao thức như trong môi trường thực hai người phải sử dụng cùng ngôn ngữ để giao tiếp. Và có nhiều chồng giao thức khácnhau được áp dụng cho quá trình truyền thông giữa các máy tính nhưng thông dụng và phổ biến nhất là giao thức TCP/IP, đây là giao thức chính được sử dụng trên mạng Internet cũng như trong hệ thống mạn LAN, WAN của các công ty hiện nay. Topic 1A. Các khái niệm về TCP/IP Mô hình TCP/IP: TCP/IP là viết tắt của từ Tranmission Control Protocol/Internet Protocol bao gồm một chồng các giao thức được chia thành 4 lớp là Application Layer, Transport Layer, Internet Layer và Network Access như hình sau: Như hình trên chúng ta lấy ví dụ một máy tính muốn xem một trang web trên web server ví dụ website www.athena.edu.vn thì yêu cầu này sẽ được chia thành nhiều công đoạn riêng biệt mà mỗi phần sẽ do một tầng trong mô hình 4 lớp TCP/IP đảm nhiệm, 4 tầng đó gồm có: - Application Layer (Tầng Ứng Dụng): là tầng cao nhất trong mô hình, tầng này sẽ truyền thông với các phần mềm trên mạng như việc kết nối và hiện thị trang web www.athena.edu.vn trong ví dụ trên, giao tiếp với người dùng thông qua các ứng dụng như Outlook, IE, File Zilla hoạt động tại tầng này - Transport Layer (Tầng Vận Chuyển): tầng này có nhiệm vụ vận chuyển các gói tin, dữ liệu do tầng trên yêu cầu. Có hai giao thức hoạt động tại tầng vận chuyển là TCP (Tranmission Control Protocol) và UDP (User Datagram Protocol). Sự khác biệt chính giữa hai giao thức này là TCP là giao thức tin cậy với các cơ chế kiểm tra lỗi, có báo nhận vì vậy dữ liệu gởi đi sẽ an toàn hơn so với các ứng dụng sử dụng UDP, tuy nhiên do không có các thủ tục trên cho nên UDP sẽ có thuận lợi về mặt tốc độ thực hiện. - Internet Layer (Network Layer – Tầng Mạng): khi dữ liệu được truyền trên mạng chúng cần phải xác định rõ tuyến đường tối ưu để có thể chuyển từ máy truyền đến máy nhận, và tầng mạng sẽ đảm nhiệm chức năng đánh địa chỉ cũng như xác định tuyến đường. - Network Access Layer (Link Layer – Tầng Liên Kết): đây là nơi mà dữ liệu sẽ được truyền và nhận trong quá trình truyền thông, những thiết bị tại tầng này như cáp mạng hay sóng vô tuyến Vậy trong ví dụ trên, khi người dùng truy cập www.athena.edu.vn bằng ứng dụng IE hay FireFox từ tầng ứng dụng, yêu cầu này sẽ được chuyển xuống tầng thấp hơn là tầng vận chuyển để áp dụng các giao thức thích hợp là TCP hay UDP, qua đó sẽ xác định các cơ chế chia nhỏ dữ liệu thành các gói tin và đặt những cờ thích hợp, áp dụng cơ chế kiểm lỗi Tiếp đến các gói tin sẽ được chuyển xuống xử lý tại tầng mạng, để có thể xác định được địa chỉ IP của trang web và tìm ra tuyến đường thích hợp nhất và cuối cùng dữ liệu sẽ được chuyển sang các tín hiệu sóng vô tuyến hay tín hiệu điện và truyền đi trên các vật dẫn như cáp mạng, sóng vô tuyến … Mô hình OSI Ngoài mô hình TCP/IP chúng ta còn có mô hình 7 lớp OSI (Open System Interconnect do tổ chức định chuẩn ISO (International Organization for Standardization) bao gồm: - Application Layer: giao tiếp với các phần mềm và ứng dụng mạng. - Presentation Layer: chịu trách nhiệm về các dịch vụ nén và mã hóa, trình bày dữ liệu. - Session Layer: có chức năng thiết lập và quản lý (như kích thước gói tin) và kết thúc các phiên truyền thông. - Transport Layer: có trách nhiệm kiểm soát lỗi và phục hồi dữ liệu giữa các 2 máy tham gia truyền thông. Cả 2 giao thức TCP và UDP đều hoạt động tại tầng này. - Network Layer: có nhiệm vụ lập địa chỉ logic, xác định tuyến đường, chuyển các gói tin. Giao thức IP hoạt động tại đây - Data Link Layer: có chức năng gói các data frame trong quá trình truyền thông trên các vật dẫn. Thông tin kiểm lỗi sẽ được thêm vào tại tầng này thông thường là thông qua định dạng Cyclic Redundancy Check (CRC). Ngoài ra tầng này được chia là 2 tầng con là LLC (Logical Link Control) và MAC (Media Access Control). MAC layer xác định các địa chỉ vật lý của thiết bị mạng như MAC Address, đây là địa chỉ duy nhất cho mỗi thiết bị. Mối liên kết giữa MAC Address và Logic Address (như địa chỉ IP) sẽ được thựa hiện bởi LLC Layer. - Physical Layer: đây là tầng vậy lý và thực tế nhất trong mô hình 7 lớp, chịu trách nhiệm truyền dẫn các luồng dữ liệu trên mạng. Cả 2 mô hình TCP/IP và OSI hòan toàn tương thích với nhau, sau đây là bảng so sánh giữa 2 mô hình này: Trong quá trình truyền thông khi dữ liệu được chuyển xuống tầng thấp hơn nó sẽ được gắn vào một mẫu thông tin tương ứng của tầng đó gọi là header, ví dụ khi dữ liệu chuyển đến tầng Network thì phần header gắn vào sẽ dùng để xác định địa chỉ truyền và nhận của máy tính. Tiến trình gắn các header này gọi là encapsulation process (đóng gói dữ liệu) RFC Tất cả các định nghĩa của giao thức hoạt động tại các tầng trong các mô hình trên được định nghĩa và mô tả trong các RFC. Chúng ta có thể tham khảo rfc tại địa chỉ www.rfc- editor.org, sau đây là một số rfc thông dụng thường gặp trong các kỳ thi HTI: - Internet Protocol (IP): RFC 791 - Internet Control Messaging Protocol (ICMP): RFC 792 - Transmission Control Protocol (TCP): RFC 793 - User Datagram Protocol (UDP): RFC 768 Chức năng của IP Protocal Giao thức IP hoạt động tại tầng Network trong cả 2 mô hình OSI và TCP/IP. Chức năng chính của IP là xác định địa chỉ nguồn và đích cho các dữ liệu trong quá trình truyền và căn cứ trên các địa chỉ này gói tin sẽ được định tuyến để vận chuyển theo các tuyến đường thích hợp. Vì vậy chúng ta thấy mỗi máy trên mạng chỉ có duy nhất một địa chỉ vì nếu có 2 máy trùng địa chỉ IP thì dữ liệu sẽ không biết truyền đến máy nào, chính vì lý do đó khi chúng ta cấu hình 2 máy trùng địa chỉ sẽ xuất hiện thống báo IP conflict. Tuy nhiên, IP không có cơ chế kiểm tra dữ liệu hay các gói tin đã truyền đến nơi nhận hay chưa, có bị thất lạc gì không… vì vậy giao thức TCP ở tầng trên sẽ đảm nhận công việc này. Chuyển đổi giữa Binary, Decimal, và Hexadecimal Khi chúng ta truy cập các server hay máy tính khác trên mạng thường sử dụng tên DNS như www.quantrimang.com hay theo địa chỉ IP dạng thập phân dạng 222.255.31.160, tuy nhiên trong quá trình xử lý các máy tính chuyển đổi tên máy và số thập phân về dưới dạng nhị phân gồm các bit 0 hoặc 1. Vì vậy việc nắm vững cách thức chuyển đổi từ số dạng thập phân sang nhị phân là một điều cần thiết. Có nhiều công cụ hỗ trợ cho việc chuyển đổi này một cách dễ dàng như chương trình calculator trên máy tính, chỉ cần chuyển sang chế độ View -> Scientific Sau đây là một số kết quả chuyển đổi số thập phân sang nhị phân: Binary 11000000 là decimal 192: 128+64+0+0+0+0+0+0 Binary 10000000 là decimal 128: 128+0+0+0+0+0+0+0 Binary 10000010 là decimal 130: 128+0+0+0+0+0+2+0 Binary 01011010 là decimal 90: 0+64+0+16+8+0+2+0 Địa chỉ IP hiện tại chúng ta đang sử dụng là IPv4 là một dãy số 32 kí tự nhị phân (32 bit) đươc chia làm 4 octec, mỗi octec chứa 8 bit như 11000000 (192), và để chuyển giá trị thập phân này sang nhị phân chúng ta chỉ cần nhân số m với 2 mũ n với n là số thứ tự của m được tính từ phải qua trái với chiều tăng dần từ 0 đến 7 (m là 0 hoặc 1). Do đó 01011010 sẽ có giá trị thập phân là 0+64+0+16+8+0+2+0 Ngoài ra, địa chỉ IP còn được thể hiện dưới dạng số HEX như IP 192.168.10.1 có giá trị HEX là C0-A8-0A-01. Sau đây là một số hướng dẫn về cách chuyển đổi từ số thập phân sang HEX: 1. Chia 192 cho 16. Kết quả là12, dư 0. Bởi vì giá trị thập phân của 12 tương đương với Hex và decimal 0 là Hex 0 do đó decimal 192 tương đương Hex C0. 2. Chia 168 by 16. Kết quả là 10, dư 8. Với decimal 10 là Hex A và decimal 8 là Hex 8, decimal 168 là Hex A8. 3. Decimal 10 là Hex A. 4. Decimal 1 là Hex 1. 5. Như vậy decimal 192.168.10.1 có giá trị Hex C0A80A01. Một cách tính khác là chuyển số thập phân sang nhị phân và chuyển từ nhị phân sang Hex theo các quy tắc sau: 1. Decimal 192 tương đương binary 11000000. 2. Decimal 168 tương đương binary 10101000. 3. Decimal 10 tương đương binary 00001010. 4. Decimal 1 tương đương binary 00000001. 5. Binary 1100 tương đương Hex C. 6. Binary 0000 tương đương Hex 0. 7. Binary 1010 tương đương Hex A. 8. Binary 1000 tương đương Hex 8. 9. Binary 0000 tương đương Hex 0. 10. Binary 1010 tương đương Hex A. 11. Binary 0000 tương đương Hex 0. 12. Binary 0001 tương đương Hex 1. 13. Kết quả cuối cùng cho ta thấy decimal 192.168.10.1 có giá trị Hex là C0A80A01. Các lớp địa chỉ IP Địa chỉ IP bao gồm 2 phần là phần địa chỉ lớp mạng và phần địa chỉ host. Theo định nghĩa có tất cả 5 lớp địa chỉ IP là A, B, C, D và E với sự khác biệt như sau: - Lớp A sử dụng 8 bit đầu tiên dành cho địa chỉ mạng và 24 bit còn lại dành cho phần host. Điều này có nghĩa là trong một mạng lớp A có hơn 16 triệu host (2 mũ 24 trừ 2). Tất cả địa chỉ lớp A đều bắt đầu với 0xxxxxxx. - Lớp B sử dụng 16 bit dành cho địa chỉ mạng và 16 bit còn lại cho host. Các địa chỉ lớp B có otect đầu tiên là 10xxxxxx - Lớp C sử dụng 24 bit cho phần mạng và 8 bit còn lại cho phần host. Các địa chỉ lớp C có octec đầu tiên là 110xxxxx. - Lớp D không dùng cho host mà được dùng cho các truyền thông multicast. Với octec đầu tiên là 1110xxxx - Lớp E được dùng cho mục đích nghiên cứu, không dùng cho host. Octect đầu tiên là 11110xxx Bảng dưới mô tả một số đặc điểm chính của các lớp mạng: Private IP Address Ngoài ra, có một số địa chỉ được dành riêng gọi là các private IP address thường được dùng để đánh các địa chỉ mạng nội bộ. Việc áp dụng các private address giúp cho việc quản lý mạng khoa học hơn và ngăn ngừa tình trạng sppofing IP address do hầu hết các router sẽ không forward các gói tin trên Internet xuất phát từ địa chỉ này. Các địa chỉ private address tương ứng với từng lớp mạng là: - Class A: 10.0.0.0 đến 10.255.255.255 - Class B: 172.16.0.0 đến 172.31.255.255 - Class C: 192.168.0.0 đến 192.168.255.255 Bên cạnh đó các địa chỉ thuộc dãy 127.0.0.0 to 127.255.255.255 như địa chỉ loopback (127.0.0.1) dùng cho việc kiểm tra hệ thống hay các địa chỉ APIPA (169.254.0.0 đến 169.254.255.255) cũng được dành riêng. Các bạn có thể tham khảo RFC 1918 về private IP address. SubNet Mask Cùng với địa chỉ IP thì subnet mask (mặt nạ mạng con) là thành phần không thể thiếu của một host. Căn cứ vào subnet mask và thông qua phép toán AND (ANDing process) sẽ xác định được lớp mạng của một host. Ví dụ một máy tính có địa chỉ IP là 192.168.1.33/24 sẽ sử dụng 24 bit làm subnet mask (là 11111111. 11111111. 11111111.00000000) và khi sử dụng phép toán AND thì cho ra được địa chỉ mạng con là 192.168.1.0 (do x AND 1 = x). Mặc định lớp A sử dụng 8 bit là mặt nạ mạng con còn lớp B và C sử dụng 16 và 24 bit làm subnet mask. Ngoài ra, một số tài liệu sử dụng định dạng 255.255.255.0 để chỉ subnet mask là /24 hay 255.0.0.0 là /8 Bài tập về chia Subbnet Ví dụ công ty có nhiều lớp mạng đặt ở vị trí khác nhau trong một tòa nhà, và chúng ta muốn chia 12 lớp mạng dựa trên cấu trúc IP đã xác định ban đầu là 10.0.0.0 / 8. Đầu tiên ta xác định số bit sẽ muợn thêm của phần host để có thể dùng cho các lớp mạng. Trong trường hợp này chúng ta cần mượn thêm 4 bit (vì 12 là 1100 ở hệ nhị phân). Khi đó subnet mask sẽ là /12 hay 255.240.0.0 và số lớp mạng con sẽ là hoán vị của các bit xxxx trong dãy số sau 00001010.xxxx yyyy.yyyyyyyy.yyyyyyyy, và chúng ta sẽ xác định được các lớp mạng sau: Subnetwork Binary Address Decimal Address First 00001010.0000 0000.00000000.00000000 10.0.0.0 Second 00001010.0001 0000.00000000.00000000 10.16.0.0 Third 00001010.0010 0000.00000000.00000000 10.32.0.0 Fourth 00001010.0011 0000.00000000.00000000 10.48.0.0 Fifth 00001010.0100 0000.00000000.00000000 10.64.0.0 Sixth 00001010.0101 0000.00000000.00000000 10.80.0.0 Seventh 00001010.0110 0000.00000000.00000000 10.96.0.0 Eighth 00001010.0111 0000.00000000.00000000 10.112.0.0 Ninth 00001010.1000 0000.00000000.00000000 10.128.0.0 Tenth 00001010.1001 0000.00000000.00000000 10.144.0.0 Eleventh 00001010.1010 0000.00000000.00000000 10.160.0.0 Twelfth 00001010.1011 0000.00000000.00000000 10.176.0.0 Thirteenth 00001010.1100 0000.00000000.00000000 10.192.0.0 Fourteenth 00001010.1101 0000.00000000.00000000 10.208.0.0 Fifteenth 00001010.1110 0000.00000000.00000000 10.224.0.0 Sixteenth 00001010.1111 0000.00000000.00000000 10.240.0.0 Có khá nhiều công cụ hỗ trợ chúng ta tính các lớp mạng con một cách dễ dàng ví dụ như IP Subnet Calculator. X- Casting Unicast Broadcast Multicast Topic 1B: Phân tích tiến trình Three-way Handshake Trong Topic 1B chúng ta sẽ xem xét các quá trình bắt tay của 2 máy tính trước khi truyền thông còn được gọi là Tree-way Handshake. Trước khi bắt đầu hãy xem bảng so sánh một số khác biệt giữa 2 giao thức của tầng vận chuyển là TCP và UDP Qua bảng phân tích trên chúng ta nhận thấy giao thức TCP là một giao thức có độ tin cậy cao hơn và trước khi truyền thông các máy nguồn và đích cần khởi tạo các liên kết, tuy nhiên UDP lại có thuận lợi về mặt tốc độ, cho nên đối với các ứng dụng ưu tiên về mặt thời gian thì UDP là lựa chọn tốt nhất, ngược lại nếu sự an toàn và bảo đảm dữ liệu truyền đến được nơi cần đến thì TCP là lựa chọn tối ưu. Đây cũng là điểm khác biệt chính mà các bạn cần ghi nhớ khi xử lý các câu hỏi của kỳ thi chứng chỉ quốc tế SCNP. TCP Flag: trong qua trình truyền thông của mình, giao thức TCP sử dụng các cờ gọi là những TCP Flag là SYN, ACK, FIN, RESET, PUSH và URGENT. Các cờ này thường được xác định bằng những kí tự đầu của chúng như S, A, F, R, P và urg. - SYN được sửng dụng trong giai đoạn đầu của quá trình khởi tạp liên kết nhằm đồng bộ hóa hai máy tính trước khi dữ liệu được truyền. - ACK dùng để gởi thông báo xác nhận sau khi nhận được dữ liệu từ máy gởi. Thường được sử dụng trong giai đoạn 2 của quá trình khởi tạo liên kết. - FIN gởi bởi máy truyền yêu cầu chấm dứt liên kết. - RESET: dùng để reset lại phiên truyền. - PUSH được áp dụng khi bên truyền yêu cầu dữ liệu được gởi trực tiếp đến ứng dụng mà không cần thông qua vùng đệm. - URGENT được sử dụng để truyền dữ liệu khẩn có mức ưu tiên cao nhất. Sequence và Acknowledgement Number Ngoài các TCP Flag thì Sequence và Acknowledgement Number được áp dụng để tăng cường độ tin cậy cho dữ liệu khi truyền cũng như dùng để hợp nhất các dữ liệu được chia thành nhiều gói tin nhỏ trong quá trình gởi, đây là các giá trị 32 bit được chỉ định trong header của gói tin. Connection (Liên kết) Dữ liệu chỉ được truyền khi connection đã thiết lập, có 2 loại connection là passive open (khi ứng dụng lắng nghe kết nối: ví dụ ứng dụng netcat lắng nghe kết nối trên một cổng nào đó) và active open (ứng dụng yêu cầu giao thức TCP truyền thông với một remote host đang ở chế độ passove open). Thiết lập liên kết Trước khi dữ liệu được truyền cũng như các senquence và ack number hoạt động thì liên kết phải được khởi tạo, quá trình này gọi là three-way handshake, quá tình này gồm 3 bước sau đây: 1. Host A gởi một segment đến Host C với thông tin: SYN = 1 (Session được đồng bộ hoá) ACK = 0 (Không có giá trị trong trường ACK , vì vậy cờ này có giá trị là 0.) Sequence Number = x, với x là một giá trị. (x là ISN của Host A) Acknowledgement Number = 0 2. Host C nhận segment này và phản hồi lại Host A các thông báo sau: SYN = 1 (Session vẫn được đồng bộ hoá) ACK = 1 (Cờ xác nhận đã được thiết lập) Sequence Number = y, với y là một giá trị. (y là ISN của Host C) Acknowledgement Number = x + 1 (Số Sequence Number từ Host A được cộng thêm 1.) 3. Host A nhận segment từ Host C và phản hồi đến Host C các thông tin: SYN = 0 (Session đã được đồng bộ hoá; hơn nữa các yêu cầu không cần thiết.) ACK = 1 (Cờ ack thiết lập response tới SYN từ segment trước) Sequence Number = x + 1 (Đây là thứ tự trình tự tiếp theo trong chuỗi.) Acknowledgement Number = y + 1 (Số sequence number từ Host C được cộng thêm 1.) Kết thúc liên kết Tương tự như khi khởi tạo liên kết, quá trình kết thúc liên kết cũng gồm nhiều bước. Có 2 loại kết thúc liên kết trong TCP đó là graceful (sử dụng cờ FIN) và bao gồm 4 bước vì lý do quá trình truyền thông trong TCP là full-duplex communication và non-graceful (sử dụng cờ RESET). Và giống như quá trình khởi tạo chúng ta có 2 loại Passive Close và Active Close. Sau đây là các bước trong quá trình graceful connection termination: 1. Host A gửi một session termination tới Host C với thông tin: FIN = 1 (Session sẽ được giới hạn.) ACK = 1 (Đây là một số ack, dựa trên thông tin hiện tại) Sequence Number (FIN number) = s (s là một giá trị dựa trên thông tin hiện tại) Acknowledgement Number = p (p là một giá trị dựa trên thông tin hiện tại) 2. Host C nhận segment của Host A và đáp trả thông tin: FIN = 0 (Segment này không yêu cầu termination của session.) ACK = 1 (Segment bao gồm một số ack) Sequence Number = Not Present (Do không có FIN, nên không có sequence number được yêu cầu) Acknowledgement Number = s + 1 (Đây là response tới FIN của Host A FIN) 3. Host C gửi một session termination hướng ngược lại với thông tin: FIN = 1 (Session sẽ được giới hạn) ACK = 1 (Đây là một số ack) Sequence Number = p (p là một giá trị dựa trên thông tin hiện tại) Acknowledgement Number = s + 1 (Tương tự như trong segment trước) 4. Host A nhận các segment từ Host C và đáp trả thông tin: FIN = 0 (Segment không yêu cầu một termination, không có SYN) ACK = 1 (Segment bao gồm một số ack) Sequence Number = Not Present Acknowledgement Number = p + 1 (Đây là số sequence number của Host C được công thêm 1) Lúc này liên kết truyền thông giữa 2 host đã kết thúc. . hình 4 lớp TCP/IP đảm nhiệm, 4 tầng đó gồm có: - Application Layer (Tầng Ứng Dụng): là tầng cao nhất trong mô hình, tầng này sẽ truyền thông với các phần mềm trên mạng như việc kết nối và. sẽ được chuyển xuống xử lý tại tầng mạng, để có thể xác định được địa chỉ IP của trang web và tìm ra tuyến đường thích hợp nhất và cuối cùng dữ liệu sẽ được chuyển sang các tín hiệu sóng vô. UDP Qua bảng phân tích trên chúng ta nhận thấy giao thức TCP là một giao thức có độ tin cậy cao hơn và trước khi truyền thông các máy nguồn và đích cần khởi tạo các liên kết, tuy nhiên UDP