본문 바로가기
  • 시 쓰는 개발자
CS 개념/네트워크

OSI 7 LAYER

by poetDeveloper 2022. 10. 23.

OSI 7 LAYER (Open Systems Interconnection)

1984년에 국제 표준기구 iso가 발표한 네트워크 모델

네트워크 모델이 서로 다른 회사들끼리도 통신이 원활하게 이루어지기 위해서 규격을 정해놓은 것.

OSI 7 계층, 사진출처 https://devowen.com/344

7계층 - application layer

  • 응용 프로세스를 직접 사용해 응용 서비스를 수행하는 계층.
  • http ftp smtp와 같은 프로토콜들이 속한 계층.

 

6계층 presentation layer

  • 데이터의 변환, 압축, 암호화가 이루어지는 계층.
  • 서로 다른 통신기기간에 다른 인코딩을 사용할 수도 있기 때문에 데이터 변환이 이루어지는 것.

 

5계층 session layer

  • 세션을 열고 닫고를 제공하는 계층.
  • 세션 복원 또한 지원해주는데, 이는 체크포인트라는 것을 통해 동기화를 시켜줌. 만약 컴퓨터 A->B로 100mb의 데이터를 보내고 체크포인트를 5mb마다 설정한다고 하면, 48mb에서 연결이 끊겼을 시 체크포인트 덕분에 45mb부터 세셔을 재개할 수 있음.

 

4계층 transport layer

  • 서로 다른 두 네트워크간의 전송을 담당하는 계층.
  • 세그멘테이션, 흐름제어, 오류제어 등을 제공.
  • 세그멘테이션 : 상위 계층 데이터를 받아서 세그먼트 라는 단위로 나누는 것을 의미. 만약 이렇게 나누어놓지 않는다면 100mb 동영상이 모두 로딩되고 나서야 볼 수 있게 되는 것임. 그리고 세그먼트 단위로 나누어놓지 않았는데 연결이 중간에 끊긴다면 더 큰 데이터가 날라가게 되므로 손실률도 큰 것임
  • 흐름제어 : 데이터 전송량이 서로 다른 기기일 때, 만약 10mb 속도로 처리하는 기기에 50mb의 속도로 데이터를 보내면 너무 빠르니 속도를 낮춰달라고 요구하는 거고, 반대로 5mb 속도로 보내면 너무 느리니 더 빠르게 보내달라고 요구하는 것임. 이처럼 흐름을 제어하는 것.
  • 오류제어 : 내가 보낸 데이터에 오류가 있다면 데이터를 다시 보내주는 것.

 

3계층 - network layer

  • IP나 라우터 장비가 속한 계층.
  • 서로 다른 두 네트워크간의 데이터 전송을 담당. 호스트에 IP번호를 부여하고 도착지까지의 최적경로를 찾아주는 기능(라우팅)을 제공해줌.

 

2계층 data link layer

  • 네트워크와 비슷한데, 데이터 링크 계층은 동일한 네트워크 내에서 전송을 담당하는 계층.
  • 데이터 링크 계층도 오류제어와 흐름제어를 제공함.
  • 트렌스포트 계층의 오류제어와 차이점은?

데이터링크 계층에서의 데이터 단위를 프레임이라고 함. 만약 10개의 프레임 중에서 2개의 프레임이 오류가 나면 데이터 링크 계층에서는 이 데이터 조각을 그냥 버림. <-> 반면에 트렌스포트계층의 오류제어는 해당 데이터가 없으면 다시 보내줌으로써 오류 복구까지 해줌.

 

1계층 physical layer

  • 비트 단위들을 전기신호로 변환을 해주고 전송해주는 계층.
  • 현재 우리가 사용하는 네트워크 모델은 OSI 모델이 아닌 TCP/IP 모델임. 현재 OSI 모델은 단순히 네트워크를 묘사해주기 위한 모델임.

TCP/IP 모델 – OSI 모델과는 조금 다름. 아래 그림 참고

OSI 계층과 TCP/IP 계층의 차이점 // 사진 출처 https://copycode.tistory.com/32


그렇다면 데이터를 전송할 때 정확히 어떤 layer가 사용되는지?

A컴퓨터 -> B컴퓨터로 데이터를 보낼 때

A컴퓨터의 7계층 -> 1계층까지 각종 정보들을 데이터에 붙여서 데이터를 내리고(캡슐레이션),

B에서는 1계층 -> 7계층으로 데이터를 올리는(디캡슐레이션) 형식임.

상위계층에서 하위계층으로 데이터를 내려받으면서 계층별 헤더를 붙이고 B로 보내는데 B에서는 이 캡슐화된 데이터들을 다시 디캡슐레이션하면서 데이터를 얻는 거임. // 이때 6계층 5계층은 안쓴다고 했으니까 건너뜀.

 

[데이터 전달 과정]

application layer (7계층)

우린 평소에 데이터를 보낼 때 https 프로토콜을 이용해서 데이터를 보내게 됨. 이것 자체로 이 계층을 사용한 것.

 

transport layer (4계층)

여기선 tcp/udp 중에 뭐 쓸지 정해줌.

  • tcp : 보낸 데이터가 손실됐는지 확인하고 데이터의 순서도 보장하기 때문에 좀 더 신뢰감
  • udp : 일단 데이터를 보내고나면 책임지지 않음. 그래서 신뢰도는 떨어짐. 하지만 속도가 빠르고 연속적이기 때문에 스트리밍같은 서비스에서 많이 사용됨.

이 계층의 헤더에는 tcp인지 udp인지에 대한 정보와 출발지와 도착지에 대한 포트 정보가 들어있고, 이걸 데이터 뒤에 붙인 후 캡슐화 해줌. 이 결과가 바로 세그먼트이고 이 세그먼트를 네트워크 계층으로 보내줌.

 

network layer (3계층) - network access

출발지와 도착지에 대한 IP 정보에 대한 헤더를 만들어서 데이터에 붙여줌. 그리고 캡슐화를 시키는데 이를 패킷이라고 함. 이 패킷을 다시 그 하위 계층인 data link layer로 보내게 됨. 그럼 지금까지 데이터에는 L4 headerL3 header가 붙어있는 거임.

 

data link layer

  • 여기서는 데이터에 출발지의 맥주소와 가장 가까운 라우터의 맥주소를 넣어줌. 오히려 도착지인 B의 주소는 안넣어주는데, 이유는 A가 처음에는 B에 대한 맥주소를 알지 못하기 때문임. 그래서 A는 dhcp와 arp를 이용해서 라우터의 ip를 받고 ip를 맥주소로 변환한 후에, 라우터에 대한 도착지 맥주소를 만들어서 헤더에다가 넣어주는 것임.
  • 특이하게 이 계층에선 트레일러 라는 정보도 데이터에 붙게 되는데, 이 트레일러는 오류제어에 대한 정보임. 이렇게 데이터를 캡슐화 시킨 것을 프레임이라고 부름.(2계층에서의 데이터니까)

 

결과적으로, // 트레일러 “DATA” L4헤더 L3헤더 L2헤더 // 가 전기 신호로 바뀌어서 데이터를 전송하게 됨.


느낀점

  • OSI모델은 약간 네트워크의 초기모델로써 설명하는 것 같고 현재는 여기서 불필요한 부분을 뺀 TCP/IP 모델을 사용하는 것 같다.
  • 데이터가 전달되면서 여러 정보들이 붙어서 캡슐화 디캡슐화가 이루어지는 것, 그리고 세그멘트 단위로 나누어 놓는 것이 인상적이었다.
  • 프로토콜, 라우팅, IP 등 취약한 개념에 대해 보완해야겠다.