# OSI 7 Layer

### OSI 7 Layer 가 무엇인가?

네트워크에서 통신이 일어나는 **과정**을 7개의 계층으로 나눈 모델이다.

### 왜 OSI 를 7개의 계층으로 구분했는가?

* 통신에 관련된 공통 목적을 달성할 때 **계층별로 분할**하여 **분업**이 가능하다.
* 문제가 발생했을 때 문제가 발생한 곳을 **특정**할 수 있기에 **보수가 용이**하다.
* 통신 과정을 **단계 별로 파악**할 수 있다.

### 공통으로 적용되는 사항

* **상위 계층**에서 **하위 계층**으로 각 계층을 지날 때마다 계층을 구분할 수 있는 헤더가 **붙는다**. (**데이터 캡슐화**)
* **하위** **계층**에서 **상위** **계층**으로 각 계층을 지날 때마다 각 계층에 해당하는 헤더를 **떼어낸다**. (**역 캡슐화**)

### \[1] 물리 계층 - Physical Layer

0과 1의 데이터를 **연속적인** **아날로그 신호로 바꾸어** 전선으로 흘려보내고, 아날로그 신호를 받아 **불연속적인 0과 1의 데이터로 변환 및 전달**을 담당한다.

<details>

<summary>More</summary>

물리 계층에선 **데이터의** **전달만을 담당**할 뿐 데이터의 오류 체크, 데이터의 상태 등 **데이터의 내부엔 관심**이 없다.

* 통신 케이블로 데이터를 전송
* 주소 개념이 없으며 물리적으로 연결된 노드간에 신호를 주고 받는다.
* 데이터 전달만을 담당하고, 내부에 관심이 없음 (오류가 있는지, 데이터가 뭔지 모름)
* 물리 계층 장비 : 케이블, 허브, 리피터
* 단위 : 비트(Bits)

</details>

### \[2] 데이터링크 계층 - DataLink Layer

물리 계층에서 송수신되는 **정보의 오류와 흐름을 관리**하여 인접한 노드간의 **신뢰성 있는 데이터 전송을 제어**한다.

네트워크 계층에 속한 장비인 **브릿지**나 **스위치**에서 네트워크 카드의 **MAC 주소**를 통해 목적지를 찾아간다.

<details>

<summary>More</summary>

1. **회선 제어**
2. **흐름  제어**
3. **오류 제어**

* `Bits`가 제대로 전달되었는지 **아날로그적 검출**하는 기능을 담당하며, 손실되었으면 **재전송 요청**한다.
* 데이터 링크 계층 장비 : 브릿지, 스위치
* 단위 : 프레임(Frame)

</details>

### \[3] 네트워크 계층 - Network Layer

데이터를 목적지까지 **안전하고 빠르게** **전달**하는 역할을 담당하여 호스트로 도달하기 위한 **최적의 경로**를 라우팅 알고리즘을 통해 **선택하고 제어**한다.

> 한국에 있는 우리가 미국에 있는 존과 연락을 한다면 수많은 라우터를 거칠 것이다.\
> 이 때, 북극을 들렀다 갈 수도 있을 것이며, 일본을 들렀다 갈 수도 있을 것이다. 여기서 라우터는 **최적의 경로를 찾아 우리의 데이터를 전송**해 줄 것이다.

<details>

<summary>More</summary>

1. **라우팅**
2. **흐름 제어**
3. **세그멘테이션**
4. **오류제어**
5. **인터네트워킹**

* 네트워크 계층은 일반적으로 **IP 주소**를 이용하여 라우터의 **라우팅 테이블**을 통해 길을 찾는다.\
  더불어 여러 **라우팅 알고리즘**을 통해 라우팅 테이블을 갱신하며 최적의 경로를 찾는다.
* **전송 계층**이 요구하는 서비스 품질을 제공하기 위한 **기능적, 절차적 수단을 제공**한다.
* 네트워크 계층 장비 : 라우터, L3 스위치
* 단위 : 패킷(Packet)

</details>

### \[4] 전송 계층 - Transport Layer

`TCP`,`UDP`, `SPX`, `SCTP`와 같은 프로토콜로 구성되어 **오류, 흐름, 혼잡 제어** 등을 담당하며, 종단간 신뢰성있는 데이터를 전송한다.

<details>

<summary>More</summary>

* 프로세스의 `Port`를 사용하여 최종 도착지인 프로세스까지 데이터를 전달한다.
* `Packet`이 잘 도착했는지 **디지털적 검출**하는 기능을 담당하며, 전송되지 않은 패킷이 있다면 **재전송을 요구**한다.
* **패킷 에러체크를** 하며 전송되어온 패킷을 합쳐 원래의 메시지로 복원한다.
* 전송 계층에서 데이터의 검증을 통해 **무결성을 보장**하므로 **상위 계층에선 데이터의 무결성을 확인할 필요가 없기에** 부담이 덜하다.
* 하드웨어단이 아닌 운영체제의 **커널**에 **소프트웨어적으로 구현**되어있다.
* 단위 : 세그먼트(Segment)

</details>

### \[5] 세션 계층 - Session Layer

응용 프로그램 간의 통신****을 하기 위해 **OS**를 통한 **세션의 확립, 유지, 중단**하는 작업을 수행한다.

<details>

<summary>More</summary>

* **체크 포인팅과 유휴, 재시작 과정 등을 수행**
* 통신 방식의 확인 (전이중, 반이중, 이중)
* TCP/IP 세션을 만들고 없애고 통신하는 **사용자들을 동기화**하고 **오류 복구 명령**들을 일괄적으로 다루며 통신을 하기 위한 **세션을 확립**, **유지**, **중단** 하는 작업을 수행
* 나열한 모든 작업을 **OS** 에서 맡아 처리한다.
* 단위 : 데이터(Data)

</details>

### \[6] 표현 계층 - Presentation Layer

**응용 계층으로부터 전달받은** 데이터를 하위 계층 `세션 계층`에서 처리할 수 있게끔 **인코딩,**\
**세션 계층으로부터 전달받은** 데이터를 상위 계층인 `응용 계층`에서 이해할 수 있게끔 **디코딩**을 담당한다.

<details>

<summary>More</summary>

* 인코딩, 디코딩과 함께 **데이터를 보안을 유지**하기 위해 **`암호화`**`/`**`복호화`**&#xB3C4; 진행한다.
* 단위 : 데이터(Data)

</details>

### \[7] 애플리케이션 계층 - Application Layer

애플리케이션 계층은 OSI 7 Layer 모델에서 **최상위 계층**으로, **사용자가 네트워크 자원에 접근하는 방법을 제공**한다.

> 애플리케이션 계층의 **HTTP 프로토콜**을 크롬 브라우저 **프로그램을 통해 사용**하며, 데이터를 주고 받을 수 있다.

<details>

<summary>More</summary>

* 사용자는 **응용프로그램**을 통해 실제 데이터를 확인할 수 있으며, 이러한 데이터는 **프로토콜**(HTTP, FTP, SMTP, Telnet, DNS) **에 의해 처리**된다.
* 단위 : 데이터(Data)

</details>

### Ref

{% embed url="<http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5>" %}

{% embed url="<https://www.imperva.com/learn/application-security/osi-model/>" %}

{% embed url="<https://itwiki.kr/w/OSI_7%EA%B3%84%EC%B8%B5>" %}

{% embed url="<https://velog.io/@jeongs/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-OSI-7-%EA%B3%84%EC%B8%B5-%EA%B7%B8%EB%A6%BC%EA%B3%BC-%ED%95%A8%EA%BB%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0>" %}

{% embed url="<https://sean.tistory.com/22>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gaepodong.gitbook.io/about-web/network/osi-7-layer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
