Loading...

개발자기본지식 / / 2021. 12. 22. 19:56

#12강. OSI 7계층

반응형

 

회사에 직급별로 사원, 대리, 과장, 사장이 있다고 하자.

 

A회사에서 B회사로 문서를 전달하는 일이 있다고 한다면

 

                        A사장 : 기획                                                                                         B사장                              

 ∨                                                                                                   ∧

    A과장 : 문서 생성                                                                                    B과장            

    ∨                                                                                                   ∧

     A대리 : 오탈자 확인                                                                                    B대리              

         ∨                                                                                                   ∧     

  A사원 : 문서 전달                               >>                                B사원 : 문서 수신   

 

문서를 확인하는 과정은 이러할 것이다.

 

이렇게 직급이 존재하고 단계별로 일을 처리하면

명백한 책임 분할이 가능하고 오류가 생겼을 때 바로바로 확인이 가능하다.

이와 같은 이유로 통신을 위해 OSI 7 계층이 존재한다.

 

A컴퓨터가 B컴퓨터와 통신하기 위해 물리적인 선으로 연결되어 있다면

속도가 매우 빠를 것이다.

A뿐만 아니라 C, D 등등 B와 통신하기 위해 많은 컴퓨터가

물리적인 선을 계속해서 연결한다면 비용이 많이 들지만 다 따로 개인적인 선으로 연결되어 있어

동시에 통신해도 섞이는 것은 방지할 수 있다.

이러한 통신방식을 서킷 스위칭이라고 한다.

 

서킷 스위칭(Circuit-Switching) : 정보를 일정 주기의 타임 슬롯에 할당하여 할당된 타임슬롯에 데이터를 전송하는 방식

 

비용이 너무 많이 든다는 단점을 해결하기 위해 다른 방식도 있다.

 

패킷 스위칭(Packet-Swithcing) : 패킷 형태의 데이터를 패킷교환기를 통해 패킷에 있는 헤더의 주소에 따라

적당한 경로를 선택하여 보내주는 방식

 

* 패킷(packet) : 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록

 

쉽게 말해 데이터를 일정한 크기로 잘게 쪼갠 것을 패킷이라고 한다.

A와 B에서 패킷을 C로 동시에 전송하면 데이터가 섞여버리고,

데이터의 순서도 엉망이 된다.

 

순서가 엉망이 되는 이유는 데이터 이동 경로상의 트래픽에 따라

라우터에 의해 최적의 길로 먼저 보내기 때문이다.

 

* 라우터(router) : 컴퓨터 네트워크 간에 데이터 패킷을 전송하는 네트워크 장치

패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하고 이 경로를 따라 데이터 패킷을 다음 장치로 전달

a에서 c로 데이터를 보낼 때 최적의 경로인 1번 방향으로 hello를 패킷 형태로 쪼개 h가 먼저 출발했다.

그런데 1번 노드에 다른 데이터들이 몰려 트래픽이 발생한다면

라우터에 의해 차선 경로인 2번으로 e가 출발하게 된다.

e가 출발한 후 l이 다시 1번을 통해 전송이 된다면

e보다 l이 먼저 도착해 hle 순서로 데이터가 도착하게 된다.

 

이 때문에 데이터가 전송되는 순서는 알 수 없게 된다.

 

이 순서를 알아낼 수 있기 위해 헤더가 필요하다.

 

* 헤더(header) : 저장되거나 전송되는 데이터 블록의 맨 앞에 위치한 보충 데이터

 

헤더는 실제 데이터를 설명하는 데이터이다.

데이터가 섞이지 않고 재조립할 수 있기 위해

순서, 보낸 사람 등등의 내용을 담고 있다.

 

------------------------------------------------------------------------------------------------------------------

본격적으로 OSI 7 계층에 대해 알아보자.

 

OSI(Open System Interconnection) : 컴퓨터의 통신, 네트워크 간의 상호 접속을

용이하게 하기 위해 규정한 네트워크 프로토콜

 

L7            응용 계층
L6            표현 계층
L5            세션 계층
L4       트랜스 포트 계층
L3         네트워크 계층
L2        데이터링크 계층
L1            물리 계층

L7 -> L1 방향으로 데이터가 전송되고

L1 -> L7 방향으로 수신(재조립) 하게 된다.

 

[L7. 응용 계층]

 

미국에서 한국의 부산항으로 배를 보낼 때 정확한 목적지가 없으면

전 세계에서 부산항으로 들어오는 배들이 어지럽게 될 것이다.

이때 질서 정리를 위해 정확한 포트 정보를 함께 보내야 한다.

 

* 포트(port) : 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위

각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다.

 

이 포트는 구체적인 목적지를 설정하기 위해 논리적으로 구역을 나누어 놓은 것이다.

논리적이기 때문에 무작정 많이 만들면 동시에 통신을 하다가 부하가 생기게 된다.

때문에 포트의 개수에는 제약이 필요하다.

하나의 컴퓨터는 포트를 2Byte개, 즉 2의 16 제곱 비트인 65536개까지 만들 수 있다.

이는 http 프로토콜에 정의되어있는 약속이다.

 

사용자가 A컴퓨터에 있는 여러 가지 프로그램 중 카카오톡이라는 프로그램으로 가기 위해서는

카카오톡의 정보뿐 아니라 카카오톡이 가지고 있는 포트번호가 필요하다.

 

포트번호가 없다면 하나의 컴퓨터는 하나의 통신밖에 하지 못한다.

 

65536개의 포트 중 현재 통신이 필요한 포트만 열어놓아야 안전하다.

열려있으면 외부에서 침입의 가능성이 있기 때문이다.

다만 신뢰할 수 있는 프로그램일 때만 포트를 열어놓아야 한다.

 

모든 포트를 다 막아놓고 신뢰할 수 있는 내부 네트워크에게만 열어놓는 것은 방화벽의 역할이고,

모든 포트가 다 열려있는 상황을 DMZ 개방이라고 표현한다.

 

L7 응용 계층은 포트를 결정해 구체적인 응용 프로그램을 찾아내는 역할을 한다.

 

[L6. 표현 계층]

 

메일을 보낼 때 글자도 보낼 수 있고 사진도 보낼 수 있다.

이때 사진은 .jpeg파일이다.

 

웹에서 전류선을 타고 통신을 할 때는

통신을 위한 데이터인 기계어 0과 1로 바뀌어 버린다.

이를 직렬화라고 한다.

모든 데이터가 0과 1로 바뀌기 때문에 파일에 확장자는 의미가 없다.

 

보내는 파일이 jpeg 파일임을 알기 위해서는 헤더에 정보를 저장해두어야 원복이 가능하다.

 

글자를 암호화하고 파일 압축, 헤더에 확장자 타입을 정의하는 등의 과정을 인코딩(암호화)이라고 하고,

이 반대 과정을 디코딩(복호화)라고 한다.

 

내가 전송한 데이터가 암호화되어있지 않으면 L6층에서 오류가 난 것이다.

 

[L5. 세션 계층]

 

A가 B의 집에 우편을 보내는데 B 집에 사람이 없으면 받지 못한다.

수신할 수 없는 통신은 의미가 없다.

 

수신자가 수신 가능한 상태인지, 컴퓨터가 켜져 있는지, 포트가 열려있는지 확인하는

즉 사용자 간의 연결이 유효한지를 확인하는 계층이 세션 계층이다.

 

세션 계층은 사용자들 사이의 통신 관리 기능을 수행한다.

통신방식에는 3가지, 전이중 통신, 반이중 통신 등이 있다.

전이중 통신은 하나의 연결을 통해 양방향으로 통신하는 방식이고

반이중 통신은 일방향으로 통신하는 방식이다.

 

이밖에도 분실 데이터의 복원을 위한 동기화 지점을 두어 상위계층의 오류로 인한 데이터 손실을 복원한다.

 

보통 L4 ~L1층의 주된 기능은 단순히 데이터를 전달하는 것이다.

이에 반해 L7 ~ L5계층인 상위계층의 주된 기능은 데이터를 송수신하는

양쪽의 종점 컴퓨터 내의 프로세스 간의 통신 프로토콜이라 할 수 있다.

 

[L4. 트랜스 포트 계층]

 

트랜스 포트 계층에는 데이터를 보내기 위해 사용하는 TCP와 UDP 프로토콜이 있다.

 

* TCP(Transmission Control Protocol) : 인터넷상에서 데이터를 메시지의 형태로 보내기 위해

IP와 함께 사용하는 프로토콜

 

TCP는 신뢰성을 보장하기 위해 3-way handshake 과정을 통해 연결을 설정한다.

높은 신뢰성을 보장하고 흐름과 혼잡을 제어하기 때문에 UDP보다 속도가 느린 편이다.

TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용하는 프로토콜이라

파일 전송과 같은 경우 사용된다.

 

* UDP(User Datagram Protocol) : 데이터를 데이터그램 단위로 처리하는 프로토콜

 

UDP는 정보를 주고받을 때 정보를 보내거나 받는다는 신호 절차를 거치지 않고,

흐름이나 혼잡을 제어하는 기능도 처리하지 않기에 TCP보다 속도가 빠르며

네트워크 부하가 적다는 장점이 있지만 신뢰성 있는 데이터의 전송을 보장하지는 못한다.

동영상 재생, 실시간 스트리밍과 같은 신뢰성보다는 연속성이 중요한 서비스,

전화와 같은 상대가 추측이 가능한 경우에 자주 사용된다. 

 

[L3. 네트워크 계층]

 

IP 목적지를 설정하고 라우팅을 통해 데이터가 가야 할 최적의 경로를 탐색한다.

 

* traceroute : 실행하는 컴퓨터에서 데이터 패킷을 목적지 서버로 보내어 가는 네트워크 경로를 확인해주는 명령어

 

[L2. 데이터 링크 계층]

 

 

네트워크 기기 간의 데이터 전송 및 물리 주소를 결정하는 계층이다.

데이터 링크 계층은 네트워크 장비 간에 신호를 주고받는 규칙을 정한다.

이 규칙을 통해 랜에서 데이터를 정상적으로 주고받을 수 있다.

 

비트열을 전기 신호로 변환하는 랜 카드에는 MAC 주소라는 물리 주소가 있다.

이는 전 세계에서 유일한 번호로 할당되어 있다.

공유기로 전송되어 들어오는 전류를 어떤 컴퓨터에 전송할지는 랜 카드의 MAC 주소나

EndPoint를 통해 지정할 수 있다.

 

* EndPoint : 커뮤니케이션 채널의 한쪽 끝에 해당하는 URI

 

* MAC(Media Access Control address) : 랜에 사용되는 네트워크 모델인 이더넷의 물리적인 주소로,

컴퓨터 네트워크에서 각각의 기기를 구분하기 위해 사용하는 주소

 

[L1. 물리 계층]

 

물리 계층은 실제로 데이터가 전송되는 계층이다.

L7층부터 L2층을 거쳐 직렬화(암호화)가 완료된 데이터를 전기신호로 바꾸어 전송하는 역할이다.

랜선, 동축 케이블, 광케이블이 물리 계층에 해당된다.

 

OSI 7계층 방식대로 발신할 때 L7층에서 L1층까지 순서대로 직렬화,

수신할 때는 L1층에서 L7층까지 순서대로 역직렬화한다.

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형