본문 바로가기

교육/Netwrok

Day 61 (TCP_3_1)

반응형

<목차>

1. rdt 3.0 : stop and wait

2. RTT

3. MSS

4. window

5. Pipelined protocol

1) Go - Back - N

2) Selective repeate


1. rdt 3.0 : stop and wait

 

보내고 받는 시간보다 RTT가 길다보니 비 효율적이다.

2. RTT

RTT(Round Trip Time, 왕복 시간)는 패킷망(인터넷상에서 상대측 호스트까지 패킷 왕복하는데 걸리는 시간이다. RTT에 영향 주는 요소는 망의 혼잡거리전송속도 등이 있다.

 

3. MSS(Maximum Segment Size)이란?

MTU에서 '각종'Header 제거한 값 한 패킷의 순수한 데이터 크기이며 전송할 데이터가 저장될  있는 최대 길이이.

*MTU(Maximum Transfer Unit)?

Layer Communication Protocol에서 해당 레이어가  패킷으로 전송할  있는 최대 데이터 단위의 크기(최대 데이터양)이. 단위는 Outet이며 옥텟은 Byte 사이즈가 같다.(1 Outet = 1 Byte) 입니다. Syn 패킷을 통해 MSS 값을 조정하여 미리 MTU 값을 조정합니다. MTU  패킷에 Header 값을 포함합니다. TCP 경우 ACK 확인  순차적으로 보내며 UDP 확인만되면 계속해서 전송합니다. (신뢰성 통신과 비신뢰성 통신의 차이)

 

4. window

window는 MSS의 묶음이며, window size는 송신 가능한 mss묶음의 크기 이다.

window size 제어에는 흐름제어와 혼잡제어가 있다. 흐름제어는 receiver가 상한선을 제시 하는 것이다.

혼잡제어는 sender가 혼잡시 알아서 제어하는 것으로 실질적으로 window size 제어에 영향을 많이 준다.

 

5. Pipelined protocol

<패킷 : pkt / sequence number : seq #>

Pipelining은 sender에게 ACK 가리지 않고 여러개의 pkt 송신하게 허용하는 것이다. 패킷을 송신할때 마다 seq # 증가해야 한다.

sender receiver 하나 이상의 pkt buffering할 수 있다.

Pipelined protocol에는 Go-Back-N, Selective Repeat 두가지가 있다.

 

1) Go-Back-N

 

수신측에 상관없이 송신측에서 처리하는 방식이다. window는 전송 되었지만 확인 되지 않은 pkt를 위해 허용할 수 있는 seq #의 범위를 의미하고 확인하는 지표로 사용된다. window size내의 처음 패킷을 send_base로 지정하고, send_base에만 timer가 있다. timeout이 발생하면 ACK가 없는 pkt이후 모든 패킷을 재전송하고, ACK를 받게 되면 다른 패킷으로 send base가 옮겨진다.

①통신 중 pkt가 손실된 경우 ②통신 중 ACK가 손실된 경우
손실된 pkt에 대한 ACK를 수신할때 까지 해당 pkt를 재송신하며 이후에 오는 ACK는 무시한다. 손실된 pkt에 대한 ACK가 를 수신하면 해당 pkt 이후 seq#를 가진 pkt들을 재전송한다. 누적 ACK방식을 사용한다.
손실된 ACK의 다음 ACK가 도착한다면 손실된 ACK도 정상적으로 receiver가 수신한 것으로 한다.

 

2) Selective Repeate

 

receiver가 수신한 pkt에 대한 개별적인 ACK를 요구한다.

중간에 pkt가 소실되면 하위 seq #는buffering됨 해당 seq #의 pkt가 도착하면 buffering됬던 ACK까지 포함해서 전송한다.

sender는 ACK가 없는 pkt에 대해서만 재전송을 하며 각각 timer를 유지한다. ACK를 수신한 pkt는 timer를 제거한다.

sender의 window는 send_base pkt의 ACK를 받아야만 이동한다.

①통신 중 패킷이 손실된 경우 ②통신 중 ACK가 손실된 경우
손실된 pkt에 대한 ACK를 받을때까지 window를 받고 window내의 다른 pkt에 대한 ACK는 저장한다. 해당 pkt에 대한 ACK를 수신하면 수신한 마지막 ACK의 다음 pkt로 send_base가 이동된다. 손실된 ACK에 대한 ACK를 받을때 까지 window가 고정되고 window내의 다른 pkt의 ACK는 저장한다. 수신측의 윈도우 사이즈는 계속해서 이동한다. 만약 윈도우 밖에 있는데 그 이전 패킷을 받는다면 해당 패킷에 대한 ACK만 주고 윈도우 변화는 없다.

<시나리오 표기>
해당 경로 위에 전송되는 패킷의 이름을 적는다. 윈도우는 직사각형으로 표시하고 윈도우 크기만큼 seq#를 적는다. 윈도우 이동이 되지 않고 확인된 값은 O표시를 한다.
반응형

'교육 > Netwrok' 카테고리의 다른 글

Day 62(TCP_4)  (0) 2020.02.19
Day 61 (TCP_3_2)  (0) 2020.02.14
Day 60 (Network Layer)  (0) 2020.02.13
Day 60 (TCP_2)  (0) 2020.02.13
Day 59 (Network Layer 구조)  (0) 2020.02.12