Computer Science/Network

[네트워크] OSI 7계층과 TCP/IP모델

정석이 2022. 12. 19. 01:06

 

OSI 7계층

 

OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7개의 계층으로 나누어 각 계층 간의 인터페이스를 정의한 네트워크 표준이다.

 

 

 

 

과거에는 통신용 규약이 표준화되지 않았고 별도로 개발했기 때문에 호환되지 않는 시스템이나 애플리케이션이 많아 통신이 불가능했다.

 

 

이를 하나의 규약으로 통합하려는 노력이 현재의 OSI 7계층임

 

 

OSI 7계층이 네트워크 동작을 나누어 이해하고 개발하는데에 많은 도움이 되므로 네트워크의 주요 레퍼런스 모델로 활용되고는 있는데

 

현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택으로 남아있다.

 

 

 

 

TCP/IP 모델

 

현재는 OSI 모델이 아닌 TCP/IP 모델을 사용한다.

 

 

OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문임

 

 

 

 

 

OSI 모델 → TCP/IP 기존 모델 → TCP/IP 업데이트 모델

 

 

현재는 보통 TCP/IP 5계층을 사용한다고 볼 수 있다.

 

 

 

추상화

 

사실 OSI 7계층은 정말로 7개로 계층이 나누어져 있다기 보다는 굉장히 추상적인 개념이다.

 

각 계층은 독립적으로 기능을 수행하며 하위 계층의 기능만 이용하면서 상위 계층에게 기능을 제공한다.

 

 

이렇게 통신이 일어나는 과정을 추상화해놓은 것이 OSI 7계층의 개념이고 매우매우 중요하다.

 

 

 

 

OSI 7계층의 PDU(Protocol Data Unit)

 

OSI 7계층 PDU

 

PDU는 각 프로토콜이 처리할 수 있는 전송 단위이다.

 

각 계층에서 다음 계층으로 데이터를 전송할 때 필요한 정보를 PDU 헤더에 붙여서 전송한다.

 

 

 

 

인캡슐레이션과 디캡슐레이션

 

상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보낸다.

 

 

받는 쪽에서는 다시 하위 계층에서 상위 계층으로 데이터를 보낸다.

 

 

이렇게 데이터를 보내는 과정을 인캡슐레이션(Encapsulation), 받는 과정을 디캡슐레이션(Decapsulation)이라고 한다.

 

 

 

출처 : http://preview.kyobobook.co.kr/epubPreviewPopup.jsp?type=web&barcode=4801165213184&search=Y&orderClick=LAT

 

 

 

출처: https://classroom.anir0y.in/post/notes-osimodel/

 

 

이렇게 상위 계층에서 내려오면서 필요한 정보를 헤더에 붙여 다음 계층으로 보내게 된다.

 

이 작업이 인캡슐레이션이고

 

 

받은 PDU의 헤더를 확인하고 제거하는 것이 디캡슐레이션인 것이다.

 

 

캡슐화와 디캡슐화는 각 계층의 프로토콜이 사용하는 데이터 단위를 맞춰주는 역할을 한다.

 

 

 

 

 

다음과 같은 과정을 통해 데이터가 전송되는데 보고 가면 계층별로 이해할 때 도움이 될듯

 

 

인캡슐레이션 과정

 

1. 애플리케이션 계층으로 들어온 데이터를 4계층으로 내려보낸다.

2. 4계층에서 네트워크 전송을 위한 정보를 헤더에 붙여 3계층으로 보낸다. ex) 포트 번호, 시퀀스 넘버

3. 3계층에서 필요한 정보를 헤더에 붙여 2계층으로 보낸다. ex) IP주소

4. 2계층에서 필요한 정보를 헤더에 붙여 전기 신호로 변환해 수신자에게 전송한다. ex) MAC주소

    * FCS라는 것을 함께 붙여서 보내는데 Frame Check Sequence라고 해서 수신측의 에러 검출을 돕는다.

 

 

디캡슐레이션 과정

 

1. 받은 전기 신호를 데이터 형태로 만들어 2계층으로 보낸다.

2. 2계층에서 2계층 헤더에 포함된 정보를 확인한다. 만약 적힌 정보 중 목적지가 자신이 아니라면 버리고 맞다면 2계층 헤더 정보를 벗겨낸 후 3계층으로 보낸다.

3. 3,4계층에서도 각자 계층에 적힌 정보를 확인하고 상위 계층으로 보낸다.

 

 

 


 

OSI 7계층별 이해하기

 

1~4계층은 데이터를 잘 쪼개 보내고 받는 것이 주요 역할이고, 5~7계층은 개발자 영역이다.

 

애플리케이션 계층에서는 하위 4개 계층으로 내려보내기만 하면 이 데이터를 쪼개 정보를 붙여

목적지까지 잘 전달한다.

 

 

또 나눠서 보자면 1,2,3 계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보낸다.

 

4계층은 잘 보내지도록 확인하는 역할을 한다.

 

 

 

 

 

1계층(physical Layer)

 

1계층은 물리 계층으로 물리적 연결과 관련된 정보를 정의한다.

 

주로 전기 신호를 전달하는 데 초점이 맞추어져 있음

 

들어온 전기 신호를 그대로 전달하는 것이 목적이므로 전기 신호가 1계층에 들어오면 이 신호를 재생성해서 내보낸다.

 

 

 

 

 

2계층(Data Link Layer)

 

2계층은 전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리한다.

 

 

주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는 데 초점이 맞추어져 있다.

 

 

 

1계층에서는 전기 신호를 잘 보내는 것이 목적이므로 출발지와 목적지를 구분할 수 없지만

 

2계층에서는 출발지와 목적지 주소를 확인하고 내게 보낸 것이 맞는지

 

또는 내가 처리해야 하는지 검사하고 데이터 처리를 수행한다.

 

 

이렇게 주소 체계가 생기면서 여러 통신이 한꺼번에 이루어지는 것을 구분하기 위한 기능이 주로 정의된다.

 

 

입력되는 전기 신호를 데이터 형태로 만들고 데이터에서 도착지 MAC 주소를 확인해서

 

나한테 들어오는게 맞는지 확인함

 

나한테 들어오는게 맞으면 상위 계층에서 처리할 수 있도록 메모리에 적재한다. (Frame 단위)

 

 

그리고 스위치(switch)가 MAC 주소를 보고 통신해야 할 포트를 지정해 내보낸다.

 

 

 

 

 

3계층(Network Layer)

 

3계층에서는 IP주소같은 논리적인 주소가 정의된다.

 

IP주소는 컴퓨터마다 갖고 있는 고유한 주소이다.

 

 

라우터라는 장비를 이용하는데

 

얘가 IP주소를 보고 최적의 경로를 찾아주고(forwarding) 해당 경로로 패킷을 전송하는 역할을 한다.

 

 

 


2계층과 3계층의 차이?

더보기

2계층은 같은 네트워크 내에서의 전송을 담당하고

 

3계층은 다른 네트워크 간의 전송을 담당한다.

 

2계층 스위치

스위치: 목적지로 출발한 데이터를 MAC주소를 기반으로 적절한 경로로 스위칭해주는 역할을 함

 

 

 

 

라우터: 얘도 IP주소를 보고 목적지로 가는 적절한 경로를 찾아주는 라우팅 기능을 함

 

스위치와 스위치를 연결해 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비가 라우터이다.

 

 

 

 

 

 

 

 

4계층(Transport Layer)

 

4계층은 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 한다.

 

 

패킷 네트워크는 데이터를 패킷 단위로 분할해서 보내기 때문에 중간에 하나가 유실되거나 순서가 바뀌거나 할 수 있음

 

 

이 문제를 해결하기 위해 패킷이 유실되거나 순서가 바뀌었을 때 바로잡아주는 역할을 한다.

 

그래서 패킷에 보내는 순서를 명시하는 것이 시퀀스 번호(sequence number)이고

 

받는 순서를 나타낸 것이 ACK 번호(Acknowledgement Number) 이다.

 

 

+ 장치 내의 많은 애플리케이션을 구분할 수 있도록 포트 번호(Port Number)를 사용해 애플리케이션을 구분한다.

 

 

 

 

5계층(Session Layer)

 

TCP/IP 모델에서는 사라진 5,6계층도 보겠음

 

 

5계층은 양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리함

 

 

작업이 완료되는 이 연결을 끊는 역할을 한다.

 

에러난거 복구하고 재전송도 이 계층에서 한다.

 

 

 

 

 

6계층(Presentation Layer)

 

6계층에서는 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환한다.

 

인코딩이나 암호화 이런거 함

 

 

 

 

7계층(Application Layer)

 

7계층은 응용 프로세스를 정의하고 직접적인 서비스를 수행하는 계층이다.

 

 

네트워크의 소프트웨어 UI 부분이나 사용자 입출력 부분을 정의하는 것 등이 이 계층이다.

 

ex) HTTP, FTP, SMTP