순간이 영원해 지는 곳

OSI 7 Layer 정리 본문

통신 & 네트워크

OSI 7 Layer 정리

nenunena 2008. 12. 2. 22:53

OSI(Open System Interconnection)
7 Layer

- 국제 표준 기구(ISO)에서 제정한 네트워크 통신 모델이다.

- OSI 모델의 목적은 서로 다른 두 시스템 사이에서 시스템의 하드웨어나 소프트웨어를 수정하지 않고 상호 통신이 가능하도록 하는 것이다.


1. 물리층(Physical Layer)


- 역할 : 한 노드(node)에서 다음 노드로 비트(bit)를 전달하는 층

- 인터페이스와 매체의 물리적인 특성 : 물리층은 장치와 전송매체 간의 인터페이스 특성을 규정하며, 전송매체의 유형에 대해서도 규정한다.

- 데이터 속도 : 전송속도(초당 전송되는 비트의 수)도 물리층에서 규정된다. 다시 말하자면 물리층은 신호가 유지되는 비트의 주기를 규정한다.

- 비트의 동기화 : 송신자와 수신자는 같은 클록을 사용한다.

- 회선 구성 : point to point(점대점)이나, multi point(다중점)형태의 회선구성이 결정된다.

- 물리 연결 형태 : 장치들이 어떤 식으로 연결되어 네트워크를 구성하는지를 결정한다. (토폴로지)

- 전송 모드 : 두 장치 사이의 전송 방향을 결정한다. (단방향, 반이중, 전이중)

- 물리층에서 사용하는 주소 : 없음

- 물리층에서의 전송 단위 : bit(비트) 또는 bitstream

- 물리층 장비의 예 : 허브(Hub), 리피터(Repeater), 모뎀(Modem)



2. 데이터링크층(Data Link Layer)

- 역할 : 한 노드에서 다른 노드로 프레임(Frame)을 전송하는 층
-> (hop to hop, node to node)

- 물리 주소 지정 : 프레임을 네트워크상의 다른 시스템에 전송하는 경우 프레임의 송신자(source address)와 수신자(destination address)의 물리주소(physical address)를 나타내는 정보를 프레임 헤더에 추가한다. 프레임의 수신자 주소가 송신자 네트워크 외부의 시스템일 경우, 수신자 주소는 다음 네트워크에 연결되어 있는 접속장치의 주소가 된다.
-> 물리주소는 프레임 전송과정에서 계속 변한다.

- 흐름 제어 : 수신자에 의해 수신되는 데이터 전송률이 송신자가 송신하는 전송률보다 낮을 경우, 데이터링크층은 수신자의 수신능력이 초과되는 것을 막기 위해 흐름 제어 메커니즘을 적용시킨다.
-> 보내는 사람이 받는 사람의 속도를 생각해서 전송

- 오류제어 : 손상되거나 잃어버린 프레임을 발견하고, 재전송하기 위한 메커니즘을 추가함으로써 물리층의 신뢰성을 높일 수 있다. 또한 프레임의 중복을 막기 위한 메커니즘도 사용한다.

- 접근 제어(Access Control) : 둘 이상의 장치가 같은 링크에 연결되어 있을 때, 데이터링크층 프로토콜은 주어진 순간에 링크를 사용하는 장치를 결정할 필요가 있다.(매체 접근 제어 : Medium Access Control)
같은 매체를 공유하는 장비들의 데이터 전송 시점을 결정하기 위해 CSMA/CDCSMA/CA같은 프로토콜이 사용된다.




- 사용하는 주소 : 물리주소(Physical Address), MAC Address(Ethernet 프로토콜을 쓰는 네트워크에서)

- 데이터 전송 단위 : Frame

- 데이터링크층 장비의 예 : 브리지(Bridge), 스위치(Switch)

- 데이터링크층 프로토콜 : Ethernet(LAN), ICMP, NetBIOS, WLAN, PPP, Frame Relay, sLIP, Token Ring



3. 네트워크층(Network Layer)

- 역할 : 발신지로 부터 최종 목적지로 패킷(Packet)을 전달
-> end(host, node) to end(host, node)

- 논리 주소 지정 : 데이터링크층에서 구현되는 물리 주소는 같은 네트워크상에서 주소지정 문제를 처리한다. 만약 패킷이 네트워크 경계를 통과하면, 발신지와 목적지 시스템을 구분하기 위해 또 다른 주소지정 시스템이 필요하다. 이렇게 서로 다른 네트워크 간에 통신을 위해 공통적인 주소가 논리주소(Logical Address)이며 IP Address 가 대표적인 논리주소이다.
(Ethernet 에서는 6바이트의 물리주소를 사용하지만, LocalTalk(Apple)은 컴퓨터를 켤 때마다 다르게 바뀌는 1바이트의 동적 주소를 사용한다.)

- 라우팅 : 독립적인 네트워크나 링크를 네트워크 간 네트워크(네트워크들의 네트워크) 또는 대규모 네트워크를 구성하기 위해 서로 연결하고자 할 때 연결하는 장치(라우터 또는 교환기)는, 패킷이 최종 목적지에 전달될 수 있도록 경로를 지정(Routing)하거나 교환기능(Switching)을 제공한다.



- 사용하는 주소 : 논리주소(Logical Address), IP(Internet Protocol) Address

- 데이터 전송 단위 : 패킷(Packet) - 전송층 프로토콜이 TCP일때, 데이타그램(Datagram) - 전송층 프로토콜이 UDP일때

- 네트워크층 장비의 예 : 라우터(Router)

- 네트워크층 프로토콜 : IP(Internet Protocol), IPX



4. 전송층(Transport Layer)

- 역할 : 하나의 프로세스(Process)로부터 다른 프로세스로 세그먼트(Segment)를 전달
(Port to Port 또는 Process to Process)

- 서비스지점 주소지정 : 컴퓨터는 여러개의 프로그램을 동시에 실행하는 경우가 많다. 한 컴퓨터의 특정 프로세스(실행중인 프로그램)에서 다른 컴퓨터의 특정 프로세스로 세그먼트를 전달하기 위해서 포트 주소(Port Address)라는 주소유형이 필요하다.

- 분할과 재조립(Segmentation & Reasembly) : 메시지를 전송할 수 있는 세그먼트 단위로 나누며, 그래서 각 세그먼트는 순서번호를 갖는다. 이 순서번호를 통해 전송중 손실, 손상된 세그먼트를 찾아낼수 있으며, 목적지에 정확하게 도착했을때 전송층이 재조립할 수 있게된다.

- 연결 제어 : 전송층은 비연결과 연결지향이 될 수 있다.

- 흐름 제어 : 데이터링크층과 같이 흐름 제어를 제공하지만, 단일링크가 아닌 end to end의 흐름을 제어한다는 것이 다르다.

- 오류 제어 : 데이터링크층과 같이 오류 제어를 제공한다. 송신하는 전송층이 전체 세그먼트를 오류(error, 손상, 유실 또는 중복)없이 수신하는 전송층에 도착하도록 제공한다. end to end의 오류를 발견해내며, 오류교정은 재전송을 통해 이루어 진다.

- 사용하는 주소 : 포트 주소(Port Address) = 프로세스 주소(Process Address)

- 데이터 전송 단위 : 세그먼트(Segment)

- 전송층 프로토콜 : TCP, UDP


※ 데이터 링크층에서의 오류제어와 전송층에서의 오류제어

          hop ㅡ hop
       /                \
End                         End
      \                   /
          hop ㅡ hop

-> 데이터 링크층은 hop to hop(node to node) 구간에서의 오류제어를 하는데 이는 hop 과 hop 사이에서 발생하는 오류에 대해서만 제어가 가능하다.
즉, 한 hop(node)의 입출력 포트 사이에서 일어나는 오류를 발견할 수 없다.
이러한 오류까지 제어하기 위해 전송층에서도 오류제어가 필요하다.


* 소켓 식별

- 프로세스(응용층)에서 전달한 메시지가 다른 호스트의 프로세스에게 전달되는 과정을 보자. 전송층은 세그먼트를 재조립(Reassembly) 하여 메시지를 생성한 뒤 이것을 직접 프로세스에서 전달하지 않는다. 중간 매개체로 소켓(Socket)을 사용한다.

- TCP의 경우 하나의 소켓은 하나의 Port 에 연결되지만, 하나의 Port번호는 여러개의 소켓에 연결된다.
예를 들어 HTTP서버의 응용은 80번 Port를 사용한다. 이때 수 많은 호스트들이 모두 같은 목적지 IP와 포트번호(80)로 접속을 할 것이다. HTTP서버는 각 호스트가 요구하는 웹페이지를 개별적으로 보내주어야 한다. 같은 포트번호로 들어오는 패킷을 구별해서 처리해야 한다. 이때 들어온 패킷의 목적지 IP 주소와 목적지 Port 번호는 모두 같으므로 출발지 IP 주소와 Port번호가 있어야 완전한 식별이 가능하다.
( 서버에서 accept 하는 순간 소켓이 하나 더 생성이 되는데, 이때 새 포트를 할당하지는 않는다. 그리고 한 클라이언트가 같은 서버에 connect를 한다면 반드시 다른 포트를 사용해야 할 것이다. 따라서 클라이언트 입장에서 소켓과 포트는 1:1 대응 된다고 보면 될듯. 서버입장에서만 소켓:포트 = n:1 )

- TCP의 경우는 출발지와 목적지 모두의 IP 주소와 Port번호, 즉 4가지 정보가 있어야 소켓을 구분할 수 있다.
( 커넥션을 구분할 수 있다. )

- UDP의 경우 소켓과 포트번호가 1:1로 연결된다. 따라서 수신된 패킷의 출발지 IP 주소와 Port 번호는 상관없이 목적지 IP주소와 Port번호만 있으면 잘 전달이 된다.
( UDP의 경우 목적지 IP 주소와 목적지 Port번호 2가지로 식별이 된다. 만약 두 개의 UDP 세그먼트들이 출발지 IP 주소와 출발지 Port번호가 모두 또는 한 가지만 다를 경우라도 동일한 목적지 IP 주소와 목적지 Port번호를 가지면 두 개의 세그먼트는 같은 목적지 소켓을 통해 동일한 프로세스로 전달 된다. )

- UDP의 경우 출발지 IP 주소와 Port번호는 응답을 받기 위해 필요하다.


* 다중화와 역다중화 (Multiplexing & Demultiplexing)

- 역다중화 : 전송층의 세그먼트안에 있는 데이터(메시지)를 올바른 소켓으로 전달하는 작업

- 다중화 : 출발지 호스트에서 소켓들로부터 데이터를 모으고, 그 세그먼트를 생성하기 위해서 각 데이터에 헤더정보(소켓식별용)로 캡슐화 하고 그 세그먼트를 네트워크층으로 전달하는 작업






5. 세션층(Session Layer)

- 역할 : 대화(Session)제어와 동기화를 하는 층이다. 즉 세션의 시작 방법, 제어 방법, 종료 방법을 정의한다. 이 층은 여러 개의 양방향 메시지를 제어하고 관리할 수 있어서 일련의 메시지 중 일부만이 완료된 경우 이를 응용 프로그램에게 통보할 수 있다. 표현층은 세션층의 이 기능을 사용하여 들어오는 데이터 스트림을 이어서 볼 수 있다.


6. 표현층(Presentation Layer)

- 역할 : ASCII 텍스트, EBCIDIC 텍스트, 이진수, BCD, JPEG등의 데이터 형식을 정의하고 변환하는 일을 한다. 압축 및 암호화(Encryption)을 정의하는 일도 한다.


7. 응용층(Application Layer)

- 역할 : 네트워크와 응용 프로그램 사이의 인터페이스이다. 사용자 인증 서비스가 해당된다.
- 데이터 전송의 단위 : 메시지


※ OSI 7계층에서의 세션층, 표현층, 응용층은 TCP/IP 프로토콜에서 응용층 1개로 취급된다.
Comments