2012년 2월 6일 월요일

TCP/IP의 패킷구조와 역할


TCP/IP의 패킷구조와 역할

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패킷의 구조를 상세하게 살펴보면 다음과 같습니다.
[Ethernet Frame 구조]

○ 기능 : 한  스테이션에서 다른 스테이션으로 안전하고 효과적으로 패킷을 전송하는 컨테이너(container)
○ Ethernet frame 구조
 
Preamble : 패킷(프래임) 동기등을 위해 각 프래임의 해더 맨앞에 붙이는 영억
SFD(Start of frame delimiter)‏
   : 브래임의 시작부근에서 프리엠블 바로 뒤에 붙어지는 10101011로 구성된 1byte 짜리 비트열
     SFD 비트열부터는 바이트 단위로 구성되어 있다는 사실을 알리는 프래임 동기용 비트열
- Destination address : 목적지 MAC 주소
- Source address : 송신지 MAC 주소
Type : 상위 계층 프로토콜 종류를 표시 0x600 이상이면 Type(DIX 2.0), 이하이면 Length(802.3)로 해석된다
   . Type : 많은 타임을 가지고 있으면 대표적인 Type은 IP(Internet Protocol)을 들수 있다
   . Length : 길이(3 ~ 1500 byte)를 나타낸다
- DATA :  상위 프로토콜 데이터 패킷
FCS (Frame Check Sequence)‏ : 프레임에 문제가 있는지 판별에 사용, CRC
  . 순환중복검사(CRC:Cyclic Redundancy Check)는 에러검출 방법중의 하나로 송신측에서 데이타로 부터 다항식에 의해
    추출된 결과를 여분의 오류검사필드(FCS:Frame Check Sequence)에 덧붙여 보내면, 수신측에서는 동일한 방법으로
    추출한 결과와의 일치성으로 오류검사를 하는 기술이다
 
[IP Packet 구조]
- Version(4 bits) : IP 버전을 표시(ex IPv4 or IPv6)
- HL(Header Length)
  : IP 패킷에서 헤더가 차지하는 길이
    IP패킷은 "헤더+데이터+옵션"으로 구성되므로 헤더의 길이를 알면 데이터의 시작점을 할수 있다.
- TOS(Type Of Service)
  ; 서비스 타입 및 수준을 표시함(패킷이 얼마나 빨리 처리/전달되어야 하는가에 대한 정보)
    111 : 네트워크 컨트롤용
    110 : 인터네트워크 컨트롤용
    101 : CRITIC/ECP
    100 : 플래시 오버라이드용
    011 : 플래시 용
    010 : 즉시 처리용
    001 : 우선 처리용
    000 : 일반 처리용
- Total Length(16 bits)
   ; 패킷의 전체 길이를 표시
- Identification(16 bits)
   ; 하나의 패킷이 여러 조각으로 분할되었을 경우 각 조각을 구분하기 위하여 부여하는 정보
- Flags(3 bits)
   ; 패킷 분할에 관한 커트롤 정보
     Bit 0 : 항상 0으로 예약되어 있음
     Bit 1 : (DF) 0 = 분할가능, 1 = 분할불가
     Bit 2 : (MF) 0 = 마지막 조각, 1 = 이후 조각 더 있음
- Fragment Offset(13 bits)
  ; 이 조각(Fragment)이 어느 데이터그램(IP패킷)에 소속되는지 표시
- TTL(Time to Live) 8 bits
  ; 이 패킷이 인터넷에서 사용될 수 있는 시간을 표시
    일반적으로 라우터를 하나 거칠 때마다 1씩 줄어들어 0 이 되면 폐기됨
- Protocol(8 bits)
  ; 상위 계층의 프로토콜을 표시(ex : tcp/udp 등)
- Header Checksum(32 bits)
  ; 해더 부분에 대하여 에러 발생시 에러 정정을 위한 체크
- Source Address(32 bits) : 출발시 IP 주소
- Destination Address(32 bits) : 목적지 IP 주소
- Option(27 bits) : 선택사양, 보안단계, 소스경로, Route recode, timestamp등
 
[TCP Packet 구조]
 
 
 
- Source port(16 bits) : 상위 Application에 따른 값이 결정되며 송신지 포트 번호를 나타냄
- Destination port (16 bits) : 수신지 포트 번호를 나타냄
- Sequence Number(23 bits) : 패킷의 송신 Data의 일련번호를 나타냄
- Acknowledgement number(32 bits) : 수신 Data의 일련 번호를 나타냄(수신될 다음번 바이트의 예상 일련번호)
- Data Offset(4 bits) : 패킷내의 데이터 오프셋
- Reserved(6 bits)
- Control(6 bits) : TCP의 연결 및 종료를 제어합니다
   ; URG(긴급포인터)
     ACK(승인)
     PSH(푸쉬기능)
     RST(접속의 리셋)
     SYN(동기화 일련번호)
     FIN(송신자로부터 더 이상의 데이터 없음) 등
- Window(16 bits) : 메시지 전송시 흐름제어를 합니다.
- Checksum(16 bits) : 에러 check를 합니다, TCP메시지 검사 및 목적지에 제대로 도착했는지 확인
- Urgent Position(16 bits) : TCP 긴급 포인터
- Options(24 birts) : TCP 옵션들
   ; SEG_SEQ : 패킷의 일련번호
     SEG_ACK : 패킷의 확인번호
     SEG_FLAG : 제어비트
- Padding(8 bits)


댓글 없음:

댓글 쓰기