** 해당 포스팅은 '[인프런] 김영한의 HTTP 웹 기본 지식' 강의 내용을 기록용으로 정리한 글입니다. HTTP의 매우 얕고 넓은 개념을 기록한 점 참고 부탁드리며, 구체적인 내용은 추후 다른 포스팅에서 작성할 예정입니다.
IP란?
IP(Internet Protocol) 란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소입니다.
IP의 주요 역할은?
- 지정한 IP 주소 (IP Address)에 데이터 전달
- 패킷 (Packet)이라는 통신 단위로 데이터 전달
IP 프로토콜의 한계는?
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라지면?
- 패킷이 순서대로 안오면?
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
TCP/IP란?
TCP/IP를 알아보기 이전, 인터넷 프로토콜에 관련하여 간단하게 알아보겠습니다.
인터넷 프로토콜
인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약.
여러가지 종류의 인터넷 프로토콜이 있으나 그 중 TCP/IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜이라고 함께 부르는 경우가 많다.
인터넷 프로토콜은 다음과 같이 4계층으로 이루어져 있습니다.
각 계층은 인터넷 통신에서 특정 역할을 담당하며, 데이터를 전송하고 수신하는 데 필요한 기능을 분리하여 정의합니다.
프로토콜 계층에서 데이터는 어떻게 전달될까요?
데이터가 애플리케이션에서 생성되어 인터넷을 통해 전송되고, 서버에 도달하기까지의 과정을 간단하게 시각적으로 보여드리겠습니다.
TCP/IP 정의
TCP/IP는 하나의 프로토콜이 아니라 TCP와 IP를 합쳐 부르는 말입니다. TCP/IP를 사용한다는 것은 IP 주소 체계를 따라 목적지에 데이터를 전달하고, IP 라우팅을 통해 데이터가 올바른 경로로 도달하도록 한다는 의미입니다. 또한, TCP의 특징을 활용해 송신자와 수신자 간의 논리적 연결을 생성하고 데이터 전송의 신뢰성을 유지할 수 있도록 보장합니다.
즉, TCP/IP를 말한다는 것은 송신자가 수신자에게 IP 주소를 사용해 데이터를 전달하고, 데이터가 제대로 전달되었는지, 너무 빠르거나 느리지 않은지, 정상적으로 수신되었는지에 대해 이야기하는 것을 의미합니다.
☁️ TCP 특징
TCP는 전송 제어 프로토콜 (Transmission Control Protocol)이며 현재는 대부분 TCP를 사용합니다.
- 연결지향 - TCP 3 way handshake (가상 연결)
- 의미 : TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴와 사전에 세션을 수립하는 과정
- SYN(접속 요청), ACK(요청 수락)을 사용
- 데이터 전달 보증
- 전송한 데이터를 잘 받았는지 확인
- 순서 보장
- 전송한 순서대로 도착
- 신뢰할 수 있는 프로토콜
☁️ UDP 특징
UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)입니다.
- 연결지향 X - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
추상적으로 정리하자면, IP와 거의 유사하지만, port와 체크섬 정도가 추가된 것입니다. 따라서 애플리케이션에서 추가 작업이 필요합니다.
Port 란?
포트(port)는 '논리적인 접속장소'이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용됩니다.
네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근하게 됩니다. 하지만 대부분의 경우 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있습니다. 이렇게 컴퓨터에 여러 개의 서버가 실행되고 있다면, 어느 서버에 접속해야 하는지 컴퓨터에게 알려주어야 합니다. 이때 사용되는 것이 바로 포트 번호입니다 !
포트 번호의 범위는 ?
포트 번호는 0~65535번까지의 범위를 가집니다. 이 중 일부는 특정 용도로 예약되어 있습니다.
- 0~1023 (Well-Known Ports): 표준화된 서비스와 프로토콜에 할당된 포트.
예:- 80번: HTTP (웹 서버)
- 443번: HTTPS (보안 웹 서버)
- 25번: SMTP (메일 전송)
- 1024~49151 (Registered Ports): 특정 응용 프로그램에 등록된 포트.
예: 3306번 (MySQL), 5432번 (PostgreSQL). - 49152~65535 (Dynamic/Private Ports): 임시 포트로, 클라이언트가 서버와 연결할 때 동적으로 사용됩니다.
DNS란?
DNS(Domain Name System)는 도메인 이름과 IP 주소를 매핑하는 시스템입니다. 인터넷 상의 모든 장치는 고유한 IP 주소를 통해 통신합니다. 그러나 IP 주소는 숫자로 이루어져 있어 사용자가 기억하기 어렵기 때문에, 사람이 이해하기 쉬운 도메인 이름(예: www.google.com)을 사용할 수 있도록 DNS가 만들어졌습니다.
✔️ DNS의 주요 역할
IP는 기억하기 어려우며, 변경될 수 있습니다. DNS는 변경된 IP 주소를 도메인 이름에 자동으로 매핑하여, 사용자는 IP 주소 변경을 신경 쓰지 않고 도메인 이름만으로 서비스를 이용할 수 있습니다. 즉, 사용자에게는 도메인 이름만 제공되므로, IP 주소가 변경되어도 동일한 도메인 이름으로 서비스를 이용할 수 있습니다.
- 도메인 이름 → IP 주소 변환
- 사용자가 www.google.com과 같은 도메인 이름을 입력하면, DNS 서버가 이를 IP 주소(예: 142.250.190.78)로 변환하여 해당 웹사이트에 접근할 수 있도록 합니다.
- 사용자 친화적인 인터넷 환경 제공
- IP 주소 대신 도메인 이름을 사용하므로 기억하기 쉽고, 직관적인 인터넷 사용이 가능합니다.
- 인터넷의 전화번호부 역할
- DNS는 도메인 이름과 IP 주소를 저장하고 관리하며, 인터넷 사용자가 원하는 웹사이트에 쉽게 연결될 수 있도록 돕습니다.