프로토콜 = 약속 

 

대체 어떤 약속이란 말인가?! 

 

바로 컴퓨터끼리 통신하기 위한 약속이다. 

컴퓨터는 하드웨어도 운영체제도 모두 다를 수 있다. 

하지만 TCP/IP를 이용해 통신할 수 있다.

 

이는 마치 다른 인종과 국가의 사람이 같은 언어를 사용해 의사소통할 수 있는 것과 같다. 

사람이 같은 언어를 사용해야 의사소통이 가능한 것처럼 

컴퓨터도 마찬가지로 같은 규약을 갖고 서로 통신해야 한다. 

 

 

'네트워크' 카테고리의 다른 글

L1, L2, L3, L4, L7 스위치와 로드밸런싱  (0) 2024.07.31
인터넷과 인트라넷 그리고 VPN  (0) 2024.07.31
Proxy 서버  (1) 2024.07.31
ARP(Address Resolution Protocol)  (1) 2024.07.08
RIP(Routing Information Protocol)  (0) 2024.06.24

네트워크 관련 개발을 하다보면 L1, L2, L3, L4, L7 스위치 얘기를 많이 듣게 된다. 

 

L1, L2, L3, L4, L7 스위치는 OSI 7계층에서 각 계층에 해당하는 스위치를 나타내는 말. 1계층에는 스위치가 없지만, L1 스위치는 물리 계층의 허브를 가리킴. L2 스위치는 스위칭 허브(스위치), L3 스위치는 라우터, L4 스위치는 4계층(트랜스포트 계층)의 기술(-> 포트까지 구분해서 부하를 나눌 수 있는 로드밸런싱 기능)을 사용로드밸런싱을 하는 라우터,

L7 스위치는 7계층(애플리케이션 계층)의 기술을 사용해 로드밸런싱을 하는 라우터를 말함

 

L4 스위치 기능에 더 많은 기능이 탑재되어 가격이 비싸다 

L7 스위치는 포트뿐만 아니라 애플리케이션 단에 있는 패킷의 데이터를 구분해 부하를 나눌 수 있는 로드밸런싱 기능을 수행한다. 

 

로드밸런싱은 부하를 밸런스있게 나눠주는 기술을 말함.

로드밸런싱은 L4, L7 스위치 수행함.

L4스위치에서 로드밸런싱은 NAT를 이용해 수행한다.

 

예를 들어 게임이 새로 출시되어 사용자가 많이 몰릴 수 있는 상황이라면 

하나의 서버로 감당이 안돼 여러개의 서버를 둔다. 

사용자의 게임 클라이언트는 게임 서버에 접속하기 위해 L4스위치에게 IP와 특정 Port로 데이터를 보낸다.

L4스위치는 클라이언트가 보낸 IP와 Port를 보고 즉 트랜스포트 계층까지 정보를 활용해 어떤 서버로 보낼지 결정하고 

적절하게 부하를 나눠준다. 

 

ex) 5555포트로 들어온 포트는 기존 게임 서버로 연결하기로 약속, 새로 출시된 게임은 9999번 포트를 사용한다면 이 패킷은 L4 스위치가 로드를 분배해준다. 

가장 간단한 방식은 요청이 들어올때마다 서버 여러개중에 나눠서 보내 부하를 분산시키는 것이다.

 

L7은 조금더 많은걸 참조해 부하를 분산시킨다. 

IP와 Port뿐만아니라 애플리케이션의 데이터를 참조해 더 세심하게 트래픽을 분산한다. 

하지만 애플리케이션의 암호화 대문에 모든 데이터를 볼 수 없어 일부만 참조, 

클라이언트에서 HTTP 요청을 했다면 IP와 Port, 그리고 HTTP 요청 헤더를 보고 판단한다. 

 

만약 클라이언트에서 서버의 주소인 1.2.3.4의 80번 포트로 HTTP GET 메서드로 /users/123을 보냈다면 

L7스위치는 포트 번호와 요청 헤더를 보고 웹 서버에 유저를 조회하는 요청이라는 것을 알아내 유저 조회를 담당하는 서버로 보낸다. 

 

반면 IP와 Port는 똑같이 보내더라도 GET 메서드로 /pictures/100  을 보냈다면

L7스위치는 사진을 조회하는 요청이라는 것을 알아내 사진 조회를 담당하는 서버로 보낸다. 

 

 

 

L4 스위치에서는 트랜스포트 계층인 포트를 활용해 로드밸런싱을 수행하고 L7 스위치에서는 트랜스포트 계층뿐만 아니라 애플리케이션 계층의 데이터를 활용해 로드밸런싱을 수행함.

'네트워크' 카테고리의 다른 글

프로토콜  (0) 2024.12.07
인터넷과 인트라넷 그리고 VPN  (0) 2024.07.31
Proxy 서버  (1) 2024.07.31
ARP(Address Resolution Protocol)  (1) 2024.07.08
RIP(Routing Information Protocol)  (0) 2024.06.24

우리가 사용하는 인터넷은 모두와 연결된 공개적인 네트워크이다. 

 

원하는 사람은 누구든지 연결할 수 있다. 

 

큰 회사들이나 조직은 외부인의 접근을 막기 위해 폐쇄된 망을 선택한다. 

이것을 인트라넷이라고 부른다. 

 

물리적으로 연결되어 있지 않아 통신이 불가하다. 

 

물리적으로 멀리 떨어져 있는 지점을 인트라넷으로 연결하기 위해서는 라우터와 스위치를 활용해 네트워크를 직접 구성해야 한다. 

하지만 멀리 떨어져 있는 곳에 직접 선을 설치하는 건 너무나도 힘든 일이다. 

유지보수도 힘들고 비용도 많이 든다. 

 

따라서 물리적으로 떨어진 인트라넷 간의 연결을 위해 인터넷을 활용하기도 한다. 

IPsec(Internet Protocol Security)란 프로토콜을 이용해 IP패킷의 인증, 암호화를 한다. 

먼저 인트라넷과 인터넷에 동시에 연결된 라우터를 준비해두고 

인터넷을 이용해 본사와 지사가 통신을 한다. 

라우터로 연결된 인트라넷과 인터넷

인터넷에만 연결된 재택근무를 하는 사람도 따로 프로그램을 설치해 로그인을 하면 인트라넷 사용 가능! 

(회사에서 사용하는 VPN의 경우 Network와 Network통신보호를 위한 것일듯) 

https://tech.cloudmt.co.kr/2022/09/30/%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%9D%BC%EB%A9%B4-%EA%BC%AD-%EC%95%8C%EC%95%84%EC%95%BC%ED%95%98%EB%8A%94-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-vpn/

 

인프라 엔지니어라면 꼭 알아야하는 네트워크 - VPN

안녕하세요! 클라우메이트 TE팀 정휘영입니다. 오늘은 인프라 엔지니어라면 알아야하는 많은 것들 중에 [네트워크]를 한번 정리해볼까합니다. 바로 VPN(Virtual Private Network) 입니

tech.cloudmt.co.kr

 

 

물리적으로는 인터넷에 연결되었지만 인트라넷을 이용할 수 있게 해주는 기술이 가상 사설망, 즉 VPN(Virtual Private Network)라고 부른다. 

 

VPN으로 따로 회선을 설치하지 않아도 되니 비용을 많이 아끼게 된다. 

하지만 인터넷을 이용하기 때문에 보안이 조금 더 약하고 

인터넷 트래픽에 따라 인트라넷의 속도도 달라진다는 단점이 있다. 

 

또한 사용자의 IP는 VPN장비의 IP로 바뀌기 때문에 악용 사례가 많이 발생한다. 

유튜브 프리미엄은 나라마다 가격이 다른데 저렴한 국가가 있다. 이점을 이용해 사용자 계정을 인도로 바꾸고 VPN을 이용해 싼 값에 이용

스팀도 국가마다 가격이 다름 우회해서 구매 

 

 

 

'네트워크' 카테고리의 다른 글

프로토콜  (0) 2024.12.07
L1, L2, L3, L4, L7 스위치와 로드밸런싱  (0) 2024.07.31
Proxy 서버  (1) 2024.07.31
ARP(Address Resolution Protocol)  (1) 2024.07.08
RIP(Routing Information Protocol)  (0) 2024.06.24

유튜브에 김치찌개 맛있게 먹는 방법을 검색하면 

 

우리의 컴퓨터에서 한국 ISP 미국 ISP 타고 유튜브 서버로 타고 간다. 

그러면 유튜브에서는 '김치찌개 맛있게 하는 법' 에 대한 결과를 다시 미국의 ISP와 한국의 ISP를 거쳐 우리에게 전송한다. 

 

영상 데이터는 굉장히 크기 때문에 계속 미국까지 이동하게 되면 속도도 느리고 ISP에 부담이 된다. 

특히 2티어 ISP인 한국 ISP들에게 말이다. 

 

한국의 ISP는 미국의 ISP에게 돈을 내고 연결한다. 

한국의 ISP는 유튜브에게 불만이 생긴다. 

미국 ISP에게 내는 돈이 더 많아지기 때문이다. 

트래픽도 많이 차지해서 장비도 더 늘려야 하기 때문이다. 

 

따라서 유튜브는 한국에서 발생하는 트래픽이 미국까지 가지 않도록 한국에 캐시 서버, 즉 프록시 서버(Google Global Cache)를 설치한다. 

 

김치찌개 맛있게 하는 법을 검색하면 먼저 프록시(캐시)서버에서 먼저 찾는다. 

해당 프록시(캐시)서버에 검색 결과가 있다면 해당 영상의 데이터를 전송하고 

없다면 프록시 서버는 미국의 유튜브 서버에서 데이터를 직접 가져와 프록시(캐시)서버에 저장해둔다. 

캐시 서버에서 다시 데이터를 전달해준다. 

 

이런 방법으로 응답속도도 빨라지고 국내 ISP서버의 불만이 줄었지만 아직 논란이 많다. 

한국 ISP가 외국 서비스(유튜브, 트위치 등)에 망 사용료를 지불하라고 요구한 것이 대표적이다. 

https://namu.wiki/w/%EB%A7%9D%20%EC%82%AC%EC%9A%A9%EB%A3%8C

 

망 사용료

망 사용료 또는 망 이용료 는 콘텐츠 사업자의 인터넷 회선 접속서비스 이용료 등 정보통신망 과 관련된 이용

namu.wiki

보다보니 재밌고 흥미로움 

 

프록시 서버는 이처럼 캐시 서버로 사용될 수도 있지만 다른 용도로 사용될 수도 있다. 

인터넷 검열이 있는 나라에서는 검열을 피하는 용도로 사용하거나 악의적인 목적으로 자신의 IP를 숨기는 용도로 사용하기도 한다.

 

이는 클라이언트가 프록시 서버에 데이터를 요청하면 

프록시 서버는 프록시 서버의 IP로 '대신' 요청을 해주고 그에 대한 응답을 전달해주기 때문에 가능하다.

 

정확히는 IP Port를 배우는데 Port 는 아직 안배웠으니 생략하고, 

우리는 통신하려는 목적지 컴퓨터의 IP는 알고 있어도 MAC 주소를 모르기 때문에 통신이 불가능해 보인다. 

 

어떻게 통신이 가능할까?

 

ARP 덕분에 가능하다. 

ARP는 IP주소로 MAC주소를 알아낸다. 

 

내 PC에서 친구 PC로 데이터를 전송한다고 할 때. IP는 아는데 MAC을 모른다. 

내 PC는 ARP 요청 메시지를 만든다. 

출발지 IP, 목적지 IP 적고 

데이터링크 계층에서 출발지MAC에 내 MAC주소적고 목적지 MAC브로드캐스트 MAC주소를 적는다. 

FF:FF:FF:FF:FF:FF

허브에 도착한 데이터는 연결된 모든 PC로 데이터를 전달한다. 

연결된 모든 PC에 요청 메시지가 전달된다. 

 

목적지 IP를 확인해서 자신의 IP면 ARP응답 메시지를 보낸다. 아니면 버림

메시지 내용은 출발지 MAC에 자신의 MAC주소, 목적지엔 내 MAC주소 적이서 보냄 

그와 동시에 친구1의 PC에는 자신의 컴퓨터에 나의 IP주소와 MAC주소를 ARP 캐시 라는 곳에 저장해둔다.

내 PC에도 ARP캐시가 저장된다. 

 

한번 브로드캐스팅으로 MAC주소를 알아내면 다시 브로드캐스팅 하지 않음 

 

Q. 만약 같은 네트워크가 아니라 라우터를 건너서 다른 네트워크로 전달할 때는 어떻게 보내는 걸까?

A. 이때는 라우터가 도와준다. 

 

다른 네트워크 주소에 보내기 위해서는 

출발지 IP주소는 내IP 주소, 목적지 IP주소는 라우터 IP주소로 보낸다. 

 

라우터가 내 PC로 응답을 보내준다. 

라우터 MAC주소가 저장됨 

 

 

 

<정리>

ARP(Address Resolution Protocol)는 IP 주소로 MAC 주소를 알아내기 위한 프로토콜.

ARP 패킷(요청 메시지)에 목적지 IP 주소를 적고 MAC 주소는 브로드캐스트 주소로 설정해 전송하면 ARP 요청 메시지를 받은 호스트는 자신의 MAC 주소를 응답으로 보냄.

목적지의 MAC 주소를 전달받으면 ARP 캐시라는 곳에 IP 주소와 MAC 주소를 매핑시키고 다음부터 데이터를 전송할 때는 브로드캐스트가 아니라 ARP 캐시를 참조해 목적지 IP 주소의 MAC 주소를 적어서 전송.

ARP 덕분에 IP 주소만 알고 있더라도 통신할 수 있는 것

'네트워크' 카테고리의 다른 글

인터넷과 인트라넷 그리고 VPN  (0) 2024.07.31
Proxy 서버  (1) 2024.07.31
RIP(Routing Information Protocol)  (0) 2024.06.24
스태틱 라우팅과 다이내믹 라우팅  (0) 2024.06.23
라우터  (0) 2024.06.23

 

AS 내에서 사용되는 동적 라우팅 프로토콜인 Distance Vector 방식의 RIP(Routing Information Protocol)를 알아보자. 

 

RIP는 목적지 라우터까지의 거리(Distance)와 목적지까지 가기 위해서 어떤 인접 라우터 방향(Vector)으로 가는지를 라우팅 테이블에 저장한다. 

 

그리고 이 정보를 인접 라우터와 30초마다 공유하는 방식으로 라우팅 테이블을 유지한다. 

 

라우터는 라우팅 테이블의 정보를 인접 라우터와 30초마다 공유함.

라우터는 네트워크의 모든 정보를 가지고 있지 않기 때문에 적은 메모리를 요구하고 구성이 간단해 많은 라우터에서 기본적으로 지원하는 프로토콜.

하지만 다음 라우터의 방향과 거리만 나타내므로 전체 경로를 알 수 없으므로 순환경로에 빠지는 문제가 발생할 수 있음. 라우팅 테이블에 변화가 생겼을 때 모든 라우터가 업데이트를 완료하는 시간을 Coverage Time이라고 부르는데 RIP는 하나의 라우터를 건너기 위해서는 30초라는 시간이 걸리므로 5개의 라우터만 건너더라도 Coverage Time이 300초가 됨.

따라서 대규모 네트워크에서 사용하기가 힘들고 소규모 네트워크에서 사용됨

 

 

'네트워크' 카테고리의 다른 글

Proxy 서버  (1) 2024.07.31
ARP(Address Resolution Protocol)  (1) 2024.07.08
스태틱 라우팅과 다이내믹 라우팅  (0) 2024.06.23
라우터  (0) 2024.06.23
IP헤더(패킷)  (0) 2024.06.23

스태틱 라우팅 

스태틱 라우팅은 네트워크 관리자(사람)가 직접 라우팅 테이블을 작성하는 방법.

사람이 수동으로 경로를 지정해주기 때문에 라우터의 CPU, 메모리를 적게 사용해 라우터에 부담이 적음.

또한 인접 라우터와 정보를 공유하지 않기 때문에 네트워크 대역폭을 절약할 수 있고 보안이 더 좋음.

하지만 다른 라우터에 문제가 생겼을 때 문제가 생긴 라우터를 우회하지 못하므로 관리자가 직접 경로를 수정해주거나 라우터를 고치기 전까지는 통신할 수 없는 상황이 발생할 수도 있음.

그리고 대규모 네트워크에서는 설정이 복잡해져 소규모 네트워크에 적합한 방식.

이러한 단점을 해결하기 위해서 다이내믹 라우팅이 등장.

 

다이내믹 라우팅

다이내믹 라우팅은 다시 여러 가지 프로토콜로 나눠진다. 

인터넷상에서 라우터는 셀 수도 없을 만큼 많이 존재한다. 

 

하나의 큰 조직이 많은 라우터를 연결해 만든 네트워크를 Autonomous System, 즉 AS라고 부른다. 

이 조직들은 대학교, 회사, 통신사들이 될 수 있다. 

우리나라의 AS정보는 한국인터넷진흥원에서 확인할 수 있다. 

AS 모습

 

AS가 있을 때 AS 내부에서 쓰는 라우팅을 프로토콜을 Interior Routing Protocol(IRP)라고 부른다. 

그리고 서로 다른 AS를 연결하기 위한 라우팅 프로토콜을 Exterior Routing Protocol(ERP)라고 부른다. 

 

IRP와 ERP 이미지

 

그리고 IRP와 ERP에 있는 라우팅 알고리즘은 동작에 따라 아래와 같이 구분된다. 

 

다음시간에 각각 알고리즘에 대해 알아보자

'네트워크' 카테고리의 다른 글

ARP(Address Resolution Protocol)  (1) 2024.07.08
RIP(Routing Information Protocol)  (0) 2024.06.24
라우터  (0) 2024.06.23
IP헤더(패킷)  (0) 2024.06.23
IP 클래스와 서브넷 마스크  (0) 2024.06.23

허브와 스위치 콜리전 도메인, 브로드캐스트 도메인

허브와 스위치를 이용하면 콜리전 도메인과 브로드캐스트 도메인으로 통신의 한계가 생긴다. 

* 콜리전 도메인: 허브로 연결되면 충돌이 발생할 수 있는데 이 영역을 콜리전 도메인이라고 한다. 

** 브로드캐스트 도메인:  스위치와 연결된 영역을 브로드캐스트 도메인이라고 부른다

 

인프런 그림으로 쉽게 배우는 네트워크

따라서 라우터를 이용해 브로드캐스트 도메인을 나눈다. 

 

브로드캐스트 도메인을 나누면서 논리적인 주소가 필요하게 되어 등장한 것이 IP주소이고 

IP주소는 고유한 주소를 나타내며 모든 호스트(PC)와 라우터의 포트마다 부여된다. 

 

Private IP는 중복되긴 하지만 NAT를 배우기 전까지는 'IP는 고유한 주소' 라고 가정 

 

라우터는 IP를 다루기 때문에 네트워크 계층에 속한다. 

라우터는 CPU와 메모리가 있는 하나의 컴퓨터이다. 

오직 네트워크에서 데이터를 전송하기 위한 컴퓨터! 

사용하는 곳에따라 크기와 가격이 천차만별이다. 

 

작은 사무실에서는 라우터(공유기)를 사용, 우리나라에선 라우터를 공유기라고도 부른다. 

ISP(통신사)와 같은 곳에서 사용하는 라우터는 성능이 더 좋아야 하므로 큰 라우터를 사용하는데 가격은 수억원 한다.

ISP에서 사용하는 라우터

 

스위치로 만들어진 브로드캐스트 도메인은 LAN영역이라고 부른다. 

이런 LAN 영역을 넘어서 통신하기 위해서 라우터로 연결되고 라우터를 넘어간 다른 영역을 WAN 영역이라고 부른다. 

 

이렇게 LAN영역을 연결한 라우터가 수없이 많이 존재하고 

라우터끼리 연결한다면 네트워크는 상당히 커진다. 

그게 오늘날 인터넷의 모습! 

 

라우터 중에서 통신사에서 운영하는 핵심적인 라우터가 있다. 

핵심 라우터들은 다른 통신사와 연결되는데 이를 코어 라우터라고 부른다. 

라우터들끼리 연결되어 인터넷, 코어 라우터의 모습

 

우리나라의 KT, SK브로드밴드, LG U+는 데이터센터에 라우터를 두고 광케이블을 이용해 연결한다. 

이렇게 코어 라우터로 구축된 시스템을 백본이라고 부른다. 

통신사는 빠르고 많은 처리를 위해서 고성능 라우터를 광케이블로 연결한 백본을 구축함!

 

이렇게 라우터로 복잡하게 연결되어 있을 때 우리가 다른 LAN영역에 있는 사용자에게 데이터를 전송한다면 IP를 이용해 라우터는 최대한 빨리 도달할 수 있는 경로를 적절하게 찾고 이 경로를 통해 데이터를 전송할 수 있게 된다. 

 

가장 가깝고 빠른, 적합한 경로는 라우팅 프로토콜을 이용해 찾는다. 

 

라우팅 프로토콜 

라우터와 IP주소를 이용해 다른 네트워크까지 데이터를 전송할 수 있다는 것을 알고 있다. 

라우터는 목적지 네트워크까지 가는 경로를 라우팅 테이블이라는 곳에 미리 저장해두고 데이터가 들어오면 해당 네트워크로 전달하는 역할을 한다. 

 

그럼 라우팅 테이블이라는 것은 어떤 것이고 어떻게 만들어지는 것일까? 

 

라우팅 테이블은 어떤 네트워크에서 어떤 네트워크로 이동할 때 해당 라우터에서 '어떤 인터페이스(포트)로 이동해야 하는지'가 적혀있는 표이다. 

 

라우팅 테이블을 만드는 방법은 2가지 

1. 스태틱(정적) 라우팅: 사람이 직접 주소 하나하나를 지정 

 

2. 다이내믹(동적) 라우팅: 라우터가 다른 라우터들과 정보를 공유해 라우터 스스로 테이블을 만드는 방법 

 

그럼 다이내믹이 좋은 것 아닌가? 

 

하지만 작은 네트워크에서 라우터가 여러 개의 다른 라우터와 연결되지 않고 하나만 연결되는 경우라면 스태틱 라우팅으로 직접 만드는게 더 좋을 수 있다. 

직접 적어준다면 라우터가 다른 라우터와 정보를 공유하지 않아서 부하가 적어질테니까! 

 

Q. 다이내믹 라우팅은 하나의 라우터가 전 세계 모든 라우터와 정보를 교환할까? 

A. 메모리 한계 때문에 그렇게 하지는 않는다. 

 

그러면 경로를 어떻게 찾을 까? 

라우팅 테이블에는 디폴트 라우터가 있다. 

라우팅 테이블에 목적지와 일치하는 정보가 저장되어있지 않다면 설정한 디폴트 라우터로 무조건 보내는 것이다.

자신이 모르는 네트워크인 데이터를 다른 라우터로 전달하는데,  전달할 라우터를 디폴트 라우터라고 부른다.  

라우팅 테이블에 디폴트 라우터는 0.0.0.0이나 default로 표현한다. 

라우터 경로를 찾는 과정

 

TTL은 목적지가 없는 데이터가 영원히 네트워크에 존재하는 걸 방지한다. 

 

디폴트 라우터 말고 다른 약속된 주소가 있다. 

 

127.0.0.1이라는 주소로 '루프백 주소'라고 부른다. local host라고도 부른다. 

루프백 주소는 127.0.0.0부터 127.255.255.255(127.0.0.0/8)까지 있지만 보통 127.0.0.1을 사용한다. 

 

이 주소로 데이터를 전송한다면 네트워크로 나가지 않고 자신이 다시 받게 된다. 

개발할 때 많이 사용하니 알아두는 게 좋다. 

 

 

'네트워크' 카테고리의 다른 글

RIP(Routing Information Protocol)  (0) 2024.06.24
스태틱 라우팅과 다이내믹 라우팅  (0) 2024.06.23
IP헤더(패킷)  (0) 2024.06.23
IP 클래스와 서브넷 마스크  (0) 2024.06.23
IP  (0) 2024.06.20

우리가 데이터를 전송한다면 애플리케이션 계층에서 데이터가 만들어지고 

이 데이터는 트랜스포트 계층으로 넘어간다

트랜스포트 계층에서는 받은 데이터에 트랜스포트 계층의 약속을 나타내는 헤더를 붙이고 

이렇게 만들어진 전체 데이터를 데이터그램이라고 부른다. 

 

데이터그램은 다시 네트워크 계층으로 넘어간다. 

네트워크 계층에서는 받은 데이터그램에 네트워크 계층의 약속을 나타내는 IP 헤더(네트워크 계층 헤더)를 붙이고 

이렇게 만들어진 데이터는 패킷이라고 부른다. 

 

패킷은 다시 데이터링크 계층으로 전달된다

데이터링크 계층에서는 패킷에 데이터링크 계층의 약속을 나타내는 헤더를 붙이는데 

이더넷을 배웠으니 이더넷 헤더가 붙는다. 

https://dipping.tistory.com/27

 

[데이터링크 계층] 이더넷과 이더넷 헤더

물리계층에선느 물리 신호(전압, 빛, 전파) 전달을 담당 했다면 데이터링크 계층에서는 기기에 MAC 주소를 부여해 원하는 기기에만 데이터를 전달할 수 있도록 한다. 이 외에도 매체 공유, 비공

dipping.tistory.com

이렇게 만들어진 데이터를 프레임이라고 부르고 

프레임은 물리 계층으로 전달돼 전기신호로 바뀌어서 케이블을 타고 전송된다. 

 

이번시간에는 IP헤더 모양을 베워보자. 

IP헤더, 인프런 그림으로 쉽게 배우는 네트워크

1. Version

IP 헤더의 버전을 나타내는 4bit로 구성된 필드이다. 

IPv4는 0100, IPv6는 0110 으로 표현한다. 

 

2. Header Length

- 현재 IP헤더의 크기를 나타내는 4bit로 구성된 필드이다. 

- 대부분의 IP헤더의 길이는 20Byte로 단위는 32비트이다. 이 값은 거의 5로 고정되어있다. 

 * 단위가 32bit이므로 5(0101) - 5*32 = 160bit = 20byte

 

3. TOS: Type of Service 

- 이 필드는 서비스의 우선순위를 나타내는데, 거의 사용되지는 않는다.

 

4. Total Packet Length

- IP패킷의 크기를 바이트(8bit)단위로 나타내는 16bit로 구성된 필드이다.

- 16bit이므로 2^16(65,536)바이트를 나타낼 수 있다. 최대 크기가 패킷의 크기와 일치 

 

5. Identifier

- 이 필드는 16비트로 구성되어있다.

- IP는 패킷을 분할 할 수 있는 기능이 있는데 Identifier 필드는 분할된 패킷을 구분하기 위한 용도로 사용된다. 

- 분할된 패킷은 Identifier로 순서대로 재조합 된다. 

 

6. Flags

- 패킷을 분할할지 하지 않을지 나타내는 3비트로 구성된 필드 

- 첫 비트는 0으로 고정, 두 번째 비트가 0이면 분할되었음, 1이면 분할되어있지 않음

- 세 번째 비트가 0이면 이 패킷이 마지막 조각, 1이면 더 많은 조각이 존재함! 

 

7. Fragment Offset

- 13비트로 구성

- 분할된 패킷이 원래 데이터에서 알마나 떨어져 있는지를 나타내므로 분할전 데이터그램을 복원할 때 사용한다. 

 

8. Time To Live

- 몇 개의 라우터를 이동할 수 있는지를 나타내는 8비트로 구성된 필드

- 만약 이 필드의 값이 5(00000101)라면 5개의 라우터까지 통과할 수 있고 0이 되면 이 패킷은 버려진다. 

.

9. Protocol ID 

- 이 필드는 상위 계층의 프로토콜이 어떤 프로토콜인지 나타내는 8bit로 구성된 필드이다. 

- 1: ICMP, 6:TCP, 17: UDP, 89:OSPF 등등 

 

10. Header Checksum

- IP헤더가 손상됐는지 체크하는 16비트로 구성되어있는 필드

 

 11. Source IP Address 

- 출발지 IP주소를 나타내는 필드 

 

12. Destination IP Address

- 목적지 IP주소를 나타내는 32비트로 구성된 필드

 

13. Options: 주로 사용되지는 않지만, 테스트용으로 사용되는 가변길이의 필드

 

14. Padding: Options를 사용하는 경우 길이가 맞지 않을 때 덧붙이는 용도로 사용되는 필드, 패킷의 크기가 32bit 단위로 되도록 Padding으로 정확하게 맞춤 

 

15. Data(데이터그램): 상위계층에서 전달된 데이터를 나타냄, 상위계층에서 데이터(데이터그램)가 전달되면 IP헤더가 붙여져 패킷이라는 이름이 되고 이 패킷에 데이터링크의 이더넷 헤더가 붙고 프레임이라는 이름으로 다시불리게 된다. 

 

https://www.eit.lth.se/ppplab/IPHeader.htm

 

IP Protocol Header

Version. 4 bits. Specifies the format of the IP packet header. Version Description 0 Reserved. 1 2 3   4 IP, Internet Protocol. 5 ST, ST Datagram Mode. 6 SIP, Simple Internet Protocol. SIPP, Simple Internet Protocol Plus. IPv6, Internet Protocol. 7 TP/IX,

www.eit.lth.se

IP헤더에 대한 자세한 설명 

생각해보니 이더넷은 데이터링크 계층을 대표하는 프로토콜이니 이더넷 헤더는 데이터링크 계층에서 붙고 

IP는 네트워크 계층에서 사용하는 거니까 당연히 네트워크 계층에서 헤더가 붙는다고 생각하면 될 것 같다. 

'네트워크' 카테고리의 다른 글

스태틱 라우팅과 다이내믹 라우팅  (0) 2024.06.23
라우터  (0) 2024.06.23
IP 클래스와 서브넷 마스크  (0) 2024.06.23
IP  (0) 2024.06.20
네트워크 계층  (0) 2024.06.20

IP주소는 8비트 4개 총 32비트로 이루어져있다.

8비트는 2^8으로 0부터 255까지 256개의 수를 표현할 수 있다.

따라서 0.0.0.0 ~ 255.255.255.255까지 2^32개의 주소 표현 가능 -> 43억개 

 

43억개나 되는 IP주소를 효율적으로 관리하기 위해 클래스라는 것이 등장.

클래서는 A,B,C,D 총 4가지가 있다. 

 

클래스 A

- 32비트 중에서 가장 앞에 있는 비트가 0으로 시작하는 클래스 

- 가장 앞에 있는 8비트를 네트워크 주소로 사용, 나머지 24비트를 호스트 주소로 사용 

- 가장 첫번째 비트가 0으로 고정되어있으므로, 나머지 7비트로 표현할 수 있는 수는 2^7로 128개, 0부터 127까지 128개의 네트워크를 구분할 수 있다. 

- 나머지 24비트로 2^24개(16,777,216)의 호스트를 구분할 수 있다. 

- 실재로는 호스트부의 모든 비트가 0이거나 1인 주소는 호스트에 부여할 수 없음! 따라서 2개 뺴면 16,777,214개를 할당할 수 있다. 

- 클래스 A는 1600만개의 호스트를 지정할 수 있는 네트워크가 128개 있다는 것을 기억하면 된다. 

- 0.0.0.0 ~ 127.0.0.0 범위에 있음

 

클래스B

- 32비트 중에서 가장 앞에 있는 2비트가 10으로 시작하는 클래스

- 가장 앞 16비트를 네트워크 주소로 사용하고 나머지 16비트를 호스트 주소로 사용

- 16,384(2^14개, 네트워크 주소 16개 중에서 앞 두 비트는 10으로 고정되어 있으므로), 128.0~ 191.255까지 네트워크 주소로 사용 

- 호스트 주소는 0.0~ 255.255까지 65,536개의 호스트를 구분할 수 있음, 실제로는 호스트부의 모든 비트가 0이거나 1인 주소는 호스트에 부여할 수 없음. 따라서 2개를 빼면 65,534개를 할당할 수 있음

- 만약 앞부분의 네트워크 주소를 130.5.0.0으로 정했다면 130.5.0.0~ 130.5.255.255까지 총 65,536개의 호스트에 IP를 부여할 수 있다는 의미이다.

 

클래스C

32비트 중에서 가장 앞에 있는 3비트가 110으로 시작하는 클래스 

- 가장 앞에 있는 24비트를 네트워크 주소로 사용, 나머지 8비트는 호스트 주소로 사용 

- 21비트로 표현할 수 있는 수는 2의 21승으로 2,097,152개의 네트워크를 구분할 수 있따. 

- 즉, 192.0.0.0~ 223.255.255까지 네트워크 주소로 사용한다. 

- 나머지 8비트는 호스트 주소로 사용하는데 8비트는 2의 8승으로 256개의 호스트 주소를 사용할 수 있다. (실제로는 호스트부의 모든 비트가 0이거나 1인 주소는 호스트에 부여할 수 없음! 따라서 2개를 뺴면 254개 할당 가능)

 

클래스D

- 32비트 중에서 가장 앞에 있는 4비트가 110으로 시작하는 클래스입니다.

- 32비트 모두를네트워크 주소로 사용한다. 

- 클래스 D는 224.0.0.0 부터 239.255.255.255까지 나타낸다. 

- 호스트를 지정할 수 없어서 멀티캐스트* 용도로 사용한다.

   * 멀티캐스트: 1:N으로 전송하는 방식으로 특정 그룹에게 전송함. 특정 그룹에게만 데이터 전송할 수 있어 유니캐스트와 멀티캐스트의 단점을 보완하는 방식임. 멀티캐스트를 지원하는 자입가 있어야만 동작할 수 있다는 단점이 있음. 

 

IP 주소에 클래스 표현 방법

IP 주소에 클래스를 표현하고 싶다면 IP 주소 뒤에 슬래쉬(/)를 적고 IP 주소의 앞에서 몇 번째까지가 네트워크 주소로 사용하는지 적어주면 됨. 만약 10.5.1.2라는 클래스 A의 IP 주소를 표기한다면 10.5.1.2/8로, 192.168.0.4라는 클래스 C의 IP 주소를 표기한다면 192.168.0.4/24로 표기 

 

192.168.0.0은 호스트주소가 0이면 192.168.0이라는 네트워크 전체의 주소를 나타내는 용도로 쓰이기 때문에 호스트 주소로는 사용이 불가능하다. 

192.168.0.255는 192.168.0이라는 네트워크의 모든 호스트, 즉 브로드캐스트 주소로 사용되기 때문에 호스트 주소로는 사용이 불가하다. 

 

 

IP클래스의 한계

회사에 필요한 IP는 300개라고 가정하면 

C클래스는 할당받을 수 없다. C클래스는 254개의 호스트만 할당받을 수 있기 때문에, 

 

그래서 회사에서는 국제인터넷주소관리기구에 클래스 B를 요청한다. 

클래스 B는 65,534개의 IP를 할당할 수 있다. 

- 300개를 써도 65,234개나 남는다. 

- 국제인터넷주소관리기구에서 제공할 수 있는 클래스 B의 네트워크는 16,384개이다. 

 

이렇게 IP 주소가 낭비되는 문제를 해결하기 위해 서브넷 마스크라는 것을 생각해낸다. 

 

서브넷마스크

서브넷 마스크는 클래스로 나뉘어 낭비되는 공간을 다시 한번 나누는 기술이다. 

 

ex) IP주소가 300개 필요한 회사에 클래스B의 네트워크를 할당했다고 가정.

130.5.0.0/16으로 앞의 16비트를 네트워크 주소로 사용하고 뒤에 16비트를 호스트 주소로 사용한다. 

여기서 서브넷 마스크는 호스트 주소의 앞 7개의 비트까지 네트워크 주소로 사용하기로 한다. 

 

호스트 주소의 앞 7개까지 1로 채우면 서브넷 마스크는 255.255.254.0으로 표현된다. 

130.5.0.0 

10000010 00000101 00000000 00000000

11111111   11111111   11111110   00000000 이 두개를 AND 연산 하면 

네트워크 부가 늘고 호스트부는 줄어든다. 

130.5.0.0 부터 130.5.1.255까지 총 512개의 주소를 할당할 수 있게 된다. 

따라서6만개 정도 낭비되다가 200개 정도만 낭비된다. 

 

IP를 관리하기 쉽게 클래스로 나눴지만 부족한 IP를 아껴쓰기 위해 서브넷 마스크가 등장하게 된 것이다. 

 

네트워크를 처음 구상할 때 43억개(2^32)의 IP주소면 충분하다고 생각했지만 

인터넷이 폭발적으로 성장하면서 43억개는 턱없이 부족. 

 

한 사람만 보더라도 그 사람이 사용하는 PC, 노트북, 핸드폰, 프린터 등 IP주소를 여러 개 사용한다. 

지구에 IP주소를 사용하는 인구가 40억명이라고 가정하고 한 사람이 3개의 IP주소를 사용한다고 하면 적어도 120억개가 필요하다. 

 

이렇게 사용자의 모든 장치에 고유한 IP를 부여하면 너무 많은 IP주소가 사용되므로 

외부뫙 통신하는 곳에만 고유한 IP를 부여하고 LAN 환경에서는 가상의 IP를 부여하기로 한다. 

 

여기서 가상의 IP를 Private IP라고 말한다. 

 

그리고 외부와 통신하는 곳에 부여하는 고유한  IP를 Public IP라고 말한다. 

 

집 내부에서는 Private IP로 PC, 노트북, 스마트폰을 구분하고 집 외부로 나갈 때는 Public IP하나로 나감(외부에서는 PC, 노트북, 스마트폰 구분 안됨) 

 

Private IP주소는 

10.0.0.0 ~ 10.255.255.255/8 클래스 A

172.16.0.0~ 172.31.255.255/12 클래스 B

192.168.0.0~ 192.168.255.255/16 클래스 C

로 대부분 사용자 PC에서 IP주소를 확인하면 여기에 해당한다. 

 

ipconfig로 보면 같은 ip가 나올 수도 있다. 

 

Q. IP주소는 고유해야 하는데 똑같은 주소면 통신을 못하는거 아닌가? 

A. 맞다. IP주소는 고유해야한다.LAN영역에서 사용하는 Private IP주소는 라우터를 통해서 다른 네트워크로 이동하기 전에  Public IP로 바뀌어서 나가게 된다. 

 

Public IP로 바뀌어서 나가면 고유한 주소로 통신할 수 있다. 

이를 NAT(Network Address Translation)이라고 하고 NAT는 라우터를 배우고나서 자세히 알아보자. 

NAT덕분에 사용자의 모든 기기에 Public IP 를 부여하지 않을 수 있게 되어 IP주소를 절약하게 됐다. 

하지만 이 방법은 NAT Traversal이라는 문제가 발생하는 경우가 있고 

 

IP가 부족한 근본적인 해결 방법이 되지 못하므로 IPv6가 개발되었다. IPv6는 무한대에 가까움 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'네트워크' 카테고리의 다른 글

라우터  (0) 2024.06.23
IP헤더(패킷)  (0) 2024.06.23
IP  (0) 2024.06.20
네트워크 계층  (0) 2024.06.20
스위치  (0) 2024.06.16

+ Recent posts