SONUB 홈 KO English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

알림을 켜는 방법

이 브라우저 또는 주소에서는 알림을 사용할 수 없습니다. 지원되는 브라우저로 보안 연결된 SONUB 사이트에 접속해 주세요.

알림이 차단되어 있으면 브라우저 설정에서 허용해 주세요.

  1. 주소 표시줄 옆의 사이트 설정 또는 브라우저의 사이트 설정을 열고, 이 사이트의 알림을 허용으로 바꾸세요.
  2. 기기 설정에서 브라우저 알림을 허용하고 방해 금지 또는 집중 모드를 확인하세요.
  3. SONUB으로 돌아와 페이지를 새로고침한 뒤 벨을 눌러 알림을 켜세요.

iPhone 또는 iPad에서는 SONUB을 홈 화면에 추가하고 거기에서 연 뒤 알림을 허용하세요.

바이브코딩 전체 보기
바이브코딩

웹 클라이언트

에게 무언가를 달라고 하는 모든 것.

Chrome 도 웹 이고, 한 줄도 웹 클라이언트입니다. 이 장에서는 을 손으로 직접 써 보고, 그것을 스크립트로 감싸고, curl 을 제대로 익힌 다음, Chrome 를 열어 똑같은 글이 오가는 것을 눈으로 확인합니다.

터미널로 웹 클라이언트 만들기

가 글자일 뿐이라는 것을 가장 빨리 믿는 방법은 요청을 직접 쳐 보는 것입니다. 앞 주제의 쉘 웹서버를 띄워 놓고, 을 하나 더 열어 손으로 말을 걸어 보세요.

nc 로 요청을 손으로 쓰기

은 포트에 연결해 여러분이 친 글자를 그대로 선에 흘려보냅니다. 두 줄을 치고 엔터를 두 번 누르면 서버가 답합니다 — 방금 브라우저의 일을 손으로 한 것입니다.

terminal
# connect, then type the two lines below and press Enter once more
nc localhost 8084

GET / HTTP/1.1
Host: localhost

# or send it all at once (printf's \r\n is HTTP's line break)
printf 'GET / HTTP/1.1\r\nHost: localhost\r\n\r\n' | nc localhost 8084
  • 끝의 빈 줄이 중요합니다. 요청이 끝났다고 서버에게 알리는 표시이고, 그래서 엔터를 한 번 더 누릅니다.
  • HTTP 는 줄 끝마다 캐리지리턴과 줄바꿈을 요구합니다. 손으로 쳐도 되는 것은 대개의 서버가 너그럽기 때문이고, printf 판은 규격이 요구하는 그대로를 보냅니다.
  • Host 줄은 HTTP/1.1 이 반드시 요구합니다. 진짜 사이트에 이것 없이 보내면 페이지 대신 오류가 돌아오는 것이 보통입니다.

스크립트로 감싸기

요청이 printf 한 줄이 되고 나면, 다시 쓸 수 있는 클라이언트는 몇 줄이면 됩니다. 아래 스크립트는 호스트 · 포트 · 경로를 받아 요청을 보내고, 와 본문을 갈라 보여 줍니다.

client.sh
#!/bin/bash
# usage: bash client.sh localhost 8084 /

HOST=${1:-localhost}
PORT=${2:-8084}
PATH_=${3:-/}

printf 'GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n' "$PATH_" "$HOST" \
  | nc "$HOST" "$PORT" \
  | tr -d '\r' \
  | awk 'BODY { print; next } /^$/ { BODY = 1; next } { print "[header] " $0 }'

tr 은 HTTP 가 줄 끝마다 남기는 캐리지리턴을 걷어 내고, awk 는 빈 줄을 만날 때까지를 헤더로 표시합니다 — 그 뒤는 전부 본문입니다. 브라우저가 화면을 그리기 전에 하는 것과 똑같은 나눔입니다.

양쪽을 함께 돌려 보세요

한 터미널에 쉘 웹서버를, 다른 터미널에 이 클라이언트를 띄우면 여러분이 직접 쓴 대화의 양쪽 끝을 모두 갖게 됩니다. 서버의 을 고치면 클라이언트가 곧바로 알아봅니다 — 사이에 아무것도 없기 때문입니다.

쉘 웹서버로 돌아가기

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 단계를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.