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

๐ŸŽ iOS/iOS Application

[iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(2) - Wireshark๋กœ HTTP Handshake, 3 Way-Handshake ๋ถ„์„ํ•˜๊ธฐ

728x90

์‚ฌ์ „ Setting์„ ํ†ตํ•ด ์•„์ดํฐ ํŒจํ‚ท ๋ฏธ๋Ÿฌ๋ง์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด, 

์•„์ดํฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ Wireshark๋ฅผ ํ†ตํ•ด ํŒจํ‚ท ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ

HTTP Handshake, ๋ฐ์ดํ„ฐ ํ†ต์‹ ๊ณผ์ •์„ ํ™•์ธํ•ด๋ณด์ž!


โญ๏ธ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•โญ๏ธ 

  1. Wireshark๋ฅผ ์‹คํ–‰
  2. ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์—ฐ๊ฒฐ๋œ ๋””๋ฐ”์ด์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ ์บก์ฒ˜ ์‹œ์ž‘(์‚ฌ์ „ Setting์—์„œ ํ™•์ธ)
  3. ์•„์ดํฐ์œผ๋กœ ์‚ฌํŒŒ๋ฆฌ ์‹คํ–‰
  4. ์‚ฌํŒŒ๋ฆฌ์—์„œ ๋„ค์ด๋ฒ„์— ์ ‘์†
  5. ์บก์ฒ˜๋ฅผ ์ข…๋ฃŒ ํ›„ ํŒจํ‚ท ๋ถ„์„

[ ์‚ฌ์ „ Setting ๋ฐฉ๋ฒ• ]

 

[iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(1) - iOS ํŒจํ‚ท ์บก์ณํ•˜๊ธฐ

โญ๏ธ ์ค€๋น„์‚ฌํ•ญ โญ๏ธ Xcode ์„ค์น˜ ์•„์ดํฐ์˜ ํŒจํ‚ท์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Remote Virtual Interface ์‚ฌ์šฉ Xcode๋ฅผ ์„ค์น˜ํ•ด์•ผ ์„ค์น˜๋œ๋‹ค. Wireshark ์„ค์น˜ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋ถ„์„ํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํˆด๋กœ, ๊ณต์‹ ํ™ˆ

lxxyeon.tistory.com


โญ๏ธTCP ํ”„๋กœํ† ์ฝœ ๊ตฌ์„ฑ์š”์†Œ โญ๏ธ 

  • No. : ํŒจํ‚ท์„ ์ˆ˜์ง‘ํ•œ ์ˆœ์„œ
  • Time : ํŒจํ‚ท์ด ์ˆ˜์ง‘๋œ ์‹œ๊ฐ„
  • Source : ํŒจํ‚ท์„ ๋ณด๋‚ธ ์ฃผ์†Œ
  • Destination : ํŒจํ‚ท ๋„์ฐฉ ์ฃผ์†Œ
  • Protocol : ํ”„๋กœํ† ์ฝœ ์ •๋ณด
  • Length : ํŒจํ‚ท์˜ ๊ธธ์ด
  • Info : ํŒจํ‚ท ์ •๋ณด

โญ๏ธ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ณผ์ • ๋ถ„์„ โญ๏ธ 

1.  HTTP Connect - ์—ฐ๊ฒฐ๊ณผ์ •(HTTP Handshake ๊ณผ์ •)

์ธํ„ฐํŽ˜์ด์Šค ๋ชฉ๋ก์—์„œ ์›ํ•˜๋Š” ๋””๋ฐ”์ด์Šค์— ๋“ค์–ด๊ฐ€๋ฉด, 

์ด๋”๋„ท ํŽ˜์ด์Šค์—์„œ ์˜ค๊ณ  ๊ฐ€๋Š” ํŒจํ‚ท๋“ค์˜ ๋ชฉ๋ก์ด ๋ณด์ธ๋‹ค.

 

ํŒจํ‚ท๋“ค ์ค‘ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์ด ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด, 

SYN, SYN ACK, ACK๊ฐ€ ์ „์†ก๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณผ์ •์„ 3 Way-Handshake๋ผ ํ•˜๊ณ , ์ด ๊ณผ์ •์ด ์™„๋ฃŒ๋œ ํ›„ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • SYN(ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„) : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— TCP ์—ฐ๊ฒฐ ์š”์ฒญ, ์ž์‹ ์˜ ์—ฐ๊ฒฐ ์ค€๋น„ ์ƒํƒœ๋ฅผ ํ•จ๊ป˜ ์ „์†ก
  • SYN + ACK(์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ) : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์— ์‘๋‹ต(ACK)ํ•˜๋ฉฐ, ์ž์‹ ์˜ ์—ฐ๊ฒฐ ์ค€๋น„ ์ƒํƒœ๋ฅผ ์•Œ๋ฆฐ๋‹ค.(SYN)
  • ARC(ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„) : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ ์ค€๋น„ ์ƒํƒœ(SYN)๋ฅผ ํŒจํ‚ท์„ ์ž˜ ์ˆ˜์‹ ํ–ˆ์Œ์„ ์•Œ๋ฆผ.


[3 Way-Handshake]

1. SYN(ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„)

No.201 ํŒจํ‚ท์„ ๋ณด๋ฉด,

- Destination addr ip๊ฐ€ 233.130.195.98๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ NAVER Cloud Corp.

*ip๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ : https://ko.infobyip.com/

 

- Source addr ip ๋Š” ๋‹จ๋ง๊ธฐ ip๋กœ ์—ฐ๊ฒฐํ• ๋•Œ๋งˆ๋‹ค ๋‹ฌ๋ผ์ง„๋‹ค.

 

- Info ํ•„๋“œ์˜ 58643 -> 443์€ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ

๊ฐ™์€ ip์ธ ๊ฒฝ์šฐ, ํฌํŠธ๋ฒˆํ˜ธ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

- ์ด ๊ณผ์ •์€ Network layer์—์„œ ์ผ์–ด๋‚˜

Intertne Protocol์€ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด ์†ํ•œ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „(Version),

๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‚ด์˜ ํ—ค๋”์™€ ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด๋ฅผ ํ•ฉํ•œ ๊ฐ’(Total Length), ํ”„๋กœํ† ์ฝœ, ์ถœ๋ฐœ ์ฃผ์†Œ, ๋„์ฐฉ์ง€ ์ฃผ์†Œ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ.

IP์ฃผ์†Œ(32bit)๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐœ์‹ ์ง€๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ์ง€๊นŒ์ง€ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๋ฐ”๋กœ ์•„๋ž˜๋Š” TCP Protocol์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

  • Seq:0 > ์ง€๊ธˆ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋Š” seq๊ฐ€ 0์ด๊ณ  ๊ธธ์ด๋Š” 0
  • Ack:0 > ์„œ๋ฒ„์•ผ 0๋ฒˆ๋ถ€ํ„ฐ ๋ณด๋‚ด๋ผ
  • Next Seq : 1 > ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” 1์ด์•ผ

 

ํŒจํ‚ท์˜ ํ•„๋“œ๋ณ„ ๊ธฐ๋Šฅ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

ํ•„๋“œ๋ช…  ๊ธธ์ด(bit) ๊ธฐ๋Šฅ
 Source Port  16  ์†ก์‹ ์ธก์˜ ์‘์šฉํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ 
 Destination Port  16  ์ˆ˜์‹ ์ธก์˜ ์‘์šฉํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ
 SequenceNumber  32  ์†ก์‹ ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฒˆํ˜ธ (byte ๋‹จ์œ„), TCP ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์‹๋ณ„๊ฐ’์„ ์ œ๊ณต
: ์ตœ๊ทผ ๋ฐœ์‹  ํŒจํ‚ท Seq + ์ตœ๊ทผ ๋ณด๋‚ธ data ๊ธธ์ด
 Ack Number  32  ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ ์ˆ˜+ ACK, ๋‹ค์Œ๋ฒˆ์— ๊ธฐ๋Œ€๋˜๋Š” ์ˆœ์ฐจ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œ
: ์ตœ๊ทผ ์ˆ˜์‹  ํŒจํ‚ท Seq + ์ตœ๊ทผ ๋ฐ›์€ data ๊ธธ์ด
 HeaderLength  4  ํ—ค๋”ํฌ๊ธฐ(4byte ๋‹จ์œ„)
 Code Bits  SYN  1  ์—ฐ๊ฒฐ ์š”์ฒญ์‹œ ์‚ฌ์šฉ๋˜๋ฉฐ Seq Num ์ดˆ๊ธฐ๊ฐ’์ž„์„ ์•Œ๋ฆผ (๋™๊ธฐํ™”๋น„ํŠธ - TCP ํ•ธ๋“œ์„ธ์ดํฌ ํ”„๋กœ์„ธ์Šค ๋‹จ๊ณ„ )
 ACK  1  ํ™•์ธ์‘๋‹ตํŒจํ‚ท (ACK Number ๊ฐ’ ์œ ํšจ)
 URG  1  ๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ (Urgent Pointer ๊ฐ’ ์œ ํšจ)
 FIN  1  ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ
 RST  1  ์—ฐ๊ฒฐ ๋Š๊ธฐ
 Window  16 TCP ์ˆ˜์‹  ๋ฒ„ํผ๋ฅผ ๋ฐ”์ดํŠธ ํฌ๊ธฐ๋กœ ํ‘œ์‹œ, ์ˆ˜์‹ ์ž๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฒ„ํผ๊ณต๊ฐ„ ํ‘œ์‹œ
๐Ÿ”ฅ Calculated window size : RWIN์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์—ฐ์†ํ•ด์„œ TCP ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜์‹  ๋ฒ„ํผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 
 CheckSum  16  TCP PDU ์ „์ฒด์™€ IP ๊ณ„์ธต์˜ ํ—ค๋” ์ค‘ ํ›„๋ฐ˜๋ถ€ 12๋ฐ”์ดํŠธ(IP์ฃผ์†Œ)์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ๊ฒ€์ถœ์ฝ”๋“œ
 Urgent Pointer 16   ๊ธด๊ธ‰๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์œ„์น˜๋ฅผ ํ‘œ์‹œ

2. SYN + ACK(์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ)

  • Seq : 0 > ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๋Š” ์‘๋‹ต ๋ฐ์ดํ„ฐ๋กœ 0๋ฒˆ ๋ฐ์ดํ„ฐ
  • Ack : 1 >  ํด๋ผ๊ฐ€ ๋‹ค์Œ์— ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ ๋ฒˆํ˜ธ๋Š” Ack1์ด์•ผ!

3. SYN (ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„)

  • Seq : 1 > ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ 1๋ฒˆ๋ถ€ํ„ฐ ๋ณด๋‚ผ๊ฒŒ! ๋ฐ์ดํ„ฐ ๊ธธ์ด๋Š” 0์ด์•ผ!
  • Ack : 1 >  ํด๋ผ๊ฐ€ ๋‹ค์Œ์— ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์„ number๋Š” 1๋ถ€ํ„ฐ์•ผ!(ack: 0 + 2์˜ Seq: 1), ์„œ๋ฒ„๋Š” ๋‚˜์—๊ฒŒ 1๋ถ€ํ„ฐ ๋ณด๋‚ด๋ฉด ๋จ!

์ด์ œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ•ธ๋“œ ์…ฐ์ดํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐ˜์‘ํ˜•