ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SW 정글 54일차] IP 5계층
    기타/SW 사관학교 정글 2021. 9. 26. 03:13

     오늘은 네트워크의 개략적인 개념들을 공부하고 정리하려고 한다.

    네트워크라는 분야가 너무 넓고 그 많은 것을 제한된 시간 안에 나의 것으로 만들기는 부족하므로 이번 주차를 진행하면서 알아둬야 할 topic을 잡아서 공부를 했다.

     

     

     

     

     

    1. IP 5계층

    네트워크라는 것을 처음 접하면 아마 OSI 7계층은 들어봤을 것이다.

    OSI(Open Systems Interconnection Reference) 7계층은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다.

    출처: https://adrian0220.tistory.com/84

    이번에는 Internet Protocol을 사용하는 통신 체계에서의 layered architecture인 five layer(5계층)을 다뤄볼 생각이여서 OSI 7계층에서 Presentation, session 계층에 대한 설명은 없다.

    그리고 OSI 모델(7계층)이 IP 5계층 이후에 나타났지만 기존의 IP 5계층이 이미 자리를 잡고 있는 상황에서 다른 모델로의 변경은 비용적으로 문제가 있고 OSI 모델에 새롭게 등장한  Presentation, session 계층에 대한 실제 프로토콜이 완전히 정의되지 않았고 소프트웨어 기술도 완전히 개발된 것이 아니다.

    출처: https://present5.com/chapter-2-network-models-2-1-layered/

    각 계층에 대해 알아보기 전에 왜 이렇게 계층을 나눈 architecture를 만든건지 의문이 든다.

    그 이유는 다음과 같다.

    먼저, 각 계층마다 정해진 역할이 있으면 복잡한 작업을 여러 개의 작고 단순한 작업들로 나눌 수 있다.

    그러면 반대로 하나의 machine에 계층화하지 않고 모든 작업을 할 수 있다고 생각해보자.

    그렇게 됐을 때, 어떠한 작업을 하는 것이 만족스럽지 않다면 그 machine을 통째로 바꿔야한다.

    하지만, 계층화가 되었있다면 해당 작업을 수행하는 역할을 맡은 계층을 바꿔주고 남은 계층들은 유지될 수있는 장점이 있게 된다.

    이러한 것은 전문적인 용어로 모듈성(modulity)라고 한다.

     

    또 다른 이유는 계층화를 함에 따라 서비스들의 구현으로부터 분리할 수 있게 해준다는 것이다.

    어느 한 계층은 하위 계층으로부터 서비스를 받고 상위 계층에게 서비스를 제공해야한다.

    우리는 그 계층이 어떻게 구현되는지에 대해서는 신경 쓸 필요가 없어진다.

     

    마지막으로는 네트워크, 인터넷에서 통신은 많은 machine들을 거칠 수 있고 각각의 machine들은 반드시 5계층을 모두 가지고 있지않고 자신의 역할을 수행할 수 있게 해준다.

    즉, 몇 개의 계층만을 갖는 중간 machine이 있어도 통신을 할 수가 있다는 것이다.

    만약에 계층화가 이루어지지 않았다면 모든 machine들이 통째로 가지고 있어야할 것이다.

     

     

    그러면 지금부터 각 계층의 역할을 알아보자.

     

    1) Application Layer

    응용 계층(Application layer)은 인터넷 프로토콜(IP)을 통한 프로세스 간 통신 접속을 위해 설계된 계층으로 사용자가 직접 사용할 수 있는 여러가지 프로토콜과 서비스를 정의한다.

    TCP나 UDP가 제공하는 프로세스-프로세스 통신 서비스를 이용하여 유용한 기능을 수행하고 사용자는 TCP/UDP에 직접 접속하지 않고 응용 계층을 이용하여 통신 서비스를 사용하며 응용 계층의 프로그램은 시스템 SW가 아닌 응용 프로그램으로 제공된다.

    응용 계층에서의 프로토콜은 전송 계층 프로토콜을 사용하여 호스트 간 연결을 확립한다.



     

    2) Transport Layer

    전송층은 응용층(application layer)으로부터 메시지를 받아 전송층 패킷(세그먼트 혹은 데이터그램)으로 캡슐화한 후 목적지 호스트의 전송층에 논리적 연결을 통해 전송하는 역할을 한다.

    쉽게 말하면 발신지의 전송층은 응용층으로부터 메시지를 받는 것과 수신지의 전송층은 응용층에게 메시지를 전송하는, 응용층에게 서비스를 제공하는 역할을 하는 것이다. 

     

     

    3) Network Layer

    네트워크 계층은 발신지 host와 수신지 host사이의 연결을 생성하기 위한 책임을 가진다.

    통신을 하는 과정에서 한 가지의 경로가 있을 수도 있지만 여러 경로가 있는 경우에 가능한 최적의 경로들을 통해 패킷을 라우팅하는 역할을 한다.

    네트워크 계층은 데이터그램이라는 패킷의 형식을 가지고 있고 우리가 흔히 아는 IP가 있는 곳이다.

     

     

    4) Data Link Layer

    데이터 링크층의 역할은 상위 계층으로부터 내려온 데이터그램을 정해진 링크로 전송하는 것이다.

    여기서 링크의 유형은 LAN, WAN, 유선, 무선 등 다양하고 서로 다른 프로토콜들을 가질 수 있다.

    이러한 여러 상황에서 데이터 링크층은 해당 링크를 통해 프레임(데이터 링크층에서 패킷을 부르는 이름)을 이동시켜야 할 책이 있다.

    패킷을 받는 입장에서는 데이터 링크 계층이 주소 할당(물리 계층으로부터 받은 신호들이 네트워크 상의 장치에 올바르게 안착할 수 있게 함) 오류 감지(신호가 전달되는 동안 오류가 포함되는지를 감지한다. 오류가 감지되면 데이터 링크 계층은 해당 데이터를 폐기) 역할도 한다.

     

     

    5) Physical Layer

     Physical layer는 프레임의 각 비트들을 링크 건너편으로 전달하는 역할을 한다.

    계층을 이름을 보면 알 수 있듯이 물리적인 것을 의미하므로 통신하는 두 장치를 전송 매체(케이블, 공기 등)에 의해 연결된다.

    데이터 링크층으로부터 받은 프레임의 각 비트들은 실제로는 전송 매체에서 전기 또는 광확 신호들로 변환되어 전송이 이루어진다.

    그러므로 여기서 말하는 비트(bits)는 두 장치의 물리층 사이의 논리적 단위가 하나의 비트라는 것이라고 생각하면 된다.

     


    [오늘의 나는 어땠을까?]

    오늘은 이틀동안 다시 수면시간을 5시간 미만으로 줄이니까 그에 대한 피로감이 몰아쳐왔다는 것을 느꼈다.

    아침에 알고리즘 문제를 풀고 어제 공부하던 것을 이어서 공부하려고 했는데 졸음이 몰려와 집중을 하기 힘들었다.

    점심을 먹은 후에도 피곤함을 느껴 30분동안 휴게실에서 잤는데 그래도 피곤해서 기숙사에서 그냥 푹 자고 왔다.

    그랬더니 다시 몸 상태가 돌아왔고 정상적으로 공부를 시작할 수 있었다.

    유튜브에서 한 변호사가 매일 4시간 30분을 자면서 일상을 보내는 것을 보았는데 정말 대단한 분이라는 것을 몸소 느꼈다...

    그래도 일단은 계속 5시간 미만 수면시간을 유지할 생각이다.

    이제 진짜 정글에서 성장할 수 있는 시간이 얼마남지 않았다고 생각하기때문에 더 노력해야한다.

     

    그리고 오늘 공부는 대부분 컴퓨터 시스템 8장(예외처리), 12장(동시성 프로그래밍)를 읽었는데 이전에 운영체제를 공부한 것이 기억에 남아있어 가볍게 읽기에는 어려움이 없었는데 deep하게 읽기에는 시간이 너무 부족하다고 생각했다.

    또한, 이번 주차는 네트워크 주차이기에 시간을 네트워크를 더 deep하게 공부하는데 써야겠다고 생각했고 다음주부터 OS주차가 들어가므로 그때 다시해도 된다고 생각하여 네트워크 공부를 시작했다.

    정말 알아야할 것, 알고싶은 것이 너무 많다.

    댓글

Designed by Tistory.