Web #1. IP Address

김상웅·2022년 5월 17일
0

[WEB]

목록 보기
1/3

유저 A: 제가 님 컴퓨터 해킹해봄
유저 B: 해보셈
유저 A: 님 ip주소 193.132.465.87
유저 B가 게임을 종료했습니다.

실제로 IP 주소를 통해 상대방의 컴퓨터를 해킹할 수 있을까?
IP주소가 컴퓨터의 고유식별번호로 사용될 수 있는 것인가?

코드를 잘 짜고, 알고리즘을 잘 푸는 것도 좋은 개발자가 되는 방법 중 하나입니다.
마치 군인이 총을 잘쏘고 좋은 체력을 가진 것처럼
하지만 프로그래밍의 기본이 되는 컴퓨터에 대한 이해없이 그저 코딩만 할 수 없다고 생각합니다.

이번 포스팅에서는 Ipv4 주소에 대해 알아보겠습니다.


📌 IP address


IP란 Internet Protocol 의 줄임말입니다.
인터넷에 연결되어 있는 모든 기기 (노트북, 스마트폰 등)를 식별할 수 있는 고유 주소입니다.

우리는 이 IP 주소를 갖고 있는 기기나 컴퓨터로 다른 컴퓨터와 통신 (정보를 주고 받는 일)을 할 수 있습니다.

1. Router


Router, 공유기를 의미합니다.
공유기 뒷면을 보면 두가지 종류의 포트가 존재합니다.

WAN (Wide Area Network 광역 네트워크)

통신사와 계약하면서 받았던 회선을 연결하는 포트입니다.
public IP (공용IP)를 갖고 있으며 누구나 접속할 수 있습니다.

LAN (Local Area Network 지역 네트워크)

각각의 기기에 연결되는 회선입니다.
이 포트와 연결된 기기는 각각 private IP (사설 IP)를 지니게 됩니다.

마찬가지로 Router (각각의 네트워크를 중개하는 역할)
이 라우터 자체도 네트워크의 일부이기 때문에 당연 IP를 지니고 있습니다.
Router address 또는 Gateway address라는 이름을 가지고 있습니다.

2. 외부 네트워크와 통신


private IP를 갖고 있는 기기로 부터 외부 네트워크 통신을 하기 위해서 NAT라는 방식을 사용합니다.

NAT (Network Address Tanslation)
즉 사용자 (client)가 LAN을 통해 외부 네트워크에 요청을 한다고 가정을 합시다.
이 때 Router는 LAN IP주소 (private Ip)를 WAN IP주소 (public IP)로 변환 후 외부 네트워크에 요청하게 됩니다.
이것을 NAT라고 합니다.


3. 포트 (port)


네트워크 서비스나 특정 프로세르를 식별하는 논리 단위라고 정의하고 있습니다. (출처: wikipedia)

감이 잘 오지 않는데요.
제가 이해한 방법을 말씀드리겠습니다.🙄
영화관 좌석을 포트 번호로 대입하여 이해를 해보았습니다.

만약 영화관 들어가기 전에 좌석을 구하지 않고 들어오는 순서대로 좌석에 앉는다면,, 영화를 보기 힘들뿐더러 원하는 좌석이 겹쳐 충돌이 발생할 수 있습니다.
그렇기 때문에 영화관에 들어가기 전 좌석을 미리 선택하고 구매하여 "F열 16번"처럼 좌석 번호가 구매자에게 주어집니다.

열심히 코딩을 하면서 브라우저에 렌더링 되는 결과를 확인하기 위해 로컬 서버에 개인 프로젝트 두개를 띄우니 콘솔에서 다음과 같은 말을 하더군요.

F열 16번 여기 제자린데요

잘못앉은 것 같은데 비켜주실래요? >> (Y/n)

"Y (yes)"

프로젝트 중 하나의 포트번호가 3001로 변경된 것을 확인할 수 있었습니다..

3000? 3001? 그럼 포트 번호가 어디서부터 어디까지야?

port 번호는 0 ~ 65535번까지 번호를 가질 수 있습니다.

0
22 - SSH
80 - http (웹 페이지를 주고 받을 때의 통신 규약, 웹이 사용, 서버를 만들었을 때 80번 포트로 연결됨)
1023

다만 0부터 1023번 까지는 Well-known port (예약된 포트)로 사용할 수 없습니다.


4. IP주소 할당 방법


IP주소는 우리가 수동으로 지정할 수 있으며,
자동으로 지정되도록 설정할 수도 있습니다.

Static IP

고정 IP라고 부릅니다.
우리가 인터넷을 사용하기 위해 ISP (통신사)와 계약을 맺은 후 IP주소를 할당받아 인터넷을 사용할 수 있습니다.

하지만, 인터넷 사용자가 많아지면서 할당해야되는 IP의 개수가 늘어날 것 입니다.
관리하기도 힘들어지겠죠?

이런 문제를 보완하기 위해 DHCP서버를 구동하여 유동적으로 IP를 할당하게 되었습니다.

Dynamic IP

유동 IP라고 부릅니다.
동일하게 ISP에서 IP를 할당하게 되는데 사용자의 사용이 끝나면 해당 IP를 회수하게 됩니다.

많은 사용자에게 할당하는 IP수를 줄여서 관리할 수 있다는 장점이 있습니다.

하지만 컴퓨터에 웹서버를 설치하고 IP주소를 통해 외부 네트워크에서 본인의 웹사이트에 접속할 수 있게 하였다고 가정해봅시다.
이 때, 만약 재접속을 하게 되면 IP주소를 다시 할당받게될 것이고, 결국 외부 네트워크에서는 의도하지 않은 통신을 할 가능성이 있습니다.

DHCP (Dynamic Host Configuration Protocol)

호스트의 IP주소와 TCP/IP 프로토콜 기본 설정을 클라이언트에게 자동으로 설정하는 방식입니다.
쉽게 말해 통신사에서 IP주소를 대신 할당해주는 방식입니다.


📌 Summary & References


사실 코딩을 한다고 하면서 프로그래밍 언어만 주구장창 생각을 했습니다.

군에서 전역을 하면서 당연히 전공인 영어와 부대원을 관리했던 경험을 더해 영업관리, 해외영업과 같은 방향으로 진로를 선택하려 했었고요,,

IT 업계로 직무 전환을 준비하면서 프로그래밍을 잘하는 능력도 중요하겠지만, 컴퓨터에 대한 기본 이해가 필요한 것 같다고 느꼈습니다.

IP에 대해서는 컴퓨터가 갖고 있는 id 정도로 생각하고 있었기 때문이었죠..

이번 생활코딩 유튜브를 보고, 다양한 자료를 찾아보면서 우리가 볼 수 없는 서버에서 처리되는 과정을 알 수 있었던 것 같습니다.
네트워크, 서버 등 개발자들이 다뤄야하는 컴퓨터에 대한 지식도 쌓아가야겠습니다.!

[참고자료]

생활코딩
https://www.efficientip.com/what-is-dhcp-and-why-is-it-important/
https://support.google.com/fiber/answer/3547208?hl=en

profile
누구나 이해할 수 있도록

0개의 댓글