๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์—ฌ๋Ÿฌ๊ฐ€์ง€/์ •๋ณด๋ณด์•ˆ ์ •๋ฆฌ

[์ •๋ณด๋ณด์•ˆ ์ •๋ฆฌ] ๋„คํŠธ์›Œํฌ - TCP ํ”„๋กœํ† ์ฝœ

728x90

*TCP ํ”„๋กœํ† ์ฝœ

-์—ฐ๊ฒฐ ์ง€ํ–ฅ ํ”„๋กœํ† ์ฝœ : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ „์šฉํšŒ์„ ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์ƒ์˜ ์—ฐ๊ฒฐํ†ต๋กœ๋ฅผ ์„ค์ •ํ•ด์„œ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹

(1) ์ˆœ์„œ์ œ์–ด : ๋…ผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐํ†ต๋กœ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์ „์†ก์ˆœ์„œ ๋ณด์žฅ

(2) ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ์ „์†ก๋ฐฉ์‹ : ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ•ด์ง„ ํฌ๊ธฐ๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž„์˜์˜ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„์–ด ์—ฐ์†ํ•ด์„œ ์ „์†ก

 

-์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ

(1) ํ๋ฆ„์ œ์–ด : ์ƒ๋Œ€๋ฐฉ์ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ „์†ก

  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์ œ์–ด๋ฐฉ์‹ ์‚ฌ์šฉ
  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ : ์ƒ๋Œ€๋ฐฉ์ด ์ˆ˜์‹  ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†ํ•ด์„œ ์ „์†ก

(2) ์˜ค๋ฅ˜์ œ์–ด : ๋ฐ์ดํ„ฐ์˜ ์˜ค๋ฅ˜๋‚˜ ๋ˆ„๋ฝ ์—†์ด ์•ˆ์ „ํ•œ ์ „์†ก์„ ๋ณด์žฅ

(3) ํ˜ผ์žก์ œ์–ด : ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก ์ •๋„์— ๋”ฐ๋ผ ์†ก์‹ ์ž๊ฐ€ ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰์„ ์ œ์–ด

 


 

*TCP ํ”„๋กœํ† ์ฝœ ๊ตฌ์กฐ

https://itragdoll.tistory.com/57

-Source Port : ์ถœ๋ฐœ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ

-Destination Port : ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ

Sequence Number : ์†ก์‹  ๋ฐ์ดํ„ฐ ์ˆœ์„œ ๋ฒˆํ˜ธ

(1) ์†ก์‹  ์‹œ ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ ์‹œ์ž‘ ๋ฐ”์ดํŠธ ์ˆœ๋ฒˆ

(2) ์—ฐ๊ฒฐ์„ค์ • ๋‹จ๊ณ„์—์„œ ์ดˆ๊ธฐ ์ˆœ์„œ ๋ฒˆํ˜ธ(ISN:Initial Sequence Number)๋ฅผ ์ƒํ˜ธ๊ฐ„ ์ฃผ๊ณ ๋ฐ›์Œ.

์ดˆ๊ธฐ ์ˆœ์„œ๋ฒˆํ˜ธ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘X, ์ž„์˜์˜ ์ˆ˜ ํ• ๋‹น

-Acknowledgment Number : ์ƒ๋Œ€๋ฐฉ์ด ๋‹ค์Œ์— ์ „์†กํ•  ์ˆœ์„œ๋ฒˆํ˜ธ

-HLEN : ํ—ค๋” ๊ธธ์ด

-Reserved : ์˜ˆ์•ฝ

-Control Flags

(1) URG : ๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ ์„ค์ •

(2) ACK : ์ˆ˜์‹  ํ™•์ธ ์‘๋‹ต ์„ค์ •

(3) PSH : ์†ก์ˆ˜์‹  ๋ฒ„ํผ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฆ‰์‹œ ์ฒ˜๋ฆฌ

(4) RST : ์—ฐ๊ฒฐ ์ค‘๋‹จ(๊ฐ•์ œ ์ข…๋ฃŒ)

(5) SYN : ์—ฐ๊ฒฐ ์„ค์ •

(6) FIN : ์—ฐ๊ฒฐ ์ข…๋ฃŒ(์ •์ƒ ์ข…๋ฃŒ)

-Windows Size : ์ˆ˜์‹ ์ธก์—์„œ ์†ก์‹ ์ธก์— ๋ณด๋‚ด๋Š” Receiver window size. ์ˆ˜์‹  ๋ฒ„ํผ์˜ ์—ฌ์œ  ๊ณต๊ฐ„

-Checksum : ํ—ค๋” ํฌํ•จ ์ „์ฒด ์„ธ๊ทธ๋จผํŠธ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ ํ•„๋“œ

-Urgent Pointer : ์„ธ๊ทธ๋จผํŠธ๊ฐ€ URG ํฌํ•จ ์‹œ ๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ ์œ„์น˜๊ฐ’ ๊ฐ€์ง

 


 

*์—ฐ๊ฒฐ ๊ณผ์ • ์„ค์ •(3-Way Handshake)

https://www.sciencedirect.com/topics/computer-science/three-way-handshake

-์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„

(1) ์ตœ์ดˆ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ ์„ค์ •์„ ์œ„ํ•ด SYN ์ „์†ก.

Active Open : ์—ฐ๊ฒฐ์š”์ฒญ์„ ์œ„ํ•ด ๋Šฅ๋™์ ์œผ๋กœ ํฌํŠธ ์—ด๊ณ  ์žˆ๋Š” ์ƒํƒœ

Passive Open : ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์ˆ˜์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋™์ ์œผ๋กœํฌํŠธ๋ฅผ ์—ด๊ณ  ์žˆ๋Š” ์ƒํƒœ

(2) SYN : ์ˆœ์„œ ๋ฒˆํ˜ธ ๋™๊ธฐํ™”. ๋žœ๋ค๊ฐ’ ์‹œ์ž‘

(3) ์ตœ์ดˆ SYN ํŒจํ‚ท์„ ๋ณด๋‚ธ TCP ์ƒํƒœ : SYN_SENT

 

-๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„

(1) ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ(SYN)์— ์ˆ˜์‹  ํ™•์ธ ์‘๋‹ต(ACK)์™€ ํ•จ๊ป˜ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์—ฐ๊ฒฐ ์š”์ฒญ(SYN)

(2) ACK์‹œ ๋ฐ˜๋“œ์‹œ Acknowledgment Number ์„ค์ • : ์ƒ๋Œ€๋ฐฉ์ด ๋‹ค์Œ์— ๋ณด๋‚ผ ํŒจํ‚ท์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ

SEQ=x ๋‹ค์Œ์˜ SYN+ACK์—์„œ Ack.Num์ด x+1์ด ๋œ ์ด์œ 

(3) SYNํŒจํ‚ท ์ˆ˜์‹  TCP ์ƒํƒœ : SYN_RECEIVED

 

-์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„

(1) server์˜ SYN์— ๋Œ€ํ•ด ACK๋ฅผ ์ „์†กํ•œ ํ›„ ์ตœ์ข…์ ์œผ๋กœ ์—ฐ๊ฒฐ ์„ค์ • ์™„๋ฃŒ

(2) ACK ํ›„ TCP ์ƒํƒœ : ESTABLISHED

 

-๋น„ํŠธ

(1) SYN : 000010

(2) SYN+ACK : 010010

(3) ACK : 010000

 


 

*๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ๊ณผ์ •

-์žฌ์ „์†ก ๊ณผ์ •(Retransmission)

https://www.javatpoint.com/tcp-retransmission

 

-๋น ๋ฅธ ์žฌ์ „์†ก(Fast Retransmission)

https://stackoverflow.com/questions/53932903/what-ack-number-does-the-receiver-send-after-a-fast-retransmit-in-tcp

 


 

*์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •(4-Way Handshake)

FIN_WAIT_1 ์ฒซ ๋ฒˆ์งธ FIN+ACK ํŒจํ‚ท์— ๋Œ€ํ•œ ACK ๋Œ€๊ธฐ
FIN_WAIT_2 ์ฒซ ๋ฒˆ์งธ FIN+ACK ํŒจํ‚ท์— ๋Œ€ํ•œ ACK ์ˆ˜์‹  ํ›„, ๋‘ ๋ฒˆ์งธ FIN+ACK ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
TIME_WAIT ๋งˆ์ง€๋ง‰ ACK ์ „์†ก ํ›„ 2MSL
CLOSE_WAIT ์ƒ๋Œ€๋ฐฉ์˜ ์ฒซ ๋ฒˆ์งธ FIN+ACK ํŒจํ‚ท์— ๋Œ€ํ•œ ACK ์‘๋‹ต ํ›„ ๋‘ ๋ฒˆ์งธ FIN+ACK ํŒจํ‚ท ์ „์†ก๊นŒ์ง€ ๋Œ€๊ธฐ
LAST_ACK ๋‘ ๋ฒˆ์งธ FIN+ACK ์ „์†ก ํ›„ ๋งˆ์ง€๋ง‰ ACK ๋Œ€๊ธฐ
CLOSED ์ข…๋ฃŒ

 

-๋น„ํŠธ

(1) FIN+ACK : 010001

(2) ACK : 010000

 


 

*์—ฐ๊ฒฐ ์š”์ฒญ ๊ฑฐ๋ถ€(๊ฐ•์ œ ์ข…๋ฃŒ)

 


 

*์—ฐ๊ฒฐ ์ค‘๋‹จ(abort)

 


 

*TCP ์„ธ์…˜ ํ•˜์ด์žฌํ‚น(Session Hijacking)

https://m.blog.naver.com/jb8917/120177378997

: ์„ธ์…˜ ์‹๋ณ„์ •๋ณด (์ถœ๋ฐœ์ง€ IP์™€ Port, ๋ชฉ์ ์ง€ IP์™€ Port, Sequence Number์™€ Acknowledgment Number)๋ฅผ

๊ณต๊ฒฉ์ž๊ฐ€ ์œ„์กฐํ•˜์—ฌ ์„ธ์…˜์„ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ.

์ •์ƒ์ ์ธ ์‚ฌ์šฉ์ž์˜ ์ถœ๋ฐœ์ง€ IP์™€ Port๋กœ ์œ„์กฐํ•˜๊ณ  Sequence Number๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ ์„ธ์…˜ ํƒˆ์ทจ.