(컴퓨터 네트워크/학습) HTTP, HTTPS, DNS

1. HTTP


1-1. HTTP 프로토콜이란 무엇입니까?

가이드: 웹에서 HTTP의 역할 설명


HTTP 프로토콜(HyperText Transfer Protocol)은 HTML 문서와 같은 리소스를 검색할 수 있는 텍스트 기반 통신 프로토콜입니다.

웹은 브라우저와 서버 간에 데이터를 보내고 받는 방법으로 HTTP 프로토콜을 사용합니다.

HTTP 프로토콜은 클라이언트-서버 모델을 따르며 일반적으로 기본 포트 80을 사용하여 TCP/IP 통신 위에서 작동합니다.

클라이언트-서버 프로토콜(일반적으로 웹 브라우저)

요청이 수신자 측에서 시작되는 프로토콜입니다. 텍스트, 레이아웃 설명, 이미지, 비디오 및 스크립트와 같은 가져온 하위 문서에서 완전한 문서가 재구성됩니다.

TCP/IP

TCP/IP 프로토콜은 인터넷에서 데이터 통신을 위한 사실상의 표준 프로토콜입니다. 인터넷의 기반이 되는 프로토콜로 인터넷 상에서 데이터를 교환하는 모든 기기들이 사용하는 통신 프로토콜이다.

(컴퓨터 네트워크/학습) 네트워크 계층

1-2. HTTP의 요청/응답 모델에 대해 설명해주세요.

가이드: 클라이언트 서버 간의 요청 및 응답 흐름 설명



출처: https://joshua1988.github.io/web-development/http-part1/#http-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC% 9D%B4%EB%9E%80

HTTP 프로토콜로 데이터를 주고받기 위해서는 클라이언트가 요청을 보내고 서버가 응답을 받아야 합니다. 웹 관점에서 클라이언트는 브라우저이고 서버는 컴퓨터입니다.

브라우저를 열고 URL을 입력하는 순간 HTTP 요청이 시작됩니다. 브라우저는 사용자가 입력한 URL 주소에 해당하는 웹 서버에 도착하여 데이터를 요청하고 웹 서버로부터 응답 데이터를 수신하여 화면에 표시합니다.

1-3. HTTP 메소드 중 GET과 POST의 차이점은 무엇입니까?

가이드: 각 메서드가 리소스를 처리하는 방법 설명


URL을 사용하면 서버에서 특정 데이터를 요청할 수 있습니다. 요청된 데이터에 대해 특정 작업을 수행하려는 경우 HTTP 요청 메서드를 사용합니다.

HTTP GET 방식은 서버에서 일부 데이터를 가져와서 표시할 때 사용. 예를 들어 텍스트 내용 목록을 표시하는 데 사용됩니다. 요청을 보낼 때 GET URL 주소 끝에 있는 매개변수포함되어 발송됩니다.(쿼리 문자열) 콘텐츠가 매개 변수에 노출되기 때문에 민감한 데이터를 처리할 때 GET 요청을 사용해서는 안 됩니다.

HTTP의 POST 방식은 서버의 데이터 값 또는 상태를 변경하려면그것을 사용 예를 들어 텍스트의 내용을 저장하거나 편집하는 데 사용됩니다. HTTP 방식으로 전송할 데이터 따라서 데이터 GET과 달리 데이터 길이에 제한이 없습니다.

1-4. PUT과 PATCH의 차이점은 무엇입니까?

가이드: 멱등성 설명


자원의 PUT 모든 것는 업데이트 방법이고 PATCH는 리소스의 부분를 업데이트하는 방법입니다.

동일한 요청을 여러 번 수행해도 같은 결과가 나오는 경우를 멱등성(idempotency)이라고 합니다. PUT은 멱등적이지만 PATCH는 멱등적일 수도 있고 아닐 수도 있습니다.

PATCH 방식은 PUT 방식처럼 자원을 대체하지 않기 때문에 요청을 사용하는 방식에 제약이 없기 때문이다.

예를 들어 PATCH 방식에서 수정할 리소스의 일부만 보낸다면 멱등적(idempotent)이다.

// 기존 리소스
{ 
  todo: '운동하기',
  isCompleted: 'false'
}

// PATCH 메서드 사용
PATCH todo/1
{ isCompleted: 'true' }

// 새로운 리소스
{ 
  todo: '운동하기',
  isCompleted: 'true' // 변경됨
}

그러나 수정할 리소스를 모두 같은 방식으로 보내면 멱등성을 보장할 수 없습니다. => 예를 참조하십시오

1-5. HTTP 상태 코드란 무엇입니까? 알고 있는 상태 코드를 알려주세요.

가이드: 예제를 통해 개발하면서 사용한 상태 코드를 설명합니다.


HTTP 상태 코드는 서버에 설정응답정보입니다. 상태 코드를 사용하여 오류를 처리할 수 있습니다.

주요 상태 코드 범위는 200~500입니다. 할일 목록을 구현할 때 제가 직접 사용한 상태 코드로 설명드리겠습니다.

200의 상태 코드는 일반적으로 성공을 의미합니다.

200은 새로 고침 후 생성된 Todo 목록을 가져오기 위한 GET 요청이 성공했을 때 확인할 응답 정보입니다.

300 범위의 대부분의 상태 코드는 클라이언트가 이전 주소로 데이터를 요청하여 서버가 새 URL로 리디렉션되는 경우입니다.

400 범위의 상태 코드는 대부분 클라이언트에서 잘못된 코드의 경우입니다. 유효하지 않은 리소스가 요청되었거나 요청 또는 권한이 유효하지 않은 경우 발생합니다.

401은 헤더입니다. Authorization에 유효하지 않은 localStorage 값이 전달되었을 때 확인하는 응답 정보입니다.

500의 상태 코드는 서버 측의 오류에 대한 것입니다.

503은 프로젝트 진행 중 백엔드 담당 팀원이 서버를 잠시 껐을 때 확인된 응답 정보이다. 서버에 과부하가 걸리거나 유지 보수를 위해 다운되었는지 확인할 수 있습니다.

1-6. HTTP 헤더란 무엇입니까? 알고 있는 헤더에 대해 설명해주세요.

가이드: 직접 개발하고 사용한 헤더를 예제와 함께 설명


HTTP 헤더에는 HTTP 전송에 필요한 모든 추가 정보가 포함되어 있습니다.

HTTP 헤더에는 일반 헤더, 요청 헤더, 응답 헤더 및 엔터티 헤더의 네 가지 주요 유형이 있습니다.

General Header는 요청과 응답 모두에 적용되는 공통 헤더이지만 본문에서 최종 전송되는 데이터와는 관련이 없습니다. 메시지 교환 후 TCP 연결을 유지하려면 나는 연결을 시도했다.

요청 헤더는 패치할 리소스 또는 클라이언트 자체에 대한 정보를 포함하는 헤더입니다. 인증 토큰을 서버로 보낼 때 승인을 나는 그것을 시도했다.

응답 헤더는 응답에 대한 추가 정보가 포함된 헤더입니다. 응답 내용의 유형 및 텍스트 형식을 표현할 때 콘텐츠 유형을 나는 그것을 시도했다.

엔터티 헤더는 콘텐츠 길이 또는 MIME 유형과 같은 엔터티 본문에 대한 자세한 정보를 포함하는 헤더입니다.

# 조금 더 디테일한 질문

1. HTTP의 무상태성(Stateless)에 대해서 설명해주세요.
가이드: 무상태성으로 인해 생기는 HTTP의 장단점에 대해 설명
    
2. HTTP Keep-Alive에 대해서 설명해주세요.
가이드: 성능과 관련하여 연관지여 설명
    
3. HTTP 파이프라이닝에 대해서 설명해주세요.
가이드: 성능과 관련하여 연관지여 설명
    
4. HTTP/1.1, HTTP/2, HTTP/3 각각의 특징에 대해 설명해주세요.
가이드: 각 버전의 핵심 특징 1가지씩만 들어서 설명
    
5. HTTP에서 캐싱을 구현하는 방법에는 어떤 것들이 있나요?
가이드: 캐싱 관련 HTTP 헤더에 대해서 설명

2. HTTPS


2-1. HTTPS에 대해 설명해주세요.

가이드: 보안 관점에서 HTTP와의 차이점 설명


HTTPS(하이퍼텍스트 전송 프로토콜 보안)~이다 HTTP와 같은 방식으로 작동하지만 HTTP 프로토콜의 암호화된 버전입니다.

SSL(Secure Socket Layer) 인증서를 사용하고 일반 HTTP 요청 및 응답을 암호화하여 클라이언트가 서버와 민감한 정보를 안전하게 보내고 받을 수 있도록 지원합니다.

2-2. SSL/TLS란 무엇입니까?

가이드: 개념 설명


SSL/TLS는 인터넷 상에서 정보를 안전하게 전송하기 위한 프로토콜입니다. 데이터 전송 과정에서 누군가가 정보를 도청하거나 변조하는 것을 방지하기 위해 암호화 및 인증이 제공됩니다. 이를 위해 클라이언트와 서버 간에 상호 인증을 수행하고 키 교환을 통해 공개키 암호화를 사용하여 데이터를 암호화 및 복호화합니다.

대부분의 웹 브라우저와 웹 서버는 SSL/TLS 프로토콜을 지원하고 HTTPS를 사용하여 웹 사이트를 안전하게 제공합니다. SSL/TLS는 인터넷 뱅킹, 온라인 쇼핑 등에 사용되며 인터넷 보안의 핵심 요소 중 하나입니다.

# 조금 더 디테일한 질문

1. HTTPS 암호화 과정에 대해 설명해주세요.(SSL 핸드셰이크에 대해 설명해주세요.)    
가이드: 암호화 흐름에 대해 순차적으로 설명(암호화 방식에 대해 설명)

3. DNS


3-1. DNS란 무엇입니까?

가이드: DNS가 인터넷에서 어떻게 사용되는지 설명


DNS(도메인 이름 시스템)는 인터넷에서 도메인 이름을 IP 주소로 변환하는 시스템입니다. 컴퓨터가 인터넷에서 통신할 때 IP 주소를 사용하여 패킷을 보내고 받습니다. 하지만 사람이 IP 주소를 기억하고 입력하는 것이 불편하므로 도메인 이름을 사용합니다.

DNS를 사용하면 도메인 이름을 쉽고 편리하게 기억하고 도메인 이름의 IP 주소를 빠르게 찾을 수 있어 웹 페이지, 이메일, 파일 공유 등에 쉽게 액세스할 수 있습니다.

3-2. DNS 작동 방식을 설명하십시오.

가이드: 도메인 이름에 해당하는 IP 주소를 얻는 과정을 설명하십시오.


예를 들어 사용자가 “www,google.com”을 입력하면 웹 브라우저가 DNS 서버에 연결됩니다. “www,google.com” 이름 도메인 이름에 대한 IP 주소를 요청합니다. DNS 서버는 해당 도메인 이름의 IP 주소를 반환하여 응답합니다. 그러면 웹 브라우저가 이 IP 주소를 사용하여 Google 서버에 요청을 보냅니다.

# 조금 더 디테일한 질문

1. DNS 질의 종류에 대해 설명해주세요.
가이드: 재귀적 질의, 반복적 질의에 대해 설명

마치다


호기심

  • StackOverFlow의 멱등성 예는 명확하게 이해되지 않습니다. 방향에 대한 나의 이해가 정확합니까?

참조



질문 또는 잘못된 요점은 댓글에 떠나주세요 🙂