[Network] OSI 7 Layer

황성현·2024년 10월 3일

network

목록 보기
1/1

항상 이론으로만 대충 알고, 막상 설명은 하지 못했던 OSI 7Layer에 대해 좋은 강의가 있어 참고하여 정리한 글입니다.

참고영상: 쉬운코드님의 [입문용] 프로토콜과 OSI 7 layer 설명
https://www.youtube.com/watch?v=6l7xP7AnB64&list=PLcXyemr8ZeoSGlzhlw4gmpNGicIL4kMcX&index=2


네트워크?

네트워크: 시스템끼리 통신할 수 있게 해줌
통신을 위해서는 약속된 통신 방법이 있어야함 => 네트워크 프로토콜

※ 모든 통신을 위한 하나의 프로토콜이 존재할 수 없음 => 백엔드 구현시 한 클래스에서 모든 요청을 통신하며 처리하는 것과 같은 이치 => 모듈화 필요 => 기능별로 분리

네트워크 기능?

애플리케이션 목적에 맞는 통신 방법 제공 => app 사이에 필요한 기능
신뢰할 수 있는 데이터 전송 방법 제공 => 해당 어플끼리 어떤 방식으로 데이터 전송할래?
목적지로 데이터 전송 => 실제 데이터 보낼때 호스트끼리 어떻게?
노드 사이의 데이터 전송 => 노드끼리 어떻게 전송?

※ 각 계층별로 기능하는구나 => OSI7 Layer
※ 각 레이어에 맞게 프로토콜 세분화 + 각 레이어 프로토콜은 하위 레이어의 프로토콜 제공하는 기능을 사용하여 자신의 기능 구현

OSI 7 Layer

application layer: 애플리케이션 목적에 맞는 통신 방법 제공 / HTTP DNS SMTP FTP
=>통신 방법을 제공할 뿐, 실제로 어떻게 데이터가 보내지는 지는 아래 계층에서 구현해서 얘는 쓰기만 할 뿐

presentation layer: 애플리케이션 간의 통신에서 메시지 포맷 관리 / 인코딩<=>디코딩 , 암호화<=> 복호화 , 압축<=>압축풀기

session layer: 애플리케이션 간의 통신에서 세션 관리

transport layer: 애플리케이션 간의 통신 담당으로(port) 목적지 애플리케이션으로 데이터 전송 / TCP UDP
=> 어떻게 목적지까지 실제로 보내지는지는 얘의 관심사X, 아래의 network에서 구현한걸 쓸 뿐

network layer: 호스트 간의 통신 담당(IP), 목적지 호스트로 실제 데이터 전송 담당, 네트워크 간의 최적의 경로 결정(어떤 노드를 거쳐서 갈래?)
=> 노드 결정해서 호스트로 어떻게 보낼지에 관한 내용이지, 노드끼리의 통신은 얘의 관심사X, 아래의 레이어가 구현한걸 쓸 뿐

data link layer: 직접 연결된 노드 간의 통신 담당 / MAC주소 기반 통신
=> 가고 싶은 곳이 IP 주소로 network 레이어에 있으니, 이를 MAC 주소로 변환해서 실제 어떤 노드를 거쳐서 보내는지 알아야함 => ARP 프로토콜

physical layer: 케이블이나 무선 같은 실제 매개체를 통해 bits 단위로 데이터 전송


통신 예시 (encapsulation & decapsulation)

application layer에서 보내고자 하는 메세지에 포함해야할 정보를 담아 포장하여 presentation layer에 내려줌.(ex, HTTP프로토콜 사용)

presentation layer에서 application layer에서 받은 것에 자신이 포함해야할 정보를 담아 포장하여 session layer에 내려줌. (ex, encoding utf-8)

session layer에서 presentation layer에서 받은 것에 자신이 포함해야할 정보를 담아 포장하여 transport layer에 내려줌

transport layer에서 session layer에서 받은 것에 자신이 포함해야할 정보를 담아 포장하여 network layer에 내려줌 (ex, tcp 프로토콜 + HTTP 프로토콜을 위한 포트 80)

network layer에서 transport layer에서 받은 것에 자신이 포함해야할 정보를 담아 포장하여 data link layer에 내려줌 (ex, 목적지 IP주소 기입)

data link layer에서 network layer에서 받은 것에 자신이 포함해야할 정보( 해당 layer에서는 header뿐만 아니라 오류 체크용 trailer도 같이 포함 )를 담아 포장하여 physical layer에 내려줌 (ex, 목적지 IP주소를 ARP 프로토콜을 이용해 MAC주소로 변경하여, 어떤 노드로 내 데이터를 보내야할 지)

physical layer에서 위에서 받은 것을 실제 bits로 변경하여 해당 노드로 전송 / 수신한 노드는 해당 데이터를 bits에서 패킷으로 재구성하여 data link layer로 올림

노드의 data link layer에서 오류 체크와 필요한 정보에 이상이 없으면 해당하는 header와 trailer 제거 후 network layer에 올려줌

노드의 network layer에서 목적지 IP 주소를 확인한 후, 어떻게 가야 목적지에 도달할 수 있는지 체크하여 다시 header 정보 수정 후 data link layer에 내려줌.

노드의 data link layer에서 목적지를 위해서 어떤 노드로 가야하는지 체크하여 header와 trailer 붙여서 physical layer로 내려줌

physical layer에서 해당하는 노드 or 목적지로 bits로 전송하고, 수신한 곳에서 다시 bits를 패킷으로 포장하여 위의 과정 반복

0개의 댓글