혼공 학습단/혼자 공부하는 네트워크

[혼공 학습단] 혼공 네트워크 5주차 과제

uomnf97 2024. 8. 11. 22:09
📌 5주차 과제
  • 진도 : Chapter 05
  • 기본미션 : Ch.05(05-1) 확인 문제 1번(p.271), (05-2) 확인 문제 2번(p.307), 풀고 설명하기
  • 선택미션 : HTTP 요청 메시지 확인해 보기

1️⃣ 기본 숙제

  • Ch.05(05-1) 확인 문제 1번(p.271), (05-2) 확인 문제 2번(p.307), 풀고 설명하기
  • Ch.05(05-1) 확인 문제 1번(p.271) : 도메인 네임과 네임 서버에 대한 설명으로 옳지 않은 것을 골라보세요.
    • ① 8.8.8.8은 대표적인 공개 DNS 서버로, 구글이 관리합니다.
      ② 도메인 네임은 호스트를 특정할 수 있는 문자열 형태의 정보입니다.
      ③ DNS는 계층적이고 분산된 도메인 네임에 대한 관리체계이자 이를 관리하는 프로토콜입니다.
      www.example.com에서 루트 도메인은 com에 해당합니다.
    • 정답 : ④
    • 풀이 : DNS는 Domain Name Server로 .를 기준으로 여러개의 도메인으로 계층을 나눠 서버를 분산하여 관리하는 계층적인 구조이므로 ③은 맞는 표현입니다. 그리고 각각의 도메인 네임을 통해 호스트를 특정할 수 있어 IP주소보다 더 실용적이고, 많이 활용되고 있기에 ②또한 맞는 표현입니다. 또한 이렇게 식별하는 과정에서 로컬 네입서버에 가장 처음 물어보는데, ISP에 할당되는 로컬 네임 주소 외에 공개 DNS 서버를 이용할 수 있는데 구글에서 8.8.8.8, 8.8.8.4 2개의 서버를 운영하고 있기에 ①또한 맞는 표현입니다.
    • 다만, ④ com은 TLD(Top-level domain)을 말하며, www.example.com.에서 루트(.)는 숨겨져 표현이 되어 있으므로 루트 도메인이 com이라는 표현은 잘못된 표현이므로 옳지 않은 것을 고르는 이번 문제의 답은 ④입니다.
  • (05-2) 확인 문제 2번(p.307) 풀고 설명하기 : HTTP 상태 코드에 대한 설명으로 옳지 않은 것을 골라보세요.
    • ① 300번대 상태 코드는 요청한 자원이 존재하지 않음을 의미합니다.
      ② 400번대 상태 코드는 클라이언트에 의한 에러를 의미합니다.
      ③ 500번대 상태 코드는 서버에 의한 에러를 의미합니다.
      ④ 200번대 상태 코드는 요청이 성공했음을 의미합니다.
    • 정답 : ①
    • 풀이 :
      • 100번대는 정보성 상태 코드인데 선지에서 다루지 않으니 제외하겠습니다.
      • 200번대 상태 코드는 “요청이 성공했음”을 의미합니다. 200(OK) 요청의 성공, 201(Created) 요청이 성공했으며, 새로운 자원이 성공되었음을, 202(Accepted) 요청을 잘 받았으나, 아직 요청한 작업을 끝내지 않았음음을 204(No Contenct) 요청이 성공했으며 새로운 자원이 생성되었음을 의미합니다. 따라서 200번대 요청은 성공 상태를 의미함으로 ④ 은 맞는 표현입니다.
      • 300번대 상태 코드는 리다이렉션(redirection)과 관련된 상태 코드를 말합니다. 리다이렉션은 RFC9110에 정의된 바와 같이 요청을 완수하기 위해 추가적인 조치가 필요한 상태로 클라이언트가 요청한 자원이 다른 곳에 있을 때 이동시키는 것을 의미합니다. 301, 308은 영구적인 리다이렉션을 일시적인 리다이렉션은 302, 303, 307로 표기합니다. 따라서 자원이 존재하지 않음을 의미하는 것이 아닌 자원이 존재하는 곳으로 이동시킨 상태를 알려주는 것이므로 ①은 틀린 표현으로 해당 문제의 답변이 됩니다.
      • 400번대 상태 코드는 클라이언트에 의한 에러를 의미합니다. 가장 저희가 인터넷을 이용하며 많이 접할 수 있는 상태 코드입니다. 404(페이지가 존재하지 않을 때)를 가장 많이 볼 수 있고 때에 따라 400(요청이 잘못된 경우), 401(자원에 대한 유효한 인증이 없음), 403(요청 거부), 405(메서드를 지원하지 않음) 등이 있습니다. 따라서 ②또한 맞는 표현입니다.
      • 500번대 상태 코드는 서버 에러 상태 코드를 의미합니다. 백엔드 개발에서 많이 볼 수 있는데 요청을 처리 할 수 없는 경우를 나타내는 500, 중간 서버의 통신 오류를 나타내는 502, 현재 요청을 처리 할 수 없음을 나타내는 503 등이 있습니다. 따라서 ③ 또한 맞는 표현입니다.

2️⃣ 선택 미션

  • HTTP 요청 메시지 확인해 보기
    • 가장 유명한 사이트인 네이버의 HTTP요청을 파악해보려고 했습니다.
      네이버 홈페이지 캡처본
    • 맥에서 확인할 수 있는 방법은 다음과 같습니다.
      • 우측 상단 햄버거 바 클릭 → More Tools → Developer Tools
        우측 상단 햄버거 메뉴 > More Tools > Developer Tools
    • 이제 해당 부분에서 상단에 Network를 클릭해봅시다.
      • 200으로 여러 페이지에 대한 정보를 받아와 조회에 성공한 것을 볼 수 있습니다.
      • 300번대로 표기되어 있는 것들도 볼 수 있군요. 아마 쇼핑몰 같이 광고를 클릭하면 리다이렉션이 되는 것들을 의미하는 것 같습니다.
        여러 성공을 나타내는 200 상태 표시와 shopping몰로 리다이렉트하는 304 상태 표기를 확인할 수 있다.
    • 메시지 확인해보기
      POST 통신을 하고 있음을 알 수 있고, 좌측은 Request Header를 우측은 Response Header 메시지를 확인할 수 있다.
  • 여기까지는 클라이언트에 있는 메시지를 확인해봤습니다. 이제 제가 만들고 있는 “AI 자소서 컨설턴트(Agent)”의 서버 쪽에서 발생하는 로그를 확인해보도록 하겠습니다.
  • PDF를 올리고 POST요청을 했을 떄, 해당 PDF에서 텍스트를 추출하여 이력서를 마크다운 문서로 변환하여 클라이언트로 response를 해주는 함수를 구현했었는데요. 아래와 같이 200(OK) 상태로 요청을 효과적으로 처리한 것을 확인할 수 있었습니다.
    • 여기서 HTTP 1.1이라는 문구도 보실 수 있는데요. 이전에는 몰랐었지만, 지속 연결이 지원되는 HTTP 연결이라는 것을 알 수 있었습니다. 아는 만큼 보이는 것 같군요.
      POST 통신의 1.1 버전을 지원하며 200 OK 상태표시로 올바른 통신이 되었음을 알 수 있습니다.
  • 여기서 마무리 하면 아쉬우니 코드에 일부 수정을 가해, 다른 메시지도 확인해봅시다.
    • 404 에러 발생시키기 : 요청하는 코드를 서버의 잘못된 페이지로 요청하도록 path를 수정해주었습니다. 아래와 같이 404(Not Found) 에러가 바로 발생하는군요.
    • 500 에러 발생 시키기 : 잘못된 파일을 받도록 백엔드의 변수를 수정했습니다. 요청을 처리할 수 없음 500(Internel Server Error)가 뜨는 군요.

사이드 프로젝트에서 데모 파일의 HTTP통신을 다루고 있었던 터라, 개인적으로 이번 챕터를 통해서 프로그래밍에 필요한 많은 지식을 얻고 인사이트를 기를 수 있는 시간이었습니다. 

 

Reference :