TCP(Transmission Controll Protocol)
TCP (전송 제어 프로토콜)
전송계층의 연결형 서비스를 제공하는 프로토콜
일반적으로 TCP/IP 함께 사용(IP 데이터의 배달 처리, TCP 패킷 추적 및 관리)
- 클라이언트가 연결 요청을 하고 서버가 수락하면 통신 선로가 고정
-> 모든 데이터가 고정된 통신 선로를 통해 순차적으로 전달
- 신뢰성 있는 데이터 전송
- TCP는 패킷을 성공적으로 전송하면 ACK 신호를 날린다
제 시간에 도착하지 않을 시 TimeOut 발생 손실 패킷 재전송
(데이터를 송신할 때마다 확인 응답을 주고 받는다)
- 데이터 전송 순서 보장 - 각 바이트마다 번호를 부여
- 데이터의 경계를 구분하지 않는다(byte stream 서비스)
- 연결형 서비스로 가상 회선 방식 제공
- 흐름 / 혼잡 제어 O
- UDP보다 전송 속도가 느리다
UDP(User Datagram Protocol)
UDP (사용자 데이터그램 프로토콜)
전송계층의 비연결형 서비스를 제공하는 프로토콜(데이터를 주고 받을 때 연결/해제 절차를 거치지 않는다)
- 비연결형 서비스로 데이터그램(독립적인 관계를 지니는 패킷) 방식 제공
- TCP보다 전송 속도가 빠르다
- 흐름 / 혼잡 제어 X
- 데이터 신뢰성 없음
중간에 패킷이 유실되거나 변조되어도 재전송 X
먼저 보낸 패킷이 나중에 보낸 패킷보다 늦게 도착할 수 있다
- 데이터의 경계를 구분
- IP 주소와 포트번호의 결합인 소켓 주소를 이용
- 패킷 오버헤드가 적어 네트워크 부하가 감소
| TCP | UDP |
---|
연결방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서 바뀔 수 있음 |
수신 여부 확인 | O | X |
통신 방식 | 1:1 통신만 가능 | 1:1 / 1:N / N:N 가능 |
신뢰성 | 높음 | 낮음 |
속도 | 느림 | 빠름 |
TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되며 UDP는 신뢰성보다 연속성이 중요한 서비스(Streaming)에 사용된다.
- 흐름 제어(Flow Controll)
데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
신자가 윈도우크기(Window Size) 값을 통해 수신량을 정할 수 있다
- 혼잡 제어(Contgestion Controll)
네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
(정보 소통량이 과다하면 패킷을 조금만 전송)