[혼공네트]5주차_Chap05 정리 (1)

임지·2025년 8월 5일
0

혼공네트

목록 보기
5/7

1. DNS

1-1. 도메인 네임

1) 도메인 네임

  • 호스트의 IP 주소와 대응되는 문자열 형태의 호스트 특정 정보
  • www.example.com, www.google.com 등이 그 예시

2) 도메인 네임의 구조

출처 : https://www.goup.co.uk/technical-seo/learn/best-domain-strategy-for-international-expansion/

(사진의 a, b, c를 확인할 것)

  • 루트 도메인
    : 도메인 주소 마지막에 생략된 '.'

  • 최상위 도메인(=TLD)
    : 일반적으로 알고 있는 도메인 네임의 마지막 부분
    : www.naver.com의 경우, com이 이에 해당

  • 2단계 도메인
    : 최상위 도메인의 하부 도메인
    : 2단계, 3단계 ... 로 늘어남 (보통은 3~5단계)
    : www.naver.com의 경우,naver가 이에 해당

  • 전체 주소 도메인 네임(=FQDN)
    : 도메인 네임을 모두 포함하는 도메인 네임
    : FQDN을 통해 호스트의 IP주소를 알아낼 수 있음

  • 호스트 네임
    : FQDN의 첫 번째 부분
    : www.naver.com의 경우, www가 이에 해당
    : 보통 FQDN 자체를 호스트 네임이라고도 함

3) 서브 도메인

  • 다른 도메인이 포함된 도메인
  • google.com의 서브 도메인은 google.com을 포함한 모든 도메인이다.

1-2. 네임 서버

1) 네임 서버 (=DNS 서버)

  • 도메인 네임과 IP 주소 쌍을 저장하고 관리하는 서버
  • 사용자는 네임 서버에 특정 도메인의 IP 주소를 요청하고, 네임 서버는 이에 대한 응답을 반환한다. (그 반대도 가능)

2) DNS 자원 레코드

  • 네임 서버가 저장하고 관리하는 정보
  • 도메인 이름, IP 주소, TTL(캐시 가능한 시간), 레코드 유형을 저장
  • 레코드 유형
레코드 유형설명
A도메인 네임과 IPv4주소와의 대응 관계
AAAA도메인 네임과 IPv6주소와의 대응 관계
CNAME호스트 네임에 대한 별칭
NS네임 서버
MX메일 서버
  • 예를 들어
타입이름TTL
Aexample.com.1.2.3.4300
CNAMEwww.example.com.example.com.300

이런 구조라면, www.example.com.을 질의하면 1.2.3.4를 응답받을 수 있다.

1-3. 계층적 네임 서버

사진 출처 : https://www.hostnoc.com/dns-hierarchy-everything-you-need-to-know/

1) 로컬 네임 서버

  • 로컬 DNS 서버, 리졸버라고도 함
  • 클라이언트와 맞닿은 네임 서버
  • 보통은 ISP가 할당하나, 공개 DNS 서버를 이용할 수 있음
    ex) : 구글 8.8.8.8, 클라우드플레어 1.1.1.1
  • 보통은 DNS 캐시를 이용하기 때문에, 로컬 네임 서버 선에서 특정 호스트의 IP주소를 알아낼 수 있음

2) 루트 네임 서버

  • 루트 DNS 서버라고도 함
  • 루트 도메인을 관리하는 네임 서버
  • 로컬 네임 서버가 IP주소를 모른다면, 루트 네임 서버에게 물어본다.
  • TLD 네임 서버의 IP 주소를 반환

3) TLD 네임 서버

  • TLD 서버라고도 함
  • TLD 도메인을 관리하는 네임 서버
  • 루트 네임 서버가 IP주소를 모른다면, TLD 네임 서버에게 물어본다.
  • 책임 네임 서버 IP 주소를 반환

4) 책임 네임 서버

  • 책임 서버, 이름 그대로 Authoritative 네임 서버라고도 함
  • 특정 도메인 영역을 관리하는 네임 서버
  • 다른 네임 서버에게 떠넘기지 않고 곧바로 답할 수 있다.
  • 로컬 네임 서버가 마지막으로 질의하는 네임서버

5) 질의 방법

  • 재귀적 질의
    : 로컬 서버가 루트 서버에게, 루트 서버가 TLD 서버에게, TLD 서버가 책임 서버에게 질의하고, 응답 결과를 역순으로 전달받는 방식

  • 반복적 질의

사진 출처 : https://bunny.net/academy/dns/what-is-recursive-dns-rdns/

: 위에서 설명했던 과정 처럼, 로컬 DNS 서버가 각 서버들과 모두 질의응답을 주고받는 방식

1-4. DNS 캐시

1) DNS 캐시

  • 각 네임 서버들이 응답 결과를 임시 저장하기 위한 저장 공간
  • 서버 자체가 DNS 캐시로 쓰이는 경우도 있음
  • 더 짧은 시간 안에 원하는 IP 주소를 얻기 위해 사용

2) TTL

  • 응답 결과를 저장할 때 함께 저장하는 값
  • 캐시 될 수 있는 시간을 의미

2. 자원

2-1. URI

1) URI

  • 자원을 식별하기 위한 정보
  • 위치 기반 URI는 URL, 이름 기반 URI는 URN
  • 요즘은 URL을 주로 사용

2) URN

  • 자원에 고유한 이름을 붙이는 이름 기반 식별자
  • 위치와 무관하게 자원을 식별할 수 있음

2-2. URL


사진 출처 : https://www.beusable.net/blog/?p=4507

1) scheme

  • 자원에 접근하는 방법
  • 사용한 프로토콜을 명시

2) authority

  • 호스트를 특정할 수 있는 정보
  • 도메인 네임이나 IP 주소를 명시
  • 뒤에 ':'을 통해 포트 번호를 명시할 수도 있음

3) path

  • 특정 자원이 위치한 경로
  • 슬래시(/)를 기준으로 표현

4) query

  • 쿼리 스트링, 쿼리 파라미터
  • 물음표(?)로 시작되는 <키=값>의 형태
  • 앰퍼샌트(&)를 통해 여러 쿼리 스트링을 작성할 수 있음

5) fragment

  • 자원의 일부를 가리키기 위한 정보
  • HTML 파일 자원 내의 특정 부분 등을 나타낼 수 있음

3. HTTP

3-1. HTTP의 특성 4가지

1) 요청-응답 기반 프로토콜

  • 클라이언트-서버 구조 기반의 요청-응답 프로토콜
  • 요청 메세지와 응답 메세지의 구조는 서로 다르다.

2) 미디어 독립적

  • 미디어 타입(자원의 종류)에 구애받지 않는다.
  • 자원을 주고받는 인터페이스 역할

3) 스테이스리스 프로토콜

  • 클라이언트와 관련된 상태를 기억하지 않는다
  • 각 요청을 별개의 요청으로 간주 (똑같은 클라이언트가 보낸 요청이라 할 지라도)
  • HTTP 프로토콜의 확장성견고성을 위함

4) 지속 연결

  • 킵 얼라이브라고도 함
  • TCP 연결을 매번 수립/종료할 필요 없이, 한 번 TCP 연결을 수립하면 그 안에서 여러 개의 요청/응답을 주고받을 수 있다.

3-2. 미디어 타입

1) 미디어 타입의 구조

  • type/subtype의 형태
  • type : 데이터의 유형
  • subtype : 타입에 대한 세부 유형

2) 예시

  • image/png : png 타입의 이미지
  • text/plain : 평문 텍스트 문서

⭐ 4. HTTP 메세지 구조


사진 출처 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Messages

4-1. 전체적인 구조

1) 시작 라인

  • 요청 라인 : 요청 메세지의 경우
  • 상태 라인 : 응답 메세지의 경우

2) 헤더 라인

  • 0개 이상의 HTTP 헤더가 명시
  • HTTP 통신에 필요한 부가 정보를 명시
  • 콜론(:)을 기준으로 헤더 이름, 헤더 값을 명시

3) 메세지 본문

  • 요청/응답 시 본문이 필요한 경우 사용
  • 있어도 되고, 없어도 되고 (옵션)

4-2. 요청 라인

1) 메소드

  • 클라이언트가 서버의 자원에 대해 요청할 수행할 작업의 종류
  • ⭐ 메소드의 종류
메소드 이름설명
GET 특정 자원을 조회
HEAD헤더만을 응답 받음
POST서버가 특정 작업을 처리하게끔 함
PUT자원을 전체를 수정
PATCH자원의 일부를 수정
DELETE자원을 삭제

2) 요청 대상

  • HTTP 요청을 보낼 서버의 자원
  • URL의 경로가 명시

3) HTTP 버전

4) 예시

  • GET 메소드 사용
GET /example-page HTTP/1.1
Host: www.example.com
Accept: *
  • POST 메소드 사용
POST /posting HTTP/1.1
Host: www.example.com
.. 헤더 생략 ..
{
    "Id" : 1,
    "Title" : "안녕하세요",
    "Contents" : "하이"
    
}

보통 POST, PUT, PATCH의 경우 메세지 본문을 많이 활용한다.

4-3. 상태 라인

1) HTTP 버전

2) 상태 코드

  • 요청에 대한 결과를 나타내는 세 자리 정수

3) 이유 구문

  • 상태 코드에 대한 문자열 형식의 설명

4) 예시

  • HEAD 메소드에 대한 응답
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
  • POST 메소드에 대한 응답
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 100
Date: Wed, 6 Aug 2025 03:30:00 PST
Location: /posting/1

{
    "Id" : 1,
    "Title" : "안녕하세요",
    "Contents" : "하이"
    
}

5. 상태 코드

상태 코드설명
100번대정보성 상태 코드
200번대성공 상태 코드
300번대리다이랙션 상태 코드
400번대클라이언트 에러 상태 코드
500번대서버 에러 상태 코드

5-1. 200번대

  • 성공 상태 코드
상태 코드이유 구문설명
200OK요청 성공
201Created요청 성공 및 새로운 자원 생성
202Accpted요청 성공했으나 아직 작업중
204No Content요청 성공, 메세지 본문으로 표시할 데이터 없음

5-2. 300번대

1) 리다이렉션

: 클라이언트의 요청을 다른 곳으로 이동시킴
: 영구적인 리다이렉션과 일시적인 리다이렉션으로 나뉜다.

2) 영구적인 리다이렉션

상태 코드이유 구문설명
301Moved Permanently재요청 메서드 변경될 수도 O
308Permanent Redirect재요청 메서드 변경 X

3) 일시적인 리다이렉션

상태 코드이유 구문설명
302Found재요청 메서드 변경될 수도 O
303See Other재요청 메서드 GET으로 변경
307Temporary Redirect재요청 메서드 변경 X

5-3. 400번대

  • 클라이언트 에러 상태 코드
상태 코드이유 구문설명
400Bad Request잘못된 요청
401Unauthorized유효한 인증이 없음
403Forbidden서버에 의해 접근 거부 (접근 권한 X)
404Not Found자원이 존재하지 않음
405Method Not Allowed요청 메소드 지원하지 않음
  • Unauthorized의 경우, WWW-Authenticate 헤더를 통해 인증 방법을 알려주어야한다.
.. 생략 ..
WWW-Authenticate: Basc
... 생략 ...

5-4. 500번대

  • 서버 에러 상태 코드
상태 코드이유 구문설명
500Internal Server Error요청 처리 불가
502Bad Gateway중간 서버의 통신 오류
503Service Unavailable현재는 요청 처리 불가, 나중에 가능할 수 있음

연습문제풀이

기본 숙제

  • 271p 1번
    : 4번 www.example.com에서 루트 도메인은 com에 해당 (X)
  • 307p 2번
    : 1번 300번대 상태코드는 요청 자원이 존재하지 않음을 의미 (X)

추가 숙제

  • HTTP 요청 메세지 확인

크롬에서 F12 -> Network 창에서 특정 요소를 누르면 네트워크 헤더와 기타 정보를 확인할 수 있습니다.

0개의 댓글