메아리 저널

당신이 쓴 글이 세상 사람들에게 보여질때까지

...아래의 글은 그냥 한 번 "이런 글도 써 보고 싶다"라는 이유로 써 보는 것이다. 절대 검증 안 되었으므로 믿지 마시길 바라고, 이 아이디어를 가져다가 진짜 제대로 된 글을 써 주신다면 매우 영광이므로 트랙백 하나쯤은 날려 주시면 감사하겠다. 이하 []로 묶인 내용은 글에 포함되지 않는 주석이다.

참고로 아래의 내용을 제대로 쓴다면... 각 문단 별로 책 한 장(chapter)씩 때울 수 있을 것이다. 중간 중간에 언급 안 하는 운영체제나 프로그래밍 언어, 컴퓨터 아키텍처에 대한 내용까지 추가하면 그야말로 우려먹기 좋은 출판물이 될 것이다.


예를 들어서, 지금 보는 이 글에 감명을 받았는지 까고 싶다든지 해서 댓글을 단다고 생각해 봅시다. 뭐 텔레파시로 댓글 달아 주셈 하면 올라 오는 게 아닐테니 (진짜로 그랬다가는 메이저 블로거들은 머리가 남아나지 않을 거에요.) 뭔가 아래에서 돌아가고 있는 게 있단 얘긴데, 그럼 그 아래에서 뭐가 돌아 갈까요?

여러분이 댓글을 달면 여러분 컴퓨터에서는 이글루스 서버한테 "야 이런 답글 좀 이 글에 남겨 줘" 하고 요청을 합니다. 서버라는 말은 온라인 게임 같은 거 해 봤으면 잘 알 거에요. 그런데 그 서버라는 것이 사실 별 대단한 게 아니라 여러분이 쓰는 거랑 똑같은 컴퓨터에요. 물론 얘네는 죽으면 좀 곤란하니까 성능이 좋은 경우가 많지만, 필요하다면 여러분 컴퓨터가 서버가 될 수도 있는 거에요. 왜 요즘 웹 공유한답시고 베리즈 웹셰어 같은 거 많이 쓰잖아요? 그게 다 여러분 컴퓨터를 서버로 만들어 주는 겁니다.

요청을 할 때 나는 "야 이런 답글 좀 이 글에 남겨 줘" 했는데 상대방이 "Pardon?" 하고 되받아 치면 뭐 대화가 안 되겠죠? 그래서 얘네들은 똑같은 언어를 써야 합니다. 여러분이 보시는 이 페이지를 읽기 위해서 여러분의 컴퓨터는 HTTP라고 하는 언어로 서버랑 대화해요. 근데 여러분 컴퓨터가 HTTP만 알고 있으면 여러분한테 어떻게 보여 주겠어요? 그래서 컴퓨터는 HTTP로 서버와 대화한 뒤에 그 결과를 해석해서 여러분 보기 좋게 만들어 놓아요. 만약 이 해석하는 방법이 컴퓨터마다 다르면 제 아무리 HTTP를 써도 여러분이 볼 수가 없겠죠? 그래서 흔히 말하는 웹 표준이라는 게 있어서 이런 게 오면 이렇게 출력해라 이런 식으로 규칙이 있어요. HTML, XML, CSS, 자바스크립트, DOM 뭐 이런 것들이 다 이런 이유로 있는 거에요. [activex 같은 것에 대해서 언급할 수는 있으나 이 문단이 너무 길어지므로 생략.]

우리가 인터넷을 할 때 꼭 인터넷 익스플로러만 쓰는 건 아니죠? 당장 인터넷 선 뽑아 버리고 (내 노트북엔 무선랜이 돼요 하고 따지면 곤란합니다.) 뭐가 안 되는지 생각해 보세요. 여러분 많이 쓰는 MSN 메신저나 메일 같은 것도 한꺼번에 먹통이 될 거 아니에요. 비유를 하자면 서로 한국어를 쓴다는 걸 알고 있어도 멀리 떨어져 있으면 대화가 될 턱이 없으니 편지를 쓰거나 전화선을 깔거나 해서 서로 연결해 주는 것이 인터넷입니다. 만약 둘이 좀 가까워서 옆집에 있다 이러면 그냥 고무줄 전화기 만들어서 대화해도 되겠죠. 회사 같은데서는 실제로 이렇게 많이 하는데 (왜냐하면 누가 들으면 곤란한 얘기들이 가득하니!) 이걸 인트라넷이라고 하고요. 편지 같은 건 누군가가 뜯어 볼 수도 있으니 좀 불안하잖아요. 그래서 오고 가는 얘기들을 암호화해서 주고 받는 방법들이 여러 가지 있어요. 예를 들어서 HTTP에는 HTTPS라고 해서 오고 가는 편지에 자물쇠를 채워 주는 방법이 있는데, 물론 자물쇠는 보통 따면 그만이지만 이건 슈퍼 초 울트라 합금 자물쇠라 따기가 힘드니 걱정 마세요. 여러분 무슨 사이트에 로그인하거나 가입하거나 할 때 주소 앞에 https://가 아니라 http://가 붙어 있으면 아 십라 이 놈들은 자물쇠도 안 채워 놓는구나 하고 좀 욕을 해 줘도 됩니다.

인터넷이라는 걸 잘 생각해 보면 좀 굉장한 거에요. 미국이나 일본 같은 데서 주문한 물건 오늘 오나 언제 오나 기다리는 거랑 인터넷이랑 비교하면 좀 이해가 갈 겁니다. 사실은 인터넷에서도 여러분이 써 놓은 편지가 어디론가로 사라지거나 물에 젖어서 못 쓰게 되거나 하는 일이 꽤 많이 일어나요. 그래서 여러분 컴퓨터는 다른 컴퓨터한테 뭔가 보낼 때 대답이 안 오면 편지 또 말아 먹었군 하고 똑같은 편지를 보내 줘요. 다른 컴퓨터도 그럴 수 있으니까 여러분 컴퓨터가 같은 편지를 여러 개 받을 수도 있는데 그럴 때는 맨 처음 하나 빼고는 같을테니 무시하겠죠. 한편 편지가 오기는 왔는데 물에 젖어서 왔다면 버리고 배째라 기다려요. 어차피 응답을 안 해 주면 상대방이 다시 편지를 보내 줄테니 배째고 기다려도 언젠가는 오겠죠. 이런 식으로 편지가 젖었거나 안 올 때 어떻게 할 지에 대한 규칙이 있는데 이걸 TCP라고 하고요, 편지를 보내고 받는 그 자체는 IP라고 해요. 둘은 같이 쓰이기 때문에 보통 TCP/IP라고 붙여서 부르고 인터넷을 이루는 매우 중요한 규칙 중 하나입니다.

[이 문단에는 link layer, 그러니까 뭐 ARP나 PPPoE 따위가 들어 가야 하는데 쓰기 귀찮다.]

[이 문단에는 physical layer, 그러니까... 이더넷 밖에 없는데 하여간 이게 들어 가야 한다. 역시 쓰기 귀찮음. 우리가 보통 쓰는 랜선이 이더넷에서 이렇게 만들어야 한다 라고 규정되어 있다고 생각하면 이해하기 좋다.]

[...이 쯤에 두 세 문단이 더 들어간 뒤에 전자기학에 대한 언급으로 끝나게 된다.]

이 글은 본래 http://arachneng.egloos.com/1259136에 썼던 것을 옮겨 온 것입니다.


(rev 71b35f804c1e)