ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP & UDP 통신 프로토콜
    Web 2021. 10. 18. 15:49
    반응형

     

    TCP / UDP에 관해서는 사실 그 전부터 들어왔지만, 그 당시에는 보기가 힘들고 무슨 말인지 못 알아들어서 넘어가곤 했었다.

    하지만 최근 다시 읽어보니 이해가 가는 부분이 있어 정리를 하고자 한다.

    더불어 좋은 블로그 글과 영상 등을 참고했다.

     


     Transport Layer ( 전송계층 ) 

    TCP와 UDP는 OSI 표준 모델과 TCP/IP 모델의 전송계층에서 사용 되는 프로토콜이다.

    이러한 TCP와 UDP에 관하여 알아보기 전에 간단하게 Transport Layer에 대해서 알아보자!

    Transport Layer는 End Point 간의 신뢰성 있는 데이터 전송을 담당하는 계층을 말한다.

     

    여기서 신뢰성이란, 데이터를 순차적이고 안정적이게 전달하는 것을 말하고, 전송은 포트번호에 해당하는 프로세스에 데이터를 전달하는 것을 말한다.

     

    전송 계층에서는 쉽게 말해 데이터 전달을 담당하고 있다.

    포트번호를 이용하여 주소를 지정하는 것과 데이터 오류 검사를 위한 체크섬(중복 검사의 한 형태)이 존재한다는 공통점이 있지만, 정확성(TCP)를 추구할지, 신속성(UDP)를 추구할지를 구분해서 나눠 볼 수 있다.

     

    만약 Transport layer가 없다면 어떻게 될까?

    1. 데이터 순차 전송 비원활

    우선 데이터의 순차 전송이 원활하게 이루어지지 않을 것이다.

    송신자는 1, 2, 3 이라고 전송 했는데, 수신자는 2, 1, 3 이라고 다르게 전달 받을 수도 있다.

     

    2. Flow problem (흐름 문제)

    송수신자 간의 데이터 처리 속도 차이로 인해 수신자가 처리할 수 있는 데이터량 초과 할 수 있다.

     

    3. Congestion (혼잡 문제)

    네트워크 데이터 처리 속도의 문제로 네트워크가 혼잡하면 데이터가 제대로 전달되지 않게 될텐데, 그에 따라 데이터의 손실이 발생하게 될것이고, 완전한 데이터가 제대로 전달 되지 않을 수 있다.

     

    이러한 문제를 안게 되는데 이를 해결 하기 위해 나온 것이 바로 TCP이다.

     

    TCP (Transfer Control Protocol)

    만약 데이터를 중요하게 생각하여 확실하게 주고 받고 싶다면 TCP를 사용하게 된다.

    TCP를 사용하게 되면 "보냈습니다", "도착했습니다"라고 서로 확인 메세지를 보내면서 데이터를 주고 받으므로 통신의 신뢰성을 높힐 수 있다.

    웹, 메일, 파일 공유 등 데이터 누락을 원치 않는 경우 TCP를 사용 할 수 있는데, 주로 P2P Soket 통신, 네트워크를 사용한 통신 등에 사용 된다.

     

    TCP의 장점과 단점

    TCP는 연결 지향적 프로토콜이다.

    연결 지향 프로토콜이라는 것은 클라이언트와 서버가 연결 된 상태에서 데이터를 주고 받는 프로토콜을 의미한다.

    먼저 클라이언트가 연결 요청(SYN 데이터 전송)을 하고, 서버가 연결을 수락하면 통신 선로가 고정되게 되고, 모든 데이터는 고정 된 통신 선로를 통해서 "순차적"으로 전달된다.

    그렇기 때문에 데이터를 정확하고, 안정적이게 전달 할 수 있다.

    TCP는 데이터를 주고 받는 호스트 간 신뢰성 있는 데이터 전달과 흐름제어를 하는데, 이를 위해서 확인 작업을 거치게 된다.

    TCP는 패킷을 성공적으로 전송하면 ACK라는 신호를 날리고, 만약 ACK 신호가 제 시간에 도착하지 않으면 Timeout이 발생하여 패킷 손실이 발생한 패킷을 다시 전송해준다.

     

    TCP의 단점이라고 하면 데이터로 보내기 전에 반드시 연결이 형성 되어야 하며, 1:1 통신만 가능하고, 만약 고정 된 통신 선로가 최단선이 아닌 경우 상대적으로 UDP보다 데이터 전송 속도가 느릴 수 있다는 점이다.

     

    TCP 특징 및 정리

    TCP (Transfer Control Protocol)   : 신뢰성 있는 데이터 통신을 가능하게 해주는 프로토콜

    연결의 설정 (3 way-handshake) - 양방향 통신

    전이중(Full-Duplex), 점대점(Point to Point) 서비스

    UDP보다 전송 속도가 느리다.

    연결형(connection-oriented) 서비스로 연결이 성공해야 통신이 가능하다

    Bite Stream Service로서 데이터 경계를 구분하지 않는다.

    순서 유지를 위해 각 바이트마다 번호를 부여하여 데이터의 순차 전송을 보장 할 수 있다.

    신뢰성 있는 데이터를 전송한다. (Sequence Number, Ack Number를 통한 신뢰성을 보장한다)

    Flow Control(흐름 제어) : 수신자 버퍼 오버 플로우 방지

    Congestion Control(혼잡 제어) : 패킷 수가 과도하게 증가하는 현상 방지

    Error Detection(오류 감지) 

     

    더보기

    ** 3 way handShake

    서로의 통신을 위한 포트를 확인하고 연결하기 위해 3번의 요청/응답 후에 연결이 되는 것을 말한다.

    1. Client에서 Server에 연결 요청을 위해 SYN 데이터를 보낸다.

    2. Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경 된다.

    3. 요청을 정상적으로 받았다는 대답 즉, ACK와 함께 Client 쪽도 포트를 열어달라고 하는 SYN을 함께 보낸다.

    4. Client에서는 SYN과 ACK를 받고 ESTABLISHED 상태로 변경하고, 서버에 ACK를 전송한다.

    5. ACK를 받은 서버는 상태가 ESTABLISHED로 변경된다.

     

    총 3번의 통신이 정상적으로 이루어지게 되면 서로의 포트가 ESTABLISHED 되면서 연결이 되는데, 이 과정에서 많은 시간이 소모 되며 UDP방식보다 속도가 느려지는 주요 원인이 되기도 한다.

     

     

     UDP (User Datagram Protocol) 

    전송계층의 비연결 지향적 프로토콜이다.

    비연결 지향적이라는 것은, 데이터를 주고 받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 말한다.

    연결 과정이 없으므로 TCP보다 빠른 전송은 가능하겠지만, 데이터 전달의 신뢰성이 떨어지게 된다.

    즉, 신뢰성은 제쳐두고 빨리 보내고 싶다면 UDP를 사용 할 수 있을 것이다.

    UDP는 데이터를 보내면 그것이 끝이므로 신뢰성은 없지만 확인 응답과 같은 절차를 생략함으로써 통신의 신속성을 높이는 것이다.

    다만, 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있다.

    그러다보면 먼저 보낸 패킷이 느린 선로로 전송 되는 경우 늦게 도착 할 수 있으며 최악의 경우 유실 되는 경우도 있을 수 있다.

    TCP와 달리 UDP의 경우 중간에 패킷이 유실되거나 변조 되어도 재전송을 하지 않는다.

    그러니 UDP의 단점이라고 한다면 데이터 신뢰성이 떨어지고, 의미있는 서버를 구축하기 위해서는 일일이 패킷을 관리해주어야 한다는 것이다.

     

    UCP 특징 및 정리

    비연결형 서비스로 연결  없이 통신이 가능하며 데이터그램 방식을 제공한다.

    데이터 그램 서비스로 데이터 경계를 구분한다.

    정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.

    신뢰성 없는 데이터를 전송하며, 데이터 재전송이나 순서유지를 위한 작업을 하지 않는다.

    패킷관리가 필요하다.

    패킷 오버헤드가 적어 네트워크 부하가 감소된다는 장점이 있고, 상대적으로 TCP보다 전송 속도가 빨라 VolP(Voice over IP), 시간 동기 등과 같이 속도를 필요로 하는 경우 UDP를 사용 하고 있다.

     

     

     

     

     

     

     

    반응형
Designed by Tistory.