TCP/IP
TCP/IP는 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜이다.
통신은 4개의 계층이 모두 같고 정상적으로 이루어져야 가능하다.
- 네트워크 접근 계층
- 물리적 네트워크 매체를 통해 실제 데이터를 전송한다
- 인터넷 계층
- 데이터를 목적지까지 전달하기 위해 라우팅(네트워크간 데이터의 전송)을 관리한다.
- 전송 계층
- 응용 계층에서 발생한 데이터의 전달을 관리하며, 데이터 전송의 신뢰성, 오류 복구, 흐름 제어를 처리한다.
- 응용 계층
- 사용자와 직접 상호작용하며, 네트워크 서비스를 제공한다. 또한 데이터를 우리가 실제로 사용하는 형태로 변환한다
IP(Internet Protocol)
네트워크 계층에서 데이터를 패킷 단위로 분할하고, 이를 목적지로 전달하는 것을 담당하는 프로토콜이다. IP를 통해 전송되는 데이터는 인터넷 상의 다양한 기기들과 통신할 수 있다. 즉 통신을 할 때에는 목적지의 IP주소를 알고 있어야한다.
IP주소는 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유의 주소로 IPv4랑 IPv6가 있다.
IPv4 (Internet Protocol version 4)
- 형식: 32비트 주소 체계
- 주소 표현: 4개의 8비트 숫자로 구성되며, 각 숫자는 0부터 255까지의 값을 가진다. 이 숫자들은 점(.)으로 구분된다.
- 예시: 192.168.0.1
- 주소 공간: 약 43억 개의 고유 주소를 제공. 그러나 인터넷의 성장으로 인해 이 주소 공간은 고갈되었다.
- 특징:
- 보편성: 인터넷의 초기부터 사용되어 온 주소 체계.
- 주소 고갈 문제: 가용한 주소의 수가 한정적이어서, 네트워크 주소 변환(NAT) 등의 기법으로 주소 자원을 효율적으로 사용하려는 노력들이 이루어져 왔다.
IPv6 (Internet Protocol version 6)
- 형식: 128비트 주소 체계
- 주소 표현: 16비트씩 8개 그룹으로 구성되며, 각 그룹은 16진수로 표현되고 콜론(:)으로 구분된다.
- 예시: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 주소 공간: 사실상 무한대에 가까운 주소 공간을 제공, 2^128개(약 3.4×10^38) 주소를 사용할 수 있다.
- 특징:
- 확장성: 훨씬 더 많은 주소 공간을 제공하여, 미래의 인터넷 장치 증가에 대응할 수 있다.
- 향상된 기능: 자동 구성, 보안 개선(IPSec), 멀티캐스트 지원 강화 등 여러 네트워크 기능이 강화되었다.
- 간소화된 라우팅: 라우팅 정보의 효율적인 관리 및 처리를 지원한다.
DNS(Domain Name System)
DNS는 인터넷 상에서 사용되는 네트워크 서비스로, 도메인 이름을 IP 주소로 변환해주는 시스템이다.
DNS의 동작 방식
DNS는 도메인 이름을 IP 주소로 변환하는 과정을 다음과 같은 단계로 수행한다.
- 사용자 요청 (DNS Query):
- 사용자가 웹 브라우저에서 도메인 이름을 입력하면, 해당 도메인 이름의 IP 주소를 찾기 위해 DNS 요청이 발생한다.
- 로컬 DNS 서버 확인:
- 이 요청은 먼저 사용자의 컴퓨터나 네트워크 설정에 지정된 로컬 DNS 서버로 전달된다. 로컬 DNS 서버는 일반적으로 인터넷 서비스 제공업체(ISP)에서 제공한다.
- 로컬 DNS 서버는 이전에 조회된 도메인 이름과 IP 주소를 캐싱하고 있을 수 있다. 만약 캐시에 정보가 있다면, 즉시 IP주소를 반환한다.
- 재귀적 질의 (Recursive Query):
- 만약 로컬 DNS 서버에 해당 도메인에 대한 정보가 없으면, 재귀적 질의를 통해 상위 DNS 서버에 요청을 전달한다. 이 요청은 최종 IP 주소가 반환될 때까지 계속 전달된다.
- 권한 있는 DNS 서버 (Authoritative DNS Server):
- 최상위 도메인(TLD) 서버나 해당 도메인에 대한 권한 있는 DNS 서버가 최종적으로 IP 주소를 반환한다. 예를 들어, example.com 도메인에 대한 권한 있는 DNS 서버는 해당 도메인의 IP 주소를 알고 있다.
- 응답 전달:
- 권한 있는 DNS 서버로부터 받은 IP 주소 정보는 역방향으로 로컬 DNS 서버로 전달되고, 다시 사용자에게 전달된다. 로컬 DNS 서버는 이 정보를 캐싱하여 다음 요청에 빠르게 응답할 수 있도록 한다.
- IP 주소 이용:
- 사용자는 웹 브라우저를 통해 해당 IP 주소로 접속하여 웹사이트에 접근한다.
포트(Port)
포트는 네트워크 통신에서 IP 주소와 함께 사용되어 특정 프로세스나 서비스와의 통신을 식별하고 관리하는 논리적 통신 종단점이다.
포트의 주요 개념
- 포트 번호:
- 포트 번호는 0부터 65535까지의 숫자로 표현되며, 특정 서비스나 애플리케이션을 식별한다. 16비트 숫자로 표현된다.
- 포트의 구분:
- 잘 알려진 포트(Well-Known Ports): 0부터 1023번까지의 포트는 표준 서비스나 프로토콜에 할당되어 있습. 예를 들어, HTTP는 포트 80, HTTPS는 포트 443, FTP는 포트 21을 사용한다.
- 등록된 포트(Registered Ports): 1024부터 49151까지의 포트는 특정 애플리케이션에 등록되어 사용된다. 예를 들어, MySQL 데이터베이스 서버는 포트 3306을 사용한다.
- 동적/사설 포트(Dynamic/Private Ports): 49152부터 65535까지의 포트는 클라이언트 애플리케이션이 임시적으로 사용하는 포트이다. 이러한 포트는 임의로 할당되며, 세션이 종료되면 해제된다.
- 포트의 역할:
- 포트는 한 컴퓨터에서 동시에 실행 중인 여러 네트워크 서비스들을 구분하는 역할을 한다. 예를 들어, 웹 서버는 HTTP 요청을 포트 80에서 받고, FTP 서버는 포트 21에서 파일 전송 요청을 받을 수 있다.
포트포워딩 (Port Forwarding)
포트포워딩은 외부 네트워크에서 들어오는 요청을 특정 내부 네트워크 장치의 포트로 전달하는 기술이다. 단순히 IP의 주소와 포트번호만 입력받은 상황일때에 어느 기기의 요청인지 알 수 없기 때문에 포트포워딩을 사용한다.
- 목적:
- 내부 네트워크의 특정 장치나 서비스에 외부에서 접근할 수 있도록 한다. 예를 들어, 외부에서 집에 있는 NAS 서버에 접속하거나, 원격 데스크톱 서비스에 접속하기 위해 포트포워딩이 사용된다.
- 작동 방식:
- 외부에서 특정 IP 주소와 포트 번호로 요청이 들어오면, 라우터 또는 방화벽이 이를 사전에 설정된 내부 네트워크의 IP 주소와 포트 번호로 전달한다. 예를 들어, 라우터의 공인 IP 주소로 들어온 포트 8080의 요청을 내부 네트워크의 특정 컴퓨터의 포트 80으로 전달하는 경우이다.
- 구성:
- 외부 포트: 외부 클라이언트가 접속할 때 사용하는 포트 번호.
- 내부 IP 주소: 요청을 받을 내부 네트워크의 장치의 IP 주소.
- 내부 포트: 내부 네트워크 장치의 서비스가 실행되는 포트 번호.
- 응용 예:
- 웹 서버: 가정 내의 웹 서버를 외부에서 접속할 수 있도록, 외부에서 포트 80으로 오는 요청을 내부 웹 서버로 포워딩.
- 게임 서버: 친구들과의 온라인 게임을 위해 게임 서버의 포트를 포워딩.
- 원격 데스크톱: 외부에서 내부 네트워크의 컴퓨터에 원격으로 접속하기 위해 포트 3389(RDP 포트)를 포워딩.
참고
https://parodev.tistory.com/28
https://pro-gramm-ing.tistory.com/401
https://hyunie-y.tistory.com/23
'KnockOn Bootcamp' 카테고리의 다른 글
[1주차 TIL] KnockOn Bootcamp(패킷-Packet) (0) | 2024.08.06 |
---|---|
[1주차 TIL] KnockOn Bootcamp(쿠키-Cookie,세션-Session,JWT) (0) | 2024.08.06 |
[1주차 TIL] KnockOn Bootcamp(HTTP,HTTPS,SSL) (0) | 2024.08.06 |
[1주차 TIL] KnockOn Bootcamp (OSI,TCP,UDP) (0) | 2024.08.04 |
[1주차 TIL] KnockOn Bootcamp (Web 개념) (0) | 2024.08.03 |