03-3. IPv4 프로토콜
[기능]
- 네트워크 상에서 데이터를 교환하기 위한 프로토콜 (다른 네트워크 대역과 통신)
- 데이터 전달의 신뢰성을 보장하지 않음 (중복 전송, 순서 오류)
- 상위 계층에서 신뢰성 보장 필요 (TCP)
- 최소, 최대 전송 단위가 정해져 있어 최대 단위를 초과하는 데이터는 잘라서 보냄
[구조]
1 | 2 | 3 | 4 | Byte | |||
Version | IHL | TOS (Type of Service) | Total Length | 4 | |||
Indetification | IP Flags | Fragment Offset | 8 | ||||
TTL (Time To Live) |
Protocol |
Header checksum | 12 | ||||
Source Address | 16 | ||||||
Destination Address | 20 | ||||||
IP Option (개당 4byte) | ~60 |
- 20 바이트+α(옵션에 따라)
- Version : 4 (0x4)
* IPv6는 구조 자체를 다른걸 쓰므로 이 구조에서 버전은 항상 IPv4로 고정
- IHL (Header Length) : 헤더길이(최소 20, 최대 60) ÷ 4의 값 ≫ (0x5 ~ 0xF)
- TOS : 현재 쓰이지 않아 0으로 비워둠 (0x00)
- Total Length : 상위계층에서부터 캡슐화되어 내려온 payload까지 합친 이 지점에서 전체 패킷 길이
<조각화 삼대장>
- Identification : 잘려진 데이터가 원래 하나의 데이터였음을 알아보기 위한 Id
- IP Flags (3비트) : RDM 2진수 표기시 0b000
* R 사용 안 함
D Don't fragmentation 쪼개지 않고 보냄 (손실 100%, 거의 사용 안 함)
M More fragmentation 조각화 된 패킷이 남아있음 표기
최대전송단위를 넘지 않으면 0b000 (0x0), 넘으면 0b001 (0x2)
- Fragment Offset : 쪼개진 패킷을 복구하기 위한 순서 (받는 쪽에서 순서를 보장하지 않기 때문)
- TTL : 패킷의 유효시간(정확히 시간은 아니고 time count 형식, 3계층 장비를 넘어갈 때 마다 하나씩 줄어든다),
비정상적인 패킷이 계속해서 요청을 보내는 것 방지
- Protocol : 상위 프로토콜 정보 (3계층-ICMP 0x01, 4계층-TCP/UDP 0x06/0x11)
- Header Checksum : 헤더 오류 확인(필드값 계산 후 세팅 후 전송 ≫ 받는 쪽에서 다시 계산 후 확인)
- Source/Destination Address : 출발/목적지 IP주소
- IP option : 옵션이 증가할 때 마다 4바이트씩 추가됨 (최대 10개 ≫ 40 Byte가 추가로 붙을 수 있다)
[라우팅 테이블]
- 네트워크 경로를 저장해 놓은 테이블
- 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해 거쳐야 할 최적의 경로 정보가 들어있음
- netstat -r 명령어로 확인 가능
- 네트워크 대상 = 네트워크 대역 || IP주소
[통신과정 - 다른 네트워크 대역과 통신]
- 목적지 IP 주소를 가지고 라우팅 테이블을 확인
- 라우팅 테이블에 매핑된 주소로 이동
- 다른 네트워크 대역으로 이동 시 라우팅 테이블은 게이트웨이를 가르키게 되고, 이더넷 프로토콜의 목적지 맥주소도 라우터 게이트웨이의 맥주소를 가르킴
- 패킷이 라우터까지 도달하면 라우터는 라우팅 테이블을 확인해 목적지 IP주소에 도달하기까지 여러 네트워크 장비를 거쳐가며 대역간 이동이 이루어짐 ( 대강 '장비 → 라우터 → 목적지 라우터 → 목적지 장비'로 이동 )
- 이 때 이더넷 프로토콜(MAC주소 정보 )은 네트워크 대역이 바뀔 때마다 재설정됨
[조각화]
- 큰 IP 패킷들을 MTU에 따라 여러 개의 작은 패킷으로 나눠서 전송하는 것
- MTU, Maximum Transmission Unit 데이터 최대 전송 단위 (보통 1500bytes)
* 여기에 2계층(이더넷)까지 붙은 프레임의 크기는 보통 1514
- IPv4 헤더의 크기 20바이트를 고려해서 조각화 필요 ex) MTU가 1000이면 데이터 크기는 최대 980으로 잘림
- offset은 앞선 패킷의 데이터 크기 / 8 의 값을 가짐
- IPv4기준 발신지 뿐만 아니라 중간 라우터에서도 각 라우터마다 전송에 적합한 프레임으로 조각화가 가능
- 재조립은 최종 목적지에 도달한 후 이루어짐
'개념정리 > 네트워크' 카테고리의 다른 글
[네트워크] 04. OSI 7 Layer - 4계층 Transport (0) | 2020.10.22 |
---|---|
[네트워크] 03-4. ICMP 프로토콜 (0) | 2020.10.20 |
[네트워크] 03-2. ARP 프로토콜 (0) | 2020.10.16 |
[네트워크] 03. OSI 7 Layer - 3계층 Network (0) | 2020.10.15 |
[네트워크] 02. OSI 7 Layer - 2계층 DataLink (0) | 2020.10.14 |