TCP의 연결 수립이 끝나면 두 장비 간의 TCP 연결이 생성되고 데이터를 송신할 수 있습니다.

TCP 장비간에 데이터를 송신하는 방식은 슬라이딩 윈도우 기법을 사용해서 진행됩니다. 

슬라이딩 윈도우 어떻게 동작하는지 알아봅니다.

슬라이딩 윈도우 전송과 수신 카테고리

 TCP에서 연결에 속한 두 장비는 자신이 전송하는 데이터뿐만 아니라 수신하는 데이터도 추적해야 합니다. 

 전송 및 수신하는 데이터를 타입 별로 나누어서 분류합니다.

 전송 카테고리(해당 장비가 전송할 데이터 버퍼 정보)

이 름 내   용
전송 카테고리 1 전송을 했으며 상대방에서 승인까지 완료.
전송 카테고리 2 전송을 했지만 상대방의 승인을 아직 받지 못함
전송 카테고리 3 수신자는 준비 됐지만 아직 전송하지 못한 데이터
전송 카테고리 4 수신자가 준비되지 않았고 전송하지 않은 데이터

 수신 카테고리(상대방 장비로부터 전달받은 데이터 버퍼 정보)

이 름 내   용
수신 카테고리 1 + 2 수신했고 승인 받음, 전송 카테고리 1과 2에 대응됩니다.
수신 카테고리 3 수신자는 준비 됐지만 아직 전달받지 못한 데이터, 전송 카테고리 3에 대응
수신 카테고리 4 수신자가 준비되지 않았고 수신하지 못한 데이터 전송 카테고리 4에 대응

수신하는 데이터는 전송하는 데이터처럼 승인이 필요 없기 때문에 1,2번 타입을 합쳐서 대응합니다.

송신(SND) 포인터

 두 장비가 연결을 통해서 송신한 데이터를 추적하기 위해서 앞에 설명한 카테고리를 나누기 위해서 총 3개의 포인터를

 사용합니다. 

이 름 내  용
송신 비확인 (SND.UNA) 송신을 했지만 아직 상대방에게 승인되지 않은 첫 번쨰 데이터의 순서번호입니다. 전송 카테고리2첫번째 바이트를 가르킵니다.이 순서번호의 이전 데이터는 모두 전송 버퍼타입 1에 속합니다.
송신 다음(SND.NXT) 상대방 장비에 보내야 할 다음 바이트의 순서번호 입니다. 전송 카테고리3의 첫 번째 바이트를 가르킵니다.
송신 윈도우(SND.WND) 송신 윈도우의 크기입니다. 윈도우는 장비가 특정 시점에 승인없이 보낼 수 있는 총 바이트의 수를 나타냅니다. 

 여기서 보면 윈도우의 뜻이 승인없이 보낼 수 있는 총 바이트라는 말이 나오는데 그래서 TCP 전송방식을

 슬라이딩 윈도우 방식이라고 합니다. 승인 받기 전에 윈도우 크기만큼 보내고 이후에 상대방에게 승인을 받으면

 위에 설명한 포인터를 움직여서 여유가 생긴 윈도우 크기만큼 더 보내도록 구현되어 있습니다.

 위의 포인터가 전송 카테고리를 어떻게 표현하는지 알아봅시다.

이  름 시작 위치 크 기
전송 카테고리 1 ISN(초기 순서 번호)  SND.UNA - ISN 
전송 카테고리 2 SND.UNA SND.NXT - SND.UNA
전송 카테고리 3 SND.NXT SND.UNA + SND.WND - SND.NXT
전송 카테고리 4 SND.UNA + SND.WND  

전송 카테고리 및 송신 윈도우, 포인터 

위의 그림은 전송 카테고리 및 송신 윈도우에 대한 내용을 그림으로 표현했습니다. 

예제에서는 SND.UNA이 순서 번호 54, SND.NXT는 순서번호 69를 가지며 전송 윈도우는 20의 크기를 가지고 있습니다. 

위의 내용을 풀어서 이야기하자면 장비는 53번까지 상대방 장비에게 데이터 전송에 대해서 승인을 받았고

68번까지는 데이터를 미리 보낸 상태이지만 아직 승인을 받지 못하였습니다.

윈도우 크기가 20이니까 54번 ~ 73번까지 승인 없이 보낼 수 있기 때문에 추가적으로 승인없이 5바이트를

보낼 수 있는 상태입니다.  이렇듯 전송 카테고리의 3의 크기는 추가적인 승인 없이 송신자가 보낼 수 있는 데이터의 

크기입니다. 

수신(RCV) 포인터

이 름 내  용
수신 다음(RCV.NXT) 상대방 장비에서 받으려고 하는 데이터의 다음 순서번호. 수신 카테고리3의 첫번 째 바이트를 가르킵니다. 이 순서번호보다 작은 송신번호는 이미 수신되었고 승인되었습니다.
수신 윈도우(RCV.WND) 상대 장비에게 알려준 수신 윈도우 크기. 장비가 한 번에 받길 원하는 바이트 수를 뜻합니다. 
이  름 시작 위치 크 기
전송카테고리 1 + 2 ISN(초기 순서 번호)  RCV.NXT - ISN 
전송카테고리 3 RCV.NXT RCV.WND
전송카테고리 4 RCV.NXT + RCV.WND  

수신 카테고리 및 수신 윈도우, 포인터 

 위의 그림은 수신 카테고리 및 수신 윈도우에 대한 내용을 그림으로 표현했습니다. 

 예제는 위의 송신 카테고리의 상대방인 수신 장비의 수신 카테고리를 설명하고 있습니다. 

 RCV.NEX는 순서번호 54, RCV.WND는 20의 크기를 가집니다.

 내용을 풀어서 말하자면 수신 장비는 53번까지 데이터를 수신했고 승인을 보냈습니다. 

 상대방 장비는 53번 + 20(윈도우 크기)인 73번 데이터까지 보내도 됩니다. 

 

 다음글 : [TCP] 슬라이딩 윈도우 데이터 송신 및 승인2

+ Recent posts