300x250


세미나_13_TCP 연결 관리.pptx


1. 왜 의사헤더를 추가하나?


2. 윈도우 기반 흐름제어

Window기반 전송
ACK 프레임을 수신하지 않더라도 여러 개의 프레임을 연속적으로 전송하도록 하여 전송효율을 높이는 방법
호스트들이 각각 2개의 window를 가지고 있음
송신 window : 송신 가능한 프레임 수
수신 window : 수신 가능한 프레임 수

슬라이딩 윈도우에 적용 됨
Window 광고
수신기가 송신기에게 얼마나 큰 윈도우를 사용할 수 있는지 전달하는 것.
Window 광고를 통해 window size 동기화
윈도우 기반 흐름제어
Window 광고를 통해 송신기의 윈도우 크기를 조정하여 전송률을 조절 하게 됨.






13. TCP 연결 관리

contents
1.개요
2.TCP 연결 설정과 종료
3.TCP 옵션
4.TCP의 경로 MTU 발견
5.TCP 상태 천이
6.재설정 세그먼트
7.TCP 서버 동작
8.TCP 연결 관리를 포함하는 공격
9.


1. 개요

13장 개요 – TCP 연결
TCP 연결이 무엇인지
TCP 연결이 어떻게 설정되는지

TCP 연결이 어떻게 종료되는지

2. TCP 연결 설정과 종료

TCP 연결 설정과 종료
3 way handshake

4 way handshake


TCP 절반 폐쇄
TCP 연결의 한 쪽 종단이 다른 쪽 종단으로부터 데이터를 전송 받고 있는 상태에서도 데이터의 출력을 종료할 수 있는 기능
소켓 API에서 응용이 close를 호출하지 않고 shutdown을 호출하여 절반 폐쇄를 수행할 수 있음.
일반적인 응용에서의 종료는 close를 이용하여 양방향 종료를 수행 함.


동시 개방
종단은 SYN을 전송하고 2개의 SYN이 네트워크를 통해 상대방에 전송
종단은 상대편 종단에 대해서 잘 알려진 로컬 포트 번호를 갖음.
동시 폐쇄
양쪽 종단으로부터 능동적 종료를 수행
동시폐쇄는 일반적인 종료와 같은 수의 세그먼트 교환
초기 순서 번호
SYN을 전송하기 전에 연결을 위한 ISN을 선택 함.
ISN은 시간에 따라 변경됨.
4μs마다 1씩 증가.
TCP 세그먼트 위조를 이용한 공격을 막기 위해
예제
연결 설정의 타임아웃
지수형 백오프
1-> 2-> 4-> 8-> 16-> 32
백오프가 이전 백오프의 2
재시도 횟수


3. TCP 옵션


4. TCP의 경로 MTU 발견

경로 MTU
호스트 사이 경로에 있는 네트워크 세그먼트의 최소 MTU
경로 MTU 발견
PMTUD(Path MTU Discovery)
TCP가 연결이 설정되면 자신의 송신 최대 세그먼트 크기를 선택.
연결이 설정되면 각 종단은 MSS를 통지
송신 인터페이스의 minimum MTU나 수신된 MSS를 사용

PMTUD 사용을 보여주기 위해 MTU288byte로 설정
288byte보다 크면 단편화 됨.

(교재 참고)


5. TCP 상태 천이

일반적인 연결 확립과 종료에 대한 TCP 상태

TIME_WAIT 상태
2MSL(Maximum Segment Lifetime) 대기 상태
TCPACK를 잃어버린 경우에 ACK 재전송 하기 위해서
2MSL 대기 상태에 있는 동안, socket pair 재사용 X

FIN_WAIT_2 상태
폐쇄가 FIN보내는 것부터 시작 됨.
FIN_WAIT_2상태에서 상대 측의 FIN을 받지 못하면 교착상태에 빠질 수 있음.

net.ipv4.tcp_fin_timeout 타이머를 설정하여 타이머 종료 후 강제로 CLOSED 상태로 이동 시킴.


6. 재설정 세그먼트

재설정 세그먼트
TCP헤더의 RST 비트필드가 on으로 설정된 세그먼트를 재설정 세그먼트라고 함.
일반적으로 정확하지 않은 세그먼트가 도착할 때 TCP에 의해 보내짐.
존재하지 않는 포트에 대한 연결 요구
연결 요구가 도착할 때 목적지 포트상에 프로세스가 대기하지 않을 때 RST 전송

telnet 10.0.0.2 80
연결 중단
일반적인 종료 : 큐의 데이터를 모두 전송 한 후 FIN 전송
연결 중단 : 데이터를 폐기하고 FIN대신 RST를 보내 종료.
e.g.

ftp를 통해 파일 리스트를 불러오는 중 ^C로 중단시킴.


7. TCP 서버 동작

수신 연결 큐와 TCP 연결
애플리케이션은 커널로 부터 전체 연결의 수를 제한 받음.
(1)SYN이 도착하면 net.ipv4.tcp_max_syn_backlog가 검사됨.
backlog가 초과되면 SYN_RCVD 상태에서 연결이 거절됨.
(2)각 종단은 TCP에 의해 연결이 됐으나 애플리케이션 계층에서는
연결되지는 않은 고정 길이 큐를 가짐.(backlog)
Backlog0net.core.somaxconn에 정의된 최대값 사이 값을 가짐
(3)연결에 대한 큐에 공간이 있다면 SYN/ACK를 보냄.
(4)ACK가 수신되고 새로운 연결이 성립 된다면 애플리케이션에게
연결 성립이 전달됨
(5)서버가 연결성립을 인식하여 데이터를 수신 할 준비가 되지 않은 상태에 데이터가 들어온다면 TCP는 데이터를 큐에 넣음.
(6)새로운 연결을 위한 큐의 공간이 없으면 TCP는 수신된 SYN을 무시함.
아무것도 되돌려 보내지 않으며, 클라이언트는 결국 타임아웃 됨.

수신 연결 큐와 TCP 연결

sock –s –v –q1 -O30000 6666
(-s : 서버, -v : verbose, -q1 : backlog 큐를 1,
 -O30000 :
첫 번째 클라이언트를 받아들이기 전에 30000초 대기, 6666 : 포트번호)


8. TCP 연결 관리를 포함하는 공격

공격1 : SYN flood
한 대 이상의 클라이언트가 spoofed ip 주소를 가지고 TCP
연결시도를 연속으로 생성시키는 DoS 공격
서버가 모든 SYN 패킷에 대해 세션을 생성하고 응답을 기다림.
flash crowd와 구별이 쉽지 않음.

방어1: SYN 쿠키
SYN 쿠키가 사용되면 L4에서 응답하고 세션테이블을 생성하지 않음.
정상적인 사용자로 판단 시 Server의 세션을 생성.
공격자는 SYN/ACK에 대한 반응을 하지 않기 때문에 L4SYN/ACK 응답만 지속 함.

방어: SYN 쿠키
Cookie valueTCP 헤더의 Option 3bit를 제외한 나머지 공간을 활용함.
Sequence number인코딩하여 이 공간에 적재.

정상적인 사용자라면 해당 정보를 잘 분석해서 재응답 패킷을 전송
공격2 : PMTUD를 이용한 공격
매우 작은 MTU 값을 가진 ICMP PTB 메세지 전송.

TCP에게 데이터를 매우 작은 패킷으로 만들게 해 성능을 감소 시킴.
방어:
1. 호스트의 PMTUD를 비활성화
2. PMTUD576bytes 이하의 사이즈로 설정하는 내용을 갖는 ICMP PTB 메시지를 수신한다면 폐기.

3. 최소 패킷 크기를 항상 동일한 값으로 고정시킴.

9.
연결확립
3way hand-shaking
데이터 교환 전 연결확립이 되어야 함.
상태천이도
TCP 동작의 이해를 도와주는 그림
TCPTIME_WAIT

종단이 MSL을 두 배로 설정하고 FIN 신호에 대해 ACK 응답을 대기 함.


반응형

+ Recent posts