
OSI(Open Systems Interconnection) 계층 구조는 7계층으로 되어있다.
1. Physical (=물리 계층)
- 상위 계층에서 내려온 비트들을 전송 매체를 통하여 어떤 전기적
신호로 전송할 것인가를 담당.
2. Data Link (=데이터 링크 계층)
- 신호수준의 데이터 비트들이 물리계층을 통과하면 데이터블록을
형성하는데, 이 데이터 블록에 대한 전송을 담당
- 인접한 개방형 시스템간에 발생하는 다음과 같은 문제를 담당.
① 데이터 블록의 시작과 끝을 인식하는 동기화 문제
② 발생된 오류를 검출하고 복원하는 오류문제
③ 혼선 제어문제
3. Network (=네트워크 계층)
- 송신측과 수신측 사이에 보이지 않는 논리적인 링크를 구성
- 데이터를 패킷(packet)단위로 분할하여 전송한 후 조립함
- 패킷 전송의 최적의 경로를 찾아주는 라우팅 기능 제공
4. Transport (=전송 계층)
- 사용자와 사용자, 컴퓨터와 컴퓨터간에 연결을 확립하고 유지
- 송수신 시스템간의 논리적인 안정과 균일한 서비스 제공
- 세션 계층에서 넘어온 데이터를 세그먼트(segment) 단위로
분할하고 번호를 붙임
- 오류 검출 코드를 추가하고 통신 흐름 제어를 제공
5. Session (=세션 계층)
- 세션을 확립하여 순차적인 대화의 흐름이 원활하게 이루어지도록
동기화 기능 제공
- 데이터 전송 방향 결정
※ session : 사용자가 접속중인 응용 프로그램을 한 쌍으로 연결하는 작업
6. Presentation (=표현 계층)
- 데이터를 표현하는 방식을 다루는 계층
- 데이터의 안정성을 높이기 위해 데이터 압축이나,
데이터 암호화 기능 제공
- 상이한 데이터 표현을 서로 가능케 하는 표준인터페이스 제공
7. Application (=응용 계층)
- 사용자의 응용 PㆍG(Program)이 네트워크 환경에 접근하는
창구역할을 하는 최상위 계층
OSI 7계층은 크게 하위계층과 상위계층으로 나눈다.
*상위계층(전송 계층, 세션 계층, 표현 계층, 응용 계층)
*하위계층(물리 계층, 데이터 링크 계층, 네트워크 계층)

Comments List
[naver IN ] <br />
<br />
계층별로 이해할수있게 비교해서 설명을 드리겠습니다.<br />
네트워킹을 공부하다보면 자주 등장하는말이 OSI 7 단계인데<br />
너무 추상적이고 개념적이라서 와닿지 않는 부분이 많으실것입니다.<br />
실제통신과 여러가지 프로토콜들을 관련해서 나름대로의 설명을 드리겠습니다.<br />
내용이 길어지는 관계로 시리즈 식으로 해서 내용을 나누겠습니다.<br />
<br />
OSI 7 Layer 는 통신의 과정을 각각의 특성상에 기준을 두고<br />
그것들을 7단계로 구분한것을 말합니다.<br />
이것이 무슨말인고 하면,<br />
사용자가 어떤 메일 프로그램을 통해서 통신을 할때<br />
그것은 그냥 사용자가 전달하고자하는 메일의 내용이 케이블을 타고 나가서<br />
상대방 사용자에게 전달 되는 것이 아니라, 메일의 내용을 쓰기위한<br />
어떤 프로그램도 필요하고, 그 메일의 내용을 컴퓨터가 알아들을수 있게<br />
변환하는 과정, 그리고 상대방 컴퓨터가 어디에 있는지를 알아내는 과정<br />
<br />
또 실질적으로 그 정보가 0101001 등의 비트프레임이 되어 네트워크<br />
케이블로 흘러가는 과정 등여러가지 과정이 있겠죠??<br />
이것을 연속적으로 생각하기보다 특징이 분명화되는 부분을 계층으로 나누어서 관리하면<br />
오류처리나 전체적 관리에 효율적일것으로 생각되어 표준을 정한것입니다.<br />
<br />
예로, 사용자 계층인 저는<br />
오디오를 듣고자 할때 나는 play 라고 되어있는 버튼을 누르면<br />
노래가 나온다는것만 알고있으면 되지, 그것을 눌렀을때 내부적으로<br />
어떻게 동작이 되어 스피커로 음악이 나온다는것은 알필요가 없듯이.<br />
각각의 연결된 상위, 또는 하위 계층이 어떠한 동작을 하건에 상관없이<br />
자신의 계층에서 맞는 처리를 해주고 올바를 결과를 전달만 해주면<br />
나머지는 나머지 계층이 알아서 하게되는것입니다. 객체 지향적인것이죠.<br />
이것에 대한 효과는 결국 자신의 계층만 신경을 쓰면 되니깐<br />
더욱 전문화되고, 어떤 문제점이 발생했을때 그것을 찾아내는데 더욱<br />
유연하게 됩니다.<br />
<br />
그리고 실제적으로 전달하고자 하는 DATA는 각 계층을 거치면서<br />
여러가지 계층에 맞는 작업들을 거치게되고 그 계층들은 작업의<br />
결과를 전달하기위해서 DATA위에 Header라는 부가정보를 추가합니다.<br />
계층이 여러개인만큼 DATA는 그 계층들을 거치면서 추가적인<br />
많은 정보(통신을 위한것들이겠죠?) 들을 가지게됩니다.<br />
<br />
그럼 좀더 자세하게 알아보겠습니다.<br />
또다시 제가 어떤 메일을 친구에게 전송하려고 합니다.<br />
그 메일의 내용은 당연히 기계어가 아닌 인간의 언어가 되겠죠?<br />
"도란스야 안녕?" 이런 내용을 보낸다고 쳤을때<br />
<br />
-----------------------------------------------------------------------------------<br />
일단은 저의 NIC(네트워크 카드)를 통해서 나가는 과정보다는,<br />
받는 입장에서보고 거꾸로 설명하도록 하겠습니다.<br />
-----------------------------------------------------------------------------------<br />
<br />
내가 전달하고자 하는 내용은 "도란스야 안녕?" 이 되지만<br />
그것은 결국 케이블을 통해서 흘러나갈 때에는 디지털 신호화 됩니다.<br />
컴퓨터만이 알아들을수 있고 같은 프로토콜이어야지만 호환이 됩니다.<br />
역시 가장 하위계층부터 보자고 했으니깐, 물리계층의 케이블이 호환이 되는것이<br />
첫번째 문제겠죠. 한쪽은 구멍이 2개인데 반대쪽은 구멍이 6개라면 어떨까요?<br />
시작부터 꼬이는것입니다.<br />
하지만 구멍이 맞다고 한다면 물리적 계층에서는<br />
그 구멍을 통해서 나가는 DATA가 무엇인지는 알필요가 없는거고 그저<br />
어디 잃어버리지 않고 전달을 해주면 되는것입니다. 계층적이니깐요.<br />
물리적 계층에서는 프로토콜이라는 말을 잘 사용하지 않습니다.<br />
하지만 여기서 구멍의 갯수를 맞춘다는것은, 다르게 본다면<br />
역시 서로간의 물리적계층 프로토콜이 맞느냐? 하는것과 같은 말이 되는것입니다.<br />
<br />
<br />
그렇다면 한번 생각해보세요.<br />
Physical layer의 프로토콜은 바로 어떤것일까요??<br />
네. 바로 케이블입니다. 서로 호환이되는 케이블이다(프로토콜이 같다.)<br />
이런것이죠. 그리고 케이블이 꽃히게 되는 NIC도 당연히<br />
케이블에 따라 종류가 달라지기 때문에 그것도 프로토콜에 포함시키게 됩니다.<br />
그리고 종류가 다른 케이블들을 아무데나 막 쓸수는 없겠죠??<br />
각각의 특징이 있으니깐 그것을 나누었을겁니다.<br />
<br />
"그러한 특정 상황에 대한 특정 속도의 케이블, 또 거기에 맞는 NIC 등을<br />
모아놓은 표준 프로토콜들" 이 바로<br />
<br />
100baseT, Ethernet, IEEE 802.3, Token Ring .....등등 입니다.<br />
(이것은 LAN 구간에서 프로토콜이고 WAN 구간에서는<br />
X.25, F/R, PPP, HDLC, SDLC 등이 있습니다.)<br />
<br />
-----------------------------------------------------------------------------------LAN프로토콜은 좁은지역에 더 효율적인 물리계층의 구성들일테고<br />
WAN 프로토콜들은 넓은지역에 더 효율적이게 되는<br />
물리 장비들의 구성이겠죠?? (프로토콜이란 말의 의미를 잘 잡으세요)<br />
일단 LAN 기준으로 설명하겠습니다.<br />
-----------------------------------------------------------------------------------<br />
<br />
대충 이해가 가시죠?? 일단 여기까지의 개념을 잡으시고<br />
다음으로 넘어가겠습니다.<br />
<br />
하지만 아쉽게도 이 프로토콜들은 바로<br />
OSI 7 Layer로 본다면 Physical 계층을 뛰어넘는 프로토콜입니다.<br />
정리가 되는듯 하다가 약간 헷갈리시죠??<br />
괜찮습니다. 일단 먼저 결론부터 말할께요.<br />
Ethernet 프로토콜은 physical layer 을 통해 datalink layer까지를 포함하는<br />
프로토콜 이고 나머지 100baseT 니, IEEE 802.3, Token Ring 하는것들은<br />
datalink layer 속에 MAC 계층 까지를 포함하는 프로토콜입니다.<br />
(datalink layer 는 MAC와 LLC 두개로 나누어집니다.)<br />
<br />
갑자기 이상한 말들이 나와도 걱정 마세요 하나씩 설명하겠습니다.<br />
먼저 datalink layer에서 두부분으로 나뉘는 단계부터 말씀드려야 겠군요.<br />
MAC 계층은 물리적 계층에서 담당하는 부분으로 MAC 어드레스에 관련한<br />
부분입니다. IP 주소 이외에 호스트에 연결하기 위해서 MAC 주소가 필요합니다.<br />
(이부분은 다 아시리라 생각합니다. 일단 넘어가는데 모르시는분 있으시면<br />
리플하세요, 리플에 간단하게 정리해서 적겠습니다.)<br />
그리고 LLC 는 무엇인고 하니 상위 계층과의 정확한 연결을 위해서 몇개의 비트를<br />
할당해서 지금 가진 data가 어떤 protocol로 연결된것인지를 알려주는 역할을<br />
하는 계층입니다.<br />
<br />
자.. 여기서 바로 프로토콜의 본질이 나오는군요. 잘보세요.<br />
아까 physical 계층과 datalink 계층의 프로토콜에서<br />
Ethernet physical 계층과 datalink 계층(MAC+LLC)을 모두<br />
포함하는 프로토콜이라고 했고<br />
나머지 100baseT, IEEE 802.3, Token Ring이니 하는것들은<br />
physical 계층과 datalink 계층중에서 MAC까지만을 포함한다고 말씀드렸습니다.<br />
그렇다면 100baseT, IEEE 802.3, Token Ring 같은 프로토콜들은<br />
위에서 말한바와같이 물리케이블이 다르기때문에 물리계층이 서로 나뉜것은<br />
알겠지만 MAC계층까지 나누어진다는 말은 무슨 말일까요??<br />
(서로 다른 프로토콜이 MAC계층까지 포함해서 다르다는 말이니 MAC 계층이<br />
서로 구분되는 프로토콜들이라는 말입니다.)<br />
여러분도 아시겠지만 MAC계층은 MAC 주소를 이용해서 상대방 위치를 알아내는<br />
프로토콜입니다. 같은동작인데 나누어놓았습니다.<br />
<br />
<br />
정답은 바로 프레임의 해석방식의 차이입니다.<br />
같은 동작이기는 하지만 프로토콜마다 비트를 읽어들이는 고유의 방식이 있다는 것입니다.<br />
<br />
좀더 자세히 말하면<br />
통신은 궁극적으로 케이블을 통해서 이진수값(01010010.....처럼) 으로 이루어집니다.<br />
일련의 비트들의 연속이라고 생각하시면 됩니다.<br />
"Ethernet 프로토콜에서 생성된 프레임은<br />
첫번째 비트부터 8번째 비트까지는 PREMBLE 비트이며 그다음 비트부터 어디까지는<br />
목적지 MAC 주소, 또 어디까지는 출발지 MAC 주소.....이런식으로 쭈욱 나가는 반면<br />
IEEE 802.3 프로토콜의 프레임은<br />
첫번째 비트부터 7번째 비트까지가 PREMBLE 비트이고 그다음의 1비트는 SOF 비트...."<br />
이렇게 되는것이죠. 즉 서로다른 비트 해석방식(해석이 다르니 생성방식또한 다릅니다.)<br />
을 가지고 있기때문에 프로토콜이 맞지 않으면 통신이 되지 않는것이고,<br />
따라서 지금 내가 가진 DATA가 어떤 프로토콜을 사용해야 하는지를 상위 계층에게<br />
알려주어야 합니다. 그 부분을 datalink 계층에서는 LLC필드가 담당하는것이죠.<br />
(위의 LLC 계층의 하는일을 다시 한번 읽어보시기 바랍니다. 일부러 굵게 표시했습니다)<br />
이것은 단지 datalink 계층에서만 그런것이 아닙니다. 모든 계층은 각각 사용되는<br />
프로토콜이 있고, 상위 계층에서 DATA가 인캡슐레이션되어 내려올때 자신이 어떠한<br />
프로토콜을 사용하였는지의 정보를 포함하여 헤더를 붙여서 내립니다.(물론 헤더의 정보가 이것뿐이지는 않죠)<br />
<br />
반대로 수신측에서는 헤더를 해석하면서 어떤 프로토콜이라고 상위계층에게 말해줄수 있게 되는것입니다.<br />
이것은 마지막 단계인 application 계층에서도 역시 나타나는데<br />
port 라는말 자주 들어보셨죠??<br />
이것역시어떤 프로토콜을 사용했는지를 알려주는 필드입니다.<br />
application은 그저 프로그램인데 무슨 프로토콜?? 하시겠지만<br />
제가 만약 telnet프로그램으로 세션을 열어 상대방 host에 접근했을때<br />
어떤 명령어를 입력하고 그것이 여러 과정을 통해서 상대방 컴퓨터로<br />
전달이 되었을때 마지막 과정에서 port 필드를 잘못 해석하여 FTP프로그램으로<br />
data를 넘겼다면 정상적인 통신이 될까요??<br />
application에서의 프로토콜이란 프로그램 정도로 이해되는 것입니다.<br />
자 일단은 여기까지로 일단락인데 어느정도 이해가 되셨는지 모르겠습니다.<br />
OSI의 단계에 의해서 data는 header라는 부가적인 정보를 하나씩 달면서<br />
마지막 단계까지 내려오게 되고 이 헤더들은 각각의 의미있는 필드들로<br />
구성되어있습니다. 각 단계별로 이러한 포멧들의 필드들을 해석해보면<br />
전체적으로 어떻게 data들이 핸들링 되는가를 좀더 자세히 알수있을듯 합니다.<br />
<br />
이번은 1-1 이었고 다음에 시간되는데로 다음 단계로해서 계속 글을쓰도록 하겠습니다~<br />
좋은하루 되세요~^^;<br />
留