본문 바로가기
네트워크/컴퓨터네트워크

TCP

by HJINHA 2021. 6. 28.

[Packet Switching vs Circuit Switching]

1. packet switching

- 경로설정 중앙x

- 모니터링 중앙x

- 성능 보장x

- but 일단 출발은 가능한

2. Circuit Switching

- 중앙 경로설정

- 패킷 보내기 전에 미리 경로설정, 연결 끝날 때까지 경로 유지

- 성능 보장 (경로 독점) but 요청에 대한 연결 보장은 x

 

- Throughput: 처리율. 단위시간당 처리하는 양

 

[Congestion Control]

- throughput: 처리율. 단위시간당 처리하는 양.

- 10Mbps 속도일 때, 혼잡이 없으면 50Mb 보낼 때 5초 걸리지만 혼잡 있으면 10초 걸릴 수 있음->속도 5Mbps -> throughput이 떨어진 것.

 

- Slow Start (exponential increase)

- 지수적 증가. 패킷 단위를 1, 2, 4, 8, .. 으로 증가시킴. thoreshold 값까진 두배씩 증가하다 그 뒤론 additive increase 한다.

- 혼잡제어 없었다면 flow control할 때 윈도 사이즈만큼 다 보내므로 걔보단 느려서 slow.

- threshold(역치) 값까진 두 배 증가하다 그 뒤론 additive increase.

 

- Congestion avoidance (Additive Increase)

- 혼잡이 발생하기 전에 보내는 양을 하나씩 늘린다. 혼잡이 발생하면 보낼 것을 반으로 줄인다.

- 단점: 적정량이 50이면, 그걸 알아내려고 50번 왔다갔다 해야 함.

- 혼잡이 어디서 생기는지 알 수 없다. 혼잡 생기는 애들은 다 줄임

 

- TCP Congestion policy summary

- Timeout: 윈도사이즈까지 다 보냈는데 많은 패킷이 한번에 없어져서 답은 안 오고 시간이 지나(time out) 알게 되는 것 (ex. 전쟁 중 다 죽으면 누가 죽었다고 못알려줌)

- 3 duplicate ACK: 패킷 분실 이후에 최소 3개 패킷이 제대로 전송되면 상대가 그에 대한 답으로 못받은 패킷 계속(3번 더) 보낼 때

 

- AIMD

- 윈도사이즈는 0으로는 안떨어짐. cwnd>=1

 

Why is TCP fair?

- two competing sessions:

- Additive increase gives slope of 1, as throughout increases

- multiplicative decrease decreases thorughput proportionally

- ex) conn1RTT: conn2RTT 1:1 이면 기울기 1인 증가그래프에 수렴하게 된다.

- ex) 1:2y=1/2 x

- RTT가 다르거나, connection이 한쪽에 여러개 생기면 NOT FAIR.

 

TCP Timers

1. Retransmission: Timout 발생 감지. (Packet loss detact. 3dupicate ACK으로도 packet loss 감지하지만, 그전에 timeout으로도 감지)

2. Persistence: 영속 타이머. deadlock 해결. probe 세그먼트 전송

3. Keepalive: 상대가 죽은건지, 데이터를 안보내는건지 체크. probe 세그먼트 전송

4. TIME-WAIT: 연결 종료할 때 2MSL만큼 기다림

 

- TCP에서는 한 번에 하나의 RTT 측정만 진행될 수 있다.

 

Smoothed RTT (평균 구하기)

- 처음: 아무 값도 설정 안 됨

- 첫 번째 측정 이후: RTTs = RTTm

- 그 이후의 측정 후: RTTs = (1-a)RTTs + aRTTm , a=1/8        (알파)

                                           7/8*(기존평균값)+1/8*(측정값)

 

RTT Deviation (편차)

- 처음: 아무 값도 설정 안 됨

- 첫 번째 측정 이후: RTTd = RTTm/2

- 그 이후의 측정 후: RTTd = (1-b)RTTd + b|RTTs - RTTm| , b=1/4    (베타)

                                           3/4*(평균) + 1/4*(측정 편차)

- ‘방금 측정된 m이랑 평균 s랑 얼마나 차이나는지를 측정값으로, 편차평균에 1/4만큼 더해줌

 

RTO (Retransmission TimeOut)

- 처음: 초기값

- 그 이후의 측정 후: RTO = RTTs + 4*RTTd

 

Karn’s Algorithm

- 재전송할때는, 재전송할때 값을 s, d에 넣지 말자.-

- 재전송되지 않은 segment에 대한 ACK 이후에만 RTT 재측정하자.

- 안그러면 아래와 같은 문제가 발생할 수 있다.

 

Exponential Backoff

- 재전송할 때는 RTO 두 배로 보냄

'네트워크 > 컴퓨터네트워크' 카테고리의 다른 글

IPv4 Addresses  (0) 2021.06.28
TCP options  (0) 2021.06.28
Error Control  (0) 2021.04.06
Silly Window Syndrome / SYN Flooding  (0) 2021.04.06
TCP 확인응답  (0) 2021.03.23

댓글