OSI 7 layer 정리

김승우·2022년 5월 8일
1

networkterm

목록 보기
5/5

ppt를 작성하면서 공부했던 내용을 정리하는 포스트입니다. 잘못된 것이 있다면 댓글로 알려주시면 감사하겠습니다.

OSI 7 Layer vs TCP/IP STACK

OSI 7 계층과 TCP/IP 계층을 보면 조금 다른 부분이 있습니다.
업데이트 버전으로 봤을 때 OSI 모델의 응용 계층, 표현 계층, 세션 계층이 TCP/IP 모델에서는 하나의 응용 계층으로 합쳐져 있다는 것입니다.

현재에 와서는 TCP/IP 모델이 더 널리 사용되므로, TCP/IP 모델을 기준으로 포스트를 작성하도록 하겠습니다.

Connection

컴퓨터는 어떻게 연결될까요?

맞습니다. 바로 선으로 연결하면 됩니다. 이 때의 선은 아마도 전기가 통하는 광섬유이겠지요.

물리 계층 (Physical layer)

물리 계층을 간단히 설명하자면 다음과 같습니다.

전기 신호를 주고 받을 수 있는 매체, 전기적 특성을 이용해 신호를 만드는 역할을 하는 계층

컴퓨터의 신호는 디지털 신호입니다. 이 신호를 코덱을 통해 아날로그 신호로 변환시켜 연결된 선에 흘려 보내면 통신을 할 수 있게 되겠네요.

연결은 되었지만 만약에 여러 대의 컴퓨터들이 연결되면 어떨까요?

수 많은 데이터들을 구분할 수 있을까요?

데이터 링크 계층을 간단히 설명하자면 다음과 같습니다.

데이터를 네트워크 전송 방식에 맞게 단위화해주고 전송해주는 계층

이 계층에서 제공하는 서비스는 크게 세 가지가 있습니다.

  • Framing : 데이터 배열에 Data, header, Trailer 등을 넣어 캡슐화를 하는 작업입니다.

  • 흐름 제어 : 버퍼에 데이터가 처리속도보다 빨리 들어오면 데이터의 손실이 이루어질 수 있으므로 수신 측에서 송신 측에게 속도에 대한 피드백을 할 수 있습니다.

  • 에러 제어 : 송신 측에서 Framing을 해서 전송하는데, 0과 1을 이루는 전기적 신호들이 매우 취약하기 때문에 수신 측의 데이터 링크 계층이 에러 검출을 위한 판단을 해야 합니다.

데이터 링크 계층에서는 스위치가 사용되는데, 스위치를 통해 여러 컴퓨터들을 연결시키고 하나의 네트워크를 형성합니다.

스위치는 각각의 컴퓨터들을 MAC 주소로 구분하는데, MAC 주소란 하드웨어의 고유 주소로 물리 계층의 NIC(Network Interface Card), 즉 랜카드가 관리하게 됩니다.

이제 데이터 링크 계층을 통해 여러 컴퓨터에서 보낸 데이터들을 구분하고, 통신이 가능하게 되었습니다.

스위치로 연결된 네트워크 뿐 아니라 조금 더 멀리 나가고 싶어졌습니다. 다른 네트워크로요. 어떻게 해야 할까요?

네트워크 계층 (Network layer)

네트워크 계층을 간단하게 설명하면 다음과 같습니다.

수많은 네트워크의 연결로 이루어지는 인터 네트워크 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해 IP 주소를 이용해 길을 찾고(routing), 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)을 수행하는 계층

네트워크 계층에서의 제공 서비스는 크게 세 가지가 있습니다.

  • 패킷 전달 : 종단(End to end) 간의 패킷 전달을 수행합니다.

  • 라우팅 : 라우팅 프로토콜을 기반으로 가장 효율적인 경로를 선택해 패킷을 전달할 수 있도록 합니다.

  • 논리적인 주소 사용 : IP 주소를 사용해 사용자 데이터를 목적지 장치까지 전달하고, IP 주소 헤더를 붙여 캡슐화 시킵니다.

이제 멀리에 있는 네트워크와도 통신을 할 수 있게 되었습니다. 하지만 큰 문제점이 또 있습니다. 바로 데이터가 손상되거나 유실되어도 아무 작업도 수행해주지 않는다는 것이죠.

전송 계층 (Transport layer)

전송 계층을 간단하게 설명하면 다음과 같습니다.

전송받은 데이터가 문제가 없는지 체크하고, 포트 번호를 통해 알맞는 프로세스(실행 중인 프로그램)에 갈 수 있도록 해주는 계층

전송 계층에서의 제공 서비스는 두 가지가 있습니다.

  • 오류 점검 기능 : 데이터가 제대로 도착했는지 확인하여 오류가 발생하면 데이터를 재전송하도록 요청해주는 기능입니다.

  • 애플리케이션 식별 기능 : 포트 번호를 통해 전송된 데이터의 목적지가 어느 애플리케이션인지 식별해주는 기능입니다.

전송 계층의 프로토콜로 TCP, UDP가 있는데, 이는 제 다른 포스트에 따로 비교해서 정리를 해 놓았으니 참고해주시면 감사하겠습니다.

응용 계층 (Application layer)

응용 계층을 간단히 요약하면 다음과 같습니다.

서로 다른 엔드 시스템의 프로세스끼리 정보를 교환할 수 있도록 도와주는 계층

응용 계층에서는 서로 다른 엔드 시스템이 애플리케이션 간에 정보를 교환하는 일을 수행하며, 유저가 직접 체험할 수 있는 계층입니다.

HTTP, FTP, DHCP 등의 프로토콜들이 이 계층에 속하며 브라우저, 메일 시스템 등을 통해 해당 프로토콜을 용이하게 사용할 수 있게 해줍니다.

Server - Client 구조

서버-클라이언트 구조를 간단히 요약하면 다음과 같습니다.

서버-클라이언트(server-client) 구조란 데이터를 저장하고 관리하는 서버 부분과 해당 서버에 접속하여 데이터를 열람하는 클라이언트 부분으로 구성된 네트워크 구조를 말합니다.

요청 / 응답 구조라고도 말할 수 있으며 한 대의 서버에 다수의 클라이언트가 접속해 서비스를 이용할 수 있습니다.

HTTP

HTTP는 응용 계층에 속하는 프로토콜입니다.

HTML, TEXT, IMAGE, 음성, 영상 파일, JSON 등 거의 모든 형태의 데이터 전송을 가능케 하는 프로토콜입니다.

네 가지 주제로 나누어 설명하도록 하겠습니다.

  • Stateless
  • Connectionless
  • HTTP 메시지
  • HTTP 메서드
  • 상태 코드

Stateless

서버는 상태를 기억하지 않습니다. 아까 어떤 손님이 와서 주문했더라도 요청 상품을 드리고 가셨다면 다시 와도 새로운 손님인 것입니다.

즉, 클라이언트의 상태를 기억하지 않습니다.

HTTP의 이런 Stateless한 성격은 서버의 확장성이라는 장점을 가져옵니다.
하지만, TCP 연결이 매 번 이루어지므로 연결마다 3-way handshake가 이루어진다는 단점이 있습니다.

Connectionless

서버가 클라이언트와의 연결을 유지하지 않고, 한 번 응답하면 연결을 끊습니다.

수많은 사람들이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 사람 수에 비해 적기 때문에, 연결을 유지하지 않는다면 서버 자원을 매우 효율적으로 사용할 수 있습니다.

HTTP 메시지

HTTP 메시지는 시작 라인, 헤더, 공백 라인, 메시지 바디로 이루어져 있습니다.

요청 메시지와 응답 메시지가 있는데, 간단히 말씀드리자면 요청 메시지에는 메서드, 경로, 쿼리스트링 등이 있다는 것이고 응답 메시지에는 상태 코드가 들어있다는 것입니다.

HTTP 메서드

서버가 수행해야 할 동작을 지정하는 메서드입니다.

자주 쓰이는 다섯 가지 메서드들을 정리해 보았습니다.

  • GET : 리소스 조회

  • POST : 요청 내역 처리

  • PUT : 목적 리소스의 모든 데이터를 요청 데이터로 교체

  • PATCH : 리소스의 일부분을 수정

  • DELETE : 특정 리소스의 삭제

상태 코드

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능입니다.

크게 다섯 가지로 나누어 보았습니다.

  • 1xx : 요청이 수신되어 처리 중이다.

  • 2xx : 요청이 정상으로 처리 되었다.

  • 3xx : 요청을 완료하기 위해 추가 작업이 필요하다. (ex. redirection)

  • 4xx : 클라이언트 오류로, 요청이 잘못되었다.

  • 5xx : 서버 오류로, 서버가 정상 요청을 처리하지 못했다.

마치며 ..

큰 갈래로 정리해 보았습니다.

DNS와 IP 주소 또한 다른 게시물에 정리해놓았으니, 참고해주시면 감사하겠습니다.

참고 자료

스위치의 기능
[10분 테코톡]히히의 OSI 7 layer
MAC 주소와 IP 주소
OSI model
모든 개발자를 위한 HTTP 웹 기본 지식

profile
인천대학교 임베디드시스템공학과 졸업 후 SSAFY 10기 과정을 이수하고 있습니다.

0개의 댓글