본문 바로가기

네트워크

패킷(packet) 생성 과정과 패킷 분석 방법

네트워크 패킷(packet) 생성 과정


어플리케이션단에서 트렌젝션단으로 데이터를 준다. - 어플리케이션단에서는 데이터를 생성.


트렌젝션단은 포트 정보를 헤더로 붙혀 네트워크단으로 세그먼트를 준다. 

- 트렌젝션단에서는 세그먼트(데이터+포트정보)를 생성.


네트워크단은 ip정보를 헤더로 붙혀 데이터링크단에게  데이터그램을 준다. 

- 네트워크단에서는 데이터그램(세그먼트+ip)을 생성.


데이터링크단은 MAC주소를 해더로 붙혀 프레임 생성하고 피지컬단을 통해 목적지로 보냄. 

- 데이터링크단에서는 프레임(데이터그램+MAC)을 생성. 



패킷분석


패킷(프레임) 순서 

받는 사람 MAC주소 6바이트 - 보내는 MAC주소 6바이트 - type(0800=IP, 0806=ARP) 2바이트 - data(데이터그램) - FCS 뒤에서 4바이트


데이터그램

ip 헤더(프레임 type값 0800) 순서

버전(4비트) - header length(4비트) - type service(1바이트) - total length(2바이트) - identification(16비트) - flag(3비트) - fragment offset(13비트) - TTL(1바이트) - protocol type(8비트) - header checksum(16비트) - 보내는 사람 ip주소(32비트) -  받는 사람 ip주소(32비트) - data(세그먼트) 나머지 전부


각 부분 설명

버전 4비트 - ip버전을 표시한다.

header length 4비트 - 헤더의 길이를 표시한다. 20바이트가 기본 word 단위로 기록된다.

type service 1바이트 - 사용하지 않는다. 값을 넣어봐짜 무시된다.

total length 2바이트 - 패킷 전체 길이를 표시한다.

identification 16비트 - 호스트가 연속적으로 전송하는 각 데이터그램의 식별을 위한 번호이다.

flag 3비트 - 첫비트는 안쓴다. 2번째는 같은 패킷인지 표시. 3번째는 뒤에 같은 패킷 더오니까 합치라고 알려준다.

fragment offset 13비트 - 같은 데이터의 몇번째 바이트인지 알려준다. 즉, 데이터 순서를 맞춰준다.

TTL 1바이트 - 255로 시작. 라우터를 지나갈때마다 1씩 줄어들면서 0이되면 이 패킷을 없앤다. 패킷이 네트워크망을 무한으로 떠다니는 것을 막기 방지한다.

protocol type 8비트 - 1=icmp, 6=tcp, 17=udp

header checksum 16비트 - 헤더가 깨졌는지 아닌지 확인한다. 헤더의 모든 2진수 값을 더해서 구한다.


ARP 헤더(프레임 type값 0806) 순서


H/W type(2바이트) - protocol type(2바이트) - H/W length(1바이트) - protocol length(1바이트) - OP(2바이트) - 보내는 사람 MAC주소(6바이트) - 보내는사람 ip주소(4바이트) - 받는 사람 MAC주소(6바이트) - 받는사람 ip주소(4바이트)


각 부분 설명

H/W type 2바이트 - 네트워크 유형을 나타낸다. 1=이더넷. 일반적인 환경에선 이더넷밖에 없다.

protocol type 2바이트 - IPv4, IPv6, ATM등 type을 표시한다.

H/W length 1바이트 - H/W type에서 사용하는 주소 길이를 나타낸다. 이더넷=6바이트

protocol length 1바이트 - protocol tpye에서 사용하는 주소 길이를 나타낸다. ipv4=4바이트

OP 2바이트 - ARP요청인지 응답인지 표시한다. 1=ARP요청, 2=ARP응답이다.


icmp 패킷 구조(ping)

icmp는 상대방의 상태를 확인하기 위한 protocol이다. type과 code에 따라서 용도를 구분한다.

type(1바이트) - code(1바이트) - checksum(2바이트) - identifier(2바이트) - sequence(2바이트) - 데이터(나머지)


각 부분 설명

type + code - 두개를 합쳐서 본다. tpye : 0 code : 0  - 에코(ping) 응답, type : 8 code : 0 - 에코(ping) 요청

identifier 2바이트 - ping 프로세스의 ID

sequence 2바이트 - 패킷의 순서를 표시한다.

데이터 - 쓰레기값(의미없는 값)이 들어간다. 여기에 리눅스 명령어등 있으면 백도어가 있는 것이다.



ICMP redirect 패킷 - 클라이언트에게 이 패킷은 나에게 보내지말라고 알려주는 것(이 패킷은 라우터가 2개 연결되있어야되고 동적프로토콜을 사용하고 있어야됨.)

'네트워크' 카테고리의 다른 글

VPN 이란 - 개념과 종류  (0) 2018.08.31
OSI 7계층(layer)란? 간단한 정리  (0) 2018.08.24