http://blog.daum.net/jty71/15645337
1.물리 계층
비트의 전송을 책임지는 하드웨어 통신이다. 전파, 전압으로 비트를 표현하는 방법(통신 공학)과 연결하는 전선의 종류(twist pair cable = LAN cable, 동축 케이블 = 유선 방송 케이블, 광 케이블, 무선), 타이밍 등에 대한 프로토콜이다. 이 부분은 전자, 전기, 전파, 통신 공학의 영역이다. 단방향(simplex), 반이중(half-duplex), 전이중(full-duplex), 비동기식, 동기식 등의 방법들이 있다고 하는데 프로그래머 입장에선 자세히 알 필요가 없다. 이 프로토콜은 오직 바로 직접 연결된 기계와 기계 사이의 물리적 통신을 정한다. 비유를 하면 트럭을 운전해서 물건을 배달하는 노동자에 해당한다. 그런데 이 트럭은 도로로 연결된 건물까지만 배달하고 그 건물 넘어 도로까지는 가지 않는다. 트럭 운전자는 정해진 노선만 달린다. 고로 수신지 따위를 생각하지 않는다. 자신이 싣고 가는 화물의 내용도 신경 쓰지 않는다. 바로 옆 건물(기계)까지 전달만 책임진다.
2.데이터 링크 계층
기계와 기계 사이의 1대1 통신이나 방송 같은 것을 하려면 1계층으로 충분하다. 도로가 하나라서 송신자와 수신자가 1대1로 정해져 있고, 방송의 경우 증폭하여 중계하는 정도면 충분하다. 필요한 놈은 받아 가고 필요 없으면 무시하면 된다. 그런데 여러 컴퓨터가 묶인 네트워크이고 특정 수신자에게만 배달해야 할 경우라면 2계층이 필요하다. 여기선 송신자와 수신자의 주소가 필요하다. 또한 큰 데이터를 작게 나누어 전송한다. 고로 순서를 제어하고 흐름을 제어하는 복잡한 기능이 필요하다. 데이터의 오류 확인도 필요하다. 패리티 검사(1바이트 오류 검사), 블록 합계 검사(Block Sum Check = 블록 오류 검사), 순환 중복 검사(Cyclic Redundancy Check = 수신한 데이터 전체 검사)를 사용한다. 데이터를 바이트로 구분해서 보기 시작하는 것도 여기다. 즉, 비트의 나열을 전달하는 것이 아니라 숫자(바이트)를 전달한다는 개념이 나타난다. 2계층만으로도 인터넷이 가능하다. 허나 업체들마다 자기의 하드웨어 프로토콜(1계층)과 소프트웨어 프로토콜(2계층)을 사용하기 때문에 인터넷을 만들기 위해서는 프로토콜의 전환이 필요하다. 그래서 그 위에 3계층을 하나 더 만들었다. 이 3계층에서 1과 2계층의 하드웨어 전환과 프로토콜 전환이 발생한다. 즉, LAN에서 인터넷으로 나가면 다른 하드웨어 환경과 만나게 된다. 유선에서 무선으로 전기에서 광통신으로 하드웨어 프로토콜도 바뀐다. 거기에 따른 소프트웨어 프로토콜도 바뀐다. 고로 이런 것을 덮어 무시하고 공통적인 프로토콜을 만들어야 했다.
3.네트워크 계층
이 추가된 계층으로 인해서 비로소 인터넷이 가능해진다. 2계층에선 LAN 카드마다 주소가 붙어 있다. 이것으로 수신자와 송신자를 구분한다. 그런데 3계층에서도 또 다른 주소를 사용한다. 1계층과 2계층이 통일이 되면 3계층은 사실 필요가 없다. 현실은 업체마다 자기의 네트워크 프로토콜을 사용하기 때문에 이를 통합할 3계층을 만든 것이다. 2계층은 LAN을 벗어나지 못 한다. 3계층에서 인터넷이 가능하기 때문에 3계층 주소가 바로 인터넷 주소가 된다. 여기서부터 프로그래머가 알아야 하는 프로토콜이다. 1계층과 2계층은 네트워크 하드웨어 관련자들이 알아야 할 내용이다. 위의 그림에서 중간에 라우터(router = 행선지를 정하는 놈)라고 되어 있는 일종의 교환기가 3계층에서 동작한다. 주소를 보고 어디로 우편물을 보낼지 결정하는 것이다. 3계층에선 모든 하부의 하드웨어와 소프트웨어적인 프로토콜의 차이가 가려진다. 그래서 이곳을 IP(인터넷 프로토콜)라고 부른다.
4.트랜스포트 계층
3계층이 우편물의 주소를 보고 편지를 전달하는 것이라면, 4계층은 그 우편물의 수신자를 확인하여 그 사람에게 전달하는 것이다. 즉, 컴퓨터의 주소는 3계층에서 파악하여 전달하고, 그 컴퓨터 속의 어떤 프로그램에게 가는 정보인지는 4계층이 파악하여 전달한다.
5.세션 계층
이 계층은 역할이 모호하다. 단어의 의미로 보면 회의/모임 등을 담당한다는 뜻이다. 즉, 연결을 유지한다는 개념인데 그것을 이 층에서 하라는 얘기다. 나중에 나올 TCP와 UDP 중에서 TCP는 이 세션 계층의 역할을 하고 있다. TCP를 4계층 프로토콜이라고 하지만 UDP가 진짜 4계층 프로토콜로 보이고, TCP는 5계층까지 일부 포함한 역할을 하는 것 같다.
6.프리젠테이션 계층
말 그대로 데이터의 표현이다. 여기는 데이터의 암호화, 압축, 문자 코드 등을 담당한다. 통신에서 전달되는 것은 숫자이다. 이 숫자는 바이트로 표현되고, 비트 나열의 전기 신호로 전달 된다. 이것을 화면에 출력할 때는 적당한 문자로 바꾸어야 한다. 바로 여기서 문자 코드, 암호 해독, 압축 풀기가 필요하다.
7.응용 프로그램 계층
이 계층은 컴퓨터 사용자와 컴퓨터 사이를 연결한다. 즉, 화면을 보고 키보드 입력하여 전송할 데이터를 만들고, 전송 받은 데이터를 화면에 보여주는 것을 담당한다. HTTP(웹 브라우저), FTP(파일 전송), 터미널, 이메일 등의 서비스를 말 한다.
이상의 OSI 7계층 설명은 추상적일 수밖에 없다. 구체적인 물건을 아직 보지 못 했기 때문에 무슨 소리인지 이해하기 어렵다. 현재 사용하고 있는 인터넷 프로토콜인 TCP/IP를 알면 OSI 7 계층의 이해가 쉽다. 그런데 이 TCP/IP도 이해하기 쉽지는 않다. 역시 구체적인 물건으로 보이지 않기 때문이다. 프로토콜이란 말 그대로 대화 방법이다. 누구와 누구의 대화인지도 잘 모를 것이다. 여하튼 TCP(4계층 프로토콜)와 IP(3계층 프로토콜)가 가장 많이 사용되기 때문에 TCP/IP라고 부르는 것 같다. OSI 7계층과 TCP/IP를 함께 비교하여 그려 보면 아래 그림이다. 그림에서 하부 1계층과 2계층은 네트워크마다 다른 특징이다. 인터넷은 3계층과 4계층이 담당한다. 3계층은 하부 2개 계층을 이용해서 필요한 통신을 한다. 이론상으론 2계층으로도 인터넷을 구성할 수 있다. 전 세계 모든 사람들이 같은 네트워크를 사용하면 된다. 5계층부터는 경계를 명확하게 구분할 필요가 없다. 왜냐하면 5계층부터는 통신에 절대적으로 필요한 프로토콜이 아니기 때문이다. 허나 실제로 응용 프로그램 내부를 보면 이와 같은 구분에 따라 프로그램이 되어 있다. 고로 잘 알아야 한다. 5계층부터는 프로그래머 마음대로 자신만의 프로토콜을 만들어 사용할 수 있다. 엄밀하게는 3계층의 프로토콜만 지키면 인터넷 통신이 가능하기 때문에 4계층 프로토콜도 자신의 마음에 맞게 만들어 사용할 수 있다. 즉, TCP나 UDP를 꼭 사용해야 하는 것은 아니다. TCP/IP는 1980년대에 만들어진다. 우리 나라에선 1990년대에 인터넷을 사용하는 체험을 하게 되고, 2000년대가 되어서 윈도우 환경을 체험하게 된다. 그러면서 갑자기 컴퓨터 성능이 향상된다.
1학년 신입생때 저런 거 배웠는데 수업 안나오더니 시험 때 와서 저런 거 줄줄줄 다 꿰고 있는 애가 있더라 ㅋㅋㅋ
코딩 잘하고 수학, 영어 잘하고 나머지 이상한 거(리눅스, 보안, 네트워크) 다 잘아는 굇수가 한명 ㅋㅋㅋ
우와 ㅠㅠ
니들 이런거 졸라 우스운거 아냐?