2021. 4. 4. 20:49ㆍComputer(인강)/네트워크
안녕하세요 bannavi입니다^ㅅ^
오늘은 TCP통신에 대해서 배워볼거에요
바로 시작해보도록 하겠습니다
TCP 통신 과정
3 way handshake
TCP는 연결지향 프로토콜로 두 호스트가 통신하기 전에 연결을 위한 관계를 수립
4 way handshake
연결을 종료
TCP 통신 과정
TCP 상태 전이도 - Client
TCP 상태 전이도 - Server
아래에 가려진 부분
Send Fin
Rcvd Ack
TCP 타이머 - Retransmission
송신측이 패킷을 매번 전송할 때 카운트
RTO(Retransmission Timeout) 내 ACK 응답이 오지 않으면 재전송
RTO는 RTT(Round Trip Time)에 따라서 가변적으로 변함
SRTT(Smoothed Round-Trip Time), RTTVAR(Round-Trip Time Variation)
RTTVAR 구하는 공식
SRTT 구하는 공식
RTO 구하는 공식
이에 대해서 깊이있게 공부하고 싶다면 아래의 사이트를 방문해보세요
https://tools.ietf.org./rfc/rfc6298.txt
RTT - PCAP
TCP 타이머 - Persistence
1. 윈도우 사이즈 관련 타이머
2. 수신측에서 용량 부족으로 윈도우 사이즈 없음을 보내고 다시 용량에 여유가 생기면 송신측에 요청
3. 중간에서 윈도우 사이즈 > 0 을 보내는 ACK이 유실되면 서로 통신 간 문제 발생
4. 수신측 윈도우 사이즈 = 0을 보낼 경우 Persistence 타이머 가동 - RTO
5. Persistence 타이머가 종료되면 Probe(ACK 재전송 요청)를 보내고 타이머 재 가동
6. 다시 타이머가 종료되기 전에 ACK을 수신 못하면 시간을 2배로 늘리고 Probe 재전송
7. 타이머의 임계치는 60초
TCP 타이머 - Time waited
1. TCP 연결 종료 후에 특정 시간만 연결을 유지
2. MSL(Maximum Segment Lifetime) = 120초, TIME_WAIT = 2MSL
3. 다른 연결이 맺어진 상태에서 이전 연결의 지연/중복 패킷 도착으로 인한 문제 발생
TCP 타이머 - Keepalive
1. TCP 연결 유지 타이머
2. TCP 연결을 맺고 수신측에서 2시간 동안 송신하는 패킷이 없으면 수신측은 75초 단위로 Probe 전송
3. Probe 9개를 보내고 응답이 없으면 연결 종료
4. Probe 9개 이전에 응답이 있으면 타이머는 재설정됨
흐름 제어
Flow Control
송신과 수신측의 데이터 처리 속도 차이를 해결
Sliding Window 기법, Window = 데이터 전송을 위한 버퍼
TCP Data
윈도우 사이즈 = 마지막 수신한 데이터 - 프로세스가 처리한 데이터
혼잡 제어
Congestion Control
수신측으로 유입되는 트래픽의 양이 정해진 대역폭을 넘어가지 않도록 제어
1. AIMD(Additive Increase/Multiplicative Decrease)
패킷 전송시 문제 없으면 Windows size 1씩 증가, 타임아웃 또는 loss 시 패킷 속도 1/2 감소
초기에 높은 대역폭 사용 불가, 미리 혼잡 상태 감지 불가
2. Slow Start
패킷 전송시 문제 없으면 Windows size 2배씩 증가, 혼잡 상태 발생시 1로 변경
사전 혼잡 상태를 기록하고 Windows size 절반까지 2배씩 증가 후 1씩 증가
3. Fast Retransmit - TCP Tahoe / Fast Recovery - TCP Reno
수신측에서 먼저 와야하는 패킷이 오지 않고 다음 패킷이 오게 되어도 송신측에 ACK을 보냄
송신측은 타임아웃 시간을 기다리지 않고 중복된 순번의 패킷을 3개 받으면 재전송
4. 개선된 Fast Retransmit / Fast Recovery
TCP New Reno, SACK(TCP Tahoe + Selective Retransmit)
Wrap up
1. TCP는 초기연결은 3 way handshake로 정상적인 연결 종료는 4way handshake을 사용한다
2. TCP 타이머는 Retransmission, Persistence, Time waited, Keepalive가 있다
3. Flow Control은 송신과 수신측의 데이터 처리 속도 차이를 해결하는 방법
4. Congestion Control은 수신측으로 유입되는 트래픽의 양이 정해진 대역폭을 넘어가지 않도록 제어
'Computer(인강) > 네트워크' 카테고리의 다른 글
TCP와 NAT 04. TELNET & SSH (0) | 2021.04.04 |
---|---|
TCP와 NAT 03. NAT의 개요 (0) | 2021.04.04 |
TCP와 NAT 01. TCP & UDP 개요 (0) | 2021.04.04 |
동적 라우팅 03. 동적 라우팅 - OSPF (0) | 2021.04.04 |
동적 라우팅 02. 동적 라우팅 BGP & RIP (0) | 2021.04.04 |