TCP (Transmission Control Protocol)
TCP 는 네트워크 통신에서 연결 지향적이면서 신뢰성을 보장하는 프로토콜이다. OSI 7계층 기준으로 전송 계층에서 사용하는 프로토콜이다.
3-way handshake 방식을 이용한 연결 성립 방식
3-way handshake
3-way handshake 는 TCP 의 연결 과정에서 사용하는 절차이다. 송신자와 수신자가 데이터 전송을 시작 전에 서로가 연결되어 있는지 확인하는 과정이다. TCP의 연결 지향적 프로토콜의 신뢰성을 보장한다.
1. SYN
- 클라 -> 서버로 연결 요청
- 클라가 서버에 TCP 연결을 요청하는 패킷을 보내는 것.
- SYN 플래그가 있어 연결 요청임을 알 수 있다. 플래그에는 시퀀스 번호를 포함한다.
2. SYN-ACK
- 서버 -> 클라 로 연결 요청 수락 및 확인했음을 알림
- 이때 서버 자신의 시퀀스 번호와 함께 SYN-ACK 패킷을 보낸다.
- 패킷은 SYN 플래그오 ACK 플래그가 모두 설정되어 있다.
- ACK 는 클라의 시퀀스 번호 + 1 이다.
3. ACK
- 클라 -> 서버로 서버의 응답을 확인하여 최종적으로 ACK 플래그만 포함하는 패킷을 서버에게 보냄
- 이때 ACK 번호는 서버의 시퀀스 번호 + 1 로 설정
- 최종적으로 양쪽 연결 확인. 통신 시작
다시 TCP로 와서
TCP 의 특징
1. 3-way handshake 을 이용한 연결 지향
2. 신뢰성 보장 : 데이터 손실 시에 재전송한다. ACK 를 통해 수슨 측에 데이터가 제대로 도착했는지 확인한다.
3. 데이터의 순서를 보장 : 전송 순대로 데이터를 재조립한다. 패킷의 도착 순서가 달라도 수신 측에서 정렬한다.
4. 송신자의 데이터 전송 속도 조절 가능
TCP 장단점
1. 신뢰성 보장. 네트워크 자체의 오류 시 재전송 기능으로 데이터를 복구 할 수 있다.
2. 더 많은 자원이 필요하고 속도가 상대적으로 느리다.
UDP
UDP는 비연결형 프로토콜이다. 빠르고 데이터 패킷 크기가 상대적으로 작다. 신뢰성이 떨어지는 단점이 있다.
UDP 의 주요 특징
1. 비연결형 : 송수진자를 연결하지 않는다. 데이터 전송 시 마다 목적지 주소와 포트를 지정한다.
2. 빠른 전송 : 연결 과정이 없어서 데이터 전송이 빠르다.
3. 신뢰성 미보장 : 데이터가 손실 시 혹은 순서 변경 시 복구 되지 않는다.
4. 재전송 불가능 : ack 가 없어서 재송신 자체가 불가하다.
5. 오버헤드가 적음 : 간단한 구조라서 자원의 크기가 작다.
TCP와 UDP를 선택하는 기준
- 데이터 신뢰성이 중요한 경우:
- TCP 사용.
- 예: 파일 전송, 웹 브라우징, 이메일.
- 속도가 중요한 경우:
- UDP 사용.
- 예: 스트리밍, 온라인 게임, 음성 통화.
'네트워크' 카테고리의 다른 글
Reliable 와 TCP 프로토콜의 차이점 (0) | 2024.11.24 |
---|---|
네트워크 ( OSI 7 계층, TCP/IP 4 계층 프로토콜 ) (0) | 2024.11.23 |