자격증 노트/정보보안기사

[정보보안기사] TCP 프로토콜

깡냉쓰 2018. 5. 10. 15:03
728x90
반응형

** 전송계층 프로토콜

  • End To End Reliable Delivery
  • Process To Process Communication
    • port : 16bit(2byte), 논리적 주소

TCP 프로토콜
  • 연결지향 프로토콜(Connection Oriented Protocol)
    • 물리적으로 전용회선이 연결되어 있는 것처럼 가상의 연결통로(Software)를 설정해서 통시하는 방식
    • 가상회선방식 : 물리적으로 전용회선이 연결되어 있는 것처럼 논리적으로 동작하는 방식
    • 신뢰할 수 있는 프로토콜(Reliable Protocol)
    • 흐름제어(Flow Control)
      • 상대방이 받을 수 있을 만큼만 데이터를 효율적으로 전송
      • 슬라이딩 윈도우(Sliding Window) 제어방식 사용. 상대방이 수신할 수 있는 크기(Window Size)만큼의 데이터를 연속해서 전달하는 방식
      • Winodw 크기 => 수신자가 수신 가능한 버퍼의 여유공간
    • 에러제어(Error Control)
      • 오류나 손실 없이 전송됨을 보장(손실시 재전송)
    • 혼잡제어(Congestion Control)
      • 혼잡정도에 따라 송신자가 데이터 전송량을 제어
  • TCP 프로토콜 구조
    • Control Flags(6bit) => UAPRSF ** 중요 **
      • URG(Urgent) : 긴급데이터 설정
      • ACK(Acknowledgement) : 수신 확인 응답(ACK) 설정
      • PSH(Push) : 송수신 버퍼에 있는 데이터를 즉시 처리
      • RST(Reset) : 연결 중단(강제종료)
      • SYN(Synchronization) : 연결설정
      • FIN(Finish) : 연결종료(정상종료)
    • Window Size(Receiver Window)
  • TCP 분할(Segmentation)과 재조합(Reassembly)
    • IP => Fragmentation(Network Layer) MTU 크기
    • TCP => Segmentation(Transport Layer)
  • MSS(Maximum Segment Size)
    • MSS는 Frame의 MTU에 영향을 받는다. MTU 크기 - IP헤더(20) - TCP헤더(20) 을 빼면 MSS 크기
      • Application 계층에서 전달된 데이터는 TCP 계층에서  MSS 크기에 따라 분할이 발생한다. 분할된 세그먼트는 수신측에서 재조합되어 Application 계층으로 전달된다.
  • TCP 연결 설정 과정(3-way Handshake)
    • Client(SYN_SENT) => Server(SYN_RCVD) => ESTABLISHED
3-Way HandShake 과정
  • 데이터 송수신 과정
    • 재전송 매커니즘
      • 모든 Segment 전송시마다 재전송 타이머(RTO)가 동작
      • Segment 전송 후 ACK 를 받지 않아 일정시간이 지나면 Segment 재전송
    • 빠른 재전송(Fast Retransmission)
      • RTO 발생전 재전송
      • Timeout이 발생하지 않았는데 duplicated ACK가 3번 발생하면 재전송
  • TCP 연결 종료과정(4-way HandShake)
    • FIN_WAIT_1 : 첫번째 FIN 메시지에 대한 ACK를 대기하는 상태
    • FIN_WAIT_2 : 첫번째 FIN 메시지에 대한 ACK 수신 후 두 번째 FIN 메시지를 수신할 때까지 대기하는 상태
    • TIME_WAIT : 마지막 ACK 전송후 2MSL 동안 대기하는 상태 (Maximum Segment Life Time)
    • CLOSE_WAIT : 첫번째 FIN 메시지에 대한 ACK 응답 후 두번째 FIN 메시지를 전송할 때까지 대기하는 상태
    • LAST_ACK : 두 번째 FIN 메시지 전송 후 마지막 ACK를 대기하는 상태
    • CLOSE : 종료된 상태

4-Way HandSahke 과정

  • 연결 요청 거부(강제종료)

    • 추후

  • 연결 중단(abort)

    • 추후

  • TCP 세션 하이재킹(Session Hijacking)
    • 케빈 미트닉이 사용한 공격기법(IP Spoofing, TCP 하이재킹을 만든 유명한 해커)
    • TCP는 다음 식별자를 통해 상호간에 인식하게 된다
      • 출발지 IP/PORT
      • 목적지 IP/PORT
      • Sequence Number / Acknowledgement Number
    • 하이재킹은 위와 같은 세션 식별정보를 공격자가 위조하여 세션을 탈취하는 공격

(출처 : https://blog.naver.com/bitnang/70180420086)

    • 공격자가 서버와 TCP 연결이 된 후, 클라이언트가 서버와 통신을 하게 되면 (위 그림 6번) ACK Storm이 발생할 수 있다.
    • ACK STORM
      • Seq/Ack 가 일치하지 않아서 서로 계속 메시지를 주고 받는 상태
      • 클라이언트에서 정상적인 패킷을 서버로 보내지만, 이미 공격자와 통신을 한 상태이므로 시퀀스 넘버가 일치하지 않음


728x90
반응형