IP; Internet Protocol
전공자가 아니어도 많이 알고 있을 IP는 그 IP주소를 관리하는 것이 맞다.
IP의 가장 중요한 기능은 '데이터를 목적지까지 전달'하는 것에 있다. 그러기 위해서 목적지 정보와 함께 최적 경로를 설정해야 한다.
✔️ 인터넷 프로토콜 흐름
IP(인터넷 프로토콜)은 목적지까지 데이터를 전달한다는 아주 중요한 기능을 담당한다.
그 IP주소(상대 서버)로 데이터를 전달하는 역할을 한다.
OSI 계층에서 L3 Network Layer에 해당한다.
TCP세그먼트에 IP헤더를 추가해 IP패킷을 생성한다.
TCP에서는 데이터를 세그먼트 단위로 사용하지만, IP에서는 패킷 단위로 사용한다.

TCP글에서 작성한 세그먼트로 나눈 이미지를 가져와보았다.
여기에 IP는 다시 자기의 헤더를 붙여서 전달한다.

파란색 부분이 TCP에게 받은 TCP 세그먼트, 그리고 그 앞에 IP 헤더를 추가한다.
IP 헤더에는 IP주소, 데이터길이, 프로토콜 종류, 체크섬 등이 기록된다.
✔️ IP 주소
IP주소는 데이터가 전달되어야 하는 도착지를 의미한다.
보통 32비트로 표현되는 숫자 집합으로 8비트 단위로 마침표를 찍어서 10진수로 표현하기도 한다.
- 10진수
- 192.168.0.1
- 2진수
- 11000000.10101000.00000000.00000001
위처럼 IP주소가 192.168.0.1
인 경우 2진수로 표현했을 때 8비트씩 나눠서 .
을 찍는다.
- 네트워크부 vs 호스트부
같은 네트워크를 공유하고 있는 여러 컴퓨터가 있을 경우, 데이터를 해당 네트워크까지 도착했지만 어떤 컴퓨터로 가야할지 길을 찾지 못한다. 어떤 컴퓨터(호스트)에게 가야하는지 IP주소에는 네트워크부와 호스트부로 나뉘어져 있다.

같은 네트워크를 공유하는 여러 호스트가 있다.
아무리 같은 와이파이를 연결해서 사용하고 있더라도 얼추 비슷하지 각자마다 IP주소가 다른 것은 많이 봐왔을 것이다.
IP주소는 '어떤 네트워크'에 가서, '누구'에게 전달해야 할지 같이 알려준다.
- 서브넷 마스크(Subnet Mask), 사이더(CIDR)
네트워크부와 호스트부를 나눠줄 때 사용하는 것이 CIDR를 표기하는 것이다.
위 192.168.0.1
뒤에 /24
가 붙어 192.168.0.1/24
라고 적는 것을 CIDR 표기라고 한다.
어디까지가 네트워크부인지 표기하기 위한 방법으로 앞에서부터 해당 비트까지가 네트워크부라고 나타낸다.
그럼 위 IP주소에서는 앞의 24비트까지 네트워크주소, 그 뒤에 8비트가 호스트주소를 의미한다.

위에 그린 그림을 IP주소를 표현하도록 변경해보았다.
각 네트워크마다 주소가 있고, 그 네트워크를 사용하는 호스트마다 주소가 있다.
이중 192.168.0.1/24
라고 적혀있고 앞에서 24비트까지가 네트워크 주소면 → 192.168.0
이 네트워크 주소
그 뒤 8비트가 호스트 주소면 → 1
이 호스트 주소로 동작한다.
보라색 네트워크의 첫번째 호스트로 할당되는 것이다.
이렇게 네트워크부와 호스트부를 나누는 것을 서브넷 마스크라고 한다.
보통 서브넷 마스크는 2진수로 변경해서 계산하는 것이 더 보기 편하다.
주황색 네트워크의 두번째 호스트 주소를 가져오면 192.168.8.4
가 나온다. → 11000000.10101000.00001000.00000100
사이더는 21
로 표현되어 있다. → 192.168.8.4/21
그럼 2진수로 바꾼 32비트에서 앞에서부터 21비트를 세어서 나눠보면 어디까지가 네트워크고, 어디까지가 호스트인지 알 수 있다.
11000000.10101000.00001
| 000.00000100
앞의 21자리가 네트워크, 그 뒤에 11자리로 호스트를 구분할 수 있다.
- 브로드캐스트(Broadcast) 주소
호스트 비트가 모두 0인 것을 네트워크 주소 라고하며, 호스트 비트가 모두 1인 것을 브로드캐스트 주소라고 한다.
위에서 구한 192.168.8.4/21
→ 11000000.10101000.00001 000.00000100
에서 브로드 캐스트 주소를 구하면 아래와 같다.
호스트 비트는 모두 1이 되어야 하니 네트워크 주소 다음을 1로 만들어 준다.
11000000.10101000.00001 111.11111111
이 주소를 그대로 다시 10진수로 변환해보자. → 192.168.15.255
가 된다.
주황색 네트워크의 브로드 캐스트는 192.168.15.255
가 되며, 이 주소로 보낸 패킷은 해당 네트워크의 모든 호스트에게 전달 된다.
✔️ IPv4 vs IPv6
위에서 설명한 32비트의 주소는 IPv4를 설명한다.
세계적으로 인터넷이 발달되면서 IP주소를 할당받으며 점점 사용할 수 있는 IP주소가 사라져간다.
그 떄문에 더 많은 비트를 사용할 수 있는 IPv6가 등장했다.
IPv6는 기존 32비트보다 더 커진 128비트를 사용한다.
과거에는 IPv4와 IPv6의 호환성 문제로 잘 사용하지 않았으나 IPv6을 이용하도록 변경하고 있으며, HTTP가 IPv4와 IPv6를 모두 지원해 좀 더 편하게 사용할 수 있게 되었다.
✔️ Routing
IP의 가장 중요한 역할이라고 할 수 있는 건 '최적 경로'를 찾는 라우팅이다.
라우터에서 실행되며, IP패킷을 받은 라우터는 패킷의 헤더에서 목적지를 확인한다.
그리고 목적지까지 갈 수 있는 최적의 경로를 찾아 데이터를 전송한다.
- 라우팅 테이블
기본적으로 내부에 있는 라우팅 테이블을 이용해 경로를 찾는다.
데이터를 전달할 때 바로 전달되지 않고, 여러 라우터를 거쳐 최종 목적지까지 전달한다.
라우팅 테이블은 다음 라우터로 이동할 수 있도록 그 경로가 저장되어 있다.

네트워크끼리 서로 연결되어 있고 우리가 가야 하는 곳은 11번 네트워크로 가야 한다.
라우팅 테이블에는 '목적지'로 가야하는 경로 중 최적의 경로에 해당하는 '다음 홉'을 포함하고 있다.
11번으로 가기 위해 가야 하는 '다음 경로'는 4번이다.
그리고 4번 네트워크의 라우터는 11번으로 보내기 위해 '다음 경로'를 제공한다.
이렇게 데이터는 우리가 가고 싶은 목적지로 바로 가지 않고(대부분), 다른 네트워크를 통해 라우터를 거쳐 이동한다.
여러 라우터를 거쳐야 하니 중간에 데이터가 손실이 되거나, 경로 설정이 잘못되어 목적지까지 도달하지 못하는 경우가 생길 수 있는 것이다.
- TTL; Time To Live
만약 패킷이 다른 라우터를 계속 여유하며 오래 지속되는 경우를 대비해 TTL을 지정한다.
처음 보낼 떄 IP헤더에 TTL값을 지정하고, 라우터를 거칠 때마다 TTL을 하나씩 줄여나간다.
그리고 TTL이 0이 될 경우, 라우터는 그 패킷을 파기한다.
IP는 상대방에게 제대로 도착했는지 알려주는 기능이 없기 때문에 TCP에서 응답을 확인해야 한다.
이렇게 TCP와 IP는 서로 주고 받으며 데이터를 올바르게 제대로 전송하기 위해 노력한다.
- 정적 라우팅(static routing) & 동적 라우팅(dynamic routing)
패킷 전송이 되기 전에 경로 정보를 라우터에 미리 저장하여 중개하는 방식을 정적 라우팅이라고 한다.
테이블을 개발자가 수동으로 설정해 관리하기 때문에 직접 변경해주지 않는 이상 변동되지 않는다.
이 경우, 네트워크 변화가 생기거나 전송 도중에 문제가 발생하면 적절하게 대응하기 어렵다는 단점이 있다.
동적 라우팅은 경로 정보를 네트워크 상황에 따라 적절하게 변경하는 방식이다.
다양한 라우팅 프로토콜을 사용해 최단 경로를 골라 빠른 시간 안에 도착할 수 있는 장점이 있다.
하지만 경로를 확인하거나 전송 시간을 알아야 하는 등 높은 성능을 요구한다.
'ComputerScience > 네트워크' 카테고리의 다른 글
[Network] WAS(Web Application Server) 간단히 알아보기 (1) | 2025.02.05 |
---|---|
[Network] TCP(Transmission Control Protocol) 자세히 알아보기 (0) | 2025.02.03 |
[Network] TCP/IP의 4계층 구조 알아보기 (0) | 2025.02.03 |