TCP / UDP

Jan 30, 2024
TCP / UDP

1. 통신의 종류

1.1 TCP (Transfer Control Protocol) 3hand [신뢰성 있는 통신]

notion image
TCP는 위의 그림처럼 응답이 와야함. (3번 왔다갔다 한다.) 1. 통신을 보냄 2. 통신을 받았다는 응답을 함 3. 응답을 잘 받았다는 응답에 응답을 함 > 데이터 전송 중에 발생하는 손실이나 오류를 검출하고 복구할 수 있는 기능을 제공 > 응답을 꼭 받아야하기 때문에 UDP 보다 속도가 느리다 > 응답을 잘 받았다는 응답(확인)에 응답을 함 : OS에서 함
💡
TCP (Transfer Control Protocol) = 신뢰성 있는 통신 = 3-way handshake [ 신뢰성 있는 통신이라는 말은 ] * 데이터의 누락이 없어야 함 * 서버에서 보낸 순서대로 클라이언트 측에 도착한다는 의미
💡
* TCP는 OS에서 자동으로 이루어짐 * TCP를 이용하여 통신하기 위해선 클라이언트와 서버 프로그램은 서로 간의 연결을 만들어야 함
 

1.2 UDP - [신뢰성 없는 통신]

notion image
UDP(User Datagram Protocol)는 서버-클라이언트 간의 연결을 수립하지 않는 비연결형 프로토콜 데이터를 보내는 쪽에서 일방적으로 데이터그램을 전송하고, 수신 측에서는 데이터를 받는 쪽에서 처리하는 방식으로 동작. 이러한 특성으로 인해 UDP는 실시간 스트리밍, DNS 조회, 시간 서버 등에서 주로 사용 +) 캐릭터의 이동 같은건 UDP
이런건 UDP : 신뢰성 없는 통신 1. 데이터 전송 중에 유실된 데이터를 확인할 수 없음 2. 데이터를 보낼 때 오류 검사와 재전송 기능이 없음 즉, 배달하는 중간에 데이터가 분실되거나, 순서가 바뀔 수도 있음!
💡
대신, 연결 절차가 필요 없기 때문에 빠르고, 효율적인 통신이 가능하다.
 

1.3 TCP와 UDP 가 쓰이는 경우

[ TCP의 경우 ]
주로 신뢰성 있게 데이터를 전송해야 하는 경우에 많이 쓰인다.
ex 1) 비밀번호 (신뢰성 있게 가야만 함) : 비번이 1,2,3,4 인데 1,2만 가버리면... 컴퓨터는 추측을 못함 ex 2) 야, 너 (잘림) 생겼다. (중요한 말이 잘려서 무슨 말인지 모르는 경우) : 인간이 받는 경우에도 신뢰성 있게 보내야 할 때, TCP를 사용한다.
💡
동영상이나 전화 통화 같은게 아니면 전부 다 TCP를 사용한다! TCP를 사용해야만 데이터의 순서가 보장되기 때문! 만약, FTP로 파일을 인터넷에서 다운로드 받을 때, 순서 보장이 되지 않아서 파일 안의 데이터가 뒤죽박죽 된다면 …. 큰일이니까
 

[ UDP의 경우 ]
주로 실시간성이 중요한 데이터 전송에 많이 사용된다. 데이터의 신뢰성을 보장하지 않으며, 데이터의 손실이나 유실이 발생할 수 있지만, 실시간성이 우선시되는 상황에서는 이러한 손실을 감수하고 더 빠른 전송을 선택한다. 데이터의 신뢰성보다 빠른 속도와 용량이 큰 걸 선택하는 경우에 사용!
ex 1) 동영상 스트리밍 : 사진을 끝없이 계---속 쏘는 것. (초당 약 24장 정도 쏨) UDP 24장 중 5개가 유실되어도 내용을 추측을 할 수 있으니 상관 없다. ex 2) 전화 통화 : '너 (잘림) 생겼다.' 라고 해도 다시 물어보면 되니까 UDP로 해도 괜찮다.
💡
즉, UDP는 인간한테 정보를 보낼 때만 가능하다. 컴퓨터는 불가능! 인간은 중간 내용이 잘려도 추측할 수 있기 때문에 사용!
 

 
[ 스트리밍 서비스 프록시 (Proxy) ] 리퀘스트(Request)를 한 번 보내고, 리스폰스(Response)를 1시간 동안 유지하는 것... (리퀘스트 선을 끊고 리스폰스 선을 유지...) 추후 좀 더 자세히 알아볼 것!
💡
GRPC… 영상을 스트리밍하는 프로토콜
Share article

codingb