[Network] TCP/UDP
TCP/UDP?
TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송 계층에서 사용되는 프로토콜이다.
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어 등을 담당하는 계층이다.
TCP와 UDP는 같은 계층의 프로토콜이지만, 신뢰적인(정확한) 전송이 우선인가, 속도가 우선인가에 따라 서로 차이점이 있다.
그럼 각 프로토콜의 특징을 자세히 살펴보자.
TCP
TCP는 신뢰성 있는 데이터 전송을 지원하는 연결지향형 프로토콜이다. 일반적으로 IP와 같이 사용되는데 IP는 패킷 전달 여부를 보증하지 않기 때문에, 데이터 전송을 담당하고 TCP는 패킷을 추적하고 관리하는 역할을 한다.
TCP는 연결지향형 프로토콜이기 때문에 3-way handshake라는 과정을 통해 연결 후 통신을 시작한다.
3-Way Handshake
TCP/IP는 정확한 전송을 보장하기 위해 사전에 패킷을 3단계로 교환하여 연결하는데, 이를 3-Way Handshake라고 한다.
그 과정은 다음과 같다.
- Client -> Server: Client에서 Server에 SYN 패킷을 보내고 SYN_SENT 상태가 된다.
- Server -> Client: Server는 Client로부터 SYN 패킷을 받고 ACK와 SYN 패킷을 보낸다. 이후 SYN_SENT 상태가 된다.
- Client -> Server: Client는 SYN을 받고 ACK 패킷을 보낸다. 이후 ESTABLISHED 상태가 된다.
- Server: Server도 Client로부터 ACK 패킷을 받고 ESTABLISHED 상태가 된다.
- 상태
- LISTEN: 포트가 열려 있어서 연결을 기다리고 있는 상태
- SYN_SENT: 연결을 요청한 상태
- SYN_RECEIVED: 요청을 받아서 응답한 상태 (아직 ACK는 받지 못한 상태)
- ESTABLISHED: 연결된 상태
- FLAG
- SYN(연결 요청 플래그)
- ACK(응답 플래그)
- FIN(연결종료 플래그)
- RST(연결 재설정 플래그)
- PSH(밀어넣기)
- URG(긴급 데이터 플래그)
또 TCP는 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장한다.
- 흐름 제어: 송신자와 수신자 사이의 데이터 처리속도 차이를 제어한다.
- 혼잡 제어: 네트워크 내에 패킷의 수가 넘치지 않도록 패킷 수를 제어한다.
UDP
UDP는 비연결형 프로토콜로, TCP와 달리 연결하는 과정을 거치지 않고 일방적으로 데이터를 전달한다.
또한 TCP 처럼 혼잡 제어를 하지 않기 때문에 TCP 보다 전송 속도가 더 빠르다. 하지만 데이터 전송을 보장하지 않기 때문에 패킷 손실이 발생할 수 있다.
또 스스로 속도 제어를 할 수 없기 때문에 한 회선에서 UDP를 다수가 사용하면 대역폭이 점유당해 다른 사람들이 통신을 못하는 상황이 빚어질 수 있다. 때문에 이에 대한 관리가 필요하다.
UDP는 전송 속도가 중요한 영상, 실시간 스트리밍 서비스, 온라인 게임의 서버-클라이언트 통신 등에 사용된다.
TCP vs UDP
TCP | UDP | |
연결성 | 연결형 | 비연결형 |
데이터 경계 | 구분하지 않음 | 구분함 |
신뢰성 | 신뢰성(데이터 재전송 O) | 비신뢰성 |
통신 지원 | 1:1 | 1:1, 1:n, n:m |
'Computer Science > Network' 카테고리의 다른 글
[Network] 허브 & 스위치 (0) | 2023.03.28 |
---|---|
[Network] DHCP(Dynamic Host Configuration Protocol) (0) | 2023.03.27 |
[Network] TCP/IP (0) | 2023.03.19 |
[Network] OSI 7 Layer (0) | 2023.03.19 |
[Network] 유니캐스트 / 멀티캐스트 / 브로드캐스트 (1) | 2023.03.17 |
댓글
이 글 공유하기
다른 글
-
[Network] 허브 & 스위치
[Network] 허브 & 스위치
2023.03.28 -
[Network] DHCP(Dynamic Host Configuration Protocol)
[Network] DHCP(Dynamic Host Configuration Protocol)
2023.03.27 -
[Network] TCP/IP
[Network] TCP/IP
2023.03.19 -
[Network] OSI 7 Layer
[Network] OSI 7 Layer
2023.03.19