코딩하는 바나나
TCP 와UDP 본문
TCP, UDP 모두 데이터를 보내기 위해 사용 하는 전송 프로토콜이다. 보통 IP와 함께 사용된다. IP패킷에 TCP세그먼트(출발지 PORT, 목적지 PORT, 전송제어, 순서, ..)나 UDP를 담아서 전송한다.
TCP
TCP는 연결지향적이다. 이 말의 의미는 데이터를 보내기전에 일단 연결을 먼저 한다는 뜻이다.
연결은 위의 그림과 같은 방식으로 하게된다. 먼저 클라이언트가 연결요청(syn)을 보내면 서버는 연결이 되었다는 응답(ack)을 준다 그리고 이와 동시에 서버도 클라이언트에 연결요청(syn)을 보낸다. 클라이언트는 다시 서버에게 연결이 되었다는 응답(ack)을 보낸다. 이런 방식을 TCP 3 way handshake 라고한다.
또한 TCP는 데이터 전달을 보증하고 순서 또한 보장한다는 특징이 있다. 보통 패킷을 여러개로 나눠서 보내는 경우가 자주 발생 하는데 이러한 경우 어느 한 패킷이 손실 되었을 때 또는 그 패킷의 순서가 다르게 왔을 때 TCP는 패킷 재전송을 요청 하기 때문에 확실하게 데이터 전송을 보장 받을 수 있다.
이런 TCP의 특징 덕분에 TCP는 신뢰도가 높다는 장점이 있다. 그러나 데이터 전송을 확실히 하기위해 추가적인 작업이 필요하기 때문에 느리고 성능이 떨어진다 그렇기 때문에 속도나 연속성 보다는 신뢰성이 중요한 작업에 많이 사용된다.
UDP
UDP는 TCP에 비해 거의 기능이 없다. 3 way hands shaking 과 같이 연결을 하지도 않고 데이터 전달을 보증하지도 않으며 순서 또한 보장되지 않는다. 그러나 UDP는 단순하고 빠르다는 장점이 있다. 따라서 신뢰성 보다는 속도가 중요한 작업에 이용이 된다(실시간 스트리밍 서비스).
'Web' 카테고리의 다른 글
[BackEnd] JWT (0) | 2022.04.13 |
---|---|
[BackEnd] Spring MVC (1) | 2022.03.29 |
[BackEnd] Spring JDBC (0) | 2022.03.29 |
[BackEnd] JDBC (0) | 2022.03.27 |
[BackEnd] DB, DBMS (0) | 2022.03.27 |