[인터넷 통신] http 기본개념 전반적인 내용 찍먹

2025. 12. 21. 22:15·공부일기../Infra

서론..

더보기

http가이드 책이 갑자기 생겨서 읽어봤다.. 볼 책많은데 제목이 좀 만만해보이고 흥미생겨서 앞에만 조곰 읽어봄

일단..전체적인 큰 개념만 정리를 해봤다

 

각 항목별로 자세한 내용은 차차 읽어보면서 써보께.. 할게 산더미임

내용이 넘 재밋게 써져있음..! (아직은)

 

HTTP 완벽 가이드 이책인데 가볍게 보기좋을거같은데 두께는 ㅋㅋ 안가벼워


1. 인터넷 통신의 기본 개념

1-1. IP (Internet Protocol)

인터넷에서 데이터를 주고받기 위해서는 IP 프로토콜이 필요하다. IP는 출발지 IP 주소와 목적지 IP 주소를 가지고 있어서 패킷을 목적지까지 전달한다. 하지만 IP만으로는 부족한 점이 있다. 비연결성이라서 패킷을 받을 대상이 없어도 일단 전송하고, 비신뢰성이라서 패킷이 중간에 소실되거나 순서가 뒤바뀔 수 있다. 또한 같은 IP를 사용하는 서버에서 여러 애플리케이션이 동작할 때 어떤 애플리케이션으로 전달해야 할지 구분할 수 없다.

1-2. TCP (Transmission Control Protocol)

TCP는 IP의 한계를 보완한다. 포트 번호를 추가해서 같은 IP 내에서도 애플리케이션을 구분할 수 있다. 예를 들어 웹 서버는 80번 포트, HTTPS는 443번 포트를 사용한다. TCP는 3-way handshake를 통해 연결을 수립하고, 데이터 전송 순서를 보장하며, 패킷이 손실되면 재전송한다. HTTP 메시지 같은 애플리케이션 데이터는 TCP로 감싸지고, 다시 IP로 감싸져서 네트워크로 전송된다.

HTTP 메시지 → TCP 세그먼트 → IP 패킷 → 네트워크 전송

1-3. UDP (User Datagram Protocol)

UDP는 IP에 포트 번호와 체크섬 정도만 추가한 단순한 프로토콜이다. TCP처럼 연결 수립이나 순서 보장을 하지 않기 때문에 빠르지만 신뢰성은 낮다. 실시간 스트리밍이나 온라인 게임처럼 속도가 중요하고 일부 데이터 손실이 허용되는 경우에 사용한다.

1-4. DNS (Domain Name System)

IP 주소는 192.168.0.1 같은 숫자로 되어 있어서 기억하기 어렵다. DNS는 google.com 같은 도메인 이름을 IP 주소로 변환해준다. 브라우저에 도메인을 입력하면 DNS 서버에 요청해서 실제 IP 주소를 받아온 다음 해당 서버와 통신한다.

 

 

 

2. HTTP 프로토콜

2-1. HTTP 메시지 구조

HTTP는 요청과 응답으로 구성된다. 요청 메시지는 메서드, URI, 헤더, 바디로 이루어져 있고, 응답 메시지는 상태코드, 헤더, 바디로 구성된다. 헤더에는 Content-Type, Authorization 같은 메타데이터가 들어가고, 바디에는 실제 전송할 데이터가 담긴다.

2-2. URI와 URL

URI는 리소스를 식별하는 식별자이고, URL은 리소스의 위치까지 포함한다. /users/123은 URI이고, https://api.example.com/users/123은 URL이다. URL이 URI에 포함되는 더 구체적인 개념이다.

2-3. 미디어 타입

Content-Type 헤더로 데이터의 형식을 명시한다. application/json은 JSON 데이터, text/html은 HTML 문서, image/png는 PNG 이미지를 의미한다. 클라이언트와 서버가 어떤 형식으로 데이터를 주고받을지 약속하는 것이다.

 

 

 

3. HTTP 메서드와 상태코드

3-1. HTTP 메서드

HTTP 메서드는 리소스에 대한 행위를 나타낸다. GET은 조회, POST는 생성, PUT은 전체 수정, PATCH는 부분 수정, DELETE는 삭제를 의미한다. REST API를 설계할 때 이 메서드들을 적절히 활용해서 리소스 중심으로 API를 구성한다.

3-2. HTTP 상태코드

상태코드는 요청의 처리 결과를 나타낸다. 2xx는 성공(200 OK, 201 Created), 3xx는 리다이렉션(301, 302), 4xx는 클라이언트 오류(400 Bad Request, 404 Not Found), 5xx는 서버 오류(500 Internal Server Error, 503 Service Unavailable)를 의미한다.

3-3. 리다이렉션

301은 영구 리다이렉션으로 URL 자체가 변경된 경우 사용하고, 302나 307은 임시 리다이렉션으로 일시적인 이동에 사용한다. 304 Not Modified는 캐시된 리소스를 그대로 사용할 수 있다는 의미다.

 

 

 

4. HTTP 인프라 구성요소

4-1. 프록시와 캐시

프록시는 클라이언트와 서버 사이에서 요청과 응답을 중계한다. 보안, 로깅, 캐싱 등의 기능을 수행한다. 캐시는 응답 결과를 저장해두고 재사용해서 성능을 향상시킨다. 브라우저 캐시, CDN 캐시 등이 대표적이다.

4-2. 게이트웨이와 터널

게이트웨이는 서로 다른 프로토콜을 연결한다. HTTP 요청을 받아서 데이터베이스에 접근하거나 다른 시스템과 통신할 때 사용한다. 터널은 암호화된 통신을 중계하는데, HTTPS 프록시가 대표적인 예다.

4-3. User-Agent

User-Agent는 클라이언트의 정보를 담은 헤더다. 브라우저 종류, 버전, 운영체제 등이 포함된다. 서버는 이 정보를 보고 모바일과 PC에 다른 화면을 제공하거나 특정 브라우저 호환성 문제를 처리할 수 있다.

 

 

 

5. 상태 유지와 보안

5-1. 쿠키와 세션

HTTP는 기본적으로 stateless라서 각 요청이 독립적이다. 상태를 유지하려면 쿠키나 세션을 사용한다. 쿠키는 클라이언트에 저장되는 작은 데이터로 Set-Cookie 헤더로 전달된다. 세션은 서버에 데이터를 저장하고 세션 ID만 쿠키로 주고받는다. 로그인 상태 유지가 대표적인 예다.

5-2. HTTPS와 SSL/TLS

HTTPS는 HTTP에 암호화 계층을 추가한 프로토콜이다. 443 포트를 사용하고 SSL/TLS 인증서 기반으로 보안 통신을 제공한다. 중간에서 데이터를 가로채도 암호화되어 있어서 안전하다.

5-3. Authorization 헤더

인증이 필요한 API에서는 Authorization 헤더에 토큰을 담아서 요청한다. JWT(JSON Web Token)가 대표적이다. 서버는 이 토큰을 검증해서 사용자를 인증하고 권한을 확인한다. Spring Security에서 JWT 필터를 구성할 때 이 헤더를 파싱해서 인증 처리를 한다.

 

 

 

6. HTTP 성능 최적화

6-1. Keep-Alive와 지속 연결

HTTP/1.1부터는 Keep-Alive가 기본으로 활성화되어 있다. TCP 연결을 재사용해서 매번 연결을 맺고 끊는 오버헤드를 줄인다. 하나의 TCP 연결로 여러 HTTP 요청과 응답을 처리할 수 있어서 성능이 향상된다.

6-2. 주요 헤더

Host 헤더는 필수로 도메인을 명시한다. Content-Type은 바디의 데이터 타입을 나타내고, Accept는 클라이언트가 받을 수 있는 타입을 명시한다. Authorization은 인증 토큰을 담고, Cache-Control은 캐싱 정책을 설정한다.​​​​​​​​​​​​​​​​

'공부일기.. > Infra' 카테고리의 다른 글

[Infra] 웹 서버 & 리버스 프록시 (Nginx) 기초개념 찍먹~  (1) 2025.12.03
[Infra] 서버/인프라 배포 기초개념  (1) 2025.11.29
'공부일기../Infra' 카테고리의 다른 글
  • [Infra] 웹 서버 & 리버스 프록시 (Nginx) 기초개념 찍먹~
  • [Infra] 서버/인프라 배포 기초개념
s0-0mzzang
s0-0mzzang
공부한것을 기록합니다...
  • s0-0mzzang
    승민이의..개발일기..🐰
    s0-0mzzang
  • 전체
    오늘
    어제
    • 전체~ (108)
      • 마음가짐..! (10)
      • 공부일기.. (76)
        • weekly-log (6)
        • Spring (19)
        • Java (18)
        • DataBase (10)
        • git (2)
        • JPA (6)
        • kafka (1)
        • Backend Architecture (3)
        • Troubleshooting (삽질..ㅋ) (2)
        • Cloud (1)
        • Docker (2)
        • 알고리즘 (1)
        • 리액트 (2)
        • Infra (3)
      • 하루일기.. (22)
        • 그림일기 (8)
        • 생각일기 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    ADC 환경
    spring boot
    인프라 기초
    TDD
    BufferedReader
    항해플러스
    JPA
    스프링부트
    swagger
    SpringBoot
    spring
    다짐
    ERD
    Paging
    리팩토링
    MySQL
    StringTokenizer
    항해99
    자바
    React
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s0-0mzzang
[인터넷 통신] http 기본개념 전반적인 내용 찍먹
상단으로

티스토리툴바