λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Network

TCP & UDP의 차이와 3,4 way handshake μ•Œμ•„λ³΄κΈ°

⭐️UDP

  • κ°œλ…

신뒰성보닀 속도와 νš¨μœ¨μ„±μ„ μ€‘μš”μ‹œν•  λ•Œ μ‚¬μš©ν•˜λŠ” 전솑 계측 ν”„λ‘œν† μ½œ

 

  • νŠΉμ§•

1. TCP와 달리 UDPλŠ” μ—°κ²° 지ν–₯ν˜•μ΄ μ•„λ‹™λ‹ˆλ‹€.

κ·Έλž˜μ„œ, 3 way handshake 와 4 way handshake κ°€ μ—†κΈ° λ•Œλ¬Έμ— 속도가 λΉ λ¦…λ‹ˆλ‹€.

 

2. 1:N , N:N 톡신이 κ°€λŠ₯ν•΄μ„œ DNS ν”„λ‘œν† μ½œκ³Ό 슀트리밍 μ„œλΉ„μŠ€μ— μ ν•©ν•©λ‹ˆλ‹€.

 

3. λ°μ΄ν„°μ˜ 신뒰성을 보μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

단지 체크섬을 톡해 μˆ˜μ‹ λœ νŒ¨ν‚·μ˜ 였λ₯˜ μ—¬λΆ€ μ •λ„λ§Œμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

- 체크섬 ?

UDP λ°μ΄ν„°κ·Έλž¨μ˜ 무결성을 μœ„ν•΄ μ‚¬μš©λ˜λŠ” 것 μž…λ‹ˆλ‹€.

체크섬은 솑신할 λ°μ΄ν„°κ·Έλž¨μ„ 16λΉ„νŠΈ λ‹¨μœ„λ‘œ λ‚˜λˆ„κ³ , λͺ¨λ‘ λ”ν•œ λ‹€μŒ 1의 보수λ₯Ό μ·¨ν•΄μ„œ λ§Œλ“€μ–΄ μ§‘λ‹ˆλ‹€.

λ§Œλ“€μ–΄μ§„ 값을 UDPν—€λ”μ˜ 체크섬 ν•„λ“œμ— λ„£μ–΄ 전솑 ν•©λ‹ˆλ‹€. 

μˆ˜μ‹ μžλŠ” μˆ˜μ‹ ν•œ λ°μ΄ν„°κ·Έλž¨μ— λŒ€ν•΄ λ™μΌν•œ λ°©μ‹μœΌλ‘œ 체크섬을 λ§Œλ“€κ³  ν—€λ”μ˜ 체크섬과 일치 ν•˜λŠ”μ§€ λΉ„κ΅ν•¨μœΌλ‘œμ¨ μˆ˜μ‹ λœ λ°μ΄ν„°κ·Έλž¨μ˜ 였λ₯˜λ₯Ό κ²€μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

UDP λ°μ΄ν„°κ·Έλž¨ 헀더

 

μ΄λŸ¬ν•œ 체크섬 ν•„λ“œλŠ” IPμ£Όμ†Œκ°€ 무엇이냐에 따라 선택과 ν•„μˆ˜λ‘œ λ‚˜λ‰˜μ–΄μ§‘λ‹ˆλ‹€.

IPv4 μ£Όμ†Œ 체계 μ—μ„œ Source port 와 Checksum 은 선택이고, Destinaion port , Length λŠ” ν•„μˆ˜μž…λ‹ˆλ‹€.

IPv6 μ—μ„œ Source port 만 선택이고, λ‚˜λ¨Έμ§€ ν•„λ“œλŠ” ν•„μˆ˜μž…λ‹ˆλ‹€.

* IPv4 : 192.168.1.1 처럼 점(.)으둜 κ΅¬λΆ„λœ 4개의 10μ§„μˆ˜λ‘œ ν‘œν˜„λ˜λŠ” 32λΉ„νŠΈ μ£Όμ†Œ 체계(10μ§„μˆ˜ 1κ°œλ‹Ή 8λΉ„νŠΈλ‘œ ν‘œν˜„)μž…λ‹ˆλ‹€.

* IPv6 : 2001:0db8:85a3:0000:0000:8a2e:0370:7334 처럼 콜둠(:)으둜 κ΅¬λΆ„λœ 8개의 16μ§„μˆ˜λ‘œ ν‘œν˜„λ˜λŠ” 128λΉ„νŠΈ μ£Όμ†Œ 체계(16μ§„μˆ˜ 1κ°œλ‹Ή 16λΉ„νŠΈλ‘œ ν‘œν˜„)μž…λ‹ˆλ‹€.

 

⭐️TCP

  • κ°œλ…

λ°μ΄ν„°μ˜ μ‹ λ’°μ„±κ³Ό μˆœμ„œλ₯Ό μ€‘μš”μ‹œν•  λ•Œ μ‚¬μš©ν•˜λŠ” 전솑 계측 ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

 

  • νŠΉμ§•

1. TCPλŠ” μ—°κ²° 지ν–₯ν˜• μž…λ‹ˆλ‹€.

톡신 ν•˜κΈ° μ „ 연결을 μˆ˜λ¦½ν•˜λŠ” 과정을 3 way handshake, 톡신을 끝내고 연결을 μ’…λ£Œν•˜λŠ” 과정을 4 way handshake κ°€ μžˆμŠ΅λ‹ˆλ‹€.

 

2. λ°μ΄ν„°μ˜ 신뒰성을 보μž₯ν•©λ‹ˆλ‹€.

체크섬 ν•„λ“œλ₯Ό μ‚¬μš©ν•΄ λ°μ΄ν„°μ˜ 무결성을 κ²€μ¦ν•©λ‹ˆλ‹€.

λˆ„μ ACK λ°©μ‹μœΌλ‘œ μˆ˜μ‹  μΈ‘μ—μ„œ νŒ¨ν‚·μ„ 잘 λ°›μ•˜λŠ”μ§€ ν™•μΈν•˜κ³ , λ§Œμ•½ μ€‘λ³΅λœ 3개의 ACK λ˜λŠ” νƒ€μž„μ•„μ›ƒμ΄ λ°œμƒν•˜λ©΄ λΉ λ₯Έ μž¬μ „μ†‘μœΌλ‘œ νŒ¨ν‚·μ„ μž¬μ „μ†‘ν•©λ‹ˆλ‹€.

 

3. Sequence Number λ₯Ό μ‚¬μš©ν•΄μ„œ λ°μ΄ν„°μ˜ μˆœμ„œλ₯Ό 보μž₯ν•©λ‹ˆλ‹€

 

4. μˆ˜μ‹ μΈ‘μ˜ window size λ₯Ό 가지고 흐름 μ œμ–΄λ₯Ό ν•©λ‹ˆλ‹€.

 

5. 솑신 츑은 λ„€νŠΈμ›Œν¬ ν˜Όμž‘λ„λ₯Ό μΈ‘μ •ν•˜μ—¬ 혼작 μ œμ–΄λ₯Ό ν•©λ‹ˆλ‹€. 

 

⭐️TCP - 3 way handshake

3 way handshake λŠ” 3개의 νŒ¨ν‚·μ„ μ£Όκ³  λ°›μœΌλ©° 사전 μ—°κ²° 섀정을 μˆ˜λ¦½ν•˜λŠ” 3단계 κ³Όμ •μž…λ‹ˆλ‹€.

TCP헀더

 

1단계 : ν΄λΌμ΄μ–ΈνŠΈ → μ„œλ²„ (SYN)

ν΄λΌμ΄μ–ΈνŠΈλŠ” TCPν—€λ”μ˜ SYN ν”Œλž˜κ·Έ λΉ„νŠΈλ₯Ό 1둜 μ„€μ •ν•©λ‹ˆλ‹€. λ¬΄μž‘μœ„μ˜ sequence 번호(ex. A)λ₯Ό μ„Έκ·Έλ¨ΌνŠΈμ— λ„£μ–΄μ„œ μ„œλ²„μ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€.

 

2단계 : μ„œλ²„ ν΄λΌμ΄μ–ΈνŠΈ (SYN-ACK)

μ„œλ²„λŠ” SYN ν”Œλž˜κ·Έμ™€ ACK ν”Œλž˜κ·Έμ˜ λΉ„νŠΈλ₯Ό 1둜 μ„€μ •ν•©λ‹ˆλ‹€.

Acknowledgement Number ν•„λ“œμ—λŠ” μˆ˜μ‹ λœ sequence λ²ˆν˜Έλ³΄λ‹€ ν•˜λ‚˜ 더 큰 κ°’(ex. A + 1)을 μ„€μ •ν•˜κ³ ,

sequece number ν•„λ“œμ—λŠ” λ¬΄μž‘μœ„μ˜ 번호(ex. Z)λ₯Ό λ‹΄κ³ , ν•΄λ‹Ή μ„Έκ·Έλ¨ΌνŠΈλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „μ†‘ν•©λ‹ˆλ‹€.

 

3단계 : ν΄λΌμ΄μ–ΈνŠΈ → μ„œλ²„ (ACK)

λ§ˆμ§€λ§‰μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈλŠ” ACKλ₯Ό μ„œλ²„λ‘œ λ‹€μ‹œ λ³΄λƒ…λ‹ˆλ‹€.

Acknowlegment number λŠ” μ„œλ²„κ°€ 보낸 sequence number ν•„λ“œ κ°’(Z) 에 1을 λ”ν•œ Z + 1 둜 μ„€μ •λ©λ‹ˆλ‹€.

sequece number ν•„λ“œμ—λŠ” μ„œλ²„κ°€ 보낸 Acknowledgement number ν•„λ“œ κ°’μ΄μ—ˆλ˜ A + 1 둜 μ„€μ •ν•©λ‹ˆλ‹€.

이 λ•Œ, 전솑할 데이터가 있으면 이 λ‹¨κ³„μ—μ„œ 데이터λ₯Ό μ „μ†‘ν•˜κ³ , μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ ACK λ₯Ό 톡해 ν˜„μž¬ ν΄λΌμ΄μ–ΈνŠΈκ°€ alive μž„μ„ ν™•μΈν•©λ‹ˆλ‹€.

 

⭐️TCP - 4 way handshake

4개의 νŒ¨ν‚·μ„ μ£Όκ³  λ°›μœΌλ©° TCP 연결을 μ’…λ£Œν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

 

1단계 : ν΄λΌμ΄μ–ΈνŠΈ → μ„œλ²„ (FIN)

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—κ²Œ 연결을 μ’…λ£Œν•˜κ² λ‹€λŠ” FIN ν”Œλž˜κ·Έλ₯Ό 1둜 μ„€μ •ν•œ μ„Έκ·Έλ¨ΌνŠΈλ₯Ό λ³΄λƒ…λ‹ˆλ‹€.

 

2단계 : μ„œλ²„  ν΄λΌμ΄μ–ΈνŠΈ (ACK)

μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ FIN 에 λŒ€ν•œ ACK λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.

ACK λ₯Ό 받은 ν΄λΌμ΄μ–ΈνŠΈλŠ” 포트 μƒνƒœλ₯Ό FIN_WAIT_2 둜 λ°”κΎΈκ³ , μ„œλ²„μ˜ FIN νŒ¨ν‚·μ„ κΈ°λ‹€λ¦½λ‹ˆλ‹€.

 

3단계 : μ„œλ²„  ν΄λΌμ΄μ–ΈνŠΈ (FIN)

μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 연결을 μ’…λ£Œν•˜κ² λ‹€λŠ” FIN ν”Œλž˜κ·Έ λΉ„νŠΈλ₯Ό 1둜 μ„€μ •ν•œ μ„Έκ·Έλ¨ΌνŠΈλ₯Ό λ³΄λƒ…λ‹ˆλ‹€.

 

4단계 : ν΄λΌμ΄μ–ΈνŠΈ → μ„œλ²„ (ACK)

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ μ’…λ£Œ μš”μ²­μ— μ‘λ‹΅ν•˜μ—¬ λ§ˆμ§€λ§‰ ACKλ₯Ό 보내고, λ§ˆμ§€λ§‰ ACKλ₯Ό μˆ˜μ‹ ν•œ μ„œλ²„λŠ” 포트λ₯Ό λ‹«μŠ΅λ‹ˆλ‹€.