tcp protocol
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 PresentationTRANSCRIPT
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