TigerCow.Door

1. OSI model


OSI(Open Systems Interconnection Reference Model) 모형은 ISO(국제표준화기구)에서 개발한 모델로써, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층으로 나누어 설명한 것입니다. 이를 일반적으로 OSI 7 계층 모형(OSI 7 layer model)이라고 합니다.


그렇다면, 여기서 계층(layer)라는 것은 무엇일까요?

계층은 비슷한 함수, 즉 비슷한 기능을 하는 것들끼리, 모듈끼리, 객체끼리 그룹화 해놓은 것을 말합니다.


영문


OSI 7 layer model은 다음과 같은 7개의 층으로 분류되어 있습니다.




2. Why 7 layer?


왜 이러한 구조를 갖게 된 것일까요? 즉, 이러한 층 분류로 인한 이점은 무엇일까요?


먼저 이점을 말하면 다음과 같습니다.


1. 단순함

- 설계하기 쉽다.

일단 각 층과 그들의 상호작용이 명확하게 정의되면, 계층들은 전반적인 분할 과정을 통해 디자인, 구현, 테스팅이 간단해집니다.


- 유지가 쉽고 간편하다.

즉, 각 계층의 프로토콜은 다른 계층의 프로토콜들과 나뉘어져 설계될 수 있습니다.


- 계층이 없이 하나로 구성된 구조는 비용이 많이들고 유연성이 없으며 금방 구식이 됩니다.


2. 유연성

- 계층 구조는 다른 레이어를 변화 시킬 필요 없이 포함된 프로토콜들과 서비스들을 수정하는데 유연성을 제공합니다.


- 쉬운 수정

즉, 다른 계층의 수정과 별개로 각 층을 수정하고 개발하는 것이 쉽습니다.


- 쉬운 향상

새로운 계층을 더하거나 새로운 기능을 계층에 더하는 변화를 점점 증가시킬 수 있습니다.


단점으로는, 많은 계층들로 인해 유발되는 딜레이로 발생하는 오버헤드가 있습니다.


즉, 계층 구조의 장점으로는 공통된 기능을 하는 계층끼리 묶여있고 다른 기능을 하는 것들 끼리는 나위어져 있으므로 각각에 대해 설계하기 용이하고 유지 보수가 쉽고 간편합니다. 또한 각 층에 대한 수정 및 향상이 필요할 때 다른 계층과 별개로 해당 계층에 대해서만 수정 및 향상을 진행할 수 있기에 유연성이 뛰어납니다.

하지만 많은 계층이 존재할때는, 그들이 딜레이를 유발시켜 오버헤드가 발생할 수 있다는 단점이 있습니다.



영문



3. 물리 계층(physical layer)


물리 계층에서는 오직 communication과 데이터 전송을 합니다. 즉, 물리적인 의사소통만을 담당합니다. 

주로 물리적 전송 매체를 관리하고 지원하는 물리 계층은 기계적, 전기적 및 타이밍 인터페이스를 담당하며 물리 계층 아래에 있는 물리적 전송 매체를 주로 다루고 있습니다. 설계시에는 한쪽이 1비트를 전송했을 때, 다른 쪽이 0비트가 아닌 1비트로 수신되도록 하는 것을 신경써야 합니다.


english



4. 데이터 링크 계층(data link layer)


데이터 링크 계층에서는 주로 4가지의 기능이 있습니다.


먼저, Service to neighbors(Service to neighbor layer)가 있습니다.

이웃한 계층들에게 잘 정의된 서비스 인터페이스를 제공해 주는 것으로써 이웃한 물리 계층과 네트워크 계층에게 제공합니다. 주로 확인되지 않은 비연결형 서비스(Unacknowledged connectionless serviece), 확인된 비연결형 서비스(Acknowledged connectionless service), 확인된 연결형기반 서비스(Acknowledged connection-oriented service), 이 세가지 서비스를 제공합니다.


두번째는 Framing 입니다.

데이터 링크 계층이 네트워크 계층에 서비스를 제공하기 위해서는 물리 계층에서 제공하는 서비스를 이용해야 합니다. 하지만 물리 계층이 제공하는 비트 스트림(bit stream)은 오류가 존재할 수 있습니다. 수신된 비트의 수가 송신된 비트의 수보다 작거나, 같거나 또는 더 클수 있으며 이들은 상이한 값을 가질 수 도있습니다. 따라서 데이터 링크는 이러한 오류를 찾아내고 필요한 경우 수정하는 기능을 해야 합니다. 그렇게 하기 위해서, 데이터 링크는 프레이밍을 실시합니다. 데이터를 프레임(frame)으로 그룹화하여 전송하는 것 입니다. 즉 프레이밍은 물리계층에 의해 제공된 비트 스트림을 분리된 프레임으로 나누는 것 입니다. 그리고 각 프레임에 대해 체크섬(checksum)을 계산합니다. 그리고 프레임이 목적지에 도달하였을 때 그 체크섬은 다시 계산됩니다. 만약 새롭게 계산된 체크섬이 사전에 프레임에 기록되어 있는 프레임과 다르다면 데이터 링크 계층은 오류가 발생함을 알 수 있고 이를 수정하는 과정을 가집니다.


다음으로는 흐름 제어(Flow control) 입니다.

데이터를 보내는 측과 받는 측간의 속도를 확인하여 이를 제어하는 것입니다. 데이터를 보내는 측의 속도가 상대적으로 빠를 때, 전송에 오류가 없다고 하더라도 특정 시점에서 수신하는 측은 프레임이 도착하자마자 처리할 수 있는 능력이 되지 않아서 일부 프레임을 손실하게 됩니다. 따라서 데이터 링크 계층은 데이터를 받는 측이 속도가 느릴때 빠르게 데이터를 전송하는 측에 의해서 막히지 않도록 속도를 규제합니다. 


마지막 네번째는 오류 제어(Error control)입니다.

모든 프레임이 최종 목적지에 올바른 순서로 전달되었는지 확인하여 전송된 오류를 처리하는 것입니다. 미확인된 비연결형 서비스에서는 오류 제어가 문제되지 않겠지만 확인된 연결지향형 서비스에서는 문제가 될 것입니다. 따라서 오류를 검출하고 수정하는 기능이 필요합니다. 오류 검출 코드는 단지 전송중에 발생한 오류의 존재 여부만을 수신측이 알 수 있도록 하는 코드로써, 패리티검사(Parity check), 검사합(Checksum), 순환중복검사(Cyclic Redundancy Code) 등이 있습니다. 오류 수정 코드는 무엇이 잘못되었는가를 충분히 알 수 있는 여분의 정보를 포함시켜 수신측이 직접 오류를 고칠 수 있게하는 코드로써, 부호어(codeword), 해밍 부호(Hamming code) 등이 있습니다.


english



5. 네트워크 계층(Network layer)


네트워크 계층은 Routing, Congestion control, Internetworking 의 기능을 수행합니다.


먼저 라우팅이란, 어떤 네트워크 안에서 통신 데이터를 보낼 경로를 선택하는 과정을 말합니다.

라우팅 알고리즘으로는 비적응형(Non-adaptive), 정적(static) 알고리즘으로 Shortest Path Routing, Flooding: Selective Flooding, Flow-Based Routing이 있으며 적응형(Adaptive), 동적(dynamic) 알고리즘으로 Distance Vector Routing, Link State Routing, Hierarchical Routing이 있습니다.

 

두번째로 혼잡 제어(Congestion control)이 있습니다.

먼저, 혼잡(Congestion)이란, 현재의 서브넷에 많은 패킷이 들어올 때 수행능력이 감소하는 것을 말합니다. 아래 그림을 보면 트래픽이 너무 많이 증가함에 따라 라우터가 더 이상 이를 대처할 수 없게되며 패킷 손실이 시작됩니다. 이러한 상황은 사태를 점점 더 악화시키는 경향이 있습니다. 매우 높은 트래픽에서 성능은 완전히 붕괴되어 거의 모든 패킷이 전달되지 않습니다.

이러한 혼잡을 제어하는 기능을 혼잡제어라고 합니다. 일반적인 혼잡 제어의 원칙으로는 개방 루프(Open loop)와 폐쇄 루프(Closed loop), 두가지가 있습니다. 개방루프는 본질적으로 좋은 설계를 하여 처음부터 혼잡이 발생하지 않도록 하는 것이며 폐쇄 로프는 피드백 루프의 개념을 기반으로 하는 것입니다. 또한 아래 그림과 같이 많은 계층 혼잡 제어의 원칙이 있습니다. 

또한 혼잡 제어의 알고리즘으로는 다음과 같은 것들이 있습니다.


Choke Packets: 수신측에서 송신측에 전송하는 전송 지연 신호로써, 송신측의 데이터 전송 속도를 조절하는 알고리즘 입니다. 수신측에서 일정한 시간(Choke Packet)을 송신측에 전송할 때마다 송신측은 일정한 시간만큼 데이터 전송 시간을 늦춥니다. 지연 중지 시간(Time Out)에 수신측에서 Choke Packet이 없는 경우 송신측은 다시 원래 속도로 데이터를 전송합니다.


Hop-by-hop choke packets: 고속 또는 장거리에서 Choke Packet을 보내는 것은 반응이 너무 느리기 때문에 제대로 작동하지 않습니다. 이를 막기위한 방법으로는 Packet이 통과하는 모든 hop에서 효과를 발휘하도록 하는 것입니다. 이러한 방식을 통해 더 많은 버퍼 업스트림을 사용하게 되지만 신속하게 문제를 해결할 수 있습니다.


Load Shedding: 위의 방법을 통해 혼잡이 제어되지 않을때 Load Shedding 방법을 사용할 수 있습니다. Load Shedding은 라우터가 처리할 수 없는 패킷으로 범람되고 있을 때 그들을 버려버리는 방법입니다. 


Jitter Control: 일반적으로 지터(Jitter)란 종단간의 전송 지연의 분산을 의미합니다. 네트워크 계층에서는 경로를 따라 각 홉의 예상 통과시간을 계산하여 지터를 제한 할 수 있습니다. 패킷이 라우터에 도착하면 라우터는 패킷이 일정보다 늦거나 빠른지 확인합니다. 이 정보는 패킷에 저장되며 각 홉에서 업데이트 됩니다. 패킷이 일정보다 빠른 경우 일정 시간 동안 패킷을 다시 가져올 수 있도록 하며 일정보다 늦은 경우 해당 패킷을 빨리 꺼냅니다.


하지만 최근 멀티미디어 네트워킹이 성장함에 따라서 위와 같은 임시적인 조치만으로는 충분하지 않습니다. 따라서 어플리케이션 요구에 맞는 서비스 품질을 제공하는 방법에 대해 살펴보겠습니다.

QoS(Quality of Service)는 신뢰성, 지연, 지터 및 대역폭으로 결정됩니다. 


마지막으로 Internetworking 입니다.

문자 그대로 네트워크 간의 교류(통신)하는 개념 혹은 기술 전반을 말합니다. 다시말해 독립적으로 움직이는 개개의 네트워크간의 접속을 의미합니다. 예를 들어, 여러 독립적인 LAN을 WAN을 통해서 연결하는 것입니다.


...학습중...


english



* 7 계층 정리


위에서 학습한 7계층에 대해서 간단히 정리해보면 아래와 같습니다.


1 계층, Physical layer: 물리적 매체를 통해 비트(bit)흐름을 전송하기 위해 요구되는 기능들을 조정합니다. 설계시에 보내는 비트가 0비트 일때 받는 측에서 1비트가 아닌 0비트를 받을 수 있도록 주의해서 설계를 해야합니다. 해당 계층이서는 원시 데이터를 송수신 합니다.(raw data sending and receiving)


2 계층, Data link layer:  services provided to neighbor layers, 이웃된 레이어에게 서비스를 제공합니다. 또한 오류 없이 한 장치에서 다른 장치로 프레임을 전달하는 역할을 합니다. 이를 위해 framing을 진행하며, error management(error detection and correction), flow control 기능을 수행합니다. 또한 하나의 링크를 공유해서 여러 장비가 다중 접속되어 있는 경우 collision(충돌)이 발생할 수 있기에 이를 관리하는 역할을 한다.


3 계층, Network layer: 다중 네트워크 링크에서 패킷(Packet)을 발신지로부터 목적지로 전달하는 책임을 갖습니다. 발신지와 목적지의 경로를 선택하기위해 routing 기능을 수행합니다. 또한 전달시 생기는 혼잡을 제어하는 congestion control 기능을 수행합니다. internetworking 기능을 통해 개개의 네트워크가 서로 접속될 수 있도록 합니다.


4 계층, Transport layer: services provided to neighbor layers, 이웃된 레이어에게 서비스를 제공합니다. 데이터를 끝에서 끝으로 전송하는 역할을 하며 데이터 전송을 책임지는 연결을 관리하는데 이것은 전체 프로토콜 계층 구조의 핵심입니다. 이 작업은 현재 사용중인 실제 네트워크 또는 네트워크와 독립적으로 원본 컴퓨터에서 대상 컴퓨터로 안정적이고 비용이 효율적인 데이터 전송을 제공하는 것 입니다. 대표적인 프로토콜으로는 TCP가 있습니다.


5 계층, Session layer: 통신 세션을 구성하는 계층으로, 포트(Port) 연걸이라고도 할 수 있습니다. 통신장치 간의 상호작용을 설정하고 유지하며 동기화 합니다. your machine과 destination machine을 연결하는 역할입니다.


6 계층, Presentation layer: 운영체계의 한 부분으로 입력 또는 출력되는 데이터를 하나의 표현 형태로 변환시키는 역할을 합니다. 필요한 번역을 수행하여 두 장치가 일관되게 전송 데이터를 서로 이해할 수 있도록 합니다.


7 계층, Application layer: 사용자가 네트워크에 접근할 수 있도록 해주는 계층입니다. 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스인 API(Application Programming Interface)를 제공합니다. 또한 사용자가 어플리케이션을 관리할 수 있도록 Application management 역할을 합니다.


english


각각의 기능들에 대한 설명과 해당 기능이 수행되는 계층은 아래와 같습니다.


1) routing: network = 특정 네트워크 안에서 데이터를 보낼 경로를 선택하는 과정.


2) connection management: transport = 데이터 전송이 보장되도록 연결을 관리하는 것. 이것을 통해 안정적이고 효율적인 데이터 전송이 가능.


3) congestion control: network = 서브넷에 많은 패킷이 들어올 때 수행능력이 감소하는 혼잡 현상이 발생하는데 이를 제어하는 것. 혼잡 제어 알고리즘으로는 Choke packet, hop-by-hop choke packet, load shedding, jitter control 등이 있다.


4) framing: data link = 물리계층에 의해 제공된 비트 스트림을 분리된 프레임으로 나누는 것. 분리된 각 프레임에는 체크섬이 계산되어 저장된다.


5) crash management: data link = 하나의 링크를 공유해서 여러 장비가 다중 접속되어 있는 경우 collision(충돌)이 발생할 수 있기에 이를 관리하는 역할을 한다.


6) internetworking: network = 문자 그대로 네트워크 간의 교류(통신)하는 개념 혹은 기술 전반을 말합니다. 다시말해 독립적으로 움직이는 개개의 네트워크간의 접속을 의미합니다. 예를 들어, 여러 독립적인 LAN을 WAN을 통해서 연결하는 것입니다.


7) error management (error detection and correction) : data link and transport = 모든 프레임이 최종 목적지에 올바른 순서로 전달되었는지 확인하여 전송된 오류를 처리하는 것입니다. 오류 검출 코드는 단지 전송중에 발생한 오류의 존재 여부만을 수신측이 알 수 있도록 하는 코드로써, 패리티검사(Parity check), 검사합(Checksum), 순환중복검사(Cyclic Redundancy Code) 등이 있습니다. 오류 수정 코드는 무엇이 잘못되었는가를 충분히 알 수 있는 여분의 정보를 포함시켜 수신측이 직접 오류를 고칠 수 있게하는 코드로써, 부호어(codeword), 해밍 부호(Hamming code) 등이 있습니다.


* data-link와 transport 유사점 및 차이점

데이터 링크 계층은 노드 대 노드 전송의 프레임에 대한 오류를 제어하나, 전송 계층은 전체 세그먼트 오류(손상, 유실 등) 없이 수신측 전송 계층에 도착하도록 오류 제어 기능을 수행합니다.


8) raw data sending and receiving: physical layer = 원시데이터, 즉 초기데이터를 주고 받는 것을 말하며 이는 물리적 매체를 통해 비트(bit)흐름을 전송하기 위해 요구되는 기능들을 조정하는 물리 계층에서 이루어집니다.


9) application management: application = 어플리케이션을 관리하는 것으로써 사용자가 특정 어플리케이션에 접근하거나 관리할 수 있도록 합니다.


10) application program interface: application = 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말합니다. 어플리케이션 계층에서 이를 사용자에게 제공합니다.


11) flow control: data link and transport = 데이터를 보내는 측의 속도가 상대적으로 빠를 때 특정 시점에서 수신하는 측은 프레임이 도착하자마자 처리할 수 있는 능력이 되지 않아서 일부 프레임을 손실수 있기 때문에 데이터를 보내는 측과 받는 측간의 속도를 확인하여 이를 제어하는 것입니다. 


* data-link와 transport 유사점 및 차이점

두 계층에서 속도가 빠른 송신기와 속도가 느린 수신기 사이에서 데이터가 초과되어 버려지지 않도록 각 연결에서 속도를 제어하는 것은 유사하지만, 라우터는 비교적 적은 회선을 갖는 반면 호스트는 많은 연결을 갖는 것이 차이점 입니다.

즉, 데이터 링크에서는 송수신 양단 간에 송신율 및 수신율의 균형을 맞추는 것이고 트랜스포트에서는 단일 데이터 링크간이 아닌, 전송계층 종단-대-종단 간에 흐름제어 기능을 하는 것이다.


12) services provided to neighbor layers: data link: transport = 이웃한 계층들에게 잘 정의된 서비스 인터페이스를 제공해 주는 것으로써 데이터 링크 계층에서는 물리계층과 네트워크 계층 간 이루어지며 전송 계층에서는 네트워크 계층과 세션 계층간 이루어집니다.


english



What is the purpose of the header of each layer? How is it used?

헤더에는 제어 정보를 비롯한 정보들이 들어있다. 데이터를 전송할 때 각각의 층마다 인식할 수 있도록 하는 목적을 가지고 있으며 헤더를 붙이는 과정을 캡슐화라고 한다. 데이터링크계층에서는 오류제어를 위해 데이터의 뒷부분에도 일부 데이터가 추가된다. 또한 수신된 데이터가 각각의 레이어를 따라 올라가면서 헤더가 벗겨지는 과정을 디캡슐레이션이라고 한다.


What does the application layer protocol mean? How does it operate?

응용 계층 프로토콜은 최종 사용자가 직접 사용할 수 있는 여러가지 프로토콜이다. 보통 사용자는 TCP/UDP에 직접 접속하지 않고 응용 계층을 이용하여 통신 서비스를 사용한다.


그 중 인터넷에서 파일을 전송하는 기본 프로토콜은 FTP로써, 파일 전송을 위한 가장 기본적인 프로토콜이다. IP와 TCP가 존재하지 않을 때 개발되었으며 FTP는 대화형으로 클라이언트와 서버가 통신이 가능하다. FTP를 사용하기 위해 먼저 서버에 로그인해야 하며, 사용자는 로그인 이름과 패스워드를 입력하여 클라이언트를 인증한다. FTP의 동작원리로는, FTP 서비스를 제공하는 서버와 여기에 접속하는 클라이언트 사이에 두개의 연결이 생성되는데 하나는 데이터 전송을 제어하기 위한 신호를 주고받는 역할을 하고 다른 하나는 실제 데이터 전송에 사용된다.

이 외에도 웹상에서 웹 서버 및 웹 브라우저 상호간의 메세지 전송을 위한 응용계층 프로토콜로써 HTTP가 존재하며 호스트에 대한 이름 주소 변환을 위한 DNS 등이 있다. 


프로토콜은 접속된 기기에 불러온 서비스와 응용 프로그램간 데이터를 교환하기 위해 일관된 규칙을 설정한다. 프로토콜은 메세지 내부의 데이터가 구조화 되는 방법과 소스와 대상간에 전송되는 메세지 유형을 지정한다.


Explain how the sending process sends its data to the receiving process and how the receiving process receives the data from the sending process. Explain the path of data in detail. Explain how the header of each layer is used. (equivalent to several questions)

간단하게 이야기한다면, 일반 사용자는 OSI 7계층 맨 위에 있는 응용 계층을 통해 데이터 송수신을 요청한다. 이 요청은 하위 계층으로 순차적으로 전달되어 맨 아래 있는 물리 계층을 통해 상대 호스트에 전송된다. 그리고 요청이 각 계층으로 전달되는 과정에서 계층별로 담당하는 기능을 수행하여 데이터를 안전하게 송수신한다. 데이터를 수신한 호스트에서는 송신 호스트와 반대 과정을 거치게 된다. 물리 계층으로 들어온 데이터는 순차적인 상향 전달 과정을 거쳐 응용 계층으로 올라간다. 그리고 처리가 완료된 결과를 회신할 때는 반대과정을 순차적으로 거쳐서 송신 호스토로 되돌아가게 된다. 따라서 데이터를 송수신하는 최종 주체는 송수신 호스트 양쪽에 위치한 응용 계층이며, 아래의 계층은 데이터 전송에 필요한 기능만 나누어 처리하게 된다.


Explain the TCP/IP model. 

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP(Internet Protocol)와 전송 조절 프로토콜인 TCP(Transmission Control Protocol)로 이루어져 있는 것이다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있고 TCP는 IP위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 어플리케이션 프로토콜들이 IP위에서 동작하기 때문에 묶어서 TCP/IP로 부르기도 한다.

TCP/IP 모델은 4개의 계층 구조를 가진 개념적인 모델로써 매핑되어 있다. 각 계층은, 어플리케이션, 트랜스포트, 인터넷, 네트워크 인터페이스이다. 인터넷에서 전송되는 정보나 파일들이 일정한 크기의 패킷들로 나뉘어 네트워크상 수많은 노드들의 조합으로 생성되는 경로들을 거쳐 분산적으로 전송되고, 수신지에 도착한 패킷들이 원래의 정보나 파일로 재조립되록 한다.


What it the difference between the TCP/IP model and the ISO OSI seven layer computer communication model? Explain. 

TCP / IP는 데이터 통신에 대한 두 가지 접근법 중 오래된 것이고 전 세계적으로 잘 알려져 있습니다. 그러나 OSI 모델은 다른 모든 데이터 통신 프로토콜에 사용되는 입증 된 개념입니다. 다른 모든 통신 응용 프로그램의 지침으로 계속 사용될 것입니다.


What layer does Token ring and Ethernet belong to?

토큰링은 근거리 통신망 프로토콜으로써 데이터 링크 계층에 속해있으며 이더넷이 개발되면서 잘 쓰이지 않는다. 이더넷은 컴퓨터 네트워크 기술의 하나로, 전세계의 사무실이나 가정에서 일반적으로 사용되는 LAN에서 가장 많이 활용되는 기술 규격이며 물리 계층에서는 신호와 배선, 데이터 링크 계층에서는 MAC 패킷과 프로토콜의 형식을 정의한다.


What layer does Domain Name Service (DNS) belong to?

DNS는 Domain Name System 으로써 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 개발되었고 Application layer에 속해 있다.


What layer does World Wide Web (WWW) belong to? 

WWW 은 World Wide Web 으로써 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보공간을 말하며 어플리케이션 레이어에 속해있다.


What cookies belong to?

Cookies 는 웹 서버가 로컬 컴퓨터의 하드디스크에 저장하는 작은 텍스트 파일로써 사이트의 방문자에 대한 정보를 가지고 있으며 어플리케이션 레이어에 속해 있다.


english


블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc