네트워크 기초 개념 정리

기성·2025년 7월 17일
0

TIL

목록 보기
87/91

🔗 1. 클라이언트와 서버

  • 클라이언트(Client): 웹 브라우저처럼 요청을 보내는 쪽
  • 서버(Server): 요청을 받고, 처리한 결과를 응답하는 쪽

브라우저(클라이언트) → 요청(Request) → 서버
서버 → 응답(Response) → 브라우저

📡 2. HTTP와 HTTPS

✅ HTTP(HyperText Transfer Protocol)

웹에서 정보를 주고받는 비연결성, 비상태성 프로토콜

  • HTTP 특징

    • 비연결성 (Connectionless): 클라이언트가 서버에 요청을 보내고 응답을 받으면 연결을 끊음. (HTTP 1.0 기본)

    • 무상태성 (Stateless): 서버는 클라이언트의 이전 요청을 기억하지 않음. (이를 보완하기 위해 쿠키, 세션, 토큰 등이 사용됨)

🔒 HTTPS (HTTP + SSL/TLS)

HTTPS는 SSL/TLS 프로토콜을 사용해 암호화된 데이터를 전송한다.

  • SSL/TLS (Secure Sockets Layer / Transport Layer Security):

    • 클라이언트와 서버 간의 통신을 암호화하고 무결성을 보장하는 프로토콜.

    • 핸드셰이크 과정: 공개키/개인키 암호화, 대칭키 생성 및 교환 등을 통해 보안 채널을 구축하는 과정.

  • SSL/TLS 프로토콜을 사용해 암호화된 HTTP

  • 중간자 공격(MITM) 방지

📨 3. 요청 방식 (HTTP Method)

메서드설명
GET데이터 조회
POST데이터 생성
PUT / PATCH데이터 수정
DELETE데이터 삭제

🗂️ 4. 상태 코드 (Status Code)

상태 코드의미
200OK, 성공
201Created
400Bad Request (클라이언트 오류)
401Unauthorized (인증 실패)
403Forbidden (접근 권한 없음)
404Not Found
500Internal Server Error (서버 오류)

🧭 5. DNS와 IP

🔎 DNS(Domain Name System)

DNS의 주된 역할은 사용자가 입력한 도메인 이름(Domain Name)을 컴퓨터가 이해할 수 있는 IP 주소로 변환해주는 것.

  • www.example.com → IP 주소로 변환

DNS가 필요한 이유

  • 기억의 용이성: IP 주소는 복잡한 숫자 배열이라 사람이 외우기 매우 어렵다. DNS 덕분에 우리는 복잡한 IP 주소를 외울 필요 없이 의미 있는 도메인 이름을 통해 웹사이트에 접속할 수 있다.

  • 유연성: 웹 서버의 IP 주소가 변경되더라도, DNS 레코드만 업데이트하면 도메인 이름은 그대로 유지할 수 있다. 사용자는 IP 주소 변경 사실을 알 필요 없이 계속해서 동일한 도메인으로 접속할 수 있다.

  • 확장성: DNS는 전 세계적으로 분산된 계층적 구조를 가지고 있어, 수많은 도메인 이름과 IP 주소를 효율적으로 관리하고 확장할 수 있다.

🧠 IP(Internet Protocol)

  • 컴퓨터를 식별하는 주소

브라우저는 URL을 입력하면 DNS 요청 → IP 획득 → 서버 접속 과정을 거친다.

🌐 주소창에 google.com을 입력하면 일어나는 일

  1. 사용자가 브라우저에 google.com을 입력하면 URL주소 중 도메인 네임 부분을 DNS 서버에서 검색한다.

  2. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다.

  3. 브라우저는 HTTP 프로토콜을 사용하여 요청 메세지를 생성하고 HTTP 요청 메세지는 TCP/IP 프로토콜을 사용하여 서버로 전송된다.

  4. 서버는 response 메세지를 생성하여 다시 브라우저에게 데이터를 전송한다.

  5. 브라우저는 response를 받아 파싱하여 화면에 렌더링한다.

🔁 6. TCP와 UDP

TCP(Transmission Control Protocol)

TCP는 전송 계층의 대표적인 프로토콜로, 연결 지향 방식의 신뢰성 있는 데이터 전송을 보장한다.

특징

  • 연결 지향: 데이터를 전송하기 전에 송신자와 수신자 사이에 논리적인 연결을 설정한다. 이 연결 설정 과정을 3-way HandShake라고 한다.

    • SYN (Synchronize Sequence Number): 클라이언트가 서버에 연결 요청

    • SYN-ACK (Synchronize-Acknowledgment): 서버가 클라이언트에 요청 수락 및 자신의 시퀀스 번호 전송

    • ACK (Acknowledgment): 클라이언트가 서버에 최종 확인

    • 통신 종료 시에는 4-way HandShake를 통해 연결 해제

  • 신뢰성 보장

    • 흐름 제어: 송신자가 수신자의 처리 속도보다 빠르게 데이터를 보내지 않도록 조절하여 버퍼 오버플로우를 방지한다.

    • 혼잡 제어: 네트워크의 혼잡 상태를 감지하고 데이터 전송량을 조절하여 네트워크 과부하를 방지한다.

    • 오류 감지 및 재전송: 패킷 손실, 손상, 중복, 순서 뒤바뀜 등을 감지하고, 문제가 발생하면 해당 패킷을 재전송하여 데이터의 완전한 전달을 보장한다.

    • 순서 보장: 전송된 패킷들이 도착 순서가 뒤바뀌더라도, 수신 측에서 올바른 순서로 재조립하여 애플리케이션에 전달한다.

  • 전이중 통신: 데이터를 동시에 양방향으로 주고 받을 수 있다.

  • 일대일 통신: 하나의 송신자와 하나의 수신자간의 통신에 사용된다.

TCP의 단점

  • 연결 설정 및 해제 과정, 흐름/혼잡 제어 등으로 인해 오버헤드가 크고 속도가 느리다.

  • 실시간성이 중요한 서비스에서는 지연이 발생할 수 있다.

TCP가 사용되는곳

  • 웹 브라우징 (HTTP/HTTPS): 정확한 웹 페이지 내용을 받아야 함.

  • 파일 전송 (FTP, SFTP): 파일 내용이 손상 없이 정확하게 전송되어야 함.

  • 이메일 (SMTP, POP3, IMAP): 메일 내용이 정확히 전달되어야 함.

  • 터미널 접속 (SSH, Telnet): 명령어와 응답이 정확해야 함.

UDP (User Datagram Protocol)

UDP는 전송 계층의 또 다른 프로토콜로, 비연결 지향 방식의 비신뢰성 데이터 전송을 제공한다.

특징

  • 비연결 지향 (Connectionless): 데이터를 전송하기 전에 별도의 연결 설정 과정(3-way Handshake 등)이 없습니다. 송신자는 데이터를 일방적으로 전송합니다.

  • 비신뢰성 (Unreliable Data Transfer):

    • 데이터의 도착 여부, 순서, 중복 등을 보장하지 않는다.

    • 패킷 손실이나 오류가 발생해도 재전송하지 않는다. (최소한의 오류 검사만 수행)

    • 흐름 제어나 혼잡 제어 기능이 없다.

  • 빠른 속도: 연결 설정 및 신뢰성 보장을 위한 오버헤드가 없어 TCP보다 훨씬 빠르다.

  • 낮은 오버헤드: 헤더 크기가 작고 처리해야 할 제어 로직이 적어 효율적이다.

  • 멀티캐스트/브로드캐스트 지원: 한 번에 여러 수신자에게 데이터를 전송할 수 있다.

UDP의 단점

데이터 손실이나 순서 변경에 대한 보장이 없어, 애플리케이션 계층에서 이러한 문제를 직접 처리해야 할 수도 있다.

UDP가 사용되는 곳

  • 실시간 스트리밍 (Video/Audio Streaming): 약간의 패킷 손실은 전체 흐름에 큰 영향을 주지 않으며, 지연 없이 연속적인 데이터 수신이 더 중요할 때. (예: 유튜브 라이브, 넷플릭스)

  • 온라인 게임: 실시간으로 플레이어 위치 정보 등이 전송될 때, 약간의 손실보다 빠른 업데이트가 중요할 때.

  • DNS (Domain Name System): 짧은 질의-응답에 사용되어 빠른 응답이 중요할 때.

  • VoIP (Voice over IP): 음성 통화 시 지연 없이 연속적인 음성 전달이 중요할 때.

요약

프로토콜특징예시
TCP연결 지향, 신뢰성 ↑, 속도 ↓웹, 파일 전송 등
UDP비연결 지향, 신뢰성 ↓, 속도 ↑실시간 영상, 게임

TCP/IP 4계층

  • 애플리케이션 계층 (Application Layer): 사용자와 직접 상호작용하는 서비스 및 프로토콜. (HTTP, HTTPS, FTP, DNS 등)

  • 전송 계층 (Transport Layer): 프로세스 간의 신뢰성 있는 데이터 전송을 담당. (TCP, UDP)

  • 인터넷 계층 (Internet Layer): 데이터를 패킷 단위로 묶어 목적지까지 경로를 설정하고 전달. (IP, ARP, ICMP)

  • 네트워크 인터페이스 계층 (Network Interface Layer): 실제 물리적 네트워크를 통해 데이터를 전송. (이더넷, Wi-Fi 등)

🧾 7. 쿠키, 세션, 로컬스토리지

저장소위치특징
쿠키서버/브라우저 모두요청마다 자동 전송됨
세션서버브라우저와 연결된 상태 유지
로컬스토리지브라우저클라이언트에만 저장, 용량 큼

🛑 8. CORS란?

Cross-Origin Resource Sharing
다른 도메인으로 요청을 보낼 때 발생하는 보안 정책

Cross Origin Resource Sharing의 약자로 교차 출처 리소스 공유라고 한다.브라우저가 임의의 웹 페이지에서 다른 웹 페이지의 자원에 무분별하게 접근하는 것을 막아 보안 위협으로부터 웹 페이지를 보호하는 역할을 한다.

발생 원인

서버와 브라우저 간에 서로 통신을 할 때 서버는 브라우저가 자원에 접근하는 것에 대해 권한을 부여하고 이를 알려준다. 그러지 않을 시 브라우저에서 해당 자원에 접근하는 것이 안전하지 않다 판단하여 통신을 차단 하는데 이 때 일어나는 것이 CORS 오류이다.

해결 방안

이에 대한 대응 법으로는 서버 측에서 브라우저에 접근에 대한 권한이 있음을 알리는 방법과 응답 헤더의 Access-Control-Allow-Origin에 접근을 허용할 출처를 반환하는 방법이 있다.

⚡ 9. 캐시와 성능 최적화

캐싱

이전에 가져온 데이터를 임시로 저장하여, 같은 요청이 발생했을 때 빠르게 응답할 수 있도록 하는 기술.

  • 브라우저 캐시: 리소스를 다시 내려받지 않고 재사용

  • Cache-Control 헤더로 설정

  • 이미지, JS, CSS 등에 많이 사용

🔒 10. 인증 방식

방식설명
Basic Auth사용자 ID/PW를 그대로 인코딩해서 전달
Token(JWT)로그인 후 토큰 발급, 이후 요청 시 포함
OAuth제3자 인증 방식 (ex: 구글 로그인)
profile
프론트가 하고싶어요

0개의 댓글