일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HTTPS
- 응답코드
- react
- 원시값
- lazy-load
- password 안보임
- git 명령어
- CRA
- vscode
- git 개행문자
- 참조타입
- CRLF
- eslint-prettier
- JadenCase
- git autocrlf
- 프로그래머스
- k번째수
- REST API
- prettier
- expected linebreaks to be 'crlf' but found 'lf' linebreak-style
- input type password
- 개행문자
- eslint
- input 안보임
- LF
- IP주소
- 퀵정렬
- git
- 가장큰수
- expected linebreaks to be 'lf' but found 'crlf' linebreak-style
- Today
- Total
우파루파의 개발 기록
[Server] Protocol과 IP, IPS, DNS 및 관련 개념 정리 본문
[Server] Protocol과 IP, IPS, DNS 및 관련 개념 정리
upa-r-upa 2021. 10. 19. 01:42
이번 포스팅에서는 서버 작업을 하기 위한 기본적인 정보 중 하나인 Protocol과 IP, IPS 및 한 번쯤은 들어봤을 TCP/IP 등에 대한 개념에 대해 알아보겠습니다.
Protocol과 IP
Protocol
먼저 프로토콜이란 무엇일까요? 이 포스팅을 읽고 계시는 분이라면 한번쯤은 들어봤으리라 생각되는 단어이고, 그만큼 웹/서버 모두에 있어서 필수적으로 이해해야 하는 개념인데요.
프로토콜이란 컴퓨터 내/외부에서 데이터를 전송할 때 사용하는 교환 방식을 정의하는 규칙 체계의 집합을 말합니다.
어렵지 않도록 조금 풀어서 설명하자면, 데이터를 요청하고 응답하는 과정에서 서로 간의 정해진 형식으로만 통신할 수 있도록 정해둔 규칙을 말하는 것입니다.
특정 방식으로만 데이터를 요청할테니, 응답 시에도 특정 방식으로만 응답을 하도록 약속하는 것입니다.
IP (Internet Protocol)
오늘 알아볼 내용들의 가장 기본적인 개념인 IP는, 흔히들 IP 주소(아래에서 설명할)와 혼동하여 사용하곤 합니다.
하지만 IP와 IP 주소는 엄연히 다른 뜻을 가지고 있습니다. 이미 프로토콜을 이해했다면 IP는 쉽게 이해하실 수 있습니다.
단어의 뜻 그 자체인 Internet Protocol, 인터넷 호스트끼리의 통신 시에 사용하는 프로토콜을 지칭하는 것입니다.
IP 주소
인터넷 내/외부에선 많은 통신이 일어나게 됩니다. 이러한 통신을 흔히 전화에 비유하여 말하곤 합니다.
전화를 걸거나 받을 때 상대방과 본인의 전화번호가 필요한 것처럼, 인터넷 상에서의 통신에서도 서로를 식별할 수 있는 무언가가 필요합니다. 그것이 바로 고유 번호인 IP 주소인 것이죠.
고유 번호를 지칭하는 IP 주소는, 현재까지에 이르러 IPv4, IPv6 총 두 가지 버전이 있습니다.
왜 버전이 두 개나 되는 걸까요? 하나로는 통용될 수 없는 걸까요?
IP 주소 체계의 초기 버전인 IPv4는, 32비트로 0부터 255까지의 12자리 숫자로 이루어져 있습니다.
0.0.0.0
127.0.0.1
위와 같은 주소 체계를 한 번쯤은 본 경험이 있으실 것 같습니다. 바로 이것이 IPv4 체계의 IP 주소입니다.
이러한 숫자들로 이루어진 IPv4의 체계는 절대적인 개수가 부족함과 동시에 인터넷 사용자의 증가에 따라 점점 주소 공간이 고갈되어 가고 있습니다.
이에 따라 자연스럽게 새로운 주소 체계가 필요해지게 되었고, 새로 나온 체계가 바로 IPv6입니다.
아직까지는 표준 프로토콜로는 IPv4를 채택하고 있긴 하지만, 윈도우와 리눅스 등의 대중적인 운영체제에선 대부분 IPv6 프로토콜을 지원하고 있습니다.
IPv6는 32비트로 이루어져 있던 IPv4와 다르게 128비트로 구성되어 있어, 이론상 거의 무한대에 가까운 훨씬 많은 주소들을 사용할 수 있습니다.
2001:0000:0000:0000:0000:25de:0000:cade
2001:0000:25de:0000:0000:0000:0000:cade
DNS
방대한 양의 고유 번호(IP 주소)들은 DNS(Domain Name System)이라는 서비스에서 관리하고 있습니다.
흔히 IP 주소를 전화번호에 비유하고, 그에 따라 DNS를 자연스레 전화번호부에 비유하곤 합니다.
전화번호부는 각각의 번호를 숫자만으로도 기록할 수 있지만 따로 "다빈이네 집 번호" 과 같이 이름을 따로 붙여 관리하곤 합니다.
DNS의 주 기능이 바로 이와 같습니다.
호스트의 고유 번호를 사람이 이해할 수 있는 문자열로 변경하여 식별할 수 있도록 해주는 기능입니다.
쉽게 이해하기 위해 단순하게 예시를 들어보겠습니다.
구글에 접속하기 위해 google.com 을 치고 웹 사이트에 접속하려고 할 때 어떤 일이 벌어질지 다음처럼 추측할 수 있습니다.
- 먼저 특정한 컴퓨터에 google 웹 사이트를 올려둡니다. (호스팅 해둡니다.).
- 컴퓨터의 주소가 예를 들어 0.0.0.0과 같다면, DNS에 이 주소로 들어오는 것뿐만이 아닌, "google.com" 이라는 이름으로도 들어올 수 있도록 서비스에 등록해둡니다.
- 사용자가 google을 친 순간, DNS에서 이러한 요청을 받아 입력한 주소(google)가 0.0.0.0 이라는 주소로 연결되어 있는 걸 확인 후, 0.0.0.0번을 연결합니다.
- 사용자는 google 사이트를 사용할 수 있게 됩니다.
이러한 단계를 거쳐 호스팅 된 서비스를 사용할 수 있습니다.
물론 아주 일부분이고, 매우 축약한 것입니다.
DNS 동작 방식에 대한 자세한 내용을 확인하고 싶다면, 이 글을 추천드립니다.
마치며
이번 글에선 IP와 밀접하게 관련된 내용들의 간단한 개념에 대해 알아보았습니다.
혹시 잘못된 내용이 있다면 댓글이나 메일로 알려주시면 감사하겠습니다.
읽어주셔서 감사합니다.
참고 문서
- https://ko.wikipedia.org/wiki/인터넷_프로토콜
- https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
- https://aws.amazon.com/ko/route53/what-is-dns/
'development > Server | Node.js' 카테고리의 다른 글
[Termius] Termius에서 SSH로 EC2 instance에 접속하기 (0) | 2022.10.07 |
---|---|
[Server] HTTP/HTTPS와 응답 상태별 코드의 간단한 개념 (0) | 2021.06.25 |
[Server] REST API의 간단한 개념 (0) | 2021.06.24 |