Giao thức TCP/IP là gì? TCP – Transmission Control Protocol | IP – Internet Protocol


Giao thức TCP/IP là gì?


Tên của giao thức liên quan đến hai giao thức quan trọng nhất trong bộ giao thức – Giao thức kiểm soát truyền tải (Transmission Control Protocol – TCP) và Giao thức Internet (Internet Protocol – IP).

TCP/IP cụ thể các thiết bị kết nối với Internet như thế nào và dữ liệu được truyền tải ra sao giữa các thiết bị.

TCP/IP ban đầu được Vint Cerf và Bob Kahn xây dựng theo hợp đồng tại Bộ Quốc phòng Mỹ. TCP/IP là một chuẩn phổ biến mà các mạng nội bộ và diện rộng có thể giao tiếp, cho phép các máy tính kết nối với nhau và cho các ứng dụng gửi dữ liệu đi và về.

TCP/IP là một họ các giao thức được gọi là họ giao thức IP, bao gồm bốn tầng. Cần nhớ rằng TCP/IP không phải là một giao thức mà thực sự là một họ các giao thức, và bao gồm các giao thức mức thấp khác như IP, TCP, và UDP. UDP nằm ở tầng giao vận, phía trên giao thức IP. Tầng giao vận cung cấp khả năng truyền tin giữa các mạng thông qua các gateway. Nó sử dụng các địa chỉ IP để gửi các gói tin trên Internet hoặc trên mạng thông qua các trình điều khiển thiết bị khác nhau. TCP và UDP là một phần của họ giao thức TCP/IP; mỗi giao thức có những ưu và nhược điểm riêng của nó.

Giao thức UDP là giao thức đơn giản, phi liên kết và cung cấp dịch vụ trên tầng giao vận với tốc độ nhanh. Nó hỗ trợ liên kết một-nhiều và thường được sử dụng thường xuyên trong liên kết một-nhiều bằng cách sử dụng các datagram multicast và unicast.

Giao thức IP là giao thức cơ bản của Internet. TCP và UDP đều là hai giao thức tầng giao thức vận trên cơ sở của giao thức IP. Hình dưới đây chỉ ra cách ánh xạ mô hình OSI ánh xạ vào kiến trúc TCP/IP và họ giao thức TCP/IP.

Có 4 lớp trừu tượng khác nhau trong TCP/IP, và mỗi lớp có một bộ giao thức riêng. Các lớp này gồm:

Lớp kết nối (link layer) – Đây là lớp thấp nhất trong ngăn TCP/IP và là một nhóm phương thức vận hành trên một kết nối của máy chủ, thường được biết đến là Ethernet.

Lớp Internet (IP) – Đây là lớp kết nối các mạng nội bộ với nhau.

– Lớp truyền tải (transport layer) (TCP) – Đây là lớp điều khiển giao tiếp máy chủ tới máy chủ.

– Lớp ứng dụng (application layer) – Lớp ứng dụng là một tập hợp các giao thức cụ thể giao tiếp dữ liệu trên một lớp quá trình tới quá trình. Ví dụ, HTTP là một giao thức ứng dụng là nền tảng của World Wide Web (www).  

Trong khi điều này có vẻ hơi khó hiểu, thì dưới đây là giải thích rất cơ bản về việc giao tiếp được thực hiện như thế nào qua Internet

Trên mạng, TCP là những gì các ứng sử dụng để giao tiếp với nhau. Ví dụ, trình duyệt web của bạn “nói chuyện” với phần mềm mạng sử dụng TCP. IP là giao tiếp giữa các máy tính. Do đó IP là có nhiệm vụ gửi các gói giữa các máy tính. Nó cũng có thể định tuyến các gói đến một địa điểm chính xác.

 TCP sẽ chia các dữ liệu được truyền giữa các ứng dụng thành các gói do đó các gói có thể được gửi qua IP đến máy tính khác. TCP cũng xử lý các gói một khi các gói được truyền bằng IP.

TCP (Transmission Control Protocol)

– Là giao thức hướng kết nối (connection-oriented) nghĩa là khi muốn truyền dữ liệu thì phải thiết lập kết nối trước.

– Hỗ trợ cơ chế full-duplex ( truyền và nhận dữ liệu cùng một lúc)

– Cung cấp cơ chế đánh số gói tin (sequencing): để ráp các gói tin cho đúng ở điểm nhận

– Cung cấp cơ chế báo nhận (Acknowledgement) :Khi A gửi dữ liệu cho B, B nhận được thì gửi gói tin cho A xác nhận là đã nhận. Nếu không nhận được tin xác nhận thì A sẽ gửi cho đến khi B báo nhận thì thôi.

– Phuc hồi dữ liệu bị mất trên đường truyền ( A gửi B mà không thấy xác nhận sẽ gửi lại) .

TCP Header: Do là giao thức tin cậy nên header của TCP rất phức tạp

tcp%2Bheader

32 bit sequence number: dùng để đánh số thứ tự gói tin (từ số sequence nó sẽ tính ra được số byte đã được truyền).

32 bit acknowledgement number: dùng để báo nó đã nhận được gói tin nào và nó mong nhận được byte mang số thứ tự nào tiếp theo.

4 bit header length: cho biết toàn bộ header dài bao nhiêu Word (1 Word = 4 byte).

Phần kí tự (trước 16 bit Window Size): là các bit dùng để điều khiển cờ (flag) ACK, cờ Sequence v.v.

16 bit urgent pointer: được sử dụng trong trường hợp cần ưu tiên dữ liệu ( kết hợp với bit điều khiển URG ở trên).

Các trường ở trên là cố định, TCP dành cho chúng ta trường Option để lập trình thêm các tính năng cho TCP nếu có nhu cầu.

Các ứng dụng sử dụng giao thức TCP: HTTP, DNS, SMTP, telnet, SNMP v.v.

Tiến trình bắt tay 3 bước (Three-way handshake)

3 buoc

Gải thích ví dụ trên:

Bước 1:

Host A gửi cho B một gói tin có cờ SYN được bật lên, với số thứ tự được đánh là 100

Bước 2:

Host B nhận được gói tin thì B gửi lại gói tin có cờ SYN được bật lên, kèm theo đó là cờ ACK (để xác nhận).

ACK=101 nghĩa là ” này A, tôi đã nhận được gói tin có SEQ = 100, tôi mong muốn nhận thêm gói tin có SEQ= 101). Khi gửi gói tin đi thì nó đánh số thứ tự SEQ= 300

Bước 3:

Sau khi kết nối đã được thiết lập thì A gởi tin để đáp ứng nhu cầu của B.

Gói tin được đánh số SEQ = 101: để đáp ứng nhu cầu của B

ACK =301 dùng để báo là đã nhận được gói tin có SEQ = 300.

Và chỉ có cờ ACK được bật lên bởi gói tin bước 3 được dùng để báo nhận cho gói tin bước 2.

Cơ chế điều khiển luồng trong TCP (Flow Control)

flow

Giả sử: Sender gửi quá nhiều dữ liệu cho Receiver, thì Receive sẽ chuyển vào bộ đệm để chờ xử lý, đến lúc bộ đệm đầy thì B gởi tín hiệu cho A để không truyền nữa cho đến khi B xử lý hết thì sẽ gởi lại gói tin cho A để tiếp tục nhận dữ liệu.

Fixed Windowing

Thay vì gửi từng byte rồi đợi ACK thì Sender sẽ gửi nhiều byte cùng lúc. ( Window Size bằng bao nhiêu sẽ gửi bấy nhiêu)

Receiver sau khi nhận được byte thứ 3 sẽ ACK=4 để xác nhận và yêu cầu byte thứ 4.

ở cơ chế Fixed Windowing thì Window Size cố định, nhưng có trường hợp ta không giữ cửa sổ cố định được.

TCP Sliding Windowing (Window Size có thể thay đổi)

slide

Window Size = 3 nên Sender sẽ gửi lần lượt 3 byte nhưng Receiver chỉ nhận được 2 byte ( do nghẽn mạng, do xử lý không nổi) thì Receiver sẽ ACK=3 để yêu cầu Sender gửi lại byte thứ 3 đồng thời nó cũng báo là hãy sử dụng Window Size =2(vì nó chỉ chịu nổi Size =2). Sender sau đó sẽ set Window Size=2.

− Source Port (16 bits ) là số hiệu cổng của trạm nguồn .
− Destination Port (16 bits ) là số hiệu cổng trạm đích .
− Sequence Number (32 bits) là 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 (Initial Sequence Number ) và byte dữ liệu đầu tiên là ISN + 1. Thông qua trường này TCP thực hiện việc quản lý từng byte truyền đi trên một kết nối TCP.
− Acknowledgment Number (32 bits). Số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận và ngầm định báo nhận tốt các segment mà trạm đích đã gửi cho trạm nguồn .
− Header Length (4 bits). Số lượng từ (32 bits) trong TCP header, chỉ ra vị trí bắt đầu của vùng dữ liệu vì trường Option có độ dài thay đổi. Header length có giá trị từ 20 đến 60 byte .
− Reserved (6 bits). Dành để dùng trong tương lai .
− Control bits : các bit điều khiển

URG : xác đinh vùng con trỏ khẩn có hiệu lực.
ACK : vùng báo nhận ACK Number có hiệu lực.
PSH : chức năng PUSH.
RST : khởi động lại liên kết.
SYN : đồng bộ hoá các số hiệu tuần tự (Sequence number).
FIN : không còn dữ liệu từ trạm nguồn.
− Window size (16 bits) : cấp phát thẻ để kiểm soát luồng dữ liệu (cơ chế cửa sổ trượt). Đây chính là số lượng các byte dữ liệu bắt đầu từ byte được chỉ ra trong vùng ACK number mà trạm nguồn sẫn sàng nhận.
− Checksum (16 bits). Mã kiểm soát lỗi cho toàn bộ segment cả phần header và dữ liệu.
− Urgent Pointer (16 bits). Con trỏ trỏ tới số hiệu tuần tự của byte cuối cùng trong dòng 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.
− Option (độ dài thay đổi ). Khai báo các tuỳ chọn của TCP trong đó thông thường là kích thước cực đại của 1 segment: MSS (Maximum Segment Size).
− TCP data (độ dài thay đổi ). Chứa dữ liệu của tầng ứng dụng có độ dài ngầm định là 536 byte . Giá trị này có thể điều chỉnh được bằng cách khai báo trong vùng Option.

tcp%2Bvs%2Bipheader
TCP và IPv4 header.

Bình luận

Email của bạn sẽ không được hiển thị công khai.

  1. Hello, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam feedback?If you acquire our Dumps with pin, each bit arrives with the track2 as well as Pin to that particular Dump. So, when building card You merely want to write down the monitor 2 http://center-pin.com/

  2. 542842 344614Oh my goodness! an wonderful post dude. Thank you Even so My business is experiencing dilemma with ur rss . Dont know why Unable to subscribe to it. Can there be anyone obtaining identical rss difficulty? Anybody who knows kindly respond. Thnkx 69693

  3. you may have an important blog here! would you wish to make some invite posts on my blog?

    http://www.zortilonrel.com/