10월 2일에 시작하는 서버 개발자 1차면접 준비를 위해 팀원들 동의 하에 주체적으로 다 같이 면접 자료 조사 준비 하는 시간을 가졌습니다.
4명의 인원이 각자 part 를 나누어 40분 동안 자료조사를 하고 조사한것들을 바탕으로 블로그를 작성하고 3~5분내외로 발표하는 시간을 가지고 서로 피드백 시간을 가졌습니다.
요약 :
IP의 개념과 IP 주소 체계, 서브넷 마스크에 대해 설명해주세요.신민재 (node_6기)
브라우저에 네이버 주소를 입력했을 때 네트워크 상에서 발생하는 과정을 설명해주세요.최강현 (node_6기)
라우터와 라우팅(동적 라우팅, 정적 라우팅)에 대해 설명해주세요.송강필 (node_6기)
네트워크 에 대하여 문승호 (node_6기)
IP의 개념과 IP 주소 체계, 서브넷 마스크에 대해 설명해주세요
IP : - 네트워크 계층에서 가장 핵심적인 프로토콜이다.
- IP는 데이터를 패킷 1단위로 나누어 전송하고, 받는 쪽에서는 그 패킷들을 다시 조립하여 원래의 데이터로 변환하는 과정을 거친다.
- ipv4 와 ipv6두가지 버전이있다.
Ip 주소 : - 네트워크 계층은 lan간의 통신을 가능하게 하고 , 이는 ip주소를 기반으로 이루어진다. - ip주소는 총 4바이트(32비트)크기,숫자당 8비트로 표현 0~255범위의 10진수 4개로 표기를 한다. 각각의 10진수는 점으로 구분, 점으로 구분된 하나의 10진수를 옥텟이라고한다.
서브넷 마스크 : - 서브넷 마스크는 IP 주소를 네트워크 부분과 호스트 부분으로 나누는 역할을 하는 32비트의 숫자이다. IP 주소는 네트워크와 호스트를 식별하기 위해 사용되는데, 서브넷 마스크는 이 주소를 논리적으로 분리하여 IP 주소 공간을 서브넷으로 나누게 되고, ip주소상에서 네트워크 주소를 1로 표기하고 ,호스트 주소를 0으로 표현한 비트열이다.
<꼬리질문>
ip 목적, 특징 : 주소지정(네트워크 간의 통신과정에서 호스트를 특정하는것을 의미),단편화(데이터를 여러 ip패킷으로 올바르게 쪼개어 보내는것) , 신뢰할수 없는 통신, 비연결형 통신 = ip전송 특징 보안 : 2가지 방법 프로토콜 (TCP(신뢰할수있는 연결형 통신) , ICMP(ip패킷의 전송과정에 대한 피드백 메세지 를 얻기위해 사용하는 프로토콜, 패킷이 상대방에게 어떻게 전송되었는지 알려주는 ip전송 결과를 알수있다.)
ip 신뢰할수없는 통신,비연결형 통신 : 나쁜건아니다. 신뢰성높은 송수신을 하기위해서는 유실된 패킷,순서가 어긋난 패킷등을 점검, 패킷에 대한 오류제어 수행해야됨. 연결형 송수신 하려면 패킷을 주고받는 호스크간 연결을 수립하고,연결 관리를해야된다. 오류제어 및 연결수립은 빠른 송수신과는 배치된 작업. 더많은 시간과 대역폭, 부하가 필요하기 때문이다.
ipv4 ,ipv6차이점: 하나의 ip(ipv4)주소는 총 32비트로 표현. (이론적으로 할당 가능한 ipv4주소는 총 2^32개로 43억개이다. 그러나 지구상 모든 사람들이 주소를 하나만 가지고 있더라도 부족하다. )그래서 등장한것이 ipv6로 16바이트(128비트)로 주소를 표현. (할당가능한 ipv6주소는 무한에 가까운 2^128개 이다. )
mac주소 와 ip주소 각각의 무엇인지 왜 함께 사용하는 이유? : mac주소는 네트워크 인터페이스에 할당되는 물리적 주소로, 로컬 네트워크 내에서 장치를 식별하는데 사용한다. 그리고 ip주소는 네트워크 간 통신에서 호스트를 식별하는 논리적 주소이다. 한 호스트가 모든 네트워크, 모든 호스트의 mac주소를 기억하기 어렵고, mac주소만으로는 네트워크 간의 이동경로 파악, 즉 라우팅이 불가능하기 때문에 ip주소도 함께 사용한는것이다.
서브네트워크: ip주소에서 네트워크 주소로 구분할수있는 네트워크의 부분집합을 의미하며, 서브넷이라고 부른다. 즉 서브넷 마스크는 곧 서브넷을 마스크로 구분하는 비트열이다.서브네팅 : 이러한 서브넷 마스크를 이용해서 원하는 크기로 클래스를 더 잘게 쪼개어 사용하는것을 이라고 한다.
서브넷팅 하는 이유 : 서브네팅은 ip주소를 토대로 네트워크를 더 작은 서브네트워크로 나누기위해 사용한다. 서브네팅을 통해 ip주소와 네트워크를 효율적으로 구획하고 관리할수있다.
host 파일이란 운영체제의 내부에 위치한 네트워크 구성 파일로, 도메인 이름을 특정 IP 주소로 매핑하기 위해 사용됩니다. 이 파일은 컴퓨터가 도메인 이름을 IP 주소로 해석할 때 DNS 서버에 질의하기 전에 우선적으로 참조되는 파일입니다.
이렇게 브라우저 캐시, DNS캐시, host 파일에도 검색한 도메인에 해당하는 ip주소 정보가 없다면
그 때 운영체제는 DNS서버에 해당 도메인의 ip주소를 질의한다
DNS서버
DNS 서버는 계층 구조로 이루어져 있으며, 로컬 DNS 서버는 이 요청을 받고, 자신의 캐시에서 찾거나
루트 네임서버에서부터 순차적으로 질의하여 IP 주소를 찾습니다.
이렇게 찾은 ip주소를 브라우저에 전달하면 브라우저는 전달 받은 ip주소의 웹 서버에 TCP연결을 시도합니다.
TCP 연결을 시도하는 이유
HTTP와 HTTPS는 애플리케이션 계층의 프로토콜로, 클라이언트와 서버 간의 데이터 교환 규칙을 정의합니다.
TCP는 전송 계층의 프로토콜로, HTTP/HTTPS 프로토콜을 안전하고 신뢰성 있게 전송하기 위해 사용됩니다.
HTTP/HTTPS 요청/응답은 TCP 연결 위에서 전송됩니다. 즉, 브라우저와 서버 간에 HTTP/HTTPS 메시지를 주고받으려면 반 드시 TCP 연결이 먼저 수립되어야 합니다.
TCP 연결이 수립된 이후
HTTP 통신은 80번 포트를 통해 통신하고, HTTPS 통신은 443번 포트를 이용해 통신합니다.
HTTP통신과 HTTPS 통신을 이용해 요청을 웹 서버로 보내고
웹 서버로 부터 응답을 받습니다.
꼬리질문
URL과 URI의 차이점
URL이란 인터넷상의 리소스를 식별하기 위한 일종의 주소 체계입니다. URI는 특정 리소스를 식별하거나, 위치를 지정하는 데 사용되며, 모든 리소스를 고유하게 구분할 수 있도록 도와줍니다. 쉽게 말해, URI는 웹에서 파일, 페이지, 서비스, 데이터 등 다양한 리소스를 식별하는 고유한 식별자라고 볼 수 있습니다.
URL은 2가지 유형이 있는데 URL과 URN이다
URI, URL, URN
URL - URL은 리소스의 위치 를 나타내는 URI입니다. - URL은 프로토콜(http), 도메인 이름(www.example.com), 경로(/index.html)로 구성되어 있어,클라이언트가 해당 리소스에 접근할 수 있도록 합니다.
URN - URN은 리소스의 이름을 나타내는 URI로, 리소스를 위치와 관계없이 고유하게 식별합니다. - URN은 리소스의 위치를 나타내지 않으므로, 이 URN만 가지고는 해당 리소스가 어디에 있는지 알 수 없습니다. 단지, 특정 리소스가 "이것이다"라는 고유한 식별자를 제공하는 것입니다.
정리
-URI: 인터넷상에서 리소스를 식별하기 위한고유 식별자입니다. 리소스의 위치 또는 이름을 식별할 수 있습니다.
-URL: URI의 하위 개념으로, 특정 리소스의위치를 나타내어 해당 리소스에 접근할 수 있도록 합니다.
-URN: URI의 하위 개념으로, 리소스의이름을 나타내어 해당 리소스를 고유하게 식별하지만, 위치 정보는 제공하지 않습니다.
라우터와 라우팅(동적 라우팅, 정적 라우팅)에 대해 설명해주세요.
⭐1-1. 라우터 란?
둘 이상의 패킷 전환 네트워크 또는 서브네트워크를 연결하는 장치입니다.
데이터 패킷을 의도한 IP 주소로 전달하여 이러한 네트워크 간의 트래픽을 관리합니다.
여러 장치가 동일한 인터넷 연결을 사용할 수 있도록 합니다.
⭐ 1-1-2. LAN & WAN 이란? 대부분의 라우터는 근거리 통신망(LAN)과 광역 네트워크(WAN) 간에 데이터를 전달합니다.
LAN: 특정 지리적 영역으로 제한된, 연결된 장치 그룹입니다. ex) 이더넷, 와이파이 등
WAN: 먼 거리에 있는 컴퓨터 그룹을 연결하는 대규모 컴퓨터 네트워크입니다. ex) 임대 회선, VPN, IP 터널 등
⭐ 1-1-3. 라우터가 작동하는 원리 1. 패킷의 헤더를 읽어 어디로 가는지 확인 2. 라우팅 테이블을 참조하여 해당 대상에 대한 가장 효율적인 경로를 파악 3. 패킷을 경로상의 다음 네트워크로 전달
⭐ 1-1-4. 라우터와 모뎀의 차이점은? 라우터는 네트워크를 형성하고 해당 네트워크 내부 및 네트워크 간의 데이터 흐름을 관리하는 반면, 모뎀은 이러한 네트워크를 인터넷에 연결합니다.
⭐1-1-5 라우터와 스위치의 차이 라우터는, 다양한 네트워크를 연결하는 장치로 IP주소가 사용되고 네트워크 계층에 속합니다. 스위치는, 다양한 장치를 동시에 연결하는 장치로 MAC 주소가 사용되고 데이터 링크 계층에 속합니다.
라우터는 목적지가 불명확한 데이터가 들어오면 데이터를 폐기하지만, 스위치는 브로드캐스팅을 한다는 차이점도 있습니다.
⭐1-1-6 라우터와 게이트웨이 차이 라우터는 주로 LAN과 WAN을 연결(layer3)하는데 많이 사용되며, 게이트웨이는 프로토콜이 다른 네트워크를 연결(layer4)할 때 주로 사용합니다. 요즘에는 라우터와 게이트웨이 기능이 같이 있는 장비를 많이 사용하는 추세입니다.
⭐1-1-7 게이트웨이란? 이종 프로토콜 및 네트워크 간에 통신을 가능하게 하며 다른 네트워크로 들어가는 문 역할을 하는 네트워크 포인트입니다.
⭐1-2. 라우팅 이란?
라우팅은 네트워크에서 경로를 선택하는 프로세스입니다. 미리 정해진 규칙을 사용하여 최상의 경로를 선택하는 프로세스입니다.
라우팅은 네트워크가 정체 없이 최대한 많은 용량을 사용할 수 있도록 데이터 트래픽을 관리함으로써, 네트워크 장애를 최소화해 줍니다.
⭐1-3. 동적 라우팅(Dynamic Routing) 이란?
인접 라우터들 간에 라우팅 프로토콜을 이용하여 네트워크 정보를 서로 주고받으며 라우팅 테이블을 상시 자동적으로 생성,유지하는 라우팅 방식
장점 1. 네트워크 장비에서 신규 대역을 추가할 때마다 별도의 추가 작업 없이 바로 다른 대역으로 통신이 가능하다. 2. 초기 세팅만 하면 관리자의 업무량을 덜 수 있으므로 대규모의 네트워크 환경에서 적합한 기술이다.
단점 1. 서로 간의 라우터가 광고하는 모든 대약의 패킷이 전송 및 수신되므로 라우터의 부하는 높아질 수 있다.
⭐1-4. 정적 라우팅(Static Routing) 이란?
정적 라우팅이란, 장비 간 통신을 하기 위한 라우팅 테이블을 관리자가 직접 수작업으로 추가하는 것이다.
장점 1.동적 라우팅에 비해 설정이 간단한 편이다. 2. 관리자가 설정한 경로로만 패킷이 전달되는 구조이기 때문에 라우터의 부하를 줄일 수 있다.
단점 1. 경로가 지나치게 많거나 수정이 빈번하면 그만큼 관리자의 업무량이 많아진다. 2. 네트워크 규모가 커질수록 점점 관리의 부담도 커질 수 있다.
⭐1-5. 라우팅 테이블 이란?
라우팅 테이블이란, 네트워크 인프라를 통해 통신하는 장비들이 자체적으로 가지고 있는 네트워크 주소록이다.
IT 장비는 모두 고유의 IP 주소를 가지고 있으며, IP 주소를 통해 서로 간 통신한다. 그러나 IP 주소를 가지고 있다고 모든 장비 간에 통신이 되지는 않는다.
IT 장비는 특정 IP 주소에 패킷을 전달할 때, 먼저 자신의 라우팅 테이블을 참조하여 이 IP가 주소록에 있는 IP인지 확인한다. 만약 라우팅 테이블에 등록된 주소라면 패킷이 정상적으로 전달되고, 테이블에 없는 주소라면 갈 길을 잃은 것처럼 패킷 전달에 실패한다.
4.네트워크에 대하여 !
네트워크 개념은 컴퓨터 장치 또는 시스템 간에 데이터를 전송하고 통신하는 방식과 관련된 기술 및 프로토콜의 집합입니다.
모든 인터넷 기반 서비스와 프로그램이 이 네트워크 위에서 동작합니다.
1. 네트워크의 기본 구성 요소는 총 4가지로 호스트, 라우터 , 스위치, 네트워크 인터페이스 카드 입니다. 각각을 간단하게 설명하면
호스트 -> 네트워크에 연결된 컴퓨터나 장치를 가리킵니다. (컴퓨터 , 스마트폰 , 서버등등 )
라우터 -> 여러 네트워크 간의 데이터를 전달하고 최적의 경로를 찾아주는 장치입니다. node.js에서는 어플리케이션의 URL 경로에 따라 적절한 요청 핸들러를 실행하는 기능을 제공합니다.
대표적인 프레임 워크로 Express가 있습니다.
//Express 는 웹 서버에서 라우터를 쉽게 설정하고 관리할 수 있게 돕습니다.
스위치-> 네트워크 내에서 장치들을 연결하여 패킷을 전송하는 장치입니다. 스위치는 데이터가 올바른 장치로 도달할 수 있도록 네트워크 트래픽을 관리합니다.
네트워크 인터페이스 카드(NIC): 컴퓨터나 장치가 네트워크에 연결할 수 있도록 해주는 하드웨어입니다.
2. IP 주소
IP 주소는 현재 두가지 IP 체계가 존재합니다 .
-IPv4와 IP v6입니다 .
IP v4 : 네트워크상의 장치를 구분하는 가장 널리 사용되는 형식입니다. 32비트 주소를 사용합니다. 이 주소는 네 개의 8비트 숫자로 나뉘며, 각 숫자는 0부터 255 사이의 값을 가집니다. 예시로 192.168.0.1과 같은 형식입니다.
IPv4의 주소 공간은 약 43억 개(2^32)로, 초창기에는 충분했지만, 인터넷 사용자의 급증과 다양한 기기(스마트폰, IoT 장치 등)의 등장으로 인해 현재 거의 고갈된 상태입니다.
IPv6: 128비트 주소를 사용합니다. 이 주소는 16진수 8개의 블록으로 표현되며, 예시는 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 형식입니다.
IPv6의 주소 공간은 사실상 무한대에 가까운 수 입니다.
3. DNS(Domain Name System)
DNS 는 사람이 이해하기 쉬운 도메인 이름 google.com을 컴퓨터 언어 즉 IP주소 로 변환해주는 시스템입니다. 사용자가 웹사이트에 접속할 수 있도록 돕습니다.
Node.js에서 dns 모듈은 DNS 조회를 수행할 수 있게 해줍니다. 이 모듈을 사용하여 도메인 이름을 IP주소로 변환하거나 IP주소를 기반으로 도메인 이름을 역조회할 수 있습니다.
// DNS 캐싱이란 -> DNS 캐싱은 도메인 이름과 IP 주소간의 매핑 정보를 클라이언트 또는 서버 측에 임시로 저장하여 동일한 도메인에 대해 반복적으로 DNS 조회를 하지 않도록 하는것입니다. 응답속도를 향상시킬 수 있습니다.
4. 라우팅 (Routing)
라우팅은 데이터가 네트워크 상에서 목적지로 가는 최적의 경로를 찾는 과정입니다. 2가지 방식으로 라우팅이 이루어 집니다
1. 정적 라우팅 -> 관리자가 직접 경로를 설정하는 방식입니다 . 간단한 환경에서 유용하지만 복잡한 환경에서는 유연성이 떨어집니다.
2. 동적 라우팅 -> 라우터가 실시간으로 네트워크 상태를 분석하고 최적의 경로를 실행합니다.
node.js 에서는 HTTP 메서드 GET , POST ,PUT, DELETE 등을 기반으로 클라이언트의 요청을 처리하는 라우팅 기능을 지원합니다. Express.js 는 라우팅을 구현할 떄 node.js 에서 널리 사용되는 프레임 워크입니다.
- 두 라우팅의 차이점은 -> 정적라우팅은 고정된 경로로 요청을 처리하고 동적 라우팅은 경로의 일부가 변수로 처리되어 유연하게 요청을 처리 합니다.