LabHub
배우기 러닝패스 코스

네트워크 기초 · HTTP 와 TLS · 실습

HTTP 를 손으로 주고받는다

LabHub 에서 이어서 보기

목표

HTTP 는 어렵지 않습니다. TCP 위에 약속된 글자를 주고받는 것뿐입니다.
그런데 라이브러리가 그 약속을 대신 지켜 주기 때문에, 어긋났을 때 무엇이
어긋났는지 읽지 못하게 됩니다.

여기서는 그 약속을 손으로 지켜 보고, 라이브러리가 감춘 것들을 하나씩 봅니다.

재료

python3 /opt/lab/netplan/httpsrv.py 8080 &

경로마다 일부러 다르게 대답하는 작은 서버입니다.

/            Content-Length 로 길이를 알려 준다/chunked     길이를 모른 채 조각으로 나눠 보낸다/slow        첫 조각을 보내고 잠시 쉰다/nolength    길이도 조각도 없이, 연결을 닫아 끝을 알린다/moved  /seeother  /keepme    301 · 303 · 307

남길 것

01-raw.txt        손으로 친 요청과 그 응답02-nohost.txt     Host 를 뺐을 때와 1.0 으로 보냈을 때03-length.txt     본문의 끝을 알리는 세 방법04-keepalive.txt  한 연결에 요청 두 번05-redirect.txt   301 · 303 · 307 의 차이06-timing.txt     구간별 시간07-notes.md       다음에 읽을 사람에게

단계 7개

  1. 요청을 손으로 친다
  2. Host 를 빼 본다
  3. 본문은 어디서 끝나나
  4. 한 연결에 두 번
  5. 301 · 303 · 307 은 무엇이 다른가
  6. 느린 구간을 숫자로 가리킨다
  7. 다음에 읽을 사람에게