TCP / UDP

TCP (Transmission Control Protocol)

데이터가 λ°˜λ“œμ‹œ μ „λ‹¬λ˜λŠ” 것을 보μž₯ν•˜λŠ” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

  • μ—°κ²°μ§€ν–₯ (Connection-oriented) 으둜 톡신을 ν•˜κΈ° μ „ 연결이 이루어져야 ν•©λ‹ˆλ‹€.

  • 높은 μ‹ λ’°μ„± (Reliability) κ³Ό μˆœμ„œ (In-order delivery) λ₯Ό 보μž₯ν•©λ‹ˆλ‹€.

    • 흐름 μ œμ–΄(Flow control) λ₯Ό 톡해 μ†‘μ‹ μžμ˜ 데이터 양을 μ‘°μ ˆν•©λ‹ˆλ‹€.

    • 혼작 μ œμ–΄(Congestion control) λ₯Ό 톡해 λ„€νŠΈμ›Œν¬ 상황을 κ°μ§€ν•˜κ³  μ†‘μ‹ μžμ˜ 데이터 양을 μ‘°μ ˆν•©λ‹ˆλ‹€.

    • μ—λŸ¬ 감지(Error detection) λ₯Ό 톡해 잘λͺ» μ „μ†‘λ˜μ—ˆμ„ 경우 μž¬μ „μ†‘ν•©λ‹ˆλ‹€.

  • μ „ 이쀑(Full duplex) 방식 으둜 두 호슀트 λͺ¨λ‘ μ†‘μ‹ μžμ™€ μˆ˜μ‹ μžκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λ°”μ΄νŠΈ 슀트림(Byte stream) 을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό 연속적인 λ°”μ΄νŠΈλ‘œ κ°„μ£Όν•˜κ³ , μ„Έκ·Έλ¨ΌνŠΈ(Segment) λΌλŠ” λ‹¨μœ„μ˜ νŒ¨ν‚·μœΌλ‘œ μͺΌκ°œμ„œ λ³΄λƒ…λ‹ˆλ‹€.

  • HTTP, FTP, SMTP, TELNET λ“±μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

UDP (User Datagram Protocol)

TCP와 달리 λ°μ΄ν„°μ˜ 신뒰성을 보μž₯ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

  • λΉ„μ—°κ²°ν˜• (Connection-less) 으둜 μ—°κ²° μ„€μ •, ν•΄μ œ 과정이 μ—†μŠ΅λ‹ˆλ‹€.

  • 신뒰성이 μ—†κ³  μ „μ†‘λ˜λŠ” λ°μ΄ν„°μ˜ μˆœμ„œλ₯Ό 보μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

    • 흐름 μ œμ–΄, 혼작 μ œμ–΄κ°€ μ—†μŠ΅λ‹ˆλ‹€.

    • μ—λŸ¬ κ°μ§€λŠ” ν—€λ”μ˜ 체크섬 (Checksum) 에 μ˜μ‘΄ν•©λ‹ˆλ‹€.

  • νŒ¨ν‚·μ˜ λ‹¨μœ„κ°€ λ°μ΄ν„°κ·Έλž¨ (Datagram) 으둜 경계가 λΆ„λͺ…ν•˜μ—¬ μˆ˜μ‹ μžλŠ” μ†‘μ‹ μžκ°€ 보낸 κ·ΈλŒ€λ‘œμ˜ 크기둜 λ°›μŠ΅λ‹ˆλ‹€.

  • μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” μœ λ‹ˆμΊμŠ€νŠΈ (1:1), λΈŒλ‘œλ“œμΊμŠ€νŠΈ (1:N), λ©€ν‹°μΊμŠ€νŠΈ (1:M)κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. (N은 전체, M은 일뢀)

  • TCP에 λΉ„ν•΄μ„œ ν•˜λŠ” μž‘μ—…λ“€μ΄ ꡉμž₯히 적기 λ•Œλ¬Έμ— 속도가 λΉ ν‘λ‹ˆλ‹€.

  • DNS, DHCP, λΉ„λ””μ˜€/μ˜€λ””μ˜€ 슀트리밍 등에 μ‚¬μš©λ©λ‹ˆλ‹€.

3 Way-Handshake & 4 Way-Handshake

3 Way-Handshake

  1. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— 접속을 μš”μ²­ν•˜λŠ” SYN 을 λ³΄λƒ…λ‹ˆλ‹€. μ΄λ•Œ ν΄λΌμ΄μ–ΈνŠΈλŠ” SYN 을 보내고 SYN/ACK 응닡을 κΈ°λ‹€λ¦¬λŠ” SYN_SENT μƒνƒœκ°€ λ©λ‹ˆλ‹€.

  2. μ„œλ²„λŠ” SYN μš”μ²­μ„ λ°›κ³  ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μš”μ²­μ„ μˆ˜λ½ν•œλ‹€λŠ” ACK 와 SYN 을 λ°œμ†‘ν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€μ‹œ ACK 으둜 μ‘λ‹΅ν•˜κΈ°λ₯Ό κΈ°λ‹€λ¦½λ‹ˆλ‹€. μ΄λ•Œ μ„œλ²„λŠ” SYN_RECEIVED μƒνƒœκ°€ λ©λ‹ˆλ‹€.

  3. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—κ²Œ ACK 을 보내고 μ΄ν›„λ‘œλΆ€ν„°λŠ” 연결이 이루어지고 데이터λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. μ΄λ•Œμ˜ μƒνƒœκ°€ ESTABLISHED μž…λ‹ˆλ‹€.

4 Way-Handshake

  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ 연결을 μ’…λ£Œν•˜κ² λ‹€λŠ” FIN 을 μ „μ†‘ν•©λ‹ˆλ‹€.

  2. μ„œλ²„λŠ” 일단 ν™•μΈν–ˆλ‹€λŠ” ACK 을 보내고, μžμ‹ μ˜ 톡신이 λλ‚ λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ”λ° 이 μƒνƒœκ°€ TIME_WAIT μž…λ‹ˆλ‹€.

  3. μ„œλ²„κ°€ 톡신이 λλ‚¬μœΌλ©΄ 연결이 μ’…λ£Œλ˜μ—ˆλ‹€κ³  ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ FIN 을 μ „μ†‘ν•©λ‹ˆλ‹€.

  4. ν΄λΌμ΄μ–ΈνŠΈλŠ” ν™•μΈν–ˆλ‹€λŠ” ACK 을 μ „μ†‘ν•©λ‹ˆλ‹€.

Last updated

Was this helpful?