네트워크 패킷(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 |