[네트워크 기초 #10] IP 주소 통신_IP 프로토콜
2021. 8. 10. 15:15ㆍCS/네트워크 기초
- IPv4 프로토콜
- IPv4가 하는 일
- IPv4 프로토콜의 구조 - ICMP 프로토콜
- ICMP가 하는 일
- ICMP 프로토콜의 구조 - 라우팅 테이블
- 패킷은 어디로 이동할까 - 다른 네트워크와 통신 과정
- 다른 네트워크까지 패킷의 이동 과정 - IPv4의 조각화
- 조각화란?
멀리 있는 곳(다른 LAN 대역)과 통신하기 위해서 IP 주소를 이용해 IPv4 프로토콜로 통신합니다.
IPv4 프로토콜
IPv4가 하는 일
네트워크 상에서 데이터를 교환하기 위한 프로토콜로 데이터가 정확하게 전달될 것을 보장하지 않습니다.
중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있습니다. 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장합니다.
IPv4 프로토콜의 구조
한 행당 4 Bytes이므로 맨 마지막 IP Option은 말 그대로 옵션이므로 IPv4 프로토콜은 20 Bytes라고 볼 수 있습니다. (옵션이 붙음에 따라 최대 60 Bytes까지 커질 수 있습니다.)
- Version : 우리가 가는 IP 버전은 4와 6이며 일반적으로 4가 옵니다.
- IHL(Header Length) : 그림에서 볼 수 있듯이 4 Bits이며 4 bit 이진수는 0~15까지 표현됩니다.
하지만 IPv4 프로토콜의 크기는 최소 20~60이라고 말씀드렸습니다. 그럼 15보다 크므로 표현 자체가 안 됩니다.
그렇기 때문에 /4를 한 값을 할당해줍니다. (20 ~ 60) / 4
보통 IPv4가 20 Bytes이므로 일반적으로 IHL에 5가 오게 됩니다. - Type of Service(TOS) : 과거엔 사용했으나 지금은 거의 사용하지 않습니다. 따라서 0으로 세팅되는 경우가 많습니다.
- Total Length : Header 뿐만 아니라 Payload까지의 길이를 의미합니다.
- Identification : 원래 하나의 데이터가 잘게 쪼개져서 전송됐을 때 받는 쪽에서는 원래 데이터로 합쳐야 합니다. 원래는 하나의 데이터였다는 것을 알아볼 수 있도록 똑같은 ID를 부여합니다.
- IP Flags : 3 Bits로 이루어져있습니다. (x, D, M)
- x : 사용 안 함
- D: Don't Fragmentation - 패킷을 보내는 쪽에서 데이터를 쪼개지 않고 보냄을 의미
- M: More Fragmentation - 패킷을 보내는 쪽에서 데이터를 쪼개서 보냄을 의미 (최대 전송 단위보다 클 경우) - Fragment Offset : 패킷을 조각화하여 보냈을 때 패킷 간의 순서가 존재합니다. 전송할 땐 순서대로 보냈다 할지언정 받는 쪽에선 100% 똑같이 순서대로 받는다는 보장이 없습니다. 따라서 이 순서를 알아볼 수 있게 Offset을 지정합니다.
- Time To Live(TTL) : 데이터를 보낼 때 데이터의 유효 기간을 의미하며 기간이 지나면 패킷은 폐기됩니다.
- Protocol : 상위 프로토콜이 무엇인지 알려줍니다. (ICMP, TCP, UDP)
- Header Checksum : 헤더가 오류가 있는지 체크합니다. 헤더 내의 여러 필드를 이용해 값을 계산해 Checksum에 담고 받는 쪽에서도 계산해 서로 비교합니다.
- Source Address : 출발지 IP 주소 (4 Bytes)
- Destination Address : 목적지 IP 주소 (4 Bytes)
ICMP 프로토콜
ICMP가 하는 일
ICMP(Internet Control Message Protocol)
네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는 데 주로 사용됩니다. (상대방과 통신이 제대로 되는지 사용)
프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받습니다.
ICMP 프로토콜의 구조
Type : 카테고리 (8 : 요청, 0 : 응답, 3 : 목적지 도달 실패(가지도 못함), 11 : 요청 시간 만료(가긴 감))
Code : Type의 소분류
Checksum : 헤더에 오류가 있는지 체크하는 값
'CS > 네트워크 기초' 카테고리의 다른 글
[네트워크 기초 #9] IP 주소 통신_ARP 프로토콜 (0) | 2021.07.21 |
---|---|
[네트워크 기초 #8] IP 주소 통신 (0) | 2021.05.11 |
[네트워크 기초 #7] Local Area Network에서는 어떻게 통신할까? (0) | 2021.05.11 |
REST API (0) | 2021.05.04 |
HTTP 파헤치기(2) (0) | 2021.05.04 |