안녕하세요? Jamie 입니다. 다음 달이면 학사모를 쓸 공순이 출신 AE이자 블로그 Jamie Blog을 꾸리고 있는 블로거입니다. 잘 부탁드립니다♡
여러분 인터넷 많이 쓰시죠? (당연히 지금 이 순간에도!)
그런데 한번쯤은 '어떻게 내가 네이버에서 검색어 '김연아'를 입력하고 클릭하면 결과를 보여주는 것일까?'
이런 생각은 해 보신 적 없나요? 이미 유능하신 분들은 '서버-클라이언트' (Server-Client) 구조 아니야?! 라고 하시겠죠?
네 맞는 얘기입니다. 정보를 요청하면 (Client) 정보를 제공하는 (Server) 구조가 당연한 것이죠.
그렇다면 우리가 쓰는 컴퓨터는 내부적으로 어떻게 처리할까요?
인터넷 익스플로러, 모질라 파이어폭스, 오페라, 구글 크롬, 사파리와 같은 웹 브라우저가 알아서 다 처리하는 걸까요?
정답은 땡~
컴퓨터는 세상에서 가장 바보같은 기계라서 절대 한번에 못 합니다. (한번에 한다면 그건 사람이죠!)
그렇지만 크게 7가지를 나누어서 일을 처리합니다. 즉, 내부적으로 외부 컴퓨터 혹은 서버와 통신을 할 경우에는
컴퓨터가 스스로 7가지의 단계를 만들어서 일을 처리합니다. 이 7가지 단계를 Open Systems Interconnection Basic Reference Model이라고 합니다. 이름이 거창하게 길죠? 줄여서 OSI 모델이라고 부르니 고민고민하지마셔요 :)
어렵죠? 간단한 예를 들어봅시다 :)
여러분이 자주 사용하시는 Outlook에서 이메일을 저한테 보낸다고 가정할까요?
(1) Outlook에서 메일을 작성한다 (보내는 사람, 받는 사람, 메일 내용 등등)
(2) '보내기'를 누른다
(3) 기다린다
(4) 조금 이따가 Jamie로부터 메일을 받는다. (답장은 어쩌구저쩌구-)
자 하나하나씩 따져볼까요?
여러분이 사용하시는 Outlook, Office 제품 등등은 모두 어플리케이션(Application)입니다. 즉, 특정 목적을 위해 사용하는 프로그램이죠. (Outlook은 이메일 관리, Word는 문서 작업, Media Player는 음악 재생 등등) 메일을 작성한다고 해당 버튼 누르면 보기좋은 창도 뜨고 문서 작업 관련 버튼이 다 뜨죠? 이 작업은 위의 이미지 중 최상위에 있는 'Application Layer'에서 해 줍니다. 즉, 사람이 가장 보고 이해하기 쉬운 UI (User Interface)를 만드는 것 입니다. '보내기' 버튼 누르기 전까지의 모든 일은 이 계층(layer)에서 다 도맡아 일 합니다.
자 그럼 메일 한 통 보냈죠? 그럼 여기서부터는 우리가 할 수 있는 건 없습니다. (빠이빠이~)
그 다음부터는 컴퓨터가 알아서 합니다. 중요한 건 우리가 쓴 한글/영어를 컴퓨터는 죽어도 모른다는 것!!! 즉, 숫자 0하고 1밖에 모르는 바보 기계라서 번역을 해 줘야 합니다. Application Layer 바로 아래에는 Presentation Layer가 있죠? 여기서는 일단 우리가 작성한 내용을 'ASCII'라는 코드로 임의로 바꿔줍니다. 즉, 사전에 중간언어로 바꿔주는 셈이지요. 'ABC'라고 보내면 이 계층에서는 65 66 67 이렇게 바꿉니다. 이상하죠? ㅎㅎㅎ 컴퓨터는 이렇게 바보라서 어쩔 수 없어요 -_-
Presentation Layer의 일이 끝났으니 그 아래의 Session Layer로 내려갑니다. 메일 내용만 번역하면 뭐하나요? 당연히 Jamie한데 메일을 보내야죠!!! 그렇기 위해서는 메일을 보내기 위한 길, 통신 네트워크를 열어야 합니다. 보내시는 메일은 당연히 Outlook이나 특정 웹사이트 내의 메일시스템에서 열리죠? 보내는 사람이 정확히 누구이고 받는 사람이 정확히 누구인지 확인을 하고 그 길(네트워크)를 터 주는 것이 이 계층에서 하는 일 입니다. Jamie한테 보내야하는데 메일이 엉뚱하게 다른 사람에게 배달된다면 무척 기분 나쁘겠죠^-^;;
다음 Transport Layer는 무엇을 할까요? 보내는 내용(여기서부터는 유식하게 데이터라고 합시다. 하하)을 나눕니다. 왜?! 만약에 저한테 보내는 내용이 동영상/사진과 같은 방대햔 양이라면 어떻게 해야 할까요? 인터넷 상태가 불안하다면 어떨까요? 분명히 컴퓨터는 메일을 보내다가 실패할 수 있습니다. 중요한 메일을 이러한 난감한 상황떄문에 버릴 수는 없겠죠? 이를 예방하기 위해 이 계층에서는 데이터를 패킷이라는 단위로 쪼개어 보냅니다. 즉 모양있는 퍼즐로 만들어 분해하는 거죠. 완성된 퍼즐 그 자체를 보내는 것 보다는 하나하나 조그맣게 보내는 게 더 편하지 않을까요? 중요한 건 작은 데이터를 분할해서 보내더라도 운 나쁘면 잃어버릴 수 있다는 것, 그래서 Transport Layer는 각각의 패킷이 무사히 도착했는지 반드시 확인을 합니다. 만약 10개의 패킷을 받는 사람(Jamie)한테 보냈는데 겨우 8개 받았다면 그건 문제죠. (메일 내용 '하이 제이미'가 '하 이미'로 둔갑하는거죠.) 혹 동영상 받아서 실시간 재생하다 중간에 멈추고 다른 장면으로 점프해버리면 일부 패킷을 전달받지 못 해서 생기는 현상이에요.
얘기 참 길죠? 힘내세요! 여러분은 벌써 전체 내용 중 반 이상 읽었어요. 힘!
Transport Layer가 데이터 자체에 포커스를 둔다면 Network Layer는 데이터가 지나 갈 길(경로)를 감시(제어)합니다. 얘가 제대로 간 건가? 중간에 딴 데로 도망갔나? 이런 것을 확실하게 합니다. 즉 패킷 머리에 붙은 꼬리표(보내는 사람 주소/받는 사람 주소)를 정확히 확인하고 거기에 맞는 길로 안내, 감시하는 것 입니다. 그리고 주소(xxx@shoutkorea.com)을 컴퓨터가 이해할 수 있도록 숫자로 바꿔주는 번역도 합니다.
자 이제 데이터 보내고 받고의 네트워크 문제는 끝! 그래도 남은 2가지 일이 더 있습니다. 흑흑
다음 아래 Data Link Layer는 컴퓨터가 이해하는 언어(숫자 0과 1)로 데이터의 전송상황을 알려줍니다. 즉 메일은 누가 보냈고 누가 받으며 총 몇 개의 패킷이 날아가고 패킷의 도착여부 등을 알려줍니다. 궁극적으로 컴퓨터가 실제적 업무를 이해하고 처리하는 건 맨 마지막의 Physical Layer이기 때문에 사전에 간단한 형식에 맞춰서 보고를 합니다. 중요한 건 이 단계에서 Transport Layer나 Network Layer에서 알려주는 패킷 도착여부 혹은 충돌여부 (예: 인터넷이 갑자기 끊겨서 패킷1이 전송 안 되었는데 패킷2가 멋도 모르고 가다가 같이 부딪치는 현상)를 확실하게 알아야 합니다. 이런 crisis가 발생할 경우에는 재전송할 것인지 혹은 아예 무시하고 처음부터 모든 패킷 다 보낼건지 판단을 합니다.
자 수고하셨습니다. 여러분은 가장 맨 바닥의 Physical Layer에 도착하셨습니다.
여기서부터는 숫자 0과 1의 세계이기 때문에 컴퓨터 그들의 언어로 알아서 대화하고 처리를 합니다. 즉, 우리가 알고 있는 소프트웨어의 개념에서 벗어나 순수한 하드웨어의 세계로 들어왔습니다. (정말로 여기서는 01010111111010101011)
끝이냐구요? 정말 미안하지만 아직 아닙니다!
여태까지 여러분은 제게 메일만 보냈습니다. OTL (절망) 제가 메일을 받고 확인해야 끝나죠!
다행히도 제가 다시 메일을 받으려면 컴퓨터는 거꾸로 Physical Layer -> Application Layer로 한 칸씩 올라가는 일만 하면 됩니다. 01010101010 을 받고 확인하고 다시 ASCII 값으로 바꿔주고(복호화) '하이 제이미'로 번역해 Application Layer에 있는 Outlook에서 보여주는 것 입니다. ㅎㅎㅎ 한마디로 계단 내려갔다가 계단 다시 올라가는 작업을 한 게 끝입니다.
인터넷 하는데 이렇게 많은 계단을 왔다갔다 한다는 게 어쩌면 번거로워 보일꺼에요. 그렇지만 모든게 보안(security)을 위해 만든 프로토콜(통신규약)이랍니다. 재미있는 사실은 Internet Explorer가 이 7개의 계단을 무시하고 총 5개의 계단으로 압축시켰다는 것 입니다.
오른쪽 초록색 박스는 5개 층이죠? Microsoft가 만든 웹 브라우저 Internet Explorer는 이와 같은 5계층 방식을 따르고 있습니다. 지나가는 계단 수가 적으니 당연히 컴퓨터가 처리하는 시간이 더 절약되겠죠? 대신에 그만큼 보안성이 떨어질 수 밖에 없다는 단점도 있습니다. (실제로 IE가 타 브라우저에 비해 보안에 약하다는 이유 중 하나가 바로 여기에 있습니다.)
여러분이 네이버에서 원하는 내용 검색해서 보는 동안 컴퓨터는 불쌍하게도 위와 같은 과정은 몇 백만번씩 미친듯이 거치며 여러분에게 불평 한마디도 안 하고 보내줍니다. 중간에 컴퓨터가 이유없지 정지할 때 있죠? 그건 여러분이 너무 미친듯이 '검색' 버튼을 많이 누르거나 '새로고침'을 하면 얘가 주문을 너무 많이 받아 뻗어버리는 것 입니다.
긴 글 읽어주셔서 감사합니다. 이 글 정말 끝까지 그리고 꼼꼼히 읽으셨다면 컴퓨터 네트워크의 기초이론은 정말 마스터하셨습니다. (짝짝짝) 감사합니다 감사합니다♡
P.S: 왠지 포스팅의 결론은 컴퓨터는 세상에서 최고 바보 기기고 인간은 가장 똑똑하다... 같네요. -_-음
여러분 인터넷 많이 쓰시죠? (당연히 지금 이 순간에도!)
그런데 한번쯤은 '어떻게 내가 네이버에서 검색어 '김연아'를 입력하고 클릭하면 결과를 보여주는 것일까?'
이런 생각은 해 보신 적 없나요? 이미 유능하신 분들은 '서버-클라이언트' (Server-Client) 구조 아니야?! 라고 하시겠죠?
네 맞는 얘기입니다. 정보를 요청하면 (Client) 정보를 제공하는 (Server) 구조가 당연한 것이죠.
그렇다면 우리가 쓰는 컴퓨터는 내부적으로 어떻게 처리할까요?
인터넷 익스플로러, 모질라 파이어폭스, 오페라, 구글 크롬, 사파리와 같은 웹 브라우저가 알아서 다 처리하는 걸까요?
정답은 땡~
컴퓨터는 세상에서 가장 바보같은 기계라서 절대 한번에 못 합니다. (한번에 한다면 그건 사람이죠!)
그렇지만 크게 7가지를 나누어서 일을 처리합니다. 즉, 내부적으로 외부 컴퓨터 혹은 서버와 통신을 할 경우에는
컴퓨터가 스스로 7가지의 단계를 만들어서 일을 처리합니다. 이 7가지 단계를 Open Systems Interconnection Basic Reference Model이라고 합니다. 이름이 거창하게 길죠? 줄여서 OSI 모델이라고 부르니 고민고민하지마셔요 :)
(이미지 출처는 여기!)
어렵죠? 간단한 예를 들어봅시다 :)
여러분이 자주 사용하시는 Outlook에서 이메일을 저한테 보낸다고 가정할까요?
(1) Outlook에서 메일을 작성한다 (보내는 사람, 받는 사람, 메일 내용 등등)
(2) '보내기'를 누른다
(3) 기다린다
(4) 조금 이따가 Jamie로부터 메일을 받는다. (답장은 어쩌구저쩌구-)
자 하나하나씩 따져볼까요?
여러분이 사용하시는 Outlook, Office 제품 등등은 모두 어플리케이션(Application)입니다. 즉, 특정 목적을 위해 사용하는 프로그램이죠. (Outlook은 이메일 관리, Word는 문서 작업, Media Player는 음악 재생 등등) 메일을 작성한다고 해당 버튼 누르면 보기좋은 창도 뜨고 문서 작업 관련 버튼이 다 뜨죠? 이 작업은 위의 이미지 중 최상위에 있는 'Application Layer'에서 해 줍니다. 즉, 사람이 가장 보고 이해하기 쉬운 UI (User Interface)를 만드는 것 입니다. '보내기' 버튼 누르기 전까지의 모든 일은 이 계층(layer)에서 다 도맡아 일 합니다.
자 그럼 메일 한 통 보냈죠? 그럼 여기서부터는 우리가 할 수 있는 건 없습니다. (빠이빠이~)
그 다음부터는 컴퓨터가 알아서 합니다. 중요한 건 우리가 쓴 한글/영어를 컴퓨터는 죽어도 모른다는 것!!! 즉, 숫자 0하고 1밖에 모르는 바보 기계라서 번역을 해 줘야 합니다. Application Layer 바로 아래에는 Presentation Layer가 있죠? 여기서는 일단 우리가 작성한 내용을 'ASCII'라는 코드로 임의로 바꿔줍니다. 즉, 사전에 중간언어로 바꿔주는 셈이지요. 'ABC'라고 보내면 이 계층에서는 65 66 67 이렇게 바꿉니다. 이상하죠? ㅎㅎㅎ 컴퓨터는 이렇게 바보라서 어쩔 수 없어요 -_-
Presentation Layer의 일이 끝났으니 그 아래의 Session Layer로 내려갑니다. 메일 내용만 번역하면 뭐하나요? 당연히 Jamie한데 메일을 보내야죠!!! 그렇기 위해서는 메일을 보내기 위한 길, 통신 네트워크를 열어야 합니다. 보내시는 메일은 당연히 Outlook이나 특정 웹사이트 내의 메일시스템에서 열리죠? 보내는 사람이 정확히 누구이고 받는 사람이 정확히 누구인지 확인을 하고 그 길(네트워크)를 터 주는 것이 이 계층에서 하는 일 입니다. Jamie한테 보내야하는데 메일이 엉뚱하게 다른 사람에게 배달된다면 무척 기분 나쁘겠죠^-^;;
다음 Transport Layer는 무엇을 할까요? 보내는 내용(여기서부터는 유식하게 데이터라고 합시다. 하하)을 나눕니다. 왜?! 만약에 저한테 보내는 내용이 동영상/사진과 같은 방대햔 양이라면 어떻게 해야 할까요? 인터넷 상태가 불안하다면 어떨까요? 분명히 컴퓨터는 메일을 보내다가 실패할 수 있습니다. 중요한 메일을 이러한 난감한 상황떄문에 버릴 수는 없겠죠? 이를 예방하기 위해 이 계층에서는 데이터를 패킷이라는 단위로 쪼개어 보냅니다. 즉 모양있는 퍼즐로 만들어 분해하는 거죠. 완성된 퍼즐 그 자체를 보내는 것 보다는 하나하나 조그맣게 보내는 게 더 편하지 않을까요? 중요한 건 작은 데이터를 분할해서 보내더라도 운 나쁘면 잃어버릴 수 있다는 것, 그래서 Transport Layer는 각각의 패킷이 무사히 도착했는지 반드시 확인을 합니다. 만약 10개의 패킷을 받는 사람(Jamie)한테 보냈는데 겨우 8개 받았다면 그건 문제죠. (메일 내용 '하이 제이미'가 '하 이미'로 둔갑하는거죠.) 혹 동영상 받아서 실시간 재생하다 중간에 멈추고 다른 장면으로 점프해버리면 일부 패킷을 전달받지 못 해서 생기는 현상이에요.
얘기 참 길죠? 힘내세요! 여러분은 벌써 전체 내용 중 반 이상 읽었어요. 힘!
Transport Layer가 데이터 자체에 포커스를 둔다면 Network Layer는 데이터가 지나 갈 길(경로)를 감시(제어)합니다. 얘가 제대로 간 건가? 중간에 딴 데로 도망갔나? 이런 것을 확실하게 합니다. 즉 패킷 머리에 붙은 꼬리표(보내는 사람 주소/받는 사람 주소)를 정확히 확인하고 거기에 맞는 길로 안내, 감시하는 것 입니다. 그리고 주소(xxx@shoutkorea.com)을 컴퓨터가 이해할 수 있도록 숫자로 바꿔주는 번역도 합니다.
자 이제 데이터 보내고 받고의 네트워크 문제는 끝! 그래도 남은 2가지 일이 더 있습니다. 흑흑
다음 아래 Data Link Layer는 컴퓨터가 이해하는 언어(숫자 0과 1)로 데이터의 전송상황을 알려줍니다. 즉 메일은 누가 보냈고 누가 받으며 총 몇 개의 패킷이 날아가고 패킷의 도착여부 등을 알려줍니다. 궁극적으로 컴퓨터가 실제적 업무를 이해하고 처리하는 건 맨 마지막의 Physical Layer이기 때문에 사전에 간단한 형식에 맞춰서 보고를 합니다. 중요한 건 이 단계에서 Transport Layer나 Network Layer에서 알려주는 패킷 도착여부 혹은 충돌여부 (예: 인터넷이 갑자기 끊겨서 패킷1이 전송 안 되었는데 패킷2가 멋도 모르고 가다가 같이 부딪치는 현상)를 확실하게 알아야 합니다. 이런 crisis가 발생할 경우에는 재전송할 것인지 혹은 아예 무시하고 처음부터 모든 패킷 다 보낼건지 판단을 합니다.
자 수고하셨습니다. 여러분은 가장 맨 바닥의 Physical Layer에 도착하셨습니다.
여기서부터는 숫자 0과 1의 세계이기 때문에 컴퓨터 그들의 언어로 알아서 대화하고 처리를 합니다. 즉, 우리가 알고 있는 소프트웨어의 개념에서 벗어나 순수한 하드웨어의 세계로 들어왔습니다. (정말로 여기서는 01010111111010101011)
끝이냐구요? 정말 미안하지만 아직 아닙니다!
여태까지 여러분은 제게 메일만 보냈습니다. OTL (절망) 제가 메일을 받고 확인해야 끝나죠!
다행히도 제가 다시 메일을 받으려면 컴퓨터는 거꾸로 Physical Layer -> Application Layer로 한 칸씩 올라가는 일만 하면 됩니다. 01010101010 을 받고 확인하고 다시 ASCII 값으로 바꿔주고(복호화) '하이 제이미'로 번역해 Application Layer에 있는 Outlook에서 보여주는 것 입니다. ㅎㅎㅎ 한마디로 계단 내려갔다가 계단 다시 올라가는 작업을 한 게 끝입니다.
인터넷 하는데 이렇게 많은 계단을 왔다갔다 한다는 게 어쩌면 번거로워 보일꺼에요. 그렇지만 모든게 보안(security)을 위해 만든 프로토콜(통신규약)이랍니다. 재미있는 사실은 Internet Explorer가 이 7개의 계단을 무시하고 총 5개의 계단으로 압축시켰다는 것 입니다.
(이미지 출처는 여기!)
오른쪽 초록색 박스는 5개 층이죠? Microsoft가 만든 웹 브라우저 Internet Explorer는 이와 같은 5계층 방식을 따르고 있습니다. 지나가는 계단 수가 적으니 당연히 컴퓨터가 처리하는 시간이 더 절약되겠죠? 대신에 그만큼 보안성이 떨어질 수 밖에 없다는 단점도 있습니다. (실제로 IE가 타 브라우저에 비해 보안에 약하다는 이유 중 하나가 바로 여기에 있습니다.)
여러분이 네이버에서 원하는 내용 검색해서 보는 동안 컴퓨터는 불쌍하게도 위와 같은 과정은 몇 백만번씩 미친듯이 거치며 여러분에게 불평 한마디도 안 하고 보내줍니다. 중간에 컴퓨터가 이유없지 정지할 때 있죠? 그건 여러분이 너무 미친듯이 '검색' 버튼을 많이 누르거나 '새로고침'을 하면 얘가 주문을 너무 많이 받아 뻗어버리는 것 입니다.
긴 글 읽어주셔서 감사합니다. 이 글 정말 끝까지 그리고 꼼꼼히 읽으셨다면 컴퓨터 네트워크의 기초이론은 정말 마스터하셨습니다. (짝짝짝) 감사합니다 감사합니다♡
P.S: 왠지 포스팅의 결론은 컴퓨터는 세상에서 최고 바보 기기고 인간은 가장 똑똑하다... 같네요. -_-음
'Information/Insight sharing' 카테고리의 다른 글
| 기자님들이 원하는...멋진PR인으로 성장하시길... (1) | 2009/01/16 |
|---|---|
| 이벤트? (6) | 2009/01/16 |
| '마케팅의 역사...흐름....' 추천하고 싶은 동영상 (3) | 2009/01/16 |
| 엑셀의 세계로 빠져 봅시다~! (1) (8) | 2009/01/15 |
| 온라인 저작권에 관하여 - CCL (3) | 2009/01/15 |
| 재미있는 컴퓨터 내부 비밀 - OSI 7 Layer (11) | 2009/01/15 |
| Knowledge.... (8) | 2009/01/15 |
| Boiled frog syndrome (2) | 2009/01/14 |
| 브리트니 스피어스의 온라인 메니저 구인광고 (1) | 2009/01/14 |
| 관리팀 경비절감 실천사항1. (16) | 2009/01/14 |
| 스트레스 확~풀어줄까? 그럼 목숨 걸어!! (8) | 2009/01/13 |


댓글을 달아 주세요
와 이거 재밌다!! 신기한걸?
2009/01/15 14:31 [ ADDR : EDIT/ DEL : REPLY ]ㅎㅎ 그런가요? 사실 저건 아주 극히 일부에요 ㅋ
2009/01/15 16:02 [ ADDR : EDIT/ DEL ]오~~ 대단하네! 근데 왜 '사파리'는 뺀 거죠? ㅡㅡ+
2009/01/15 14:48 [ ADDR : EDIT/ DEL : REPLY ]그렇지않아도 뭔가 빠진 것 같았는데 사파리였어요!! ㅠㅠ 수정했어요 >_< 알려주셔서 감사합니다^^
2009/01/15 16:02 [ ADDR : EDIT/ DEL ]웹 표준화에 최적화된 브라우저인 사파리의 순서가 맨 끝이라니...헐...ㅋㅋ 하지만 더이상 수정은 금지 ㅋ
2009/01/15 17:39 [ ADDR : EDIT/ DEL ]헉. 샤우티즘 블로그에서 OSI 7 Layer 얘기를 보게 될 줄이야...ㄷㄷㄷ;;
2009/01/16 08:10 [ ADDR : EDIT/ DEL : REPLY ]어린 시절의 추억이 되살아 나네요 ㅋ
엇....제사마다!!!
2009/01/16 08:45 [ ADDR : EDIT/ DEL ]안녕하세요 제닉스님...맨날 인사만 드리는 철산의 이모여용 ^^ 방문 감사
2009/01/16 12:06 [ ADDR : EDIT/ DEL ]제 이모님은 김포에 살고 있습니다만...
2009/01/16 12:49 [ ADDR : EDIT/ DEL ]뻗어버리지 않도록 사랑해줘야겠네요 ㅋ
2009/01/16 09:34 [ ADDR : EDIT/ DEL : REPLY ]와우!! jamie가 공순인거 첨 아라씀...우리 매년 하는 IT 업계 이해 트레이닝이 필요없을 거 같은데요? Very informative posting!
2009/01/16 12:04 [ ADDR : EDIT/ DEL : REPLY ]