Hiển thị các bài đăng có nhãn TCP Protocol. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn TCP Protocol. Hiển thị tất cả bài đăng

TCP Data

Giới thiệu
Cuối cùng, chúng ta đã đi đến bài cuối trong loạt bài phân tích về giao thức vận chuyển TCP. Bài này để dành riêng cho phần dữ liệu nằm tiếp sau TCP Header.

The Data
Chúng ta hãy cùng xem sơ đồ dưới đây:


Khi gói tin trên đến với người nhận, 1 quá trình mở gói là cần thiết để loại bỏ các phần được đóng gói thêm vào khi đi qua từng lớp của mô hình OSI. Sau đó, phần dữ liệu sẽ được đưa cho ứng dụng đang chờ đợi nó. Như vậy, khi gói tin được nhận đầy đủ bởi card mạng, nó được trao cho lớp 2 (Data Link), sau khi thực hiện kiểm tra lỗi ở trên gói tin, nó sẽ loại bỏ các thành phần liên quan đến lớp 2 (Data Link), có nghĩa là các khối màu vàng sẽ được loại bỏ.
Phần còn lại đó là IP Header, TCP Header, và dữ liệu, có thể gọi 3 phần đó là 1 IP Datagram, sẽ được đưa qua lớp 3 của mô hình OSI (Network) nơi các kiểm tra khác sẽ được thực hiện và nếu không phát hiện ra lỗi, IP Header sẽ bị tước bỏ và phần còn lại (bây giờ gọi là 1 Segment) sẽ được đưa lên lớp thứ 4 của mô hình OSI.
Giao thức TCP sẽ chấp nhận Segment và thực hiện kiểm tra lỗi trên Segment này. Giả sử không tìm thấy lỗi, thì TCP Header sẽ được gỡ bỏ và sẽ được đưa lên các lớp trên để đến với các ứng dụng đang chờ nó.

Tổng kết
Cuối cùng thì loạt bài về phân tích giao thức TCP đã xong. Sau khi đọc tất cả những bài này, tôi chắc chắn bạn sẽ có 1 sự hiểu biết tốt hơn về mục đích của giao thức TCP và quá trình diễn ra nó, và bạn có thể thực sự đánh gia cao chức năng của giao thức này.

Lược dịch từ bài gốc: Click Here

Analysing TCP Header Options

Giới thiệu
TCP Options (MSS, Window Scaling, Selective Acknowledgements, Time Stamps, Nop) có vị trí nằm ở cuối TCP Header.
Truyền thông dữ liệu càng ngày càng trở nên phức tạp hơn, ít chấp nhận sai sót và độ trễ, rõ ràng là các tính năng mới này đã được tích hợp cho TCP transport để giúp khắc phục nhiều vấn đề.
Ví dụ, Window Scaling, đã được đề cập đến ở bài trước và được giới thiệu ở đây, có thể sử dụng trường TCP Options bởi vì trường Window nguyên thủy của nó chỉ dài có 16 bits, cho phép một số thập phân tối đa là 65.535. Rõ ràng đây là con số quá nhỏ so với việc chúng ta muốn biểu thị giá trị 'Window Size' sử dụng những con số trong phạm vi kích thước hàng ngàn đến 1 triệu như 400.000 hay 950.000.
Trước khi đi phân tích chi tiết, chúng ta hãy xem qua trường TCP Options ở dưới hình sau:


Nằm ở cuối Header và ngay trước phần dữ liệu, nó cho phép chúng ta sử dụng những cải tiến mới được khuyến nghị bởi các kỹ sư đã giúp thiết kế nên các giao thức mà chúng ta đang sử dụng trong truyền thông dữ liệu ngày nay.

TCP Window Size, Checksum & Urgent Pointer

Giới thiệu
Bài này tôi sẽ giới thiệu một vài trường rất thú vị được sử dụng trong giao thức vận chuyển TCP. Chúng ta có thể thấy được làm thế nào để TCP giúp điều khiển dữ liệu được truyền đi trên mỗi Segment, đảm bảo không có lỗi trên từng Segment và cuối cùng, cắm cờ "khẩn cấp" cho dữ liệu của chúng ta để đảm bảo nó có được quyền ưu tiên khi đến được với người nhận.


Các trường mà chúng ta đang chuẩn bị phân tích ở đây chiếm tổng cộng khoảng 6 bytes trong TCP Header.
Những giá trị này, như hầu hết các trường trong Header của giao thức, đều giữ nguyên kích thước bất kể dữ liệu của ứng dụng có lớn như nào đi chăng nữa.

TCP Flag Options

Giới thiệu
Như chúng ta đã thấy ở những bài trước, 1 TCP Segment mang theo dữ liệu trong khi những cái khác chỉ đơn giản là báo nhận cho dữ liệu nhận được trước đó. Quá trình bắt tay 3 bước sử dụng SYN và ACK có sẵn trong TCP giúp hoàn thiện kết nối trước khi dữ liệu được truyền.
Mỗi TCP Segment đều có mục đích và điều này được xác định với sự trợ giúp của TCP Flag Options, cho phép bên gửi hoặc bên nhận chỉ ra cờ nên được sử dụng để các Segment xử lý 1 cách chính xác ở phía bên kia. Chúng ta hãy nhìn vào hình sau và cùng phân tích:


Bạn có thể thấy 2 cờ được sử dụng trong bắt tay 3 bước và truyền dữ liệu là SYN và ACK.
Với tất cả các cờ, giá trị bằng '1' được hiểu là cờ đấy đang được bật. Ví dụ trong hình chỉ có cờ SYN được bật, và chúng ta dựa vào đó đoán được đây là Segment đầu tiên của 1 kết nối TCP mới.
Mỗi cờ có độ dài 1 bit và có 6 cờ tất cả nên tổng cộng TCP Flags có độ dài 6 bits.
Bạn có lẽ cũng đồng ý với tôi rằng 3 cờ phổ biến nhất hay ít nhất mà chúng ta có nghe nói tới là cờ SYN, cờ ACK và cờ FIN lần lượt dùng để thiết lập kết nối, báo nhận thành công và kết thúc kết nối. Các cờ còn lại ít được biết đến nhưng nó có vai trò rất quan trọng. Chúng ta sẽ đi tìm hiểu tất cả 6 cờ này ngay bây giờ.

TCP Header Lenght Analysis

Giới thiệu
Trường tiếp theo mà tôi muốn giới thiệu chính là TCP Header Length. Thật sự không có nhiều vấn đề để nói về Header Length ngoài việc giải thích nó đại diện cho cái gì và làm thế nào để giải thích được giá trị của nó. Nhưng thực sự trường này cũng là 1 trường rất quan trọng và bạn sẽ thấy được điều đó.
Bạn cũng có thể thấy Header Length cũng giống như trường Data Offset trong Packet Sniffer hay Application (là 1 cái tên khác nhưng thực chất cũng chính là Header Length).

Phân tích Header Length


Nếu bạn đã đọc bất kì 1 cuốn sách nào về Networking có nói về TCP Header, bạn hầu như sẽ tìm thấy mô tả cho trường này như sau: "Một số nguyên xác định độ dài của Segment Header là bội số của 32 bits". Nhưng khi nhìn vào gói tin, thì ta sẽ phải băn khoăn suy nghĩ điều đó chính xác muốn nói về cái gì?
Tôi sẽ giải thích cho các bạn hiểu rõ hơn theo từng bước một.

TCP Sequence & Acknowledgement Numbers

Giới thiệu
Bài viết này sẽ đi sâu vào Sequence Number và Acknowledgement Number. Sự tồn tại của chúng có liên quan đến 1 thực tế rằng Internet và hầu hết các mạng nói chung đều là mạng chuyển mạch gói và bởi vì chúng ta gần như luôn nhận và gửi dữ liệu có kích thước lớn hơn so với MTU (đơn vị truyền dẫn tối đa) là 1500 trên hầu hết các mạng ngày nay.
Hãy thử nhìn vào các trường mà chúng ta chuẩn bị phân tích:


Chúng ta sẽ giải thích những con số này tăng bằng cách nào và chúng có ý nghĩa gì, làm thế nào để các hệ điều hành khác nhau có thể xử lý chúng bằng những cách khác nhau và cuối cùng, vì sao những con số này có thể trở thành mối nguy hiểm an ninh cho những người yêu cầu 1 mạng lưới vững mạnh và an toàn.

TCP Source & Destination Port Numbers

Phần này chúng ta sẽ nói về 1 trong các trường của TCP Header, các số hiệu của cổng nguồn và cổng đích. Các trường này được sử dụng để xác định các ứng dụng hoặc dịch vụ được cung cấp trên máy trạm hoặc máy chủ từ xa. Tôi sẽ lần lượt nói về tầm quan trọng và chức năng của các cổng nguồn và cổng đích của TCP.
Bạn sẽ hiểu được tầm quan trọng của cổng và cách sử dụng chúng để thu thập thông tin trên hệ thống từ xa được coi là mục tiêu để tấn công. Ở đây tôi sẽ giới thiệu các cổng giao tiếp từ cơ bản đến nâng cao với các ví dụ chi tiết. Bây giờ chúng ta sẽ bắt đầu với một số vấn đề cơ bản.
Khi 1 máy cần tạo ra yêu cầu hoặc cần gửi dữ liệu, nó đòi hỏi một số thông tin:
1. Địa chỉ IP của các máy chủ mà nó muốn gửi dữ liệu hoặc gửi yêu cầu.
2. Số hiệu cổng mà dữ liệu hoặc yêu cầu sẽ được gửi đến máy chủ từ xa đó. Trong trường hợp gửi 1 yêu cầu, nó cho phép người gửi xác định dịch vụ mà nó có ý định sử dụng.

In-depth TCP Header Analysis - Introduction

Tiếp theo tôi sẽ giới thiệu về việc phân tích TCP Header. Để dễ hiểu tôi sẽ chia thành 7 bài, mỗi bài 1 vấn đề và sử dụng những mô hình chi tiết, dễ hiểu để bạn có thể nắm được dễ dàng hơn.
Thứ tự các bài như sau:
Section 3: Header Length
Section 4: TCP Flag Options
Section 6: TCP Options
Section 7: TCP Data

The TCP Header/Segment

Giới thiệu
Bài này sẽ giới thiệu về TCP Header và TCP Segment. Chúng ta sẽ biết được TCP Header và TCP Segment nằm ở đâu trong 1 khung Ethernet và có 1 cái nhìn tổng quan về các tùy chọn (option) sẵn có trong TCP Header.

TCP Header và TCP Segment
Đơn vị truyền dữ liệu được sử dụng trong TCP được gọi là TCP Segment.


Nhìn vào mô hình trên ta có thể thấy TCP Segment = TCP Header + Data (dữ liệu thuộc về các tầng trên: 5,6,7).
Nội dung dữ liệu có thể là 1 phần của việc truyền file, hoặc phản hồi từ 1 http request, thực tế là chúng ta không thực sự quan tâm đến nội dung dữ liệu, nhưng trong thực tế nó là 1 phần của TCP Segment.

Quick Overview Of TCP

Như đã đề cập ở bài trước, TCP là 1 trong 2 giao thức nằm ở tầng vận chuyển và được sử dụng để truyền dữ liệu từ 1 host sang host khác. Vậy điều gì khiến cho TCP trở thành 1 cách thức phổ biến trong việc gửi và nhận dữ liệu như thế? Không giống UDP, TCP sẽ kiểm tra lỗi trong mỗi packet (gói tin) mà nó nhận được để tránh việc bị hỏng dữ liệu.
Một vài giao thức sử dụng TCP như là: FTP, Telnet, HTTP, HTTPS, DNS, SMTP và POP3. Bây giờ chúng ta sẽ có cái nhìn sâu hơn về những đặc điểm chính của giao thức tuyệt vời này.

Các đặc điểm chính
Sau đây là những đặc điểm chính của TCP mà chúng ta sẽ đi vào phân tích:
- Vận chuyển đáng tin cậy (Reliable Transport).
- Hướng kết nối (Connection-Oriented).
- Điều khiển luồng (Flow Control).
- Windowing.
- Acknowledgments.
- Nhiều chi phí hơn.

TCP, A Transport Protocol

Giới thiệu
Việc hiểu biết mỗi giao thức được xếp đặt vào trong mô hình OSI như thế nào là một điều cần thiết cho các kỹ sư mạng máy tính. Ở đây tôi sẽ phân tích về việc TCP được xếp vào loại "giao thức vận chuyển" như thế nào và điều gì mình có thể thấy được ở giao thức này.

Việc sắp xếp TCP vào mô hình OSI
Như chúng ta đã biết, mỗi giao thức đều có chỗ của nó trong mô hình OSI (mỗi giao thức hoạt động ở 1 layer cụ thể). Mô hình OSI là 1 biểu thị tính phức tạp và độ thông minh của giao thức. Theo quy tắc tổng quát, càng lên tầng cao trong mô hình OSI, thì giao thức ở tầng đó càng trở nên thông minh. Việc đặt vị trí của tầng cũng phản ánh mức độ làm việc nhiều của CPU, trong khi đó các tầng thấp hơn của mô hình OSI thì hoàn toàn ngược lại, nghĩa là, mức độ làm việc của CPU ít hơn và bớt thông minh hơn.


TCP được đặt ở lớp thứ 4 của mô hình OSI, mà người ta còn gọi là tầng vận chuyển. Tầng vận chuyển chịu trách nhiệm thiết lập phiên kết nối, chuyển dữ liệu và phân nhỏ các kết nối ảo.
Với ý nghĩ này, bạn sẽ mong đợi bất cứ giao thức nào nằm trong tầng vận chuyển phải thực hiện một vài tính năng và đặc tính cho phép nó hỗ trợ những chức năng mà tầng vận chuyển quy định.
Vì thế sau khi phân tích TCP, bạn sẽ chắc chắn rằng TCP phải được xếp vào tầng vận chuyển.