일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- MSA아키텍처
- OSI
- 프로토콜
- 직렬회선프로토콜
- 데일리스크럼
- TCP/IP
- springcloud
- 프로토콜슈트
- db
- zookper
- 서브마스크
- OSI참조모델
- 개발프로젝트
- consul
- 직접주소결정
- 에자일
- MSA프로젝트
- 주소결정
- 서비스디스커버리
- tcp
- MSA
- 점대점프로토콜
- servicemesh
- 백준플레
- IP
- 네트워크
- 동적주소결정
- 프로젝트
- 백준플레달성
- TCP/IP프로토콜
- Today
- Total
dame1
[TCP/IP] OSI 참조 모델 본문
OSI 참조 모델이 현재에는 교육용 모델로 사용되고 있지만 원래의 목적은 전 세계적인 인터네트워크에서 사용할 프로토콜 슈트의 기반을 마련하기 위함이었다. 하지만 인터넷과 TCP/IP 프로토콜이 인기를 끌면서 OSI 프로토콜은 네트워킹 전반적인 동작을 설명하는 도구로 자리잡았다.
OSI 모델이 이론적이긴 하지만 이를 이해하면 프로토콜을 설명하기 위한 틀을 제공받아 여러 기술을 비교하는데에 도움을 얻을 수 있을 것이다.
OSI 참조 모델 네트워킹 계층, 하위 계층, 계층 그룹
OSI 참조 모델은 1에서 7까지의 번호가 할당되어 있는 7개의 개념적 계층으로 구성되어 있다.
계층 번호는 모델 전체에서의 계층 위치를 나타내고 계층이 실제 네트워크를 구현하는 하드웨어와 얼마나 가까이 있는지를 알려 준다.
가장 하위에 있는 '물리 계층'은 하위 수준 신호 전송과 하드웨어를 구현한다.
가장 상위에 있는 '애플리케이션 계층'은 사용자가 이용하는 상위 수준 애플리케이션을 다룬다.
계층 그룹을 나누는데에 있어선 여러 의견이 있지만, (전송 계층을 상위 계층에 넣어야 하는지에 대한)
보통 하위 계층을 1, 2, 3, 4 계층이라 하고 데이터를 포매팅, 인코딩, 전송하는 것들을 다룬다.
상위 계층은 5, 6, 7 계층을 의미하고 주로 사용자와, 네트워크에서 운영되는 애플리케이션 구현을 다룬다.
계층들이 서로 너무 밀접히 연관되어 있는 경우 계층 간의 경계가 모호한 경우도 있다.
TCP/IP 프로토콜이 기반을 두고 있는 TCP/IP 모델에서는 5에서 7계층까지를 하나의 두터운 계층으로 결합하기도 하였다.
인터페이스: 수직 (인접 계층) 통신
OSI 참조 모델의 7계층은 네트워킹 시스템을 구현하는 데에 필요한 여러 기능을 분리하는 데 사용된다.
이들 계층은 모두 서로 협력하여 네트워킹 기능을 구현하도록 설계되었기 때문에 각 계층들이 한 호스트 내의 다른 계층들과 수직적으로 통신할 수 있어야 한다.
OSI 참조 모델에서는 인접한 계층 간의 통신 방식을 인터페이스(interface)라고 부른다.
인터페이스는 컴퓨터와 네트워킹 분야에서 아주 다양한 문맥에 널리 쓰이고 있다. 그렇지만 OSI 모델 계층에서 쓰이는 인터페이스는 데이터 N계층과 N-1계층 사이, 혹은 N계층과 N+1계층 사이에서 전달되는 절차를 의미한다.
수직 통신은 뭔가가 네트워크로 전송될 때(혹은 무언가를 받을 때) 프로토콜 스택 위 아래 방향으로 일어난다. 수직 통신이 일어나는 이유는 상위 계층이 실제 물리적 연결을 포함하는 것이 아니라 소프트웨어의 논리적 기능으로 구현되었기 때문이다.
상위 계층은 데이터를 네트워크로 보내기 위해 데이터를 포장하여 하위계층으로 보내고 수신측에서는 데이터가 상위 계층으로 올라간다.
이를 위해 사용되는 것이 인터페이스이다.
TCP/IP 프로토콜에서의 핵심은 인터넷 프로토콜이다. 인터넷에서의 특정 애플리케이션을 사용하려면 사용자는 간접적으로 IP를 사용하게 된다. 하지만 사용자가 IP를 직접 사용하는 경우는 거의 없다. 일반적인 사용자는 전송 제어 프로토콜(TCP)와 사용자 데이터 그램 프로토콜(UDP)와 두 가지 전송 계층 프로토콜을 이용한다. TCP/IP 프로토콜 스택의 네트워크 계층과 전송 계층 사이에는 상위 계층이 IP를 어떻게 사용해야 할지를 정의하는 표준 인터페이스가 있으며 이를 통해 TCP와 UDP는 IP를 사용할 수 있다.
프로토콜: 수평적 (대응 계층) 통신
수평적 통신은 네트워킹의 가장 주된 목적이다. 이게 가능해야 웹 서버와 웹 브라우저, 게임 서버와 유저 클라이언트가 서로 통신이 될 것이다. 이렇게 서로 대응되는 계층들은 프로토콜을 사용하여 통신하게 된다.
먼저 OSI의 가장 하위계층인 물리 계층을 제외하면 나머지는 전부 논리적인 프로그램이나 알고리즘이다. 그렇기 때문에 물리적으로 웹 브라우저와 웹 서버가 서로 연결될 수 있는 방법은 없다. 그래서 이들은 물리적으로 통신하는게 아니라 논리적으로 통신한다.
5계층 프로토콜이 제대로 기능하기 위해서는 어떻게 되어야 할까?
- 먼저 송신할 컴퓨터의 데이터가 5계층에서 1계층으로 전달되어야 한다.
- 1계층까지 도달한 데이터는 물리적 회선을 이용하여 다른 컴퓨터의 1계층까지 이동한다.
- 프로토콜 스택을 올라가 5계층까지 도달해야 한다
이러한 과정으로 물리적 연결 없이 논리적으로 연결이 가능하다.
데이터 캡슐화, 프로토콜 데이터 유닛, 서비스 데이터 유닛
1계층을 제외한 모든 계층에서 통신은 두 개 이상 장비 간의 대응 소프트웨어 구성 요소 간에 전송되는 메세지 형태를 띠게 되는데 이 메세지는 프로토콜 간의 정보를 교환하는 방식이기 때문에 프로토콜 데이터 유닛(PDU, Protocol Data Unit) 이라고 부른다.
한 프로토콜이 통신하기 위해서는 PDU를 하위 계층에게 전달해야 한다. OSI에서는 하위 계층이 상위 계층을 위한 서비스를 제공하는데, 이 중 하나가 상위 계층에서 받은 데이터를 처리하고 관리하는 것이다.
특정한 N계층에서의 PDU는 그 계층 프로토콜을 구현하는 완전한 메세지를 의미하지만 N-1계층으로 전달될 경우 N-1프로토콜이 서비스를 제공해야할 데이터로 역할이 변경된다. 그래서 N계층 프로토콜 데이터 유닛(PDU)를 N-1계층 서비스 데이터 유닛(SDU, Service Data Unit)이라고 부른다.
N-1계층의 역할은 이 SDU를 전송하는 것인데 이를 수행하기 위해 N계층에서 온 SDU를 자신의 PDU 포맷에 맞도록 위치시키고 필요할 경우 헤더와 푸터를 삽입하여 자신의 PDU를 만드는 것이다. 이 절차를 데이터 캡슐화라고 한다.
N-1계층이 자신의 PDU를 만들었다면 다음으로는 N-2계층에게 SDU를 전달하는 것이다. N-2계층은 전달받은 N-1계층의 SDU를 자신의 포맷에 맞도록 데이터를 캡슐화하여 N-2계층의 PDU로 만들게 된다. 이게 반복되어 물리 계층에 도달하게 되는 것이다.
TCP는 OSI 모델 4계층에서 동작한다. TCP는 상위 계층 프로토콜에서 캡슐화된 데이터를 포함하는 '세그먼트'라는 메세지를 전송한다.
TCP 밑에 있는 계층은 IP이다. IP는 TCP에서 데이터를 받고 전송을 위해 캡슐화를 진행한다. TCP 세그먼트는 4계층 PDU이다. 이 세그먼트는 IP로 전달되어 3계층 SDU가 된다. IP 소프트웨어는 이 SDU를 패키징하고 IP패킷 혹은 IP데이터그램이라는 메세지를 만든다. 이는 3계층의 PDU가 된다. 이를 2계층 프로토콜(이더넷)으로 전달되며 이더넷은 IP 데이터그램을 2계층 SDU로 다루고 헤더와 푸터를 추가하여 2계층 PDU로 만든다. 그 이후 1계층으로 전송한다.
수신된 컴퓨터에서는 캡슐화 과정이 반대로 진행된다. 수신 컴퓨터의 이더넷 소프트웨어는 2계층 PDU를 분석하여 2계층 SDU를 추출해내고, IP에게 3계층 PDU로 전송한다. IP계층은 3계층 SDU를 추출해내 다시 4계층 PDU로서 전송한다. TCP는 이러한 과정을 계속하여 프로토콜 계층 상위 스택의 위쪽으로 데이터를 전송한다.
간접 장비 연결과 메세지 라우팅
위의 설명은 한 컴퓨터에서 다른 컴퓨터로 네트워크를 통해 직접 접근하게 되는 예였다. 하지만 네트워킹의 가장 강력한 기능 중 하나는 장비가 간접적으로 연결되도록 할 수 있는 인터네트워크(네트워크의 네트워크)를 만들 수 있다는 것이다.
메세지가 같은 네트워크에 있지 않다면 중간에 다른 네트워크들을 거쳐야 한다. 한 네트워크에 있는 메세지를 다른 네트워크로 보내는 과정을 '포워딩'이라고 부르고 한 장비에서 다른 장비로 포워딩하는 종합적인 과정을 '라우팅'이라고 부른다.
ex) 웹 서버에 요청을 하면 사용자가 보내는 메세지는 그 사이트로 라우팅 되는 것이고 사용자가 받는 응답은 라우팅되어 되돌아 오는 것이다.
OSI 참조 모델에서 라우팅은 일반적으로 3계층(네트워크 계층)에서 일어난다.
- 컴퓨터의 애플리케이션 계층에서 다른 컴퓨터로 데이터그램을 전송하려고 한다. 이때 데이터그램은 패키징되어 프로토콜 스택의 아래 방향으로 전달된다. (캡슐화를 진행하면서)
- 데이터그램의 목적지 주소는 최종 목적지 장비의 주소 설정
- 하위 계층으로 전달된 메세지는 로컬 네트워크에 있는 다른 중간 장비로 전달되도록 패키징
- 중간 장비는 물리 계층에서 메세지 전달 받고 데이터 링크(2계층)으로 전달
- 에러 검사를 거친 뒤 데이터 링크 계층 헤더 제거, 남은 데이터가 네트워크 계층(3계층)으로 전달
- 중간 장비가 또 다른 중간 장비로 포워딩 해야할지, 최종 컴퓨터가 로컬 네트워크에 있는지 판단
- 중간 장비가 다시 메세지 패키징, 하위 계층으로 내려보냄
- 메세지가 최종 컴퓨터로 도착! 그 메세지는 프로토콜 스택을 타고 올라가 송신 컴퓨터에서 메세지를 생성한 애플리케이션과 동일한 계층으로 전달 됨
다음 포스팅으로는 OSI 참조 모델의 각 계층의 역할과 관련 프로토콜을 정리해보려고 한다.
참조
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=872152
TCP/IP 완벽 가이드
TCP/IP 프로토콜 슈트에 대한 참조 자료로서 TCP/IP가 무엇이고, TCP/IP를 동작시키는 것이 무엇인지 이해하고자 하는 사람에게 딱 맞는 책이다. TCP/IP 인터네트워크를 동작시키는 핵심 프로토콜, 가
www.aladin.co.kr
참조한 책을 읽으며 정리한 내용을 바탕으로 작성한 포스트입니다.
오류나 틀린 점이 있다면 말씀 부탁드립니다.
'CS > TCP, IP' 카테고리의 다른 글
[TCP/IP] 주소 결정 (0) | 2023.03.19 |
---|---|
[TCP/IP] (Original)TCP/IP 프로토콜 슈트와 구조 (0) | 2023.02.26 |
[TCP/IP] OSI 참조 모델 계층 (0) | 2023.02.19 |