원티드 프리온보딩 챌린지 백엔드 코드 사전과제 2번
어제의 포스팅에 이어 원티드 프리온보딩 챌린지 백엔드 코드 사전과제 2번 문항에 대해서 포스팅해보고자 한다.
TCP와 UDP의 차이를 작성해주세요.
차이점은 물론 TCP와 UDP가 무엇인지 조차 모르고 있었다. 이번 기회에 둘의 개념부터 공통점, 차이점까지 한 번 정리해보려한다.
TCP / UDP
TCP와 UDP 모두 전송계층(Transport Layer)에서 사용되는 프로토콜이다.
전송계층이란 EndPoint(ex, 클라이언트와 서버) 간의 신뢰성 있는 데이터 전송을 담당하는 계층을 의미한다.
- 신뢰성 - 데이터를 순차적, 안정적으로 전달하는 것
- 전송 - 포트 번호에 해당하는 프로세스에 데이터를 전달하는 것
TCP와 UDP 모두 포트 번호를 이용하여 주소를 지정하는 것과 보다 신뢰성 있는 데이터 전달을 위하여 Error Detection(오류 감지)를 위한 체크섬이 존재하다는 공통점이 존재하나 정확성을 추구할지, 신속성을 추구할지를 기준으로 구분된다.
TCP(Transmission Control Protocal)
전송계층에서 보다 정확한(신뢰성 있는) 데이터 전송을 위하여 정한 방식이 바로 TCP(Transmission Control Protocal)이다. TCP는 연결 지향적 프로토콜이다. 연결 지향적 프로토콜이란 클라이언트와 서버가 상호 연결된 상태에서 데이터를 주고 받는 프로토콜을 의미한다.
TCP의 특징
Connection 연결(3 wa handShake) - 양방향 통신
데이터의 순차 전송을 보장
Flow Control (흐름 제어)
Congestion Control (혼잡 제어)
Error Detection (오류 감지)
TCP의 단점
- 1 : 1 통신만 가능하다.
- 데이터를 보내기 전 필히 상호 연결이 형성되어야하기에 상대적으로 데이터 전송 속도가 느리다.
- 데이터 전송에 있어 조금의 데이터 유실에도 잘못된 데이터가 송수신된 것으로 판단하여 재송신하기에 상대적으로 데이터 전송 속도가 느려질 수 있다.
TCP의 데이터 전송 방식(3 way handShake)
- 클라이언트가 SYN 송신
- 서버가 ACK 및 SYN 송신
- 클라이언트가 ACK 및 데이터 요청 송신
- 서버가 데이터 송신
SYN
연결 설정 요구. 동기화 시퀸스 번호. 양쪽이 보낸 최초의 패킷에만 이 플래그가 설정되어 있어야 한다.
TCP에서 세션이 성립할 때 가장 먼저 보내는 패킷. 시퀸스 번호를 임의적으로 설정하여 세션을 연결하는 데 사용되며 초기에 시퀸스 번호를 보내게 된다.
TCP는 양방향 통신이기에 서로 연결이 되어 있어야한다. SYN는 일종의 연결 요청 및 통로를 뚫는 것.
본격적인 데이터 교환 이전 클라이언트에서도 SYN 송신을 통해 서버로의 길을 뚫고 서버 역시 그러하는 것.
ACK
응답 번호 필드가 유효한지 설정할 때 사용하며 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷. 클라이언트가 보낸 최초의 SYN 패킷 이후에 전송되는 모든 패킷은 이 플래그가 설정되어야 한다.
ACK는 "너가 보낸 패킷을 잘 받았다."라는 의미로 이해하면 될 것 같다.
만약 ACK를 수신하지 못한다면 TCP 방식에서는 보다 정확한 데이터 전송을 위하여 패킷을 재송신한다.
TCP에서의 Connection Close 방식(4 way handShake)
- 데이터를 전부 송신한 클라이언트가 FIN 송신
- Server가 ACK 송신
- 서버에서 남은 패킷 송신(일정 시간 대기)
- 서버에서 FIN 송신
- 클라이언트가 ACK 송신
FIN - 세션 연결을 종료시킬 때 사용되며 더 이상 전송할 데이터가 없을 때 연결 종료 의사 표시
UDP(User Datagram Protocal)
TCP가 정확성을 추구하고 연결 지향적인 프로토콜이었으면 UDP는 신속성을 추구하고 비연결 지향적 프로토콜이다. 연결 과정이 없기에 상대적으로 빠른 데이터 전송이 가능하지만 정확성은 떨어진다는 단점을 갖는다.
UDP의 특징
- Connectionless (3 way handShake X)
- 비교적 데이터의 신뢰성이 중요하지 않을 경우 사용 (ex, 영상 스트리밍)
- Error Detection(오류 감지)
UDP의 단점
- 데이터의 신뢰성이 없다.
- 의미있는 서버 구축을 위해서는 일일이 패킷을 관리해주어야만 한다.
UDP의 데이터 전송 방식
- 클라이언트가 패킷 송신
TCP와 UDP 차이점
Reference
'🖥CS' 카테고리의 다른 글
[Java] 자바 추상클래스와 인터페이스의 차이 (0) | 2023.01.18 |
---|---|
네이버를 검색하고 화면에 출력되기까지 (0) | 2022.09.28 |
1일 1로그 100일 완성 IT지식 - 통신 75~77 (0) | 2022.08.21 |
자바스크립트/파이썬은 어떻게 작동할까? (0) | 2022.08.12 |
1일 1로그 100일 완성 IT지식 - SOFTWARE 27 (0) | 2022.07.31 |