커넥션형 통신의 구조
커넥션형 통신은 데이터를 주고받기 전에 먼저 연결을 설정하고, 데이터 전송이 끝나면 연결을 종료하는 방식입니다. 이 방식은 마치 전화 통화와 비슷합니다.
전화 통화로 이해하기
- 연결 설정: 전화를 걸어 상대방이 받을 때까지 기다립니다.
- 데이터 전송: 상대방이 전화를 받으면 대화를 주고받습니다.
- 연결 종료: 대화가 끝나면 "안녕"하고 전화를 끊습니다.
커넥션형 통신에서는 데이터를 보내기 전에 양쪽 컴퓨터가 서로 "준비됐어?"라고 확인하는 과정을 거칩니다. 이를 '핸드셰이크(handshake)'라고 부릅니다. 그 후 안정적인 통신 경로가 설정되면 데이터를 주고받고, 모든 통신이 끝나면 연결을 종료합니다.
연결형 통신의 대표 프로토콜: TCP
TCP(Transmission Control Protocol)는 커넥션형 통신의 대표적인 프로토콜입니다. 인터넷에서 가장 널리 사용되며, 다음과 같은 특징이 있습니다:
- 신뢰성 보장: 데이터가 손실되면 재전송합니다.
- 순서 보장: 보낸 순서대로 데이터가 도착합니다.
- 흐름 제어: 수신자가 처리할 수 있는 속도로 데이터를 전송합니다.
- 혼잡 제어: 네트워크 상황에 따라 전송 속도를 조절합니다.
TCP 연결 과정
TCP는 '3-way handshake'라는 과정을 통해 연결을 설정합니다:
- SYN: 클라이언트가 서버에 연결 요청(SYN)을 보냅니다.
- SYN-ACK: 서버가 요청을 수락하고 응답(SYN-ACK)을 보냅니다.
- ACK: 클라이언트가 응답을 확인(ACK)하고 연결이 완료됩니다.
실생활 예시: 택배 서비스
TCP는 마치 등기 택배 서비스와 같습니다. 택배를 보내기 전에 배송지 확인 전화가 오고(연결 설정), 택배가 잘 도착했는지 확인 서명을 받으며(데이터 확인), 문제가 있으면 다시 배송합니다(재전송). 배송이 완료되면 서비스가 종료됩니다(연결 종료).
커넥션리스형 통신의 구조(데이터그램 방식)
커넥션리스형 통신은 사전 연결 설정 없이 바로 데이터를 전송하는 방식입니다. 각 데이터 패킷은 독립적으로 전송되며, 이를 '데이터그램' 방식이라고도 합니다.
편지로 이해하기
이 방식은 마치 편지를 보내는 것과 비슷합니다:
- 편지를 쓰고 봉투에 주소를 적습니다.
- 우체통에 넣기만 하면 됩니다(사전 연결 불필요).
- 각 편지는 독립적으로 배달됩니다.
- 상대방이 받았는지 확인하기 어렵습니다.
커넥션리스형 통신에서는 각 데이터 패킷에 목적지 주소를 붙여서 네트워크에 던져 넣습니다. 목적지까지 어떤 경로로 갈지, 제대로 도착할지 보장하지 않습니다.
비연결형 통신의 대표 프로토콜: UDP
UDP(User Datagram Protocol)는 커넥션리스형 통신의 대표적인 프로토콜입니다. 다음과 같은 특징이 있습니다:
- 연결 설정 없음: 바로 데이터를 전송합니다.
- 비신뢰성: 데이터 손실을 확인하거나 복구하지 않습니다.
- 순서 보장 없음: 데이터가 보낸 순서와 다르게 도착할 수 있습니다.
- 가벼움: 오버헤드가 적어 빠른 전송이 가능합니다.
UDP 통신 과정
UDP는 매우 단순한 구조를 가지고 있습니다:
- 데이터를 패킷으로 나누고 목적지 주소를 붙입니다.
- 네트워크에 패킷을 바로 전송합니다.
- 수신자는 도착한 패킷을 처리합니다.
- 확인이나 재전송 과정이 없습니다.
실생활 예시: 일반 우편
UDP는 마치 일반 우편과 같습니다. 편지를 우체통에 넣기만 하면 됩니다(연결 설정 없음). 편지가 잘 도착했는지 확인할 수 없고(비신뢰성), 같은 날 보낸 여러 편지가 다른 날에 도착할 수 있습니다(순서 보장 없음). 하지만 빠르고 간단하게 전송할 수 있습니다.
각 통신 방법의 장점/단점
커넥션형(TCP) 통신
장점:
- 신뢰성: 데이터 손실이 거의 없습니다.
- 순서 보장: 데이터가 보낸 순서대로 도착합니다.
- 오류 제어: 손상된 데이터를 감지하고 복구합니다.
단점:
- 오버헤드: 연결 설정, 확인, 재전송 등으로 인해 추가 부담이 있습니다.
- 지연: 신뢰성을 보장하기 위한 절차로 인해 전송 속도가 느려질 수 있습니다.
- 리소스 사용: 연결 상태를 유지하기 위해 메모리와 CPU 자원을 사용합니다.
커넥션리스형(UDP) 통신
장점:
- 속도: 연결 설정이나 확인 과정이 없어 빠릅니다.
- 단순성: 프로토콜 구조가 간단합니다.
- 효율성: 오버헤드가 적어 네트워크 자원을 효율적으로 사용합니다.
단점:
- 비신뢰성: 데이터 손실이 발생할 수 있습니다.
- 순서 보장 없음: 데이터가 다른 순서로 도착할 수 있습니다.
- 오류 제어 없음: 손상된 데이터를 감지하지 못할 수 있습니다.
어떤 통신 방식을 언제 사용할까?
TCP(커넥션형)가 적합한 경우:
- 웹 브라우징(HTTP/HTTPS): 웹페이지의 모든 내용이 정확히, 순서대로 로드되어야 합니다.
- 이메일(SMTP): 메일 내용이 손실 없이 전달되어야 합니다.
- 파일 전송(FTP): 파일의 모든 부분이 정확히 전송되어야 합니다.
- 데이터베이스 쿼리: 중요한 정보가 손실되면 안 됩니다.
UDP(커넥션리스형)가 적합한 경우:
- 실시간 스트리밍(비디오/오디오): 약간의 데이터 손실은 허용되지만, 지연이 적어야 합니다.
- 온라인 게임: 빠른 업데이트가 중요하며, 일부 패킷 손실은 게임 경험에 큰 영향을 주지 않습니다.
- DNS 조회: 빠른 응답이 중요합니다.
- IoT 장치: 제한된 자원으로 간단한 통신이 필요한 경우가 많습니다.
결론
커넥션형 통신(TCP)과 커넥션리스형 통신(UDP)은 각각 다른 상황에 적합한 특성을 가지고 있습니다. 어떤 것이 "더 좋다"라고 단정할 수 없으며, 응용 프로그램의 요구사항에 따라 적절한 프로토콜을 선택해야 합니다.
- 정확성과 완전성이 중요하다면 → TCP
- 속도와 효율성이 중요하다면 → UDP
'1일 1네트워크 > 제 5장: 트랜스포트층의 프로토콜' 카테고리의 다른 글
포트 번호란? (0) | 2025.03.20 |
---|---|
TCP와 UDP란? (0) | 2025.03.19 |