[네트워크] 네트워크 계층 1 : IP

드림보이즈·2024년 10월 2일
0

주제 :

4. Network Layer & IP

App, Transport Layer는 편지지의 내용과, 편지 봉투에 어떤 정보를 입력해야 하는지를 배웠다면,
이제 실제로 배송을 '어떻게'할 것인가에 대해 배운다.

정리하면 TCP Segment를 어떤 경로로 잘 보낼 것인가? 에 대한 주제다.

네트워크 레이어의 프로토콜은 Only, IP, 배송 담당이라고 생각하면 된다.

Router

네트워크 레이어 = 배송 담당이기 때문에,
중간에 라우터들은, 구현을 네트워크 레이어까지만 하면 된다.
어디로 전달할지만 정해주면 되니까.

라우터의 역할은 딱 두개다.
1. Forwarding : 포워딩 테이블을 보고 어떤 다음 라우터로 넘길 것인지
2. Routing : 저 포워딩 테이블을 어떻게 만들 것인지

IP 헤더

중요 필드는 source,destination IP address 32비트 짜리 일 것이다.
time to live : 카운터처럼 라우터 거치면서 하나씩 줄어드는데,이게 없으면 삥삥 돌수도 있으니까, 카운트 0 되면 걍 버리도록 하는 것.
upper layer : TCP 인지 UDP인지 구별

IP 헤더는 20 바이트, TCP 헤더는 20 바이트.
인터넷에 돌아다니는 패킷을 잡아서 보면, 데이터가 대부분 40바이트란다.
그 뜻이 무엇일까?
TCP 내용이 없다 => ACK
몽말인지 알지?

IP 주소

고유한,
32비트이고, 8비트씩 끊어서 인간이 읽게 쉽게 한다.

IP 배정

컴퓨터마다 고유해야 할텐데, 그렇다면 배정을 어떻게 해야될까?
무작위로 막 배정하면, forwarding table을 배치하는게 체계가 없다.

그래서 일반적으로 32비트에서
24비트를 네트워크, 8비트를 호스트를 구별하는데 쓴다.

서브넷 마스크

서브넷 마스크(Subnet Mask)는 IP 네트워크를 더 작은 서브네트워크로 나누는 데 사용, IP 주소를 네트워크 부분과 호스트 부분으로 구분.
옛날은 24비트가 네트워크 부분이었지만, 지금은 유연하기 때문에, 어디까지 네트워크인지 구분해야 된다. 이걸 서브넷이 도와주는데,

IP 주소가 192.168.1.10이고 서브넷 마스크가 255.255.255.0이라면:

네트워크 부분: 192.168.1
호스트 부분: 10

옛날 IP 배정 기준


옛날에는 네트워크 부분의 길이를 유연하게 조절해서, 호스트의 양을 조절하게 했다.
그래서 클래스를 나눠서, 네트워크가 적을수록 호스트가 많으니까, 이런식으로 했는데,
A 클래스가 8비트라면 2의 8제곱, 100개 기관이 전부다.
너무 올드하고 차별적이라, 이걸 유연하게 바꿨는데,

Classless Inter-Domain Routing (CIDR)


클래스 없이, 자유롭게 Network와 Host의 Prefix를 조절하게 했다.

예시 : 1.2.3.4/24 뜻 => 서브넷 마스크의 네트워크 부분이 24다. 즉 유연한 상황에서 알려주는거다.

인터넷은 네트워크의 집합!!!

삼성 네트워크, 네이버 네트워크 등이 모여 모여 인터넷이 된 것 아니겠는가?

서브넷

같은 Prefix를 가진 IP 집합 (ex. 한양대)
이 안에선 라우터를 거치지 않고 통신 가능

라우터는 여러 NIC을 가지고 있을 수 있다.
= 여러 IP를 가지고 있다.
= 여러 서브넷을 걸쳐져 가지고 있는 교집합 부분

당연하다 위 사진을 봐라. 라우터는 여러 서브넷을 걸치고 있어야, 경로를 뚫어서 전달을 할 거 아니냐?

위 서브넷 갯수는? 라우터끼리 직선도 서브넷이다. 3 + 3 = 6

Network Address Translation (NAT)

옛날엔 IP가 32비트였다. 즉 2의 32승 = 40억
그런데 95년도에 이미 '아 몇 년 뒤엔 40억 주소 다 차겠구나'
생각을 이미 했단다.
그래서 IPv6를 만들어 128비트로 늘렸다. 이는 지구 바다의 모래알 개수보다 많다고 한다.

그런데 당신의 컴퓨터를 들어가봐라. IPv4일 것이다.
뭔가 이상하다. 사람 한 명당 컴퓨터,태블릿,폰 최소 몇 개씩 쓰는데?
그 트릭이 바로 NAT다.

네트워크 내부에서는 고유 IP를 쓴다. 그러나 이는 전세계 인터넷 세계에선 누군가가 이미 쓰고 있을 수 있다. 그래서 내부에서는 유니크하게 구분하는 척을 하고,
외부 요청을 보낼 때 NAT를 이용해서, 얘만 고유 번호를 쓰고 보내고, 받아서 포트를 통해 호스트를 구분한다.

이전까진 HOST 구분하는게 IP였다면, 이젠 PORT로 호스트를 구분한다.
그렇다면, 그 호스트는 내부에서 어떤 포트에 넣어야 하는가?


포트 포워딩을 통해 한다.

근데 잘 생각해보자. NAT이 하는 만행을
내가 보내려고 하는 우편물을 탈취해서 IP를 지 IP로 바꾼다.
그리고 포트까지 바꾼다. 포트는 어디있는가?
패킷의 바디다.
내 우편물 포장지와 내용물까지 뺏어서 바꾸는 것이다. 이게 옳은가?
그래서 교수님은 이게 트릭이라고 하신다.

profile
10년 후 세계 최고 블록체인 개발자

0개의 댓글

관련 채용 정보