이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:





작성자:컴센스
편집자:엔시스(sis@sis.pe.kr)



패킷을 자주 보는 직업상 좀더 자세한 공부가 필요해서 자료를 찾아보다가 정리하는 마음으로 글을 적습니다.
대학교 수업때 좀더 자세히 공부할걸 후회를 하고있습니다...



TCP/IP프로토콜의 패킷 구조와 역할

패킷이란? 

데이터의 묶음 단위로 한번에 전송할 데이터의 크기를 나타냅니다. 
제3계층 이상에서는 이 데이터 묶음을 패킷이라고 부르며, 제2계층에서는 프레임이라고 부릅니다. 
이 패킷의 크기는 네트워크의 종류에 따라 달라지며 Ethernet은 최대 1500bytes크기를 갖고,IEEE 802.3표준에서는 최대 1492bytes크기를 갖습니다.  
그렇다면 데이터를 보낼 때 처음부터 끝까지의 데이터를 한꺼번에 보내면 좋을 텐데 왜 패킷 단위로 데이터를 나누어서 보내야 할까?

그 이유는 다음과 같습니다.

네트워크상에는 하나의 컴퓨터만 있는 것이 아니고 여러 개의 컴퓨터가 있습니다.
이들은 서로 동시 다발적으로 데이터를 주고 받게 되는데 만약에 데이터를 분할하여 전송하지 않고 한번에 보낸다면 한 컴퓨터만 데이터를 주고 받게 되고 나머지 컴퓨터들은 끝날 때 까지 기다릴 수 밖에 없게 됩니다. 또한 이 큰 데이터를 전송하다가 중간에 에러가 발생하게 되면 이 큰 데이터를 처음부터 끝까지 다시 전송하여야 하는데 이것도 결과적으로 큰 문제가 되는것입니다. 그리하여 데이터를 어느 정도 전송에 적합한 크기로 분할 하여 전송을 하면 이러한 문제들을 해결 할 수 있게 됩니다. 그러한 이유로 데이터를 패킷 단위로 나누게 되고 아주 기본 적인 개념입니다.

TCP/IP 프로토콜에서 데이터를 실어 나르는 패킷의 구조와 역할을 자세히 살펴보도록 하겠습니다.

아래의 설명에는 옥텟이라는 단어가 나오는데 옥텟은 바이트와 같은 단위입니다.
즉 1Octet은 1Byte와 같으며 8Bit를 나타내는 것입니다.
 데이터 통신에서는 바이트 대신 옥텟이라는 용어를 자주 쓰기도 합니다.

앞에서 살펴본것처럼 TCP(Transmission Control Protocol)는 OSI 7 Layer중 제4계층의 기능을 제공하며 Connection-oriented 패킷 전송을 제어 하여 데이터 전송시 발생한 에러를 복구 하여 줍니다. IP(Internet Protocol)는 OSI 7 Layer중 제3계층의 기능을 제공하며
네트워크 상에서 최적한 경로를 선택해 데이터를 전송하며 이를 위하여
적절한 Addressing과 Routing 기능을 제공합니다.
이러한 기능을 제공하는 TCP와 IP패킷의 구조를 상세하게 살펴보면 다음과 같습니다.

1. TCP패킷 구조 및 역할

- Source Port(16bit)
상위 application이 어떤 것 인지에 따라 값이 정해지며
송신지 포트 번호를 나타냅니다.
- Destination Port(16bit)
수신지 포트 번호를 나타냅니다
- Sequence Number(32bit)
송신 Data의 일련 번호를 나타냅니다.
- Acknowledgement number(32bit)
수신 Data의 일련 번호를 나타냅니다
- Data Offset(4bit)
- Reserved(6bit)
- Control(6bit)
URG, ACK, PSH, RST, SYN, FIN등으로 TCP의 연결 및 종료를 제어합니다.
- Window(16bit)
메시지 전송시 흐름 제어를 합니다.
- Checksum (16bit)
에러 check를 합니다.
TCP메시지 검사 및 목적지에 제대로 도착했는지 확인합니다.
- Urgent Position(16bit)
- Options(24bit)
- Padding(8bit)
- DATA
상위계층에서 보낸 실제 데이터 부분입니다.

2. IP 패킷 구조 및 역할


- Version(4bit)
IP프로토콜의 버전을 나타냅니다.
현재 IP Version은 IPv4입니다. 즉 이값은 '4'이다.
- Internet Header Length(4bit)
IP 헤더의 크기를 나타냅니다. 4옥텟 단위로 나타냄. 값이 5이면
헤더 길이는 20옥텟이 된다.
- Type Of Service(8bit)
송신중인 IP주소의 서비스 유형을 나타냅니다. 이것은 상위 계층에 의해 지정되며 다음과 같습니다.

0 1 2 우선순위
3 낮은 지연 시간 요청
4 높은 처리 능력 요청
5 높은 신뢰성 요청
6 사용하지 않음
7 사용하지 않음

- Total Length(16bit) :      P헤더와 IP데이터를 포함한 패킷 전체의 길이를 나타냅니다.
- Identification(16bit)  : 패킷의 순서를 나타냅니다
- Fragment Flag (3bit)  :  패킷의 분할 된 부분이 더 있는지 마지막 패킷인지  해당 패킷을 더 분할 해야 하는지를 나타냅니다.

각 비트는 다음과 같은 의미가 있습니다.
비트0 사용하지 않음, 0이어야 함
비트1 분할해도 좋은지의 여부를 나타냄
0 - 분할 가능
1 - 분할 불가
비트2 분할된 패킷인 경우 마지막 패킷인지의 여부를 나타낸다.
0 - 마지막 분할 패킷
1 - 중간의 분할 패킷

- Flagment Offset(13bit)
분할된 단편이 원본 데이터의 어디에 위치하는지를 나타냅니다.
0부터 8192(2의13승)까지 나타낼 수 있습니다.
단위는 8옥텟이므로 원본 데이터로 나타낼수 있는 최대값은 8X8192=65536옥텟입니다.
- Time to Live(8bit)
패킷이 네트워크상에 얼마나 오래 머루를 수 있는지를 나타냅니다.
- Protocol(8bit)
어떤 상위프로토콜에 보내는지를 명기합니다.
TCP는 6, UDP는 17, ICMP는 1이 할당되어 있습니다.
- Header Checksum(16bit)
패킷 전송중 헤더 이상이 있는지를 check합니다.
- Source Address(32bit)
송신지 주소입니다.
- Destination Address(32bit)
수신지 주소입니다.
- Options(27bit)
보통은 사용하지 않으나 시험이나 분석을 할때만 사용한다.
보안단계, 소스경로, 루트 레코드, 시간소인(timestamp)등의 옵션을 사용 할 수 있습니다.
- Padding(5bit)

- DATA
상위계층 헤더를 포함한 데이터 영역입니다.

이상에서 TCP와 IP주소의 패킷 구조에 대해 자세히 살펴 보았습니다.
인터넷을 통해 TCP/IP를 사용하고 계신 여러분들은 한번씩 읽어만 보셔도 각각의 의미를 쉽게 이해 할 수 있을 것입니다.

 

****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 알 수 없는 사용자
,