혼자 공부하는 네트워크(5)

Erdos·2025년 2월 14일
0

혼공단

목록 보기
17/17
post-thumbnail

chapter05 응용 계층

5주차

  • chapter05
  • Ch.05(05-1) 확인 문제 1번(p.271), (05-2) 확인 문제 2번(p.307), 풀고 설명하기
  • HTTP 요청 메시지 확인해 보기
  • HTTP 메서드를 이해할 수 있어서 좋았는데.. 어렵다!

05-1 DNS와 자원

도메인 네임과 네임 서버

  • 도메인 네임: 호스트 IP 주소와 대응되는 문자열 형태의 호스트 특정 정보
  • name server: 도네인 네임과 IP 주소 관리
  • DNS 서버: 도메인 네임을 관리하는 네임 서버

서브 도메인(subdomain): 다른 도메인이 포함된 도메인
ex) www.google.com -> mail.google.com 등

계층적 네임 서버

  • 리졸빙(resolve + ing): IP 주소를 모르는 상태에서 도메인 네임에 대응되는 IP 주소를 알아내는 과정
  • 재귀적 질의
  • 반복적 질의
  • DNS 캐시
  • 로컬 네임 서버(local name server): 클라이언트와 맞닿아 있는 네임 서버. 클라이언트가 도메인 네임을 통해 IP 주소를 알아내고자 할 때 가장 먼저 찾게 되는 네임 서버
  • 루트 네임 서버(root name server): 루트 도메인을 관장하는 네임 서버. 질의에 대해 TLD 네임 서버의 IP 주소 반환
  • TLD 네임 서버: TLD를 관리하는 네임 서버
  • 책임 네임 서버(authoritative name server): 특정 도메인 영역을 관리하는 네임 서버. 자신이 관리하는 도메인 영역의 질의에 대해서 다른 네임 서버에게 떠넘기지 않고 곧바로 답할 수 있는 네임 서버. 로컬 네임 서버가 마지막으로 질의하는 네임 서버

자원을 식별하는 URI

  • Uniform Resource Identifier. 인터넷에 있는 자원을 나타내는 유일한 주소
    [작성중]

    1) sheme: 자원에 접근하는 방법. ex) http://, https://
    2) authority: 호스트를 특정할 수 있는 정보. IP 주소 혹은 도메인 네임. : 뒤 포트번호를 덧붙일 수도 있다
    3) path: 자원이 위치한 정보. /를 기준으로 계층적으로 표현
    4) query string, query parameter: 추가적인 정보 전달. ex) 검색어, 필터링 옵션
    - 쿼리 문자열 = ?로 시작하는 <키=값>
    - &를 사용하여 여러 쿼리 문자열을 연결할 수 있음

    5) fregment: 자원의 한 조각을 가리키기 위한 정보

  • URN

    • url은 위치 기반으로 자원 식별
    • urn은 이름 기반 식별자. 자원의 위치와 무관하게 자원을 식별할 수 있다는 장점.

05-2 HTTP

HTTP의 특성
1) 요청과 응답을 기반으로 동작
2) 미디어 독립적
3) 상태를 유지 하지 않음
4) 지속 연결을 지원한다

HTTP의 특성

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

  • Hypertext Transfer Protocol: 응용 계층에서 정보를 주고받는 데 사용되는 프로토콜. 클라이어트-서버 구조 기반의 요청-응답 프로토콜

2. 미디어 독립적 프로토콜

  • media type: http에서 메시지로 주고받는 자원의 종류 = MIME 타입(Multipurpose Internet Mail Extensions Type). 서버가 클라이언트에게 "이 데이터가 어떤 형식인지" 알려주는 역할
  • text/subtype 형식으로 구성
    • type: 데이터의 유형(text, image, application 등)
    • subtype: 주어진 타입에 대한 세부 유형(html, css, json, xml 등)

3. 스테이트리스 프로토콜(stateless protocol)

  • 서버가 HTTP 요청을 보낸 클라이언트와 관련된 상태를 기억하지 않는다는 의미.
  • 언제든 쉽게 서버를 추가할 수 있어서 확장성이 높고, 서버 중 하나에 문제가 생겨도 쉽게 다른 서버로 대체할 수 있어서 견고성이 높다.

4. 지속 연결 프로토콜

  • HTTP 1.1이상
  • persistent connection
  • keep-alive
  • 하나의 TCP 연결 상에서 여러 개의 요청-응답을 주고받을 수 있는 기술

HTTP 메시지 구조

시작 라인

request-line: 메서드 (공백) 요청 대상 (공백) HTTP 버전 (줄바꿈)

1) method: 클라이언트가 서버의 자원(요청 대상)에 대해 수행할 작업의 종류

  • GET, POST, PUT, DELETE 등

2) request-target: HTTP 요청을 보낼 서버의 자원. 여기에 URI 경로 명시
3) HTTP-version: HTTP/version 표기 방식

status-line: HTTP 버전 (공백) 상태 코드 (공백) 이유 구문* (줄바꿈)

reason phrase: 상태 코드에 대한 문자열 형태의 의미

  • 200(OK), 404(Not Found)

필드라인

  • 0개 이상의 HTTP 헤더 명시. -> header-line
  • 클라이언트가 서버에 추가 정보 전달. 키-값 쌍으로 구성
# 예시
Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html

본문(body)

  • 서버가 클라이언트로 전달할 데이터
  • HTML, JSON, 이미지, 텍스트 등

참고: HTTP 메시지와 웹 통신의 기본 구조

HTTP 메서드


1) GET

  • 특정 자원을 조회할 때 사용되는 메서드
  • GET 메서드에 요청 메시지 본문을 포함시키는 것은 바람직하지 않음. 쿼리 문자열 사용
    2) HEAD
  • 헤더만 가져다주세요. 응답 메시지에 메시지 본문이 포함되지 않는다
    3) POST
  • 서버로 하여금 특정 작업을 처리하도록 요청하는 메서드
    4) PUT
  • 덮어쓰기를 요청하는 메서드
    5) PATCH
  • 일부 수정. 부분적 수정.
    6) DELETE
  • 특정 자원을 삭제하고 싶을 때 사용하는 메서드

API 문서

  • API를 어떻게 호출해야 하는지, 어떤 데이터를 보내고 받을 수 있는지를 정리한 설명서
  • API(Application Programming Interface) Documentation.

HTTP 상태 코드

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

200번대: 성공 상태 코드

  • 요청이 성공했음.

300번대: 리다이렉션 상태 코드

  • redirection: 요청을 완수하기 위해 추가적인 조치가 필요한 상태. 클라이언트가 요청한 자원이 다른 곳에 있을 때, 클라이언트의 요청을 다른 곳으로 이동시키는 것

  • 영구적인 리다이렉션(permanent redirection): 자원이 완전히 새로운 곳으로 이동하여 경로가 영구적으로 재지정되는 것

  • 일시적인 리다이렉션(temporary redirection): 자원의 위치가 임시로 변경되었거나 임시로 사용할 URL이 필요한 경우에 주로 사용.

400번대: 클라이언트 에러 상태 코드

  • 클라이언트에 의한 에러가 있음을 알려주는 상태 코드
  • 401: Unauthorized -> 인증 여부 = '자신이 누구인지 증명하는 것'
  • 403: Forbidden -> 권한 부여 = '인증된 주체에게 작업을 허용하는 것'

500번대: 서버 에러 상태 코드

  • 상태 코드 원인이 서버인 경우

05-3 HTTP 헤더와 HTTP 기반 기술

HTTP 헤더

요청 시 활용되는 HTTP 헤더

1) host
2) User-Agent
3) Referer
4) Authorization

응답 시 활용되는 HTTP 헤더

1) Server
2) Allow
3) Retry-After
4) Location
5) WWW-Authenticate

요청과 응답 모두에서 활용되는 HTTP 헤더

1) Date
2) Connection
3) Content-Length
4) Content-Type, Content-Language, Content-Encoding

캐시

  • 불필요한 대역폭 낭비와 응답 지연을 방지하기 위해 정보의 사본을 임시로 저장하는 기술. -> 빠르게 데이터 접근
  • 자주 사용하는 데이터를 저장해서 빠르게 불러올 수 있도록 하는 저장소(웹사이트 방문할 때 이미 다운로드한 이미지, css, javascript 파일)
  • private cache: 웹 브라우저에 저장되어 있는 캐시
  • public cache: 클라이언트와 서버 사이에 위치한 중간 서버에 저장되어 있는 캐시
  • cache freshness: 캐시된 사본 데이터가 얼마나 최신 원본 데이터와 유사한지

쿠키

  • 서버에서 생성되어 클라이언트 측에 저장되는 데이터. 상태를 유지하지 않는 HTTP의 특성(스테이트리스 프로토콜)을 보완하기 위한 수단.
  • 사용자의 정보를 저장하고 재사용할 수 있도록 하는 작은 데이터 파일(로그인 정보, 사이트 설정 등)
  • Secure: HTTPS 프로토콜이 사용되는 경우에만 쿠키를 전송되도록 하는 속성
  • HttpOnly: HTTP 송수신을 통해서만 쿠키를 이용하도록 제한하는 속성. 쿠키의 위변조를 방지하기 위한 속성.

기본 숙제

h.05(05-1) 확인 문제 1번(p.271), (05-2) 확인 문제 2번(p.307), 풀고 설명하기

1. 도메인 네임과 네임 서버에 대한 설명으로 옳지 않은 것은?

4) www.example.com에서 루트 도메인은 .에 해당합니다.

2. HTTP 상태 코드에 대한 설명으로 옳지 않은 것을 골라보세요.

1) 300번대 상태 코드는 요청을 완수하기 위해 추가적인 조치가 필요한 상태. 클라이언트가 요청한 자원이 다른 곳에 있을 때, 클라이언트의 요청을 다른 곳으로 이동시켜야 하는 상태다.

추가 숙제

HTTP 요청 메시지 확인해 보기

잘 안 보이지만 200 OK!


후기


자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
이 강의를 본 적이 있는데, 그 때 이 내용을 이해하고 있었다면 강의를 더 깊게 들여다 볼 수 있었을 것 같다는 생각이 들었다. 네트워크 후에 이 강의를 다시 보는 것도 좋을 것 같....지만 시간이 있으려나.... postman으로 추가 숙제를 시도할 수 있을 것 같다는 생각이 들었는데 책 내용 토대로 제출!

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글

관련 채용 정보