반응형

TCP는 4계층 트랜스포트계층

그러므로 TCP헤더는 IP헤더의 뒤에 붙게된다.



OSI 7 Layer( 7계층 )


이미지 참조

https://vitalholic.tistory.com/271



TCP헤더



TCP 제어 플래그 [정보통신기술용어해설]



발신지 포트 주소(SourcePort,16bit)

송신 측의 포트번호


목적지 포트 주소(DestinationPort,16bit)

수신 측의 포트번호


순서 번호(Sequence number,32bit)

바이트 단위로 구분되어 순서화되는 번호임

-이를 통해 , TCP에서는 신뢰성 및 흐름제어 기능 제공


수신확인 번호(Acknowledgement Number,32bit)

수신하기를 기대하는 다음 바이트 번호=(마지막 수신 성공 순서번호 +1)



헤더 길이 필드(Header Length,4bit)

TCP헤더 길이를 4byte 단위로 표시

20~60바이트 정의


예약비트(Reserved,6bit)

추후 사용을 위해 예약된 필드


TCP제어 플레그(Control Flags,6bit)

TCP 세그먼트 전달과 관련되어 TCP회선 및 데이터 관리 제어 기능을 하는 플래그

-흐름제어,연결설정,연결종료,연결리셋,데이터전송모드


ㅇ URG (Urgent)

     - Urgent Pointer 필드에 값이 채워져있음을 알림

        . 송신측 상위 계층이 긴급 데이터라고 알려주면,

        . 긴급비트 URG를 1 로 설정하고,

        . 순서에 상관없이 먼저 송신됨

     - 긴급 데이터의 마지막 바이트 위치가 Urgent Pointer로 가리켜짐


  ㅇ ACK (Acknowledgement)

     - 확인응답 필드에 확인응답번호(Acknowledgement Number) 값이 셋팅됐음을 알림

        . 1로 셋팅되면, 확인번호 유효함을 뜻함

        . 0로 셋팅되면, 확인번호 미포함 (즉, 32 비트 크기의 확인응답번호 필드 무시됨)

     - SYN 세그먼트 전송 이후(TCP 연결 시작후) 모든 세그먼트에는 항상 이 비트가 1로 셋팅됨


  ㅇ PSH (Push)

     - 버퍼링된 데이터를 가능한한 빨리 상위 계층 응용프로그램에 즉시 전달할 것

        . 수신측은 버퍼가 찰 때까지 기다리지 않고, 

          수신 즉시 버퍼링된 데이터를 응용프로그램에 전달

        . 例) telnet 세션에서 `q` 입력 만으로 세션 종료를 알릴 때 등

     - 때론, 서버측에서 더이상 전송할 데이터가 없음을 나타내기도 함


  ※ 아래 3개 비트 플래그(RST,SYN,FIN)는 TCP 연결설정 및 TCP 연결종료에 주체적으로 사용됨


  ㅇ RST (Reset)        [강제 연결 초기화 용도]

     - 연결확립(ESTABLISHED)된 회선에 강제 리셋 요청 

        . 강제 리셋 : RST=1          (RST 세그먼트 또는 RESET 세그먼트)


        . 연결 상의 문제를 발견한 장비가 RST 플래그를 `1`로 설정한 TCP 세그먼트를 송출

           .. LISTEN,SYN_RCVD 상태일때 => RST 수신한 경우에 => LISTEN 상태로 들어감

           .. 그밖의 상태 일때 => RST 수신한 경우에 => 연결 끓고 CLOSED 상태로 들어감


     * 반 개방 또는 연결 문제 등의 상황 처리를 위한 특별한 초기화용 제어 비트


  ㅇ SYN (Synchronize)  [연결시작,회선개설 용도]

     - TCP 연결설정 초기화를 위한 순서번호의 동기화  

        . 연결요청  : SYN=1, ACK=0   (SYN 세그먼트)

        . 연결허락  : SYN=1, ACK=1   (SYN+ACK 세그먼트)

        . 연결설정  : ACK=1          (ACK 세그먼트)


     * 즉, 송수신 간에 순서번호의 동기화


  ㅇ FIN (Finish)       [연결해제,회선종결 용도]

     - 송신기가 데이타 보내기를 끝마침

        . 종결요청 : FIN=1           (FIN 세그먼트)

        . 종결응답 : FIN=1, ACK=1    (FIN+ACK 세그먼트)


     * 즉, 연결을 종료하고 싶다는 뜻을 상대에게 보내는 것






윈도우 크기(window size,16bit)

흐름제어를 위해 사용하는 16비트 필드

TCP흐름제어를 위해 송신자에게 자신의 수신 버퍼 여유용량 크기를 지속적으로 통보


체크섬(checksum,16bit)

TCP 세그먼트의 내용이 유효한지 검증하고 손상여부를 검사할 수 있다.


긴급 포인트(Urgent pointer,16bit)

TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호


옵션(Option,0~40byte)

최대 40바이트까지 옵션 데이터 포함가능

ex) TCP MSS 옵션을 협상하거나,주어진 윈도우 크기 보다 더 크게 사용하거나,

선택확인응답을 하거나,타임스탬프 옵션 정의 등



위 필드 중 상대쪽에서 오는 방향과 관련된 필드들 


  ※ TCP 헤더 내 대부분의 필드들은 양방향에서 모두 쓰이나,

     - 다음 3개 필드는 상대측으로부터 받는 방향에 쓰여지는 필드들임


 TCP 제어 플래그 내 `ACK 제어 비트`

     - 확인응답번호 필드에 확인응답번호(Acknowledgement Number) 값이 셋팅됐음을 알림


 확인응답번호 (Acknowledgement Number)

     - 통상,  `순서번호 + 1`로 설정됨


윈도우 크기 (window size)  





정보보안기사 실기 기출문제



14. TCP FLAG는 URG, ACK, PSH, RST, SYN, FIN를 순서대로 설정한다. 아래에서 TCP 연결설정 및 연결해제 과정에서TCP FLAG 비트와 순서번호가 순서에 맞도록 빈칸을 채우시오.

----------

(1) TCP 연결설정 과정

[Client>Server] , TCP Flag[      A     ] , SEQ(  B  ) , ACK(0)

[Server>Client] , TCP Flag[010010] , SEQ(  C  ) , ACK(345)

[Client>Server] , TCP Flag[010000] , SEQ(345) , ACK(678)


(2) TCP 연결해제 과정

[Client>Server] , TCP Flag[010001] , SEQ(1234) , ACK(6789)

[Server>Client] , TCP Flag[     D     ] , SEQ(6789) , ACK(1235)

[Server>Client] , TCP Flag[     E      ] , SEQ(6789) , ACK(1235)

[Client>Server] , TCP Flag[010000] , SEQ(1235) , ACK(6790)

----------

정답확인 : http://q.fran.kr/문제/9715



TCP 연결설정





TCP연결해제






이미지참조

https://gmlwjd9405.github.io/images/network/3-way-handshaking.png







반응형

'보안 > 정보보안기사' 카테고리의 다른 글

/etc/passwd /etc/shadow 필드  (0) 2020.07.05
Snort  (0) 2020.07.02
VLAN  (0) 2020.03.11
WAP 계층구조  (0) 2020.03.09
방화벽  (0) 2020.03.09
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기