본문 바로가기

컴퓨터네트워크

컴퓨터 네트워크 : TCP, UDP, SCTP 전송층 프로토콜 - 2

전송 제어 프로토콜(TCP, transmission control protocol) 은 연결-지향, 신뢰성 있는 프로토콜이다.

TCP는 연결 지향 서비스를 제공하기 위하여 분명하게 연결 설정, 데이터 전송 연결 해제 단계를 정의한다.

TCP는 신뢰성을 제공하기 위해 GBN과 SR 프로토콜의 결합을 사용한다.

TCP는 검사합(오류 검출을 위해), 분실 혹은 훼손된 패킷의 재전송, 누적 및 선택 확인 응답, 그리고 타이머를 사용한다.

스트림 전송 서비스(Stream Delivery Service)

UDP와 달리 TCP는 스트림 지향 프로토콜이다. UDP에서 하나의 프로세스(응용 프로그램)는 UDP에게 전달하기 위해 미리 정의된 경계를 가지는 메시지를 전송한다.

송신 및 수신 버퍼

송신 및 수신 프로세스는 똑같은 속도로 데이터를 만들고 처리할 수 없기 때문에 TCP는 저장을 위해서 버퍼가 필요하다.

각 방향을 위해 송신 및 수신 두 가지 버퍼가 있다. 추후에 이 버퍼들이 TCP에 의해 사용되는 흐름 및 오류 제어 기법에서 또한 사용됨을 알 것이다. 버퍼를 구현하는 방법은 간단하게 설명하면 20바이트를 가지는 2개의 버퍼가 있다

송 수신 버퍼
동작

송신 측에서 버퍼는 세 가지 형태의 부분을 가지고 있다. 흰색 부분은 송신 프로세스(생산자)에 의해 채워질 수 있는 비어 있는 위치들을 포함한다. 회색 부분은 송신은 되었으나 아직 확인 응답을 받지 못한 바이트를 가지고 있다. TCP는 확인 응답 메시지를 받을 때까지 버퍼에 이 데이터를 유지한다. 색깔이 있는 영역은 전송 TCP에 의해 송신될 바이트들이다.

TCP는 이 색깔 영역의 단지 일부만을 전송할 수 있다.

수신 측에서의 버퍼 동작은 간단하다. 원형 버퍼는 두 영역으로 나뉜다(흰색과 색깔 영역) 흰색 영역은 네트워크로부터 수신된 바이트에 의해 채워질 비어 있는 위치들을 포함한다. 색깔이 있는 부분은 수신 프로세스에 의해 소비가 될 수 있는 수신된 바이트를 가지고 있다. 한 바이트가 수신 프로세스에 의해 소비가 되었을 때 그 구역은 다시 재생되어 비어있는 위치의 영역으로 추가된다.

세그먼트 - TCP 패킷에 대한 명칭 : 세그먼트는 반드시 같은 크기를 가질 필요가 없음

전송층에서 TCP는 세그먼트라고 하는 패킷으로 다수의 바이트를 묶어서 그룹화한다. 

TCP는 각 세그먼트에 헤더를 붙이고(제어 목적으로) 전송을 위해 IP 계층으로 세그먼트를 전달한다. 세그 먼트들은 IP 데이터 그램으로 캡슐화되고 전송된다. 이러한 전체 동작은 수신 프로세스에게는 투명하다. 나중에 세그먼트들이 순서가 바뀌거나,  손실 또는 훼손된 상태로 수신될 수 있으며 재전송될 수 있음을 볼 것이다. 

세그먼트는 동일한 크기일 필요가 없다는 것에 주의하라.