TCP Protocol

Preview:

DESCRIPTION

TCP Protocol. TCP protocol. IP datagram. Ethernet Header. IP Header. TCP Header. Data. TCP segment. IP datagram : ข้อมูลตั้งแต่หัว IP (IP header) ถึง ข้อมูลตัวสุดท้าย UDP datagram : ข้อมูลตั้งแต่ UDP header ถึง ข้อมูลตัวสุดท้าย - PowerPoint PPT Presentation

Citation preview

TCP Protocol

TCP protocol

IP Header TCP Header DataEthernet Header

IP datagram

TCP segment

IP datagram : ข้�อมู�ลตั้�งแตั้�หั�ว IP (IP header) ถึ�ง ข้�อมู�ลตั้�วสุ�ดท้�าย

UDP datagram : ข้�อมู�ลตั้�งแตั้� UDP header ถึ�ง ข้�อมู�ลตั้�วสุ�ดท้�าย

TCP segment : ข้�อมู�ลตั้�งแตั้� TCP header ถึ�ง ข้�อมู�ลตั้�วสุ�ดท้�าย

TCP protocol

• ก่�อนก่ารสุ��อสุารท้�ก่คร�งด�วยโปรโตั้คอล TCP จะตั้�องท้"าก่ารสุถึาปนาก่ารเชื่��อมูตั้�อก่�อน เพื่��อตั้รวจความูพื่ร�อมูระหัว�างเคร��องตั้�นท้างและปลายท้างก่�อนจะแลก่เปล&�ยนข้�อมู�ลก่�น

• เมู��อสุ'นสุ�ดก่ารสุ��อสุารจะป(ดก่ารเชื่��อมูโยง

• TCP ร�บประก่�นความูเชื่��อถึ�อในก่ารสุ�งข้�อมู�ลโดยจะตั้รวจสุอบ segment ท้&�ผิ'ดปก่ตั้' และท้"าก่ารจ�ดสุ�ง segment ซ้ำ"าใหัมู�

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Source Port (16 bits) : หัมูายเลข้พื่อร-ตั้ข้องสุถึาน&ตั้�นท้าง

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Destination Port (16 bits) : หัมูายเลข้พื่อร-ตั้ข้องสุถึาน&ปลายท้าง

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Seq number (32 bits) : หัมูายเลข้เร'�มูตั้�นสุ"าหัร�บชื่&ข้�อมู�ล byte แรก่

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Ack number (32 bits) : หัมูายเลข้ตั้อบร�บว�ารอร�บข้�อมู�ล seq number อะไร ถึ�าเป/น ACK อย�างเด&ยวจะไมู�น�บ

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Header Length (4 bits) : ข้นาดข้อง header (x 4 bytes)

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Reserved (6 bits) : สุงวนไว�ไมู�ใชื่�งาน

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Code (6 bits) : เป/น flags

Code (6 bits)URG

ACK

PSH

RST

SYN

FIN

URGent : ถึ�ามู&ค�า 1 หัมูายถึ�ง Urgent pointer บรรจ�ตั้"าแหัน�งข้�อมู�ลเร�งด�วนACKnowledgement : มู&ค�า 1 หัมูายถึ�ง เซ้ำก่เมูนตั้-ตั้อบร�บ โดยอ�างอ'งจาก่ Acknowledgement numberPuSH : มู&ค�า 1 หัมูายถึ�งเมู��อปลายท้างร�บข้�อมู�ลใหั�ร&บสุ�งตั้�อไปท้&�ชื่� น application ท้�นท้&โดยไมู�ตั้�องรอใหั� buffer เตั้0มูก่�อนReSeT : มู&ค�า 1 หัมูายถึ�งใหั�ยก่เล'ก่ก่ารเชื่��อมูตั้�อเน��องจาก่มู&ความูผิ'ดปก่ตั้'SYNchronize : มู&ค�า 1 หัมูายถึ�งเร'�มูตั้�นสุถึาปนา และมู&ค�า 0 เมู��อก่ารสุถึาปนาเสุร0จสุ'น หัล�งจาก่น�นจ�งผิ�านข้�อมู�ลระหัว�างก่�นFINish : มู&ค�า 1 หัมูายถึ�งข้อจบก่ารเชื่��อมูตั้�อเพื่ราะไมู�มู&ข้�อมู�ลสุ�งอ&ก่ตั้�อไป

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Window size (16 bits) : สุถึาน&ปลายท้างจะแจ�งข้นาดข้องบ�ฟเฟอร-ท้&�มู&อย�� เพื่��อท้&�สุถึาน&ตั้�นท้างจะได�ไมู�สุ�งข้�อมู�ลเก่'นก่ว�าข้นาดบ�ฟเฟอร-น&

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Urgent pointer(16 bits) : pointer ชื่&ตั้"าแหัน�งไบตั้-ข้องข้�อมู�ลท้&�ตั้�องด"าเน'นก่ารเร'�มูด�วน จะมู&ก่ารอ�านค�าน&ถึ�า URG flag เป/น 1

TCP header

Source Port Destination Port

Sequence number

Acknowledgement number

HL reserved Code Window size

Checksum Urgent pointer

Options

data

0 15 16 31

Options (32 bits) : เป/น option เพื่'�มูเตั้'มู มู&หัร�อไมู�มู&ก่0ได�

SEQ number and ACK number•Seq number จะเริ่��มต้�นจากการิ่สุ่ �มค่�าจาก่น�นจะเพื่'�มูข้�นเร��อยๆตั้ามูจ"านวนไบตั้-ข้�อมู�ลท้&�สุ�ง•Ack number จะเป/นหัมูายเลข้ท้&�ผิ��ร �บข้�อมู�ลตั้อบก่ล�บผิ��สุ�งซ้ำ��งค�อหัมูายเลข้ข้อง sequence number ท้&�ผิ��ร �บรออย��

SEQ 500 : ข้�อม�ลข้นาด 100 ไบต้�SEQ 600 : ข้�อม�ลข้นาด 100 ไบต้�SEQ 700 : ข้�อม�ลข้นาด 100 ไบต้�

ACK 800

SEQ number and ACK number

SEQ 500 : ข้�อม�ลข้นาด 100 ไบต้�SEQ 600 : ข้�อม�ลข้นาด 100 ไบต้�SEQ 700 : ข้�อม�ลข้นาด 100 ไบต้�

ACK 700SEQ 700 : ข้�อม�ลข้นาด 100

ไบต้�

ก่ลไก่ก่ารท้"างานข้อง TCP : สุถึาปนาก่ารเชื่��อมูตั้�อ

• ตั้�วอย�าง A ข้อเชื่��อมูตั้�อก่�บ BA B

SYN, SEQ 500, ACK 0

SYN, SEQ 700, ACK 501

ACK, SEQ 501, ACK 701

เมู��อสุ'นสุ�ด 3 ข้�นตั้อน ท้�งสุองฝั่4� งจะพื่ร�อมูในก่ารแลก่เปล&�ยนข้�อมู�ล 3 ข้�นตั้อนน&เร&ยก่ว�า “Three way handshake”

ก่ลไก่ก่ารท้"างานข้อง TCP : ก่ารถึ�ายโอนข้�อมู�ล (ท้างเด&ยว)• สุมูมู�ตั้'ก่ารสุ�งข้�อมู�ลคร�งละ 100 ไบตั้- และ SEQ number

ข้อง A เร'�มูท้&� 501A B

SEQ 501, ACK 701,data

ACK 601, no data

SEQ 601, ACK 701, dataSEQ 701, ACK 701, dataSEQ 801, ACK 701, data

ACK 901, no data

ก่ลไก่ก่ารท้"างานข้อง TCP : ก่ารถึ�ายโอนข้�อมู�ล (2 ท้าง)• สุมูมู�ตั้'ก่ารสุ�งข้�อมู�ลคร�งละ 100 ไบตั้-

A B

SEQ 901, ACK 701,data

SEQ 701, ACK 1001, data

SEQ 1001, ACK 801, data

SEQ 1101, ACK 901, data

SEQ 801, ACK 1101, data

SEQ 901, ACK 1201, data

ก่ลไก่ก่ารท้"างานข้อง TCP : ยก่เล'ก่ก่ารเชื่��อมูตั้�อ• ต้�วอย่�าง : A ข้องเล'ก่ก่ารเชื่��อมูตั้�อก่�บ B

A B

FIN, SEQ 1201, ACK 1001

SEQ 1001, ACK 1202

SEQ 1202, ACK 1002

FIN, SEQ 1001, ACK 1202

ก่ลไก่ก่ารท้"างานข้อง TCP : ก่ารสุ�ง segment ซ้ำ"าA B

SEQ 100

ACK 200SEQ 200

SEQ 300

SEQ 400

SEQ 300

ACK 300

ACK 500

ก่ลไก่ก่ารท้"างานข้อง TCP : segment ตั้อบร�บหัาย

A B

SEQ 100

ACK 200SEQ 200

SEQ 300

SEQ 400ACK 300

ACK 500

ACK 400

สุถึานะ TCP : ข้�นตั้อนสุถึาปนาข้อง Server

• CLOSED สุถึานะจ"าลองท้&�สุร�างข้�นเพื่��ออ�างอ'งเน��องจาก่ในสุถึานะน&จะไมู�มู&ก่ารจ�ดสุรรหัน�วยความูจ"าเพื่��อเก่0บค�าใด

• LISTEN เซ้ำ'ฟเวอร-รอคอยก่ารข้อบร'ก่ารจาก่ไคลเอ0นตั้-

• SYN_RECEIVED เซ้ำ'ฟเวอร-ได�ร�บ SYN และสุ�ง SYN,ACK และรอร�บ ACK จาก่ไคลเอ0นตั้-

• ESTABLISHED เซ้ำ'ฟเวอร-ได�ร�บ ACK จาก่ไคลเอ0นตั้-และพื่ร�อมูท้&�จะแลก่เปล&�ยนข้�อมู�ล

สุถึานะ TCP : ข้�นตั้อนก่ารสุถึาปนาข้อง client

• CLOSED สุถึานะจ"าลองท้&�สุร�างข้�นเพื่��ออ�างอ'งเน��องจาก่ในสุถึานะน&จะไมู�มู&ก่ารจ�ดสุรรหัน�วยความูจ"าเพื่��อเก่0บค�าใด

• SYN_SENT ไคลเอ0นตั้-สุ�งสุ�ญญาณร�องข้อก่ารเชื่��อมูตั้�อด�วยก่ารสุ�ง SYN

• ESTABLISH ไคลเอ0นตั้-ได�ร�บ SYN,ACK ตั้อบก่ล�บจาก่เซ้ำ'ฟเวอร-และท้"าก่ารสุ�ง ACK ก่ล�บไปหัาเซ้ำ'ฟเวอร-แล�ว ไคลเอ0นตั้-จะอย��ในสุถึานะพื่ร�อมูในก่ารแลก่เปล&�ยนข้�อมู�ล

สุถึานะ TCP : ฝั่7ายท้&�ข้อป(ดก่ารเชื่��อมูตั้�อ

• FIN_WAIT_1 สุ�ง FIN และเข้�าสุ��สุถึานะรอคอยเพื่��อรอก่ารย�นย�นว�าได�ร�บค"าสุ��งป(ดก่ารเชื่��อมูตั้�อ

• FIN_WAIT_2 ฝั่7ายข้อป(ดได�ร�บ ACK ย�นย�นว�าได�ร�บค"าสุ��งป(ดก่ารเชื่��อมูตั้�อ

• CLOSING ฝั่7ายข้อป(ดได�ร�บ FIN และสุ�ง ACK ก่ล�บ• TIME_WAIT สุถึานะรอคอยเพื่��อรอสุ��ก่ารป(ดก่าร

เชื่��อมูตั้�อ• CLOSED ป(ดก่ารเชื่��อมูตั้�อแล�ว ข้�อมู�ลก่ารเชื่��อมูโยง

ถึ�ก่ก่"าจ�ดท้'งหัมูด

สุถึานะ TCP : ฝั่7ายท้&�ถึ�ก่ข้อป(ดก่ารเชื่��อมูตั้�อ

• CLOSED_WAIT ได�ร�บ FIN ข้อป(ดก่ารเชื่��อมูตั้�อ และสุ�ง ACK

• LAST_ACK เมู��อพื่ร�อมูท้&�จะป(ดก่ารเชื่��อมูตั้�อจะสุ�ง FIN ไปหัาผิ��ร �องข้อป(ดก่ารเชื่��อมูตั้�อ และรอ ACK ย�นย�น

• CLOSED ป(ดก่ารเชื่��อมูตั้�อแล�ว ข้�อมู�ลก่ารเชื่��อมูโยงถึ�ก่ก่"าจ�ดท้'งหัมูด

ก่ารด�สุถึานะข้อง TCP ข้องเคร��องใชื่�งานท้�ง Windows และ Linux สุามูารถึตั้รวจสุอบสุถึานะข้อง TCP ได�โดย

ใชื่�ค"าสุ��ง netstat –n

Recommended