Ravindra Bagale · Cyber Securityसर्व coursesया course चे lessonsशोधाEnglish

Cyber Security · मराठी आवृत्ती

TCP 3-way handshake, flags आणि connection close

रवींद्र बागले यांच्या course वर आधारित · सहज मराठीत explanation

या page मध्ये

TCP connection तयार होण्याआधी दोन्ही machines sequence numbers आणि connection state समन्वयाने ठरवतात. SYN → SYN-ACK → ACK हा क्रम पक्का लक्षात ठेवा. Wireshark analysis, firewall states आणि SYN-related security topics याच पायावर समजतात.

   Client (192.168.56.10:51544)                 Server (192.168.56.101:80)
        |  1. SYN        seq=1000                        |
        | ---------------------------------------------> |   "I want to talk"
        |  2. SYN-ACK    seq=5000, ack=1001              |
        | <--------------------------------------------- |   "OK, I heard you"
        |  3. ACK        seq=1001, ack=5001              |
        | ---------------------------------------------> |   connection ESTABLISHED
        |        ... data (PSH/ACK) both ways ...        |
        |  FIN  ---------------------------------------> |   4-way close:
        |  <---------------------------------------  ACK |   FIN, ACK, FIN, ACK
        |  <---------------------------------------  FIN |
        |  ACK  ---------------------------------------> |
  1. Client seq=1000 असलेला SYN पाठवतो.
  2. Server seq=5000, ack=1001 असलेला SYN-ACK देतो.
  3. Client seq=1001, ack=5001 असलेला ACK देतो. Connection established होतं.

SYN sequence space मध्ये एक number वापरतो, म्हणून या example मध्ये ack एकने पुढे आहे. सामान्य data मध्ये ACK पुढे अपेक्षित असलेला byte number सांगतो; तो प्रत्येक वेळी फक्त seq + 1 असेलच असं नाही.

महत्त्वाचे flags

Flag अर्थ कुठे दिसतो?
SYN Sequence numbers synchronize करून connection सुरू करणे Handshake step 1 and 2, SYN scan (nmap -sS)
ACK मिळालेल्या data ची acknowledgement Established connection मधल्या segments वर साधारणपणे
FIN Graceful close—माझ्याकडून पाठवणं संपलं Connection close, FIN scan
RST Connection लगेच reset/नाकारण्याचा संकेत Closed port कडून reply
PSH Data application कडे पुढे देण्याची सूचना Interactive traffic
URG Urgent pointer valid आहे कमी वापर; Xmas scan मध्ये FIN+PSH+URG

Graceful close अनेकदा FIN → ACK → FIN → ACK असा दिसतो. काही messages एकत्र येऊ शकतात; दोन्ही directions स्वतंत्रपणे बंद होतात.

SYN ला मिळणारे replies

Probe Server चा reply Nmap चा निष्कर्ष
SYN SYN-ACK open
SYN RST closed (host कडून reply आला)
SYN Reply नाही / ICMP unreachable filtered (filtering किंवा packet loss शक्य)

SYN-ACK आल्यास port open असल्याचा संकेत; RST आल्यास closed असल्याचा संकेत. Reply नाही किंवा काही ICMP unreachable responses असल्यास scanner “filtered” असा निष्कर्ष काढू शकतो. पण packet loss सारखी कारणंही असू शकतात, म्हणून एका reply वरून firewall निश्चित आहे असं म्हणू नका.

स्वतःच्या web-server lab मध्ये पाहा

sudo tcpdump -i any -nn 'tcp port 80 and (tcp[tcpflags] & (tcp-syn|tcp-fin|tcp-rst) != 0)'
# in another terminal: curl -s http://localhost > /dev/null   -> watch SYN, SYN-ACK, FIN

ही मूळ filter command SYN, FIN आणि RST दाखवते; SYN-ACK मध्ये SYN flag असल्याने तो दिसतो. Pure ACK मात्र या filter मध्ये दिसणार नाही. पूर्ण handshake पाहण्यासाठी आपल्या lab capture मध्ये TCP port 80 चा पूर्ण traffic पाहा.

Security मध्ये उपयोग

SYN flood मध्ये handshake पूर्ण न करता अनेक half-open states तयार करण्याचा प्रयत्न होतो. SYN cookies, rate limits आणि AWS Shield सारखं DDoS protection उपयोगी ठरू शकतं. SYN scan मध्ये SYN पाठवून reply तपासला जातो आणि पूर्ण connection ऐवजी RST दिला जाऊ शकतो; nmap -sS हा source मधला संबंधित option आहे.

Practice

स्वतःच्या web-server lab वर दिलेली tcpdump command चालवा. दुसऱ्या terminal मध्ये दाखवलेली curl command वापरा. SYN, SYN-ACK आणि शेवटचे FIN/RST शोधा. नंतर पूर्ण TCP capture मध्ये तिसरा ACK शोधून sequence/ack values जुळवा.