연결 지향적 서비스를 제공하기 위해 데이터를 전송하기 전에 먼저 두 호스트의 전송 계층 사이에 논리적 연결을 설립, 그 후 데이터를 전송하고 완료했으면 연결 해제.
TCP의 통신은 connection setup, data transfer, connection termination의 3단계로 나뉨.
신뢰성 있는 서비스를 제공하기 위해 TCP가 전체 스트림을 순서에 맞고 오류 없이, 또한 부분적인 손실이나 중복 없이 전송하는 것을 보장.
- 흐름제어 : 데이터를 보내는 속도와 받는 속도의 균형을 맞추는 것
- 오류제어 : 훼손된 segment의 감지 및 재전송, 손실된 segment의 재전송, 순서가 맞지 않게 도착한 segment를 정렬하고 중복 segment 감지 및 폐기
- TCP header의 checksum, 확인응답, 타임-아웃 등을 통해 수행
TCP는 3단계 과정을 거쳐서 통신
TCP/IP 프로토콜로 통신하기 전, 정확한 정보 전송을 위해 상대방 컴퓨터와 세션을 수립하는(연결하는) 과정
클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 보내면, 서버는 요청을 수락하는 ACK를 포함하여 SYN + ACK 패킷을 클라이언트에게 전송.
클라이언트가 수신한 후, 다시 ACK를 서버에게 전송하면 연결이 이루어지고, 이로써 데이터를 주고 받음
tcp 연결을 종료하는 Connection termination 과정
양방향으로 2개의 연결이 독립적으로 닫히기 때문에 4-way 단계
논리적 연결을 설립하지 않고 datagram을 전송하는 비연결형 프로토콜
적은 양의 오버헤드를 갖기 때문에 작은 메시지를 보내거나 신뢰성을 크게 고려하지 않아도 되는 상황에서 사용
파일을 다운 받을 때는 신뢰성이 보장 되어야 하기 때문에 TCP를 사용, 다운로드 완료된 파일의 일부분이 손실되거나 훼손되어 있으면 안되기 때문.
live방송과 같이 실시간 상호작용을 하는 응용프로그램을 사용할 때는 UDP 사용, 손실된 패킷으로 인해 짧은 시간동안 화면의 일부분이 공백으로 표시되더라도 대부분의 시청자들은 인식하지 못하기 때문에 신뢰성보다 실시간성이 더 중요. 훼손되거나 손실된 프레임을 재전송 해야된다면 전체적으로 지연 발생