TCP vs UDP

김시환·2023년 4월 5일
0

네트워크

목록 보기
1/5

TCP

TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 논리적인 연결을 설정하여 신뢰성을 보장하는 연결형 서비스 이다.

3-way handshake

데이터를 전송하기 전에 신뢰성을 위해 상대방 컴퓨터와 논리적인 연결을 수립하는 과정

상대방을 어떻게 식별할 수가 있나
=> TCP Header에 있는 컨트롤 비트 중 SYNACK을 사용
=> client와 server 모두 상대방이 보낸 SYN값에 1을 더하여 ACK에 넣어서 보낸다
=> 이를 통해 내가 연결 요청을 보낸 상대방으로 부터 온 응답인지 확인할 수 있다!

4-way handshake

client가 서버로 부터 FIN을 받았음에도 바로 CLOSED가 되지 않는 이유
=> FIN을 받자마자 CLOSED 된다면...
=> Server에서 FIN을 보내기 전에 보냈던 데이터가 네트워크 지연 같은 문제로 FIN요청보다 늦게 도착하는 경우 해당 데이터는 유실된다!
=> 이를 방지하기 위해 client는 FIN요청을 받더라도 일정시간 대기 후 CLOSED

패킷이 순서대로 서버에 도착하지 않아도 순서 보장을 할 수가 있는가?
=> TCP Header의 Sequence number를 통해서 수신 측에서 패킷을 재조합하는 과정을 거친다!!

위 과정들을 통해서 TCP는 신뢰성 있는 통신을 제공한다.
TCP는 데이터를 보내고 그에 따른 응답 패킷(sequence number가 1 증가된)을 받아야 제대로 전송되었다고 파악
-> 그렇지 않다면 패킷 재전송!! (네트워크 성능에 영향 미칠 수 있다)

UDP

UDP는 전송계층의 비연결형 프로토콜이다.
데이터를 주고받기 전에 논리적 연결하는 과정을 거치지 않는다.
이때문에 TCP에 비해 빠르지만, 전달의 신뢰성이 떨어진다.
TCP와 달리 패킷의 순서가 보장되지 않고, 유실되더라도 재전송 요청을 하지 않는다.

profile
1년차 개발자입니다.

0개의 댓글

관련 채용 정보