패킷의 이해 -1 [Ethernet, IP]
SEGMENT
TCP 헤더 | MESSAGE |
DATAGRAM
IP 헤더 | TCP 헤더 | MESSAGE |
FRAME
Ethernet 헤더 | IP 헤더 | TCP 헤더 | MESSAGE |
Link Layer 구조
Premble (8 byte) |
DA (6 byte) |
SA (6 byte) |
Type (2 byte) |
Data | FCS (4 byte) |
이더넷(Ethernet) 헤더의 구조
-- 물리적인 이더넷 장비로만 분석할 수 있는 부분
Premble : 동기화에 사용되는 64bit field로서 0과 1로 구성되고, 네트워크 장치가 패킷을 받아서 이더넷 프레임의 시작 부분을 결정하고 동기화 할 때 사용한다.
FCS(Frame Check Sequence) : 에러 검출을 위해 사용되는 field로, 수신 측이나 송신 측 호스트 시스템에 의해 프레임에 포함되는 내용을 계산한 값.
값이 다르면 해당 프레임은 무시된다.
DA(Destination Address) : 목적지 시스템의 이더넷 주소
SA(Source Address) : 패킷을 전송하는 호스트의 이더넷 주소
Type : 이더넷 프레임 상단의 데이터의 종류
- 0800 : IP
- 86DD : IPv6
- 0806 : ARP
Data : 상위 Layer의 프로토콜에 의해 사용되는 정보가 포함됨
패킷 분석 실습 - Ethernet 헤더
Ethernet 패킷 분석
Ethernet
- Destination MAC Add : 00:1a:4d:4e:ad:ac
- Source MAC Add : 00:0c:29:15:e4:5e
- Type : 0800 > IP
Network Layer 구조
IP(Internet protocol)
- 가장 대표적인 네트워크 계층의 프로토콜로, 하위 계층의 서비스를 이용하여 두 노드 간의 데이터 전송 경로를 확립해 주는 역할을 한다.
IP Header
IP 헤더의 구조
Version : 인터넷 프로토콜 버전으로 IPv4는 4, IPv6는 6
Header Length : IP 프로토콜 헤더의 길이 (word 단위)
Type Of Service : 교환하는 데이터의 종류에 따라 '지연 통신효율', '신뢰성의 우선순위'를 지정할 수 있음.
데이터그램에 기대되는 QoS(Quality of Service)를 지시하는 8bit 코드
- TOS 구조
- Precedence(선행) 필드 : 현재는 무시됨
Precedence (3 bit) |
TOS(Type-Of-Service) (4 bit) |
비사용 (1 bit) |
- TOS(Type-Of-Service) 필드 : 각 비트는 최소지연, 최대처리율, 최대신뢰성, 최소비용을 의미한다. 전부 0으로 설정된 경우 표준 서비스를 의미한다.
Total Length : IP의 프로토콜 헤더에 계속되는 데이터도 포함한 IP 패킷의 전체 길이, 전체 데이터그램의 길이 (Byte단위)
Identification : 호스트가 연속적으로 전송하는 각 데이터그램을 식별하기 위한 번호
Flags : IP 데이터그램의 분할(Fragment)에 관한 정보를 나타냄
- 첫 번째 비트 : 사용하지 않음 (항상 0으로 설정)
- 두 번째 비트 : Do not fragment > 해당 패킷의 분할 여부를 나타낸다. > 0: 분열 가능 , 1: 분열 방지
- 세 번째 비트 : More fragment > 다음 패킷도 Identification number가 같을 것이니 통합하지 말라는 의미이다. > 0 : 해당 패킷이 마지막 패킷임, 1 : 다음 패킷도 Identification이 같음
- 예시 : 000: 난 애초에 분할된 적이 없어. 001: 다음 패킷도 나와 Identification이 같을 거야. 010: 내가 마지막 조각이야. 다음 패킷은 나와 Identification이 다를 거야.
Fragment Offset : 8byte offset으로 조각에 저장된 원래 데이터의 바이트 범위를 나타낸다.
첫 번째 조각 : 20 Byte(Header) 1,480 Byte(Data)
두 번째 조각 : 20 Byte(Header) 1,480 Byte(Data)
세 번째 조각 : 20 Byte(Header) 1,480 Byte(Data)
마지막 조각 : 20 Byte(Header) 4 Byte(Data)
TTL(Time-to-live): 통과 가능한 라우터의 남은 수, 라우터를 경유할 때마다 이 값이 하나씩 줄어든다.
- 각 라우터에 의해 감소된다. 값이 0이 되면 데이터 그램을 폐기한다.
- 라우팅 과정에서 무한 루프에 빠지는 것을 방지한다. (hop count와 무관)
데이터를 전달할 수 없는 것으로 판단되어 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수를 나타낸다.
Time-to-Live 필드는 1에서 255사이의 값을 지정하며 라우터들은 패킷을 전달 할 때마다 이 값을 하나씩 감소시킨다.
Protocol Type : 데이터에 포함되는 상위 프로토콜의 종류
1: ICMP
6: TCP
17: UDP
Header Checksum : IP 프로토콜 헤더 자체의 내용이 바르게 교환되고 있는가를 점검
Source IP Address : 발신지 IP Address
Destination IP Address : 수신지 IP Address
패킷 분석 실습 - IP 헤더
IP 패킷 분석
IP
- Version: 4
- Header Length: 5 > 5 word > 20 byte
- Type of Service: 00
- Total Length: 00db > 219 byte
- Identification: 9d7a > 10011101 01111010
- Flag: 010
- Fragment Offset: 00000 00000000
- TTL: 40 > 01000000 > 64
- Protocol: 06 > TCP
- Header Checksum: 06 d2 > 00000110 11010010
- Source IP Address: c0 a8 0a 7d > 11000000 10101000 00001010 01111101 > 192.168.10.125
- Destination IP Address: c0 a8 0a 03 > 11000000 10101000 00001010 00000011 > 192.168.10.3