- Unreliable network에서, Reliable network를 보장할 수 있도록 하는 프로토콜
- 인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- IP가 데이터의 배달을 처리한다면, TCP는 패킷을 추적하고 관리
- TCP는 연결형 서비스를 지원하는 프로토콜
- 인터넷 환경에서 기본으로 사용한다.
- 연결 지향 방식으로 3-way로 Connection을 설정, 4-way로 해제한다.
- 흐름 제어 및 혼잡 제어 역할
- 연결형 서비스로 신뢰성을 보장하여, 연속성보다 신뢰성이 있는 전송이 중요할 때 사용되는 프로토콜
- 웹 HTTP 통신, 이메일, 파일전송
- 서버와 클라이언트는 1대1 연결이다.
- 패킷에 대한 잘 받았다는 응답을 해야하기 때문에 성능이 낮다.
- 데이터를 여러 개의 조각들로 나누어서 전송 → 패킷
- 패킷에 번호를 부여하여, 패킷의 분실 확인, 목적지에서 재조립을 한다.
- TCP Flag
-
무엇인가를 기억해야 하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로 프로그램에서 사용되는 미리 정의된 비트
-
TCP 헤더에 Control Flag에 해당하는 필드 6개가 1비트씩 존재 (논리적인 TCP 연결회선 제어 및 데이터 관리에 사용)
- SYN (Synchronize) 연결 요청 플래그
- ACK (Acknowledgement) 응답 플래그
- FIN (Finish) 연결 종료 플래그
- RST (Reset) 연결 재설정 플래그
- PSH (Push) 넣기 플래그 - 버퍼가 채워지기를 기다리지 않고 데이터를 받는 즉시 전달
- URG (Urgent) 긴급 데이터 플래그 - 우선순위를 높여 긴급하게 데이터 전달
-
-
흐름 제어
-
수신측이 송신측보다 데이터 처리 속도가 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제
-
수신측에서 제한된 저장 용량을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며, 만약 손실 된다면 불필요하게 응답과 데이터 전송이 송/수신 측 간에 빈번히 발생
-
데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
-
해결방안
- Stop and wait
- 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법
- Sliding Window
- 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법
- Stop and wait
-
-
혼잡 제어
- 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지, 정보가 많으면 패킷을 조금만 전송하여 혼잡 현상을 방지
- 네트워의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송 속도를 강제로 감소시키는 것이 혼잡제어
- 종류
- 데이터를 데이터그램 단위로 처리하는 프로토콜
- 연결을 위해 할당되는 논리적인 경로가 없으므로 각 킷은 다른 경로로 전송
- 각각의 패킷은 독립적인 관계를 지니게 되고, 독립적으로 처리하는 프로토콜
- 정보를 주고 받을 때, 정보를 보내거나 받는다는 신호절차를 거치지 않음
- 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
- 흐름 제어, 혼잡 제어 등을 하지 않으므로 신뢰성보다는 연속성이 중요한 서비스
- 실시간 서비스(streaming), 스트리밍 분야, VoIP, mVoIP
- 서버와 클라이언트는 1대1, 1대N, N대M 등 연결
프로토콜 종류 | TCP | UDP |
---|---|---|
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 | 데이터그램 |
전송 순서 | 전송 순서 보장 | 전송 순서 바뀔 수 있음 |
수신 여부 확인 | O | X |
통신 방식 | 1:1 | 1:1 or 1:N or N:N |
신뢰성 | ⬆️ | ⬇️ |
속도 | ⬇️ | ⬆️ |