본문 바로가기

정보보안/네트워크 보안

[네트워크 기본학습] TCP 프로토콜

TCP 프로토콜

 

① 개념

  • 연결지향 프로토콜 
    • 물리적으로 전용회선이 연결된 것처럼 가상의 연결통로를 설정해서 통신하는 방식
    • 데이터 전송 순서를 보장해는 순서제어 기능을한다.
    • 스트림 기반의 전송방식을 사용한다. 즉, 데이터를 정해진 크기로 전송하는 것이 아니라, 임의의 크기로 나누어 연속해서 전송하는 방식을 사용한다.
  • 신뢰할 수 있는 프로토콜
    • 흐름제어 : 상대방이 받을 수 있을만큼만 데이터를 효율적으로 전송해주는 것
      • 흐름제어를 위해 슬라이딩 윈도우 제어방식을 사용한다. 세그먼트 전송 시 마다 수신확인응답을 수신한 후 전송하게 되면 왕복시간이 길 경우 단위 시간당 데이터 전송량이 매우 떨어지므로 효율적으로 전송하기 위해 상대방이 받을 수 있는 범위 내에서 연속적으로 전송
    • 오류제어 : 데이터의 오류나 누락 없이 안전한 전송을 보장해주는 것
      • 오류 또는 누락 발생 시 재전송을 수행하여 이를 보정한ㄴ다.
    • 혼잡제어 : 네트워크의 혼잡 정도에 따라 송신자가 데이터 전송량을 제어하는 것
      • 혼잡 정도에 대한 판단 기준은 데이터의 손실 발생 유무로 판단한다. 전송한 데이터에 누락이 발생하면 네트워크가 혼잡한 상태로 판단

 

② 구조

  • Source Port : 출발지 포트번호
  • Destination Port : 목적지 포트번호
  • Sequence Number : 송신 데이터 순서번호
    • 송신 시 전송하는 데이터의 시작 바이트 순번을 담는다. 바이트 순번은 전송하는 데이터의 바이트 단위로 부여되는 연속된 번호를 의미한다.
    • 연결설정 단계에서 초기 순서번호(ISN:Initial Seqeunce Number)를 상호 간에 주고받는다. 초기 순서번호는 0부터 시작한느 것이 아니라 임의의 수를 할당해서 사용한다.
  • Acknowlegment Number : 상대방이 다음에 전송할 순서번호
    • 수신 확인 응답(ACK)와 함께 해당 필드에 상대방이 다음에 전송할 순서번호를 담아서 보낸다.
  • HLEN : 헤더의 길이
    • 4Bytes 단위로 표시하며 헤더는 기본 헤더 20bytes + 옵션헤더 ~40bytes로 구성된다
  • Reserved: 사용 x
  • Control Flags
    • URG(Urgent pointer is valid) : 긴급 데이터 전송을 알리는 제어 플래그
    • ACK(Acknowlegment is valid) :상대방이 보낸 데이터가 정상 수신되었음을 알리는 "수신확인응답" 제어플래그
    • PSH(Request for push) : 송수신 데이터의 즉시 처리를 위한 제어 플래그
      • 송신 측 동작 : 송신 버퍼에 있는 데이터를 즉시 전송
      • 수신 측 동작 : 수신 버퍼에 있는 데이터를 즉시 전송
    • RST(Reset the connection) : 연결 강제 중단(연결 초기화)을 위한 제어플래그
    • SYN(Synchronize sequence numbers) : 연결 설정을 위한 제어플래그
    • FIN(Terminate the connection) : 연결 정상 종료를 위한 제어플래그
  • Window Size
    • 수신측에서 송신측에 보내는 Receiver window size로 수신 버퍼의 여유 공간 크기를 의미. 송신 측에선 이를 이용해 흐름제어를 한다.
  • Checksum
    • 헤더를 포암한 전체 세그먼트에 대한 오류를 검사하기 위한 필드
  • Urgent Pointer
    • 세그먼트가 긴급데이터(URG)를 포함하고 있는 경우에 사용되는 필드로 긴급데이터의 위치값을 담고있다.