TCP, UDP란 무엇이고 특징이 무엇일까?

 

 

우리가 웹에서 하는 모든활동들은 OSI 7계층중 4계층인 전송계층에 TCP, UDP 프로토콜위에서 작동합니다

이는 곧 송신자와 수신자를 연결하고 IP로 보내지는 패킷들의 오류제어를 담당하는것으로 이것을 간편하게 말해서 데이터의 전달을 담당하는것이 전송계층이며 TCP 아니면 UDP로 데이터 전달을 하게됩니다

 

궁극적으로 두가지 전송 프로토콜에 가장큰 차이점은 TCP는 3 Hand Shake를 기반으로 전달되는 데이터가 중요한 데이터일때 송신자와 수신자의 신뢰성있는 전달을 하고싶을때 사용합니다 이는 곧 웹에서 메일이나, 파일같은 데이터의 중요도가 높은 곳에서는 TCP를 사용하는것이 좋습니다

 

그와 반대로 UDP는 데이터의 신뢰성보다는 빠른응답을 통해 데이터의 신속성을 높힐수있는 프로토콜로써

실시간 스트리밍이나, 게임같이 속도가 중요한 곳에서 쓰일수있습니다

 

 

 

 

그렇다면 TCP는 정확히 어떻게 동작하기떄문에 신뢰성을 보장할수있는 것일까 그것에대해서 알아보겠습니다

TCP는 연결지향적 프로토콜로 클라이언트와 서버가 서로 연결된상태에서 데이터를 주고받는 프로토콜을 의미하는데

위에서 언급한 3Hand Shake를 통해 연결요청을 한뒤 서버와 연결이되면 데이터들이 통신선로를 통해서 순차적으로 전달되는데 간단하게 데이터를 보낸다 -> 수신확인 -> 받았다고 서버에 알려줌 이런식으로 확인절차가 이루어지는데

 

컴퓨터공학 네트워크에서 배울때는 좀더 자세히 Timeout 등 여러가지 절차를 거치게되지만 여기서는 자세한 내용은 다루지않고 어떤식으로 오고가는지만 알아보겠다

 

이것처럼 TCP의 특징으로는 연결형 프로토콜이기떄문에 연결이 되야 통신이 가능하며 통신서로를 따라 순차적으로 데이터들이 가기떄문에 전송의 순서를 보장하게된다

이는곳 데이터가 중간에 누락되면 안되는 중요한 데이터전달에 사용된다는것을 알수있다

 

하지만 이에따라 단점도 존재하는데 연결지향 프로토콜이기때문에 연결이 ' 되어야만 ' 전송할수있다

연결이 되지않으면 전송할수 없으며 1:1 통신만 가능하며, 기본적으로 UDP보다는 전송속도가 상대적으로 느리다는 특징을 가지고있다

 

 

TCP 프로토콜에 3Hand Shake

 

 

그다음은 UDP는 TCP와는 다르게 비연결 지향적 프로토콜로써 데이터를 주고받을때 따로 연결하는 과정을 거치지않고 Sender가 데이터가 수신이 되던말던 일방적으로 보내는 방식을 의미한다

연결과정이 따로없기떄문에 기본적으로 TCP보다는 빠르지만 데이터만 계속해서 보내기때문에 신뢰성은 TCP보다는 떨어진다는 특징을 가지고있다

 

여기서 UDP는 데이터를 순차적으로 보내도 서로 다른통신선로를 통해서 전달될수도 있는데

서로 다른 통신선로는 각각 다른 속도를 가지고있기떄문에 처음보낸게 2~3번째에 도착할수도 있으며 잘못된 선로로 전송되어 유실될수도있다

 

만약 TCP에서 데이터의 유실이 일어날경우 수신확인 절차를 거쳐 Timeout되어 다시 재전송하지만 UDP는 그런거없이 유실될경우 또다시 재전송하지않는데

 

복잡한 연결절차가 없기떄문에 오버헤드가 적어 네트워크 성능에 부하가 적은편이다

 

한마디로 장점은 빠른 데이터전송이지만 단점은 데이터의 신뢰성이 없다는것으로 확인할수있다

 

 

위 사진처럼 일방적으로 데이터를 보낸다