티스토리 뷰

Network - Ipv4패킷 구조




  IPv4 패킷 구조

  ↑ IPv4( IP version 4 ) 패킷 

   # 현재 쓰이는 대부분의 패킷




  Ethernet Header


   -  이더넷 프로토콜 ( 물리적 통신방법 ) 을 지원하는 방식을 이더넷 헤더라고 한다.

   -  사이즈 : 14byte 

      

 구성

 크기

 특징

 도착지 하드웨어 주소 ( Destination MAC Address )

 6bytes

 *

 출발지 하드웨어 주소 ( Source MAC Address )

 6bytes

  *

 Ethernet Type 

 2bytes 

 - 대표적인 타입 : IP, arp, ...

 - 길이 : 3~1500bytes 







  IP header


   -  IP 패킷의 앞부분에서 주소등 각종 제어 정보를 담고 있다.

   -  사이즈 : 최소 20bytes ~ 60bytes




  ↑IP header 구성



 구성

 크기

 특징 

 Version

 4bits

 현재 IPv4를 사용 

 Header Length( IHL ) 

 4bits

 헤더의 길이 

 Type of Service

 8bits 

 - 요구되는 서비스 품질 

 - 서비스 형태에 따라서 서비스 질에 차이를 줌 ( 현재는 사용되지 않는다. )

 Total Packet Length

 16bits 

 - IP header + tcp( udp ) + data

 - IP packet의 전체 크기

 Fragment Identifier

 16bits 

 - 각 조각이 동일한 데이터 그램에 속하면 같은 일련번호를 취한다. 

 Fragmentation Flag  

 16bits

 - 분열의 특성을 나타내는 플래그  

 Fragmentation Offset 

 - 조각나기 전 원래의 데이터 그램 8bytes 단위의 위치

 TTL( Time To Live )

 8bits 

 - IP 패킷 수명 

 Protocol 

 8bits 

 - Protocol의 type

 - ICMP( 1 ) , TCP( 6 ) , UDP ( 17 ) 

 Header Checksum

 16bits  

 - 헤더에 대한 오류 검출 

 Source IP Address

 32bits 

 - 출발지 IP 주소 

 Destination IP Address 

 32bits 

 - 도착지 IP 주소 

 IP 헤더 옵션 

 가변 

 - 기능추가를 위해서 사용 ( 보안기능등)

 Padding  

 가변

 - 특별한 용도x, 32bit 크기를 맞추기 위해 사용 


 Fragment 3개의 필드는 IP 단편화( 조각화, 분열 )과 재배열과 관련된 필드이다.





  TCP/UDP header


   -  UDP 헤더는 8bytes, TCP 헤더는 20Bytes이다.




  # TCP header


  ↑ IP Datagram





  ↑TCP header 구성



구성

 크기  

 특징 

 Source Port / Destination Port 

 각 16bit 

  - IP주소 + 포트 번호 =  소켓 주소 

 Sequence Number

 32bit  

 

 - 바이트 단위로 구분되어 순서화되는 번호 ( 이를통해 TCP에서는 신뢰성 및 흐름제어 )

 - 순서 가능범위 : 32bits 이므로 최대 4기가 바이트 크기의 송신 데이터를 순서화 가능

 - 순서번호의 의미 : TCP 세그먼트의 첫번째 바이트에 부여되는 번호

 - 초기 순서번호 ( ISN, Initial Sequence Number ) : 초기 TCP 연결설정을 위함

    # 난수 발생기로 초기순서번호( ISN )를 생성, 이를 순서번호 필드에 넣어서 전송

    # TCP는 양방향이므로 각 방향 마다 다른 ISN번호가 사용된다.


 Acknowledgement

 32bits 

 - 확인응답번호/ 승인번호 : 수신하기를 기대하는 다음 바이트 번호 

    =  ( 마지막 수신성공 순서번호 +1 )

 헤더 길이 필드

 4bits 

 - TCP 헤더 길이를 바이트( 32bits ) 단위로 표시 

 예약된 영역

 6bits 

 - 사전에 예약된 영역

 6개의 Flag bits 

 6bit

 

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

 - 순서대로 긴급 데이터, 응답, 밀어넣기, 다시연결, 연결 요청, 연결 종료 요청

                → (URG, ACK, PSH,  RST, SYN,  FIN)


 윈도우 크기

 16bits 

 - 흐름제어를 위해 사용되는 필드

 - TCP 연결은 양방향이므로, 매 TCP 세그먼트를 보낼때 마다 이 필드에 자신의 수신

   버퍼 용량값을 채워 보내게됨

 Checksum 

 16bits

 - 검사 필드 

 Urgent pointer 

 16bits

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

 옵션

 가변

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




  # UDP header



   -  UDP 헤더는 TCP처럼 16bits의 포트번호를 사용하지만, 헤더는 고정크키 8bytes만 사용한다.

      # 헤더 처리에 많은 시간과 노력을 요하지 않는다.




  구성

  크기

 특징 

 수신 포트 번호 

 

  *

 패킷 전체 길이 

 최소 8bits( 헤더 만 포함 될 떄 ) 

  *

 checksum 

  가변 

 선택항목, 체크섬 값이 0이면 수신측은 체크섬 계산을 하지 않는다. 




'Network' 카테고리의 다른 글

Network - LAN 과 WAN  (0) 2017.04.07
Network - 인터넷, 인트라넷, 엑스트라넷  (0) 2017.04.06
Network - TCP 통신과 UDP통신  (3) 2017.03.29
Network - 소켓통신  (1) 2017.03.24
네트워크 해킹 연습 사이트  (0) 2017.02.12