웹페이지를 주고받기, HTTP
주소창에 주소를 치면 어떻게 그 페이지가 화면에 뜰까요? 보이지 않는 곳에서 짧은 대화가 오가요. 브라우저가 '이거 줘' 하고 부탁하면, 서버가 '여기 있어' 하고 건네줘요. 이 부탁과 건넴 한 쌍이 웹을 움직이는 약속, HTTP예요.
이거 줘, 여기 있어
앞에서 TCP 덕분에
데이터가 빠짐없이 도착하는 걸 봤어요.
그런데 그 데이터로
무슨 대화를 나누는 걸까요?
웹에서의 대화는 아주 단순해요.
브라우저가 서버에게
'이 페이지 줘' 하고 부탁하고,
서버가 '여기 있어' 하고 건네줘요.
부탁을 요청, 건넴을 응답이라고 불러요.
브라우저를 눌러 서버에게 요청을 보내요. 서버가 응답을 돌려주면 한 쌍이 완성돼요.
요청 하나에 응답 하나.
웹은 이 단순한 짝으로 움직여요.
브라우저가 먼저 말을 걸고,
서버는 그 부탁에만 답해요.
서버가 먼저 말을 거는 일은 없어요.
늘 묻는 쪽이 있고 답하는 쪽이 있죠.
그런데 '이거 줘' 말고도
부탁의 종류가 더 있어요.
다음에 그 동작들을 살펴봐요.
요청에 담는 동작
모든 요청에는
무엇을 하고 싶은지 동작이 붙어요.
가장 흔한 건 GET이에요.
'이거 주세요' 하고 받아오는 동작이죠.
페이지를 열 때마다 쓰는 게 GET이에요.
반대로 POST가 있어요.
'이거 받아주세요' 하고 보내는 동작이에요.
글을 쓰거나 로그인 정보를 보낼 때처럼요.
받아오면 GET, 보내면 POST예요.
동작을 눌러 골라봐요. GET은 받아오는 쪽, POST는 보내는 쪽. 각 동작이 어느 방향인지 화살표로 보여줘요.
GET과 POST 두 가지면
웹에서 하는 일 대부분이 설명돼요.
페이지를 열어 읽는 건 GET,
무언가를 적어 보내는 건 POST.
동작 말고도 응답엔 짧은 표시가 따라와요.
잘 받았으면 200,
그런 페이지가 없으면 404 같은 숫자죠.
성공인지 실패인지 한눈에 알려주는 표시예요.
자세한 건 지금 몰라도 괜찮아요.
매번 처음 보는 손님처럼
여기 HTTP의 묘한 성격이 있어요.
HTTP는 지독한 건망증이에요.
요청 하나가 끝나면
방금 누가 뭘 부탁했는지 깡그리 잊어버려요.
같은 사람이 두 번 와도
HTTP는 매번 처음 보는 손님처럼 대해요.
'아까 오셨던 분이죠?' 같은 기억이 없어요.
이렇게 지난 일을 안 들고 있는 성질을
상태가 없다, 곧 stateless라고 해요.
같은 사람이 두 번 요청을 보내봐요. 두 번째에도 서버는 처음 본 듯 인사해요. HTTP는 지난 일을 기억하지 못해요.
두 번을 와도 매번 처음 인사라니
좀 답답해 보이죠.
하지만 이건 일부러 그렇게 만든 거예요.
서버가 모두를 똑같이, 가볍게 대하니
수많은 손님을 동시에 받아낼 수 있거든요.
대신 '아까 그 사람'을 기억하려면
따로 표를 쥐여 줘야 해요.
그 표가 다음 강에서 만날
세션과 쿠키예요.
조각을 모아 한 페이지로
한 페이지는 요청 한 번으로
다 오는 게 아니에요.
먼저 글의 뼈대를 GET으로 받아와요.
그 안을 보니 그림도, 꾸밈도 필요하대요.
그럼 브라우저가
그림 줘, 꾸밈 줘 하고 또 요청해요.
요청-응답을 여러 번 주고받으며
조각을 하나씩 모아
비로소 완성된 페이지가 돼요.
조각을 하나씩 눌러 요청해봐요. 글, 그림, 꾸밈이 응답으로 와서 페이지가 차례로 채워져요.
조각이 다 모이니
비어 있던 자리가 꽉 찼어요.
우리 눈엔 한 번에 뜬 것 같지만
사실은 여러 요청-응답이 모인 결과예요.
뼈대 하나, 그림 하나, 꾸밈 하나.
저마다 따로 부탁하고 따로 받아온 거죠.
빠른 인터넷 덕에
이 모든 일이 눈 깜짝할 새 끝나서
우리는 그냥 페이지가 떴다고 느껴요.
정리해볼까요
한 줄로 모으면 이래요.
웹은 요청과 응답 한 쌍으로 움직여요.
요청엔 GET(주세요)·POST(받아주세요) 같은 동작이 붙어요.
한 페이지는 여러 요청-응답으로 조각을 모아 만들어요.
그리고 HTTP는 지독한 건망증이라
매 요청을 처음 보는 손님처럼 대해요.
이 단순함과 건망증 덕에
웹은 가볍고 누구나 쉽게 쓸 수 있어요.
그게 HTTP의 약속이에요.
핵심을 차례로 눌러 되짚어봐요. (요청과 응답 → GET·POST 동작 → 지독한 건망증 → 조각을 모아 페이지)
이제 웹페이지가 어떻게
오가는지 알게 됐어요.
그런데 HTTP의 건망증이
한 가지 숙제를 남겼죠.
장바구니에 담은 물건이나
로그인한 상태는 어떻게 기억할까요?
매번 처음 보는 손님이라면
그걸 어떻게 이어갈까요?
그 비밀을 다음 강,
세션과 쿠키에서 풀어봐요.