ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP/IP 및 TCP, UDP
    네트워크 2020. 9. 20. 19:23
    반응형

    전공이 컴퓨터 공학이 아니다 보니 네트워크 관련 지식은 정처기 공부를 통해 살짝 얻은것 빼곤 전무하다..

    그래서 이번에 조사할 기회도 생겼고 면접때도 많이 물어본다고 하여 TCP/IP란 무엇이고 여기서 TCP, UDP는 또 무엇인지에 대해 조사해보았다.

    잘못된 점이나 부족한 점은 언제든지 지적해주시면 감사하겠습니다.

     


     

    TCP/IP

     

    TCP/IP는 Transmisson Control Protocol/Internet Protocol의 약자로 컴퓨터 간 데이터를 주고 받을 때 데이터를 작게 나누어서 전송을 하고 이를 수신하였을 때 다시 조립하여 원래의 데이터로 만드는 등, 데이터 전달을 관리하는 인터넷 표준 프로토콜(규약) 이라고 합니다.

    여기서 TCP는 데이터의 정확성 확인을 담당하고, IP는 패킷(작게 나누어진 데이터)을 목적지까지 전송하는 일을 담당합니다.

     

     

    출처 : https://yangbox.tistory.com/10

     

    위와 같이 OSI (Open System Interconnection) 7계층을 웹 서비스에 맞게 간소화시킨 모델이 TCP/IP 4계층 입니다. 그 중 전송계층은 IP에 의해 전달되는 패킷의 오류 검사 및 데이터가 잘못 되었을 경우 재전송을 요구하는 등의 제어를 담당하는 계층입니다. 여기서 사용이 되는 프로토콜이 TCP와 UDP 입니다.

     

     

     

    TCP (Transmission Control Protocol)

     

    출처 : https://madplay.github.io/post/network-tcp-udp-tcpip

     

    먼저 TCP에 대해 알아봅시다. 위 그림이 TCP를 사용한 송신과정 입니다.

    ACK(Acknowledgement)라는 신호를 통해 패킷이 잘 전송되었는지 확인을 하며 신호가 시간 내에 도착하지 않으면 다시 재전송을 요청합니다. 그러다 보니 신뢰성을 보장해주는 특징을 가지고 있습니다.

     

    그리고 TCP는 연결지향형 프로토콜로 연결이 되어야자 통신이 가능합니다.

    클라이언트와 통신을 하기 전에 3-way handshake를 통해 연결을 맺고, 연결을 종료할 때는 4-way handshake를 통해 연결을 끊습니다.

     

    또한, 흐름제어(수신자 버퍼 오버플로우 방지)와 혼잡 제어(네트워크 내 패킷 수가 과도하게 증가하는 현상 방지)를 통해 데이터의 순서를 보장합니다.

     

    다만 속도가 UDP에 비해 느려, 주로 연속성보다는 신뢰성이 보장되어야 하는 파일 전송 등과 같은 경우에 사용됩니다.

     

     

     

    UDP (User Datagram Protocol)

     

    출처 : https://madplay.github.io/post/network-tcp-udp-tcpip

     

    다음으로 UDP에 대해 알아봅시다.

    위 그림에서 알 수 있듯이 UDP는 TCP와 달리 보낸다는 신호나 받는다는 신호 없이 보내는 쪽에서 일방적으로 데이터를 전달하는 프로토콜 입니다. 그러다 보니 패킷 손실이 발생할 수 있고 TCP에 비해서 신뢰성과 안전성이 보장되지 않습니다. 

     

    그리고 UDP는 비연결형 프로토콜 입니다.

    즉, 연결이 되어 있지 않아도 통신이 가능하며 혼잡제어를 하지 않기에 TCP보다 속도가 빠릅니다.

    그렇기에 UDP는 DNS Server, 실시간 스트리밍 등에 사용이 됩니다.

     

     

     

    정리하기

     

    마지막으로 TCP와 UDP의 특징을 정리해보면 이렇습니다.

    TCP (Transmission Control Protocol) UDP (User Datagram Protocol)
    연결형 프로토콜 (연결이 되어야 통신 가능) 비연결형 프로토콜 (연결 없어도 통신 가능)
    데이터의 경계를 구분하지 않음 (Byte-Stream Service) 데이터의 경계를 구분함 (Datagram Service)
    신뢰성 있는 데이터 전송 (데이터 재전송 존재) 신뢰성 없는 데이터 전송 (데이터 재전송 없음)
    일 대 일 (Unicast) 통신   일 대 일, 일 대 다 (Broadcast), 다 대 다 (Multicast) 통신

     

    References

    - https://madplay.github.io/post/network-tcp-udp-tcpip

    - https://swalloow.tistory.com/77

    728x90

    '네트워크' 카테고리의 다른 글

    TCP Flag란?  (0) 2020.10.22
    REST API란?  (0) 2020.10.10
    3-Way / 4-Way Handshake  (0) 2020.10.04
    HTTP Response Status Code (응답 상태 코드)  (0) 2020.10.01
    HTTP Request / Response 메시지 구조  (0) 2020.09.28

    댓글

Designed by Tistory.