OSI 7 계층과 TCP/IP

Protocol

  • 네트워크에서는 통신할떄의 규약을 protocol이라고 함.
  • 최근 이더넷 - TCP/IP 기반 protocol로 획일화되고 있는 추세이다.
    • 물리적인 측면 : 데이터 전송 매체 , 신호 규약 , 회선 규격 등 이더넷이 널리 쓰인다.
    • 논리적인 측면 : 장치들간에 통신하기 위한 protocol 규격으로 TCP/IP가 널리 쓰인다.

과거에는 네트워크 환경과 컴퓨팅 환경이 열악해 한정된 자원으로 최대한 효율적인 protocol을 정의하고 사용해야 했음. 따라서 대부분의 protocol이 문자 기반이 아닌 2진수 bit 기반으로 만들어졌음. application level의 protocol은 bit 기반이 아닌 문자기반으로 많이 사용되고 있음. ex) HTTP,SMTP

문자기반으로 사용할 경우, 효율성은 bit 기반 protocol보다 많이 떨어지지만 다양한 확장이 가능하다.

TCP/IP protocol stack

  • TCP(transport 계층)와 IP(network 계층)는 별도의 계층에서 동작하는 protocol 이지만 함께 사용하고 있는데 , 이런 프로토콜의 묶음을 protocol stack이라고 부름

  • TCP/IP protocol stack은 총 4개 부분으로 나뉜다.

OSI 7계층과 TCP/IP

  • OSI 7계층은 네트워크의 주요 reference model로 활용되고 있지만, 현재는 대부분의 protocol이 TCP/IP protocol stack 기반으로 되어 있다.

  • 계층별로 표준화된 protocol을 개발함으로서 네트워크 구성 요소들을 모듈화 할 수 있다.
  • 모듈화함으로서 기존에 다른 계층의 protocol들과 연동해 사용할 수 있다.

OSI 7계층은 다시 2가지 계층으로 나뉜다.

  1. Data Flow layer (Lower Layer) : 1~4 계층
  2. Application Layer (Upper Layer) : 5~7 계층

Data flow layer 는 데이터를 상대방에게 잘 전달하는 역할을 가지고 있으며 , application layer는 데이터를 잘 표현하는데 역할을 가지고 있다. 따라서 네트워크 엔지니어는 Data flow layer 을 고려하고, application 개발자는 application layer를 고려한다.

OSI 7계층과 TCP/IP protocol stack의 차이점

  • OSI reference model은 7 계층으로 이루어진 반면, TCP/IP 모델은 4계층으로 구분된다.

  • TCPI/IP 모델은 상위 3개 계층 (application,presentation,session) 은 하나의 application 계층으로 묶고, 하위 2개 계층 (physical , data link) 계층을 하나의 network access 계층으로 분류한다.

OSI 7계층별 이해


1계층 (Physical Layer)

  • 물리 계층으로 물리적 연결과 관련된 정보를 정의한다. 주로 전기 신호를 전달하는 데 초점이 있다.
  • 전기 신호가 들어온 포트를 제외하고 , 모든 포트에 같은 전기 신호를 전송한다. (주소의 개념이 없음)

1계층의 주요 장비는 다음과 같다

  • 허브 , 리피터 : 네트워크 통신을 중재하는 네트워크 장비
  • 케이블, 커넥터 : 케이블 본체를 구성
  • 트랜시버 : 컴퓨터의 랜카드와 케이블을 연결하는 장비
  • 탭 : 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제

  • 1계층에서 들어온 전기 신호를 모아 알아볼 수 있는 데이터 형태(bit열)로 처리하는데 , 오류 탐지 기능 (error control) , 흐름 제어 기능 (flow control) 도 수행한다.
  • 오류가 감지되면 데이터 링크 계층은 해당 데이터를 폐기한다.
  • MAC 주소 정보 를 네트워크 인터페이스 카드에 정의하고 , 정확한 주소로 통신이 되도록 하는데 초점이 맞추어져 있다. 데이터가 들어오면 정확하게 도착하였는지 출발지, 도착지 주소를 확인하고 데이터 처리를 수행한다.

  • flow control : 받는 측이 데이터를 받을 수 있는 지 확인하고 보냄

2계층의 네트워크 구성 요소는 네트워크 인터페이스 카드와 스위치이다.
네트워크 인터페이스 카드와 스위치 모두 이 MAC 주소를 이해할 수 있고, 스위치는 MAC주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있다.

추가적으로 네트워크 인터페이스 카드는 아래의 용어들로도 지칭된다.

  • 네트워크 인터페이스 컨트롤러 ,NIC / 네트워크 카드 / 랜 카드 / 물리 네트워크 인터페이스 / 이더넷 카드 / 네트워크 어댑터

네트워크 인터페이스 카드 동작 방식

네트워크 인터페이스 카드에는 고유 MAC 주소가 있다. 즉 네트워크 인터페이스에 할당된 고유한 식별자를 MAC 주소라고 보면 된다.
네트워크 인터페이스 카드에 들어오는 전기 신호를 데이터 형태(bit열)로 만들고 bit열에서 도착지 MAC 주소를 확인한다. 이떄 자신의 MAC 주소와 도착지 MAC 주소가 동일하면 처리하고, 그렇지 않으면 폐기한다.

추가로 MAC 주소 정보는 네트워크 인터페이스 카드 HW제조업체에서 할당하여 하드웨어 주소, 물리 주소라고도 불린다. 하나의 네트워크 노드는 꼭 하나의 네트워크 인터페이스를 가질 필요는 없으며, 여러개의 네트워크 인터페이스를 가질 수 있다. 즉 하나 이상의 mac 주소를 가질 수 있다.

스위치 동작 방식

스위치는 단말이 어떤 MAC 주소이고 어떤 포트에 연결되어있는지 주소 습득 과정에서 알 수 있다 (MAC 주소 테이블)
이 MAC 주소 테이블을 보고 단말들간에 통신할떄 정확한 MAC 주소가 위치하는 포트로 포워딩해준다.


3계층 (Network Layer)

  • 3계층에서는 IP주소와 같은 논리적인 host주소가 정의된다.
  • 네트워크 인터페이스 카드에 부여되는 물리적인 MAC주소와 다르게 IP 주소는 사용자가 변경이 가능하고 , 네트워크 주소 부분과 호스트 주소 부분으로 나뉜다.

3계층에서 동작하는 장비는 router 이다. router를 IP주소를 보고 최적의 경로에 따라 패킷을 다음 router로 forwarding 한다.


4계층 (Transport Layer)

  • 4계층은 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 한다.
  • 패킷 유실, 순서 변경에 따른 신뢰적인 데이터 전송 메카니즘을 제공한다. (TCP)
  • Sequence number : 패킷 순서 명시
  • Ack : 패킷에 대한 응답 메시지
  • Port 번호 : application process 구분

4 계층에서 동작하는 장비로는 로드 밸런서, 방화벽이 있는데 로드 밸런서는 부하를 분산하고, 방화벽은 보안 정책을 수립해 패킷을 통과,차단하는 기능을 수행한다.


5계층 (Session Layer)

  • 양 끝단의 응용 process가 연결을 성립하도록 도와주고, 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할을 함. (TCP/IP 세션을 만들고, 없애는 책임)

6계층 (Presentation Layer)

  • 표현 방식이 다른 application 이나 system 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행함. 일종의 번역기 역할을 수행하는 계층으로, MIME 인코딩,암호화 등과 같은 동작이 이 계층에 이루어진다.

7계층 (application Layer)

최상위 계층으로 application process를 정의하고, service를 수행. 네트워크 소프트웨어의 UI부분이나 사용자 입,출력 부분을 정의한다.


각 계층별 protocol은 다음과 같다.

encapsulation 과 decapsulation

상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보내고, 다시 하위 계층에서 상위 계층으로 데이터를 보내는데 , 이렇게 보내는 쪽에서 각 계층에서 데이터에 헤더 정보를 씌워서 보내고, 받는 쪽에서 데이터의 헤더 정보를 확인하고 제거하는 과정을 각각 encapsulation , decapsulation 이라고 부른다.

데이터를 encapsulation하는 과정에서 공통적으로 꼭 포함되는 2가지 정보가 있다.

  1. 현재 계층에서 정의하는 정보 (ex) 2계층 - MAC주소 / 3계층 - IP 주소 / 4계층 - port 번호 )
  2. 상위 protocol 지시사

상위 protocol 지시자가 필요한 이유는 decapsulation하는 목적지 쪽에서 헤더에 아무 정보가 없으면 어떤 상위 protocol로 올려주어야 할지 결정할 수 없기 떄문이다.

예를 들면 3계층에서 4계층으로 데이터를 올려보낼때, 상위 protocol 지시자 헤더 정보가 없으면 TCP로 보내야 할지, UDP로 보내야 할지 알수가 없게 된다.

MSS,MTU

  • MSS (Maximum segment size) : IP 헤더, TCP 헤더는 제외하고 TCP가 실을 수 있는 데이터 크기로 TCP segment 1개로 보낼 수 있는 최대 데이터 크기를 말한다.

  • MTU (Maximum Transmission unit) : 네트워크에서 한번에 보낼 수 있는 데이터 크기로 일반적인 이더넷에서 수용할 수 있는 크기는 1500byte 이다.

MTU값은 2계층 (데이터 링크 계층) , MSS값은 4계층 (전송 계층) 에서 가질 수 있는 최대 데이터 값이다.

Comments