정리/혼자 공부하는 네트워크(혼공네)

[혼공네] 5주차 응용 계층 정리

그느 2024. 8. 4. 22:31

✅혼자 공부하는 네트워크 | 📖용어노트

5주차 (8/5 ~ 8/11) Chapter 05 Ch.05(05-1) 확인 문제 1번(p.271), (05-2) 확인 문제 2번(p.307), 풀고 설명하기 HTTP 요청 메시지 확인해 보기
6주차 (8/12 ~ 8/18) Chapter 06~07 Ch.06(06-2) 확인 문제 1번(p.379), (07-2) 확인 문제 2번(p.407) 풀고 설명하기 와이어샤크에서 실제 TCP/UDP 패킷 확인해 보기

 


도메인 네임 : 호스트의 IP 주소와 대응되는 문자열 형태로 서버 호스트를 특정할 수 있는 정보

 

DNS(Domain Name System) : 계층적인 도메인 네임을 효율적으로 관리하기 위한 관리 체계

 

네임 서버 : 호스트의 도메인 네임과 IP 주소의 짝을 모아서 관리하는 서버(로컬 네임 서버, 루트 네임 서버, TLD(Top Level Domain) 네임 서버, 책임 네임 서버)

 

계층적으로 구성된 도메인을 찾아 나가는 과정 ex) https://www.saramin.co.kr.

  1. 클라이언트와 맞닿아 있는 로컬 네임 서버로 해당 호스트 (www.google.com.)의 IP주소를 찾기 위해 질문을 보냄 /    로컬 네임 서버는 일반적으로 ISP(Internet Service Provider / SKT, KT, LG 등)에서 할당해 주는 서버를 이용함. 세계적으로 유명한 공개 DNS 서버는 구글의 8.8.8.8과 클라우드플레어의 1.1.1.1이 있음(ISP의 DNS 서버 대신 로컬 서버로 이용 가능)
  2. 로컬 네임 서버에서 최상위 네임 서버인 루트 네임 서버(.)로 질의를 보냄. 보통 루트 네임 서버는 도메인 네임에서 생략됨.
  3. 루트 네임 서버(.)에서 TLD 네임 서버(kr)로 질의를 보냄.
  4. 이를 쭉 반복
  5. 책임 네임 서버(saramin)에 도착 후 IP 주소를 반환받음.

URI(Uniform Resource Identifier) : 해당하는 서버의 IP 주소 또는 도메인 주소를 포함한 자원을 식별하는 통일된 방식.(URL(Uniform Resource Locator)과 URN(Uniform Resource Name)이 있음. 보통 URL 사용) 

 

URL ex) http://www.example.com:8080/insta/post?date=240811&page=1

schema = 자원에 접근하는 방법(http://)
authority = 호스트를 특정할 수 있는 정보(www.example.com / IP주소도 가능, 포트 번호를 추가하는 경우도 있음)

path = 해당 호스트 내에 파일이 있는 위치(insta/post  / 화면에 보여지는 html 파일이나 이미지 등)

query = 해당 url에서 추가적인 디테일한 정보(?date=240811&page=1 / 240811에 올린 글만 모아서 그중 1페이지)

fragment = html 파일과 같은 자원에서 특정 부분(ex) https://datatracker.ietf.org/doc/html/rfc3986#section-1.1.2 / 이렇듯 보통 목차별로 정리된 문서에서 사용.)

위의 전체적인 url은 개발자가 설계하기 나름임.

 

 

HTTP의 특성

  1. 요청-응답 기반 프로토콜 : 클라이언트와 서버가 서로 HTTP 요청 메시지와 응답 메시지를 주고받는 구조로 동작.
  2. 미디어 독립적 프로토콜 : 자원의 특성(html, png, json 등)을 제한하지 않으며 그저 자원을 주고받을 수단의 역할만 수행
  3. 스테이트리스 프로토콜 : 서버가 HTTP 요청을 보낸 클라이언트와 관련된 상태를 기억하지 않음 / 보통 서버는 수많은 클라이언트와 상호작용을 하므로 이런 상황에서 모든 클라이언트의 상태 정보를 유지하는 것은 서버에 큰 부담임.
  4. 지속 연결 프로토콜 : 초기의 HTTP 버전(1.0 이하)는 HTTP 요청, 응답을 위해 매번 TCP 연결을 새로 해야 했음.(비지속 연결) 1.1 이상의 HTTP는 지속 연결 기능을 통해 하나의 TCP 연결상에서 여러 개의 요청-응답을 주고받을 수 있게 됨.

 

HTTP 메세지 구조

시작라인

필드라인

 

메세지 본문

 


HTTP 메세지는 시작라인, 필드라인, 메시지 본문의 구조를 가지며 그 중, 시작라인은 요청이냐, 응답이냐에 따라 두가지로 나뉨.

요청일 경우 : 메서드 공백 요청대상 공백 HTTP 버전

메서드 : get, post, delete 등이 있으며 메서드로 인해 restful api 설계가 가능함.

요청 대상 : 요청할 자원을 의미(위 URL 예에서 authority 를 포함한 뒷부분. 만약 없을 시 요청라인은 "/" 로 표시)

HTTP 버전 : HTTP 버전

 

응답일 경우 : HTTP 버전 공백 상태 코드 공백 이유구문

HTTP 버전 : HTTP 버전

상태 코드 : 100~500까지 있으며 100번대는 정보성 상태 공유, 200번대는 성공했을 시, 300번대는 리다이렉션 관련, 400번대는 클라이언트 측에서 에러가 난 경우, 500번대는 서버 측에서 에러가 난 경우. 사용자의 경우 일반적으로 400, 500번대를 보게 됨.

이유 구문 : 해당 상태 코드에 대한 설명

 

필드 라인에는 헤더 값들이, 메시지 본문에는 실제 내용들이 입력됨.

 

 

캐시 : 클라이언트가 같은 자원(이미지, html 등)을 요청할 때, 서버가 반복적으로 자원을 보내는 것은 비효율적이므로, 해당 자원을 임시로 저장해 두고, 해당 자원이 업데이트 됐을 때에 새로운 자원을 받을 수 있게 해 줌.

해당 클라이언트의 웹브라우저에 저장하는 개인 전용 캐시와 클라이언트와 서버 사이에 위치한 중간서버에 저장하는 공용 캐시가 있음.

 

쿠키 : 서버에서 생성되어 클라이언트 측에 저장되는 데이터로 적용 범위와 만료 기간 등 다양한 속성을 가지고 있으며, 해당 서버의 웹페이지를 이용할 때마다 인증을 하지 않도록 해줌.(스테이트리스를 보완)

 

 


접기 시작

 p.271 확인문제 1번

도메인 네임과 네임 서버에 대한 설명으로 옳지 않은 것을 골라 보세요. 4

  1. 8.8.8.8은 대표적인 공개 DNS 서버로, 구글이 관리합니다.
  2. 도메인 네임은 호스트를 특정할 수 있는 문자열 형태의 정보입니다.
  3. DNS는 계층적이고 분산된 도메인 네임에 대한 괄리 체계이자 이를 관리하는 프로토콜입니다.
  4. www.example.com에서 루트 도메인은 com에 해당합니다. 생략된 .
 p.307 확인문제 2번

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

  1. 300번대 상태 코드는 요청한 자원이 존재하지 않음을 의미합니다. 리다이렉션
  2. 400번대 상태 코드는 클라이언트에 의한 에러를 의미합니다.
  3. 500번대 상태 코드는 서버에 의한 에러를 의미합니다.
  4. 200번대 상태 코드는 요청이 성공했음을 의미합니다.
 HTTP 요청 메시지 확인해 보기