맨위로

작성 기간 2012.08.19 ~ 2012.08.29

안녕하세요 ? 이번강의에서는 와이어샤크를 통한 TCP (Transmisson Control Protocol , 전송 제어 프로토콜) 의 패킷을 분석해보도록 하겠습니다. 

TCP 패킷 구조 분석

TCP 패킷구조를 순차적으로 알아보도록 하겠습니다. 먼저 알아볼 패킷구조는 다음과 같습니다.




  • Source port (발신지 포트 필드)

발신지 포트필드는 발신지에서 오픈된 포트이다. 위의 패킷을 보면 http 포트 (80) 인것을 확인할수 있다. 포트 번호 목록은 http://www.iana.org/assignments/service-names-port-numbers 에서 확인할수 있다.

  • Destination port (목적지 포트 필드)
목적지 포트필드는 수신지에서 오픈된 포트이다. 위의 패킷을 보면 58869 포트인것을 확인할수 있다. 포트 번호 목록은 http://www.iana.org/assignments/service-names-port-numbers 에서 확인할수 있다.

  • Sequence number (순차 번호 필드)
순차번호필드는 고유한 번호를 가지며, 이값으로 TCP 세그먼트에 대한 식별값을 제공하며, 통신 스트림일부가 분실되면 확인을 위해 수신자를 사용가능하게 한다. 이 순차번호는 패킷에 포함되있는 데이터 만큼 증가한다.  

  • Acknowledgment number (확인 응답 번호 필드)
확인 응답 번호 필드는 다음번에 기대되는 순차번호를 표시한다. 

  • Header length (데이터 오프셋 필드)
데이터 오프셋 필드는 TCP 헤더의 길이를 정의한다. 길이는 4바이트씩 증가된다. 이필드의 값이 5이면 20바이트 길이를 갖는다는것이다. TCP 헤더의 길이가 다양하게 변화시킬 필요가 있으므로 이필드가 필요하다. 

이제 다음으로 알아볼 패킷은 플래그 필드이다. 패킷은 다음과 같다.


플래그 필드에서 사용되는 플래그는 다음과 같다.

 플래그 필드 이름

 설명

URG (Urgent) 

긴급 포인터 

ACK (Acknowledgment)

확인 응답 패킷

PSH (Push)

네트워크에서 버퍼링 우회와 데이터 즉시 통과

RST (Reset)

연결 닫기 

SYN (Synchronize)

동기화 순차번호

FIN (Finish)

트랜잭션 종료

플래그들에대해서 간단하게 설명해보면 다음과 같다.

  • 긴급비트 (Urgent)

이 비트는 잘사용되지는 않는다. 만약 이비트가 1로 설정된경우 긴급 포인터 필드로 정의되는 특정위치에서 시작하는 패킷의 대이터를 일기 위해 발신자가 원하는 수신자를 나타낸다.

  • 확인 응답 비트 (ACK)

이 비트가 설정되있으면 이패킷은 확인응답이라는 것을 나타낸다.

  • Push 비트 (PSH)

이 플래그는 TCP 세그먼트가 발신자나 수신자의 측면에서 버퍼에 유지되면 안된다는 것을 표시한다.

  • Reset 비트 (RST)

RST 비트 설정에 대한 TCP 패킷은 TCP 연결을 종료한다. 즉 접속을 강제로 종료한다. 이패킷은 이상 종료시 사용된다.

  • 동기화 비트 (SYN)

SYN 비트는 송신측과 수신측의 일련번호를 확인할때 사용된다. 이비트가 1이면 이패킷은 TCP 핸드셰이크 프로세스의 SYN 단계라는 말이된다.

  • Finish 비트 (FIN)

Finish 비트는 프로세스가 완료됐고 데이터 스트림이 전송됐다는것을 의미한다. 

다음으로 윈도우 필드에 대해서 알아보도록 하겠습니다. 패킷의 내용은 다음과 같습니다.

  • 윈도우 필드
이 필드는 TCP 수신 버퍼를 바이트 크기로 표시한다. 이바이트가 0이라면 수신자가 사용가능한 버퍼 공간을 갖지 않겠다는 말이된다. 이필드에 나타낼수 있는 최대 값은 65,535 이다.

윈도우 필드다음알아볼 필드는 체크섬 필드입니다. 패킷내용은 다음과 같습니다.

  • 체크섬 필드 
체크섬 필드는 TCP 헤더와 데이터의 내용 뿐만아니라 IP 헤더로 부터 파생된 의사 헤더에 대한 내용을 수행한다.

다음으로 알아볼 필드는 긴급 포인터 필드입니다. 이필드는 옵션이므로 모든 패킷에 존재하지 않습니다.

  • 긴급 포인터 필드 (옵션)
이 필드는 URG 비트가 설정된 경우에만 사용된다. URG가 설정된경우 수신자는 반드시 이 필드를 검사해야한다. 일반적인 기능은 아니다. 디스플레이 필터는 tcp.urgent_pointer 이다.

이제 마지막 부분인 TCP 옵션 영역 에 대해서 알아보도록 하겠습니다. 패킷은 다음과 같습니다.

자주 볼수있는 옵션은 최대 세그먼트크기 MSS 이다. 이옵션의 용도는 호스트를 지원하는 패킷의 크기를 정의하는것이다. 디스플레이 필터는 tcp.options 이다. 아래는 일반적으로 볼수있는 TCP 옵션들이다.

 옵션 번호

설명 

 0

옵션 목록의 끝 

 1

연산이 없음 

 2

최대 세그먼트 크기 

 3

WSOPT 윈도우 스케일링 

 4

SACK 허용 

 5

SACK 



마치며

글을 읽다가 궁금하거나 모르시는게 생기시면 댓글로 질문해주시기 바랍니다. 




Posted by STIH

댓글을 달아 주세요