TCP / UDP

Reference: [μ±…] IT μ—”μ§€λ‹ˆμ–΄λ₯Ό μœ„ν•œ λ„€νŠΈμ›Œν¬ μž…λ¬Έ

  • 2계측과 3계측은 λͺ©μ μ§€λ₯Ό μ •ν™•νžˆ μ°Ύμ•„κ°€κΈ° μœ„ν•œ μ£Όμ†Œ 제곡이 λͺ©μ μ΄μ—ˆμ§€λ§Œ, 4κ³„μΈ΅μ—μ„œ λ™μž‘ν•˜λŠ” protocol은 λ§Œλ“€μ–΄μ§„ λͺ©μ μ΄ 2, 3 계측과 쑰금 λ‹€λ₯΄λ‹€

    • λͺ©μ μ§€ 단말 μ•ˆμ—μ„œ λ™μž‘ν•˜λŠ” μ—¬λŸ¬ application process 쀑 톡신해야 ν•  λͺ©μ μ§€ processλ₯Ό μ •ν™•νžˆ μ°Ύμ•„κ°€κ³ ,

    • packet μˆœμ„œκ°€ λ°”λ€Œμ§€ μ•Šλ„λ‘ 잘 μ‘°ν•©ν•΄

    • μ›λž˜ dataλ₯Ό 잘 λ§Œλ“€μ–΄λ‚΄κΈ° μœ„ν•œ 역할을 ν•œλ‹€

1. Layer 4 Protocol (TCP, UDP) and Service Port

  • Dataλ₯Ό 보내고 λ°›λŠ” Encapsulation, Decapsulation 과정에 각 κ³„μΈ΅μ—μ„œ μ •μ˜ν•˜λŠ” headerκ°€ μΆ”κ°€λ˜κ³ , μ—¬λŸ¬κ°€μ§€ 정보가 λ“€μ–΄κ°„λ‹€

    • λ‹€μ–‘ν•œ 정보 쀑 κ°€μž₯ μ€‘μš”ν•œ 두 가지 μ •λ³΄λŠ” μ•„λž˜μ™€ κ°™λ‹€

      1. 각 κ³„μΈ΅μ—μ„œ μ •μ˜ν•˜λŠ” 정보

        • μˆ˜μ‹  츑의 동일 κ³„μΈ΅μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•œ 정보

      2. μƒμœ„ protocol μ§€μ‹œμž 정보

        • Decapsulation κ³Όμ •μ—μ„œ μƒμœ„ κ³„μΈ΅μ˜ protocolμ΄λ‚˜ processλ₯Ό μ •ν™•νžˆ μ°Ύμ•„κ°€κΈ° μœ„ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©

  • TCP/IP Protocol Stackμ—μ„œ 4계측은 TCP와 UDPκ°€ λ‹΄λ‹Ήν•œλ‹€

    • 4κ³„μΈ΅μ˜ λͺ©μ μ€ applicationμ—μ„œ μ‚¬μš©ν•˜λŠ” processλ₯Ό μ •ν™•νžˆ μ°Ύμ•„κ°€κ³ , dataλ₯Ό λΆ„ν• ν•œ packet을 잘 μͺΌκ°œ 보내고 잘 μ‘°λ¦½ν•˜λŠ” 것이닀

    • packet을 λΆ„ν• ν•˜κ³  μ‘°λ¦½ν•˜κΈ° μœ„ν•΄ Sequence Number와 ACK Numberλ₯Ό μ‚¬μš©ν•œλ‹€

  • TCP/IP Protocol Stackμ—μ„œ μƒμœ„ protocol μ§€μ‹œμžλŠ” portλ²ˆν˜Έμ΄λ‹€

    • 4계측 protocol μ§€μ‹œμžμΈ port λ²ˆν˜ΈλŠ” μΆœλ°œμ§€μ™€ λͺ©μ μ§€λ₯Ό ꡬ뢄해 μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€

Well Known Port

  • HTTP TCP 80, HTTPS TCP 443, SMTP TCP 25와 같이 잘 μ•Œλ €μ§„ Portλ₯Ό Well known port 라고 ν•œλ‹€

  • 이 port듀은 이미 인터넷 μ£Όμ†Œ ν• λ‹Ή 기ꡬ인 **IANA (Internet Assgined Numbers Authority)**에 λ“±λ‘λ˜κ³  1023번 μ΄ν•˜μ˜ port 번호λ₯Ό μ‚¬μš©ν•œλ‹€

  • λ‹€μ–‘ν•œ application에 port 번호λ₯Ό ν• λ‹Ήν•˜κΈ° μœ„ν•΄ Registered Port λ²”μœ„λ₯Ό μ‚¬μš©ν•œλ‹€

    • 1024 ~ 49151 의 λ²”μœ„μ΄λ©°,port 번호λ₯Ό ν• λ‹Ήλ°›κΈ° μœ„ν•΄ μ‹ μ²­ν•˜λ©΄ IANA에 λ“±λ‘λ˜μ–΄ κ΄€λ¦¬λœλ‹€

      • but, 곡식 λ²ˆν˜Έμ™€ 비곡식 λ²ˆν˜Έκ°€ ν˜Όμž¬λ˜μ–΄ 있고, 사섀 port 번호둜 μ‚¬μš©λ˜κΈ°λ„ ν•œλ‹€

  • 동적, 사섀, μž„μ‹œ port 의 λ²”μœ„λŠ” 49152 ~ 65535 이닀

    • 이 λ²”μœ„μ˜ port λ²ˆν˜ΈλŠ” IANA에 λ“±λ‘λ˜μ–΄ μ‚¬μš©λ˜μ§€ μ•ŠλŠ”λ‹€

    • 이 port λ²ˆν˜ΈλŠ” μžλ™μœΌλ‘œ ν• λ‹Ήλ˜κ±°λ‚˜, 사섀 μš©λ„λ‘œ ν• λ‹Ήλ˜κ³ , client의 μž„μ‹œ port 번호둜 μ‚¬μš©λœλ‹€!

2. TCP

  • TCPλŠ” Layer 4의 νŠΉμ§•μ„ λŒ€λΆ€λΆ„ ν¬ν•¨ν•˜κ³  μžˆλ‹€

  • TCP protocol은 μ‹ λ’°ν•  수 μ—†λŠ” κ³΅μš©λ§μ—μ„œλ„ μ •λ³΄μœ μ‹€ μ—†λŠ” 톡신을 보μž₯ν•˜κΈ° μœ„ν•΄

    • session을 μ•ˆμ „ν•˜κ²Œ μ—°κ²°ν•˜κ³ 

    • dataλ₯Ό λΆ„ν• ν•˜κ³ 

    • λΆ„ν• λœ packet이 잘 μ „μ†‘λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” κΈ°λŠ₯이 μžˆλ‹€

  • Packet 에 번호(Sequence Number)λ₯Ό λΆ€μ—¬ν•˜κ³  잘 μ „μ†‘λ˜μ—ˆλŠ”μ§€μ— λŒ€ν•΄ 응닡(Acknowledge Number) ν•œλ‹€

    • λ˜ν•œ, ν•œκΊΌλ²ˆμ— μ–Όλ§ˆλ‚˜ 보내야 μˆ˜μ‹ μžκ°€ 잘 λ°›μ•„ μ²˜λ¦¬ν•  수 μžˆλŠ”μ§€ 전솑크기 (Window Size)κΉŒμ§€ κ³ λ €ν•΄ ν†΅μ‹ ν•œλ‹€

      • μ΄λŸ¬ν•œ TCP의 μ—­ν•  덕뢄에 network μƒνƒœλ₯Ό μ‹¬κ°ν•˜κ²Œ κ³ λ €ν•˜μ§€ μ•Šκ³  쉽고 μ•ˆμ „ν•˜κ²Œ networkλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€

2-1. Packet μˆœμ„œμ™€ 응닡 번호 (ACK Number)

  • TCPμ—μ„œλŠ” λΆ„ν• λœ packet을 잘 λΆ„ν• ν•˜κ³  μˆ˜μ‹ μΈ‘μ΄ 잘 μ‘°ν•©ν•˜λ„λ‘ packet에 μˆœμ„œλ₯Ό μ£Όκ³  응닡 번호λ₯Ό λΆ€μ—¬ν•œλ‹€

  • Packet에 μˆœμ„œλ₯Ό λΆ€μ—¬ν•˜λŠ” 것을 Sequence Number, 응닡 번호λ₯Ό λΆ€μ—¬ν•˜λŠ” 것을 ACK Number 라고 λΆ€λ₯Έλ‹€

    • 두 λ²ˆν˜Έκ°€ μƒν˜Έμž‘μš©ν•΄ μˆœμ„œκ°€ λ’€λ°”λ€Œκ±°λ‚˜ 쀑간에 packet이 μ†μ‹€λœ 것을 νŒŒμ•…ν•  수 μžˆλ‹€

Sequence Number 와 ACK Number의 κΈ°λ³Έ λ™μž‘ 방식

  • λ³΄λ‚΄λŠ” μͺ½μ—μ„œ packet에 번호λ₯Ό λΆ€μ—¬ν•˜κ³  λ°›λŠ” μͺ½μ€ 이 번호의 μˆœμ„œκ°€ λ§žλŠ”μ§€ ν™•μΈν•œλ‹€

  • 받은 packet λ²ˆν˜Έκ°€ 맞으면 응닡을 μ£ΌλŠ”λ°, μ΄λ•Œ λ‹€μŒ 번호의 packet을 μš”μ²­ν•œλ‹€

    • 이 숫자λ₯Ό ACK Number라고 ν•œλ‹€

  • 솑신 츑이 1번 packet을 λ³΄λƒˆλŠ”λ° μˆ˜μ‹  츑이 이 packet을 잘 λ°›λŠ”λ‹€λ©΄ 1λ²ˆμ„ 잘 λ°›μ•˜μœΌλ‹ˆ λ‹€μŒμ—λŠ” 2λ²ˆμ„ λ‹¬λΌλŠ” ν‘œμ‹œλ‘œ ACK Number 2λ₯Ό μ€€λ‹€

ex)

  1. μΆœλ°œμ§€μ—μ„œ Sequence Number λ₯Ό 0으둜 보낸닀 (SEQ = 0)

  2. μˆ˜μ‹  μΈ‘μ—μ„œλŠ” 0번 packet을 잘 λ°›μ•˜λ‹€λŠ” ν‘œμ‹œλ‘œ 응닡 번호 (ACK Number 에 1을 적어 μ‘λ‹΅ν•œλ‹€

    μ΄λ•Œ μˆ˜μ‹  μΈ‘μ—μ„œλŠ” μžμ‹ μ΄ 처음 λ³΄λ‚΄λŠ” packetμ΄λ―€λ‘œ μžμ‹ μ˜ packet에 Sequence Number 0을 λΆ€μ—¬ν•œλ‹€

  3. 이 packet을 받은 솑신 츑은 Sequence Numberλ₯Ό1둜, (μˆ˜μ‹  츑이 ACK Number둜 1번 packet을 달라고 μš”μ²­ν–ˆμœΌλ‹ˆκΉŒ!!)

    ACK NumberλŠ” μƒλŒ€λ°©μ˜ 0번 Sequenceλ₯Ό 잘 λ°›μ•˜λ”°λŠ” 의미둜 Sequence Numberλ₯Ό 1둜 λΆ€μ—¬ν•΄ λ‹€μ‹œ μ†‘μ‹ ν•œλ‹€!

2-2. Window Size & Sliding Window

  • TCPλŠ” 일방적으둜 packet을 λ³΄λ‚΄λŠ” 것이 μ•„λ‹ˆλΌ μƒλŒ€λ°©μ΄ μ–Όλ§ˆλ‚˜ 잘 λ°›μ•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ ACK 번호λ₯Ό ν™•μΈν•˜κ³  λ‹€μŒ packet을 μ „μ†‘ν•œλ‹€

    • Packet이 잘 μ „μ†‘λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 별도 packet을 λ°›λŠ” 것 μžμ²΄κ°€ 톡신 μ‹œκ°„μ„ λŠ˜λ¦¬μ§€λ§Œ, μ†‘μ‹ μžμ™€ μˆ˜μ‹ μžκ°€ λ¨Ό 거리에 λ–¨μ–΄μ Έ 있으면 **왕볡 μ§€μ—°μ‹œκ°„ (Round Trip Time, RTT)**이 λŠ˜μ–΄λ‚˜λ―€λ‘œ 응닡을 κΈ°λ‹€λ¦¬λŠ” μ‹œκ°„μ΄ 더 길어진닀

      • λ§Œμ•½ μž‘μ€ packet을 ν•˜λ‚˜ 보내고 응닡을 λ°›μ•„μ•Όλ§Œ ν•˜λ‚˜λ₯Ό 더 보낼 수 μžˆλ‹€λ©΄ λͺ¨λ“  dataλ₯Ό μ „μ†‘ν•˜λŠ” 데 κΈ΄ μ‹œκ°„μ΄ 걸릴 것이닀

      • κ·Έλž˜μ„œ dataλ₯Ό 보낼 λ•Œ packet을 ν•˜λ‚˜λ§Œ λ³΄λ‚΄λŠ” 것이 μ•„λ‹ˆλΌ λ§Žμ€ packet을 ν•œκΊΌλ²ˆμ— 보내고 응닡을 ν•˜λ‚˜λ§Œ λ°›λŠ”λ‹€

  • κ°€λŠ₯ν•˜λ©΄ μ΅œλŒ€ν•œ λ§Žμ€ packet을 ν•œκΊΌλ²ˆμ— λ³΄λ‚΄λŠ” 것이 νš¨μœ¨μ μ΄μ§€λ§Œ, Network μƒνƒœκ°€ μ•ˆ μ’‹μœΌλ©΄ packet μœ μ‹€ κ°€λŠ₯성이 μ»€μ§€λ―€λ‘œ μ μ ˆν•œ μ†‘μ‹ λŸ‰μ„ κ²°μ •ν•΄μ•Ό ν•˜λŠ”λ°,

    • ν•œ λ²ˆμ— dataλ₯Ό 받을 수 μžˆλŠ” data의 크기λ₯Ό Window Size라고 ν•˜κ³ ,

    • Network 상황에 따라 이 window sizeλ₯Ό μ‘°μ ˆν•˜λŠ” 것을 Sliding Window라고 ν•œλ‹€

  • TCP Headerμ—μ„œ window size둜 ν‘œν˜„ν•  수 μžˆλŠ” μ΅œλŒ€ ν¬κΈ°λŠ” 2^16 이닀

    • μ‹€μ œλ‘œ 64K만큼 window sizeλ₯Ό κ°€μ§ˆ 수 μžˆμ§€λ§Œ 이 sizeλŠ” νšŒμ„ μ˜ μ•ˆμ •μ„±μ΄ 높아지고 κ³ μ†ν™”λ˜λŠ” ν˜„λŒ€ networkμ—μ„œλŠ” λ„ˆλ¬΄ μž‘μ€ μˆ«μžμ΄λ‹€

      • κ·Έλž˜μ„œ window sizeλ₯Ό 64K보닀 λŒ€ν­ 늘렀 ν†΅μ‹ ν•˜λŠ”λ° TCP headerλŠ” 변경이 λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ header sizeλ₯Ό λŠ˜λ¦¬μ§€ μ•Šκ³  λ’€μ˜ 숫자λ₯Ό λ¬΄μ‹œν•˜λŠ” λ°©λ²•μœΌλ‘œ window sizeλ₯Ό μ¦κ°€μ‹œμΌœ ν†΅μ‹ ν•œλ‹€

        • 이 방법을 μ‚¬μš©ν•˜λ©΄ κΈ°μ‘΄ 숫자의 10λ°°, 100배둜 windowκ°€ 컀진닀!

  • TCPλŠ” data μœ μ‹€μ΄ λ°œμƒν•˜λ©΄ window sizeλ₯Ό 절반으둜 λ–¨μ–΄λœ¨λ¦¬κ³  정상적인 톡신이 λ˜λŠ” 경우 μ„œμ„œνžˆ ν•˜λ‚˜μ”© λŠ˜λ¦°λ‹€

    • λ§Œμ•½ Network 경합이 λ°œμƒν•΄ packet drop이 생기면 μž‘μ•„μ§„ window size둜 인해 data 톡신 속도가 느렀져 νšŒμ„ μ„ μ œλŒ€λ‘œ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λŠ” 상황이 λ°œμƒν•  수 μžˆλ‹€

      • 이 경우 경합을 ν”Όν•˜κΈ° μœ„ν•΄

        1. νšŒμ„  속도λ₯Ό μ¦κ°€μ‹œν‚€κ±°λ‚˜

        2. 경합을 μž„μ‹œλ‘œ ν”Όν•˜κ²Œ ν•  수 μžˆλŠ” bufferκ°€ 큰 network μž₯λΉ„λ₯΄γ„Ή μ‚¬μš©ν•˜κ±°λ‚˜

        3. TCP μ΅œμ ν™” solution을 μ‚¬μš©ν•΄ 이런 λ¬Έμ œλ“€μ„ ν•΄κ²°ν•  수 μžˆλ‹€

2-3. 3-Way Handshake

  • TCPμ—μ„œλŠ” μœ μ‹€μ—†λŠ” μ•ˆμ „ν•œ 톡신을 μœ„ν•΄ 톡신 μ‹œμž‘ μ „ 사전 μ—°κ²°μž‘μ—…μ„ μ§„ν–‰ν•œλ‹€

    • λ§Œμ•½ λͺ©μ μ§€κ°€ dataλ₯Ό 받을 μ€€λΉ„κ°€ μ•ˆ 된 μƒν™©μ—μ„œ dataλ₯Ό 일방적으둜 μ „μ†‘ν•˜λ©΄ λͺ©μ μ§€μ—μ„œλŠ” dataλ₯Ό μ •μƒμ μœΌλ‘œ μ²˜λ¦¬ν•  수 μ—†μ–΄ dataκ°€ 버렀진닀

    • 이런 상황을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ TCP protocol은 dataλ₯Ό μ•ˆμ „ν•˜κ²Œ 보내고 받을 수 μžˆλŠ”μ§€ 미리 ν™•μΈν•˜λŠ” μž‘μ—…μ„ κ±°μΉ˜λŠ” 것이닀!

  • Packet Networkμ—μ„œλŠ” λ™μ‹œμ— λ§Žμ€ μƒλŒ€λ°©κ³Ό ν†΅μ‹ ν•˜λ―€λ‘œ μ •ν™•ν•œ 톡신을 μœ„ν•΄ 톡신 μ „ 톡신에 ν•„μš”ν•œ resourceλ₯Ό 미리 ν™•λ³΄ν•˜λŠ” μž‘μ—…μ΄ μ€‘μš”ν•˜λ‹€

    • TCPμ—μ„œλŠ” 3번의 packet을 μ£Όκ³ λ°›μœΌλ©΄μ„œ 톡신을 μ„œλ‘œ μ€€λΉ„ν•˜λ―€λ‘œ 3-Way Handshake라고 λΆ€λ₯Έλ‹€

  • TCPμ—μ„œλŠ” 이런 3-Way Handshake 진행 상황에 따라 state 정보λ₯Ό λΆ€λ₯΄λŠ” 이름이 λ‹€λ₯΄λ‹€

    • Serverμ—μ„œλŠ” serviceλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ client의 접속을 받아듀일 수 μžˆλŠ” LISTEN state둜 λŒ€κΈ°ν•œλ‹€

    • Clientμ—μ„œ 톡신을 μ‹œλ„ν•  λ•Œ Syn packet을 λ³΄λ‚΄λŠ”λ° clientμ—μ„œλŠ” 이 μƒνƒœλ₯Ό SYN-SENT state 라고 λΆ€λ₯Έλ‹€

    • Client의 Syn 을 받은 serverλŠ” SYN-RECEIVED state둜 λ³€κ²½λ˜κ³ , Syn, Ack둜 μ‘λ‹΅ν•œλ‹€

    • 응닡을 받은 clientλŠ” ESTABLISHED state둜 λ³€κ²½ν•˜κ³  그에 λŒ€ν•œ 응닡을 server에 보낸닀

    • Serverμ—μ„œλ„ client의 Ack 응닡을 λ°›κ³  ESTABLISHED state둜 λ³€κ²½λœλ‹€

      • ESTABLISHED stateλŠ” server와 client κ°„μ˜ 연결이 μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€!

  • 3-Way Handshake 과정이 μƒκΈ°λ‹€λ³΄λ‹ˆ μ–΄λ–€ packet이 μƒˆλ‘œμš΄ μ—°κ²° μ‹œλ„μ΄κ³  기쑴에 λŒ€ν•œ 응닡인지 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ header에 FlagλΌλŠ” 값을 λ„£μ–΄ ν†΅μ‹ ν•œλ‹€

    • TCP Flags

      • SYN

        • μ—°κ²° μ‹œμž‘ μš©λ„λ‘œ μ‚¬μš©ν•œλ‹€

        • 연결이 μ‹œμž‘λ  λ•Œ SYN Flag에 1둜 ν‘œμ‹œν•΄ 보낸닀

      • ACK

        • ACK λ²ˆν˜Έκ°€ μœ νš¨ν•  경우 1둜 ν‘œμ‹œν•΄ 보낸닀

        • 초기 SYN이 μ•„λ‹Œ λͺ¨λ“  packet은 κΈ°μ‘΄ message에 λŒ€ν•œ μ‘λ‹΅μ΄λ―€λ‘œ ACK flagκ°€ 1둜 ν‘œκΈ°λœλ‹€

      • FIN

        • μ—°κ²° μ’…λ£Œ μ‹œ 1둜 ν‘œμ‹œλœλ‹€

        • Data 전솑을 마친 ν›„ μ •μƒμ μœΌλ‘œ μ–‘λ°©ν–₯ μ’…λ£Œ μ‹œ μ‚¬μš©λœλ‹€

      • RST

        • μ—°κ²° μ’…λ£Œμ‹œ 1둜 ν‘œμ‹œλœλ‹€

        • μ—°κ²° κ°•μ œ μ’…λ£Œλ₯Ό μœ„ν•΄ 연결을 일방적으둜 λŠμ„ λ•Œ μ‚¬μš©λœλ‹€

      • URG

        • κΈ΄κΈ‰ data인 경우 1둜 ν‘œμ‹œν•΄ 보낸닀

      • PSH

        • ServerμΈ‘μ—μ„œ 전솑할 dataκ°€ μ—†κ±°λ‚˜ dataλ₯Ό buffering 없이 μ‘μš© ν”„λ‘œκ·Έλž¨μœΌλ‘œ μ¦‰μ‹œ 전달할 것을 μ§€μ‹œν•  λ•Œ μ‚¬μš©λœλ‹€

3. UDP

  • TCP와 달리 UDPλŠ” Layer 4 protocol이 κ°€μ Έμ•Ό ν•  νŠΉμ§•μ΄ 거의 μ—†λ‹€

    • 4κ³„μΈ΅μ—μ„œλŠ” μ‹ λ’°μ„± μžˆλŠ” 톡신을 μœ„ν•΄ μ•„λž˜μ™€ 같은 μž‘μ—…μ„ μˆ˜ν–‰ν–ˆλ‹€

      • 연결을 미리 확립 (3-Way Handshake)

      • Dataλ₯Ό 잘 λΆ„ν• ν•˜κ³  μ‘°λ¦½ν•˜κΈ° μœ„ν•΄ packet 번호λ₯Ό λΆ€μ—¬ν•˜κ³  μˆ˜μ‹ λœ data에 λŒ€ν•΄ 응닡

      • Dataλ₯Ό νŠΉμ • λ‹¨μœ„(Window Size)둜 보내고 memory에 μœ μ§€ν•˜λ‹€κ°€ ACK Numberλ₯Ό 받은 ν›„ 톡신이 잘 된 상황을 νŒŒμ•…ν•˜κ³ λ‚˜μ„œμ•Ό memoryμ—μ„œ 이 data듀을 제거

      • λ§Œμ•½ 쀑간에 μœ μ‹€μ΄ 있으면 Sequence Number와 ACK Numberλ₯Ό 비ꡐ해가며 이λ₯Ό νŒŒμ•…ν•˜κ³ , memory에 μœ μ§€ν•΄λ†“μ€ dataλ₯Ό μ΄μš©ν•΄ μž¬μ „μ†‘

        • 이 κΈ°λŠ₯을 μ΄μš©ν•΄ data μœ μ‹€μ΄ λ°œμƒν•˜κ±°λ‚˜ μˆœμ„œκ°€ λ°”λ€Œλ”λΌλ„ λ°”λ‘œ μž‘μ„ 수 있음

    • UDPμ—λŠ” μœ„μ˜ TCP와 같은 κΈ°λŠ₯이 μ „ν˜€ μ—†λ‹€

  • UDP headerλŠ” TCP와 λΉ„κ΅ν•˜λ©΄ λ‚΄μš©μ΄ 거의 μ—†λ‹€

    • UDPμ—λŠ” 4κ³„μΈ΅μ˜ νŠΉμ§•μΈ μ‹ λ’° 톡신을 μœ„ν•œ λ‚΄μš© (Sequence Number,ACK Number, Flag, Window Size) 이 μ—†λ‹€

  • Data 톡신은 data μ „μ†‘μ˜ 신뒰성이 핡심이닀

    • applicationμ—μ„œ κ±±μ •ν•˜μ§€ μ•Šκ³  dataλ₯Ό λ§Œλ“€κ³  μ‚¬μš©ν•˜λŠ” 것이 data ν†΅μ‹ μ˜ λͺ©μ μ΄μ§€λ§Œ,

    • UDPλŠ” data 전솑을 보μž₯ν•˜μ§€ μ•ŠλŠ” protocol μ΄λ―€λ‘œ μ œν•œλœ μš©λ„λ‘œλ§Œ μ‚¬μš©λœλ‹€

  • UDPλŠ” μŒμ„± dataλ‚˜ μ‹€μ‹œκ°„ streamnigκ³Ό 같이 μ‹œκ°„μ— λ―Όκ°ν•œ protocolμ΄λ‚˜ application을 μ‚¬μš©ν•˜λŠ” κ²½μš°λ‚˜ 사내 λ°©μ†‘μ΄λ‚˜ 증ꢌ μ‹œμ„Έ 데이터 전솑에 μ‚¬μš©λ˜λŠ” multicast 처럼 단방ν–₯으둜 λ‹€μˆ˜μ˜ 단말과 톡신에 응닡을 λ°›κΈ° μ–΄λ €μš΄ ν™˜κ²½μ—μ„œ 주둜 μ‚¬μš©λœλ‹€

    • Dataλ₯Ό μ „μ†‘ν•˜λŠ”λ° 신뒰성보닀 일뢀 dataκ°€ μœ μ‹€λ˜λ”λΌλ„ μ‹œκ°„μ— λ§žμΆ”μ–΄ 계속 μ „μ†‘ν•˜λŠ” 것이 μ€‘μš”ν•œ ν™”μƒνšŒμ˜ μ‹œμŠ€ν…œκ³Ό 같은 μ„œλΉ„μŠ€μ˜ 경우 UDPλ₯Ό μ‚¬μš©ν•œλ‹€

      • UDPλŠ” 쀑간에 dataκ°€ 일뢀 μœ μ‹€λ˜λ”λΌλ„ μœ μ‹€λœ μƒνƒœλ‘œ dataλ₯Ό μ²˜λ¦¬ν•œλ‹€!

  • UDPλŠ” TCP와 달리 톡신 μ‹œμž‘ μ „ 3-Way Handshake와 같이 사전에 연결을 ν™•λ¦½ν•˜λŠ” μ ˆμ°¨κ°€ μ—†λ‹€

    • κ·Έ λŒ€μ‹  UDPμ—μ„œ 첫 dataλŠ” resource 확보λ₯Ό μœ„ν•΄ Interruptλ₯Ό κ±°λŠ” μš©λ„λ‘œ μ‚¬μš©λ˜κ³  μœ μ‹€λœλ‹€

      • κ·Έλž˜μ„œ UDP protocol을 μ‚¬μš©ν•˜λŠ” application이 λŒ€λΆ€λΆ„ 이런 상황을 μΈμ§€ν•˜κ³  λ™μž‘ν•˜κ±°λ‚˜,

      • μ—°κ²° 확립은 TCP protocol을 μ‚¬μš©ν•˜κ³ , application 끼리 λͺ¨λ“  μ€€λΉ„λ₯Ό 마친 ν›„ μ‹€μ œ data만 UDPλ₯Ό μ΄μš©ν•˜λŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„μ΄λ‹€

  • ex)

    • Netflixλ‚˜ Youtube와 같이 μ‹œκ°„μ— λ―Όκ°ν•˜μ§€ μ•Šμ€ 단일 μ‹œμ²­μžλ₯Ό μœ„ν•œ 연결은 TCPλ₯Ό μ‚¬μš©ν•œλ‹€

    • μ‹€μ‹œκ°„ ν™”μƒνšŒμ˜ μ†”λ£¨μ…˜μ€ data 전솑이 μ–‘λ°©ν–₯으둜 μΌμ–΄λ‚˜κ³  μ‹œκ°„μ— 맀우 λ―Όκ°ν•˜κ²Œ λ°˜μ‘ν•˜λ―€λ‘œ TCP 이용 ν™˜κ²½μ—μ„œ data μœ μ‹€μ΄ λ°œμƒν•˜λ©΄ μ‚¬μš©μžλŠ” network ν’ˆμ§ˆμ΄ λ‚˜μ˜λ‹€κ³  생각할 수 μžˆμœΌλ―€λ‘œ UDPλ₯Ό μ‚¬μš©ν•œλ‹€

TCP vs UDP

+

Communication channels in telecommunications

  • 단방ν–₯ 톡신(simplex communication)

    • 단방ν–₯ 전솑

    • ex) TV, Radio

  • λ°˜μ΄μ€‘ 톡신(half-duplex communication)

    • μ–‘λ°©ν–₯으둜 전솑이 κ°€λŠ₯ν•˜μ§€λ§Œ, λ™μ‹œμ— μ–‘μͺ½μ—μ„œλŠ” 전솑할 수 μ—†λ‹€

    • ex) 무전기

  • 전이쀑 톡신(full-duplex communication)

    • λ™μ‹œμ— μ–‘λ°©ν–₯ 전솑이 κ°€λŠ₯ν•˜λ‹€

    • ex) μ „ν™”κΈ°

Last updated