네트워크의 기본(TCP IP Layer (feat OSI 7Layer))

2021. 10. 27. 22:36게임서버/TCP IP 이론

320x100
안녕하세요 대학생 개발자입니다.

이번 글에서는 기본적인 틀이라고 볼 수 있는 OSI 7Layer와 현재 가장 많이 사용하고있는 TCP/IP에 대해서 정리를 해보려고 합니다.

 

osi 7 layer와 tcp ip layer

위 그림중 좌측에 보시는 게 osi 7 layer입니다.

하지만 저는 osi 7 layer는 완벽히는 모르고 tcp ip에 빙자해서 대략 설명하려고 합니다!

 

윗 계층부터 아랫 계층까지 출발해 보겠습니다.

Physical layer

진짜 케이블을 의미합니다.

케이블이나 리피터 등 같은 그런 것들입니다.

데이터를 전기신호, 빛 신호 등을 이용해서 전달해주는 애들입니다.

리피터는 생겨먹은 것은 장비처럼 생겨서 L1스위치냐라고 물을 수도 있지만 주소가 존재하지 않을 뿐더러 네트워크 통신에서 그 어떠한 헤더를 뜯어볼 수도 없기 때문에 스위치라고 할 수 없습니다.

L1은 그저 하나의 끈으로 묶는다 정도의 느낌입니다.

 

Data Link layer

연결된 두 개의 장치 간 전송을 보장하기 위한 레이어입니다.

여기서는 L1을 기반으로 통신을 하고 이더넷을 통해 전달됩니다.

이 구간부터는 연결되어있는 같은 망 안에서의 전송이 필수가 되다 보니 내 주소와 상대방의 주소가 필요해지게 됩니다.

데이터 링크 레이어의 주소는 하드웨어 자체의 주소인 MAC 어드레스가 됩니다.

그러다 보니 얘는 직접 연결되지 않은 pc와는 전송 및 연결이 불가능하게 되겠습니다.

일반적으로 LAN 환경 내부에서 뭔가를 한다고 하면 L2통신이라고 보시면 될 것 같습니다.

 

NetWork Layer

Data Link Layer에서 두 기기간의 전송을 보장한다면 L3부터는 도착지와 출발지라는 개념이 등장하게 됩니다.

여러 pc(라우터) 들을 경유해서 목적지와 출발지를 서로 연결하고 데이터 경로를 결정하게 됩니다.

L2까지는 직접 연결되어있는 기기간의 전송만 가능하다고 했다면 L3계층 부터는 다른 기기를 통해서 전달이 될 수 있습니다.

즉 네트워크라는 것이 생길 수 있는 건 전부 L3가 있기 때문에 가능한 거죠.

L3 스위치에서는 매번 헤더를 까고 헤더의 ip가 자신이 아니라면 라우팅 테이블의 아이피들과 서브넷 마스킹을 통해서 다음 가야 할 방향을 찾아줍니다.

물론 디폴트도 존재합니다.

 

Transport Layer

L4부터는 Source에서 Destination까지의 데이터 전달이 잘 이루어졌으면 나오는 영역입니다.

source 측에서 보낸 데이터는 L3, L2, L1을 따라서 Destination까지 흘러간 뒤 Destination의 L3에서 자신의 아이피가 맞다면 그 데이터를 까서 L4로 올려 보내게 됩니다.

하지만 도착지에 왔다고 해서 끝은 아닙니다.

아주 오래 전의 OS의 경우 단일 프로세스만이 돌아갔다고 가정하면 가능할지도 모르지만,

현재 모든 os는 여러개의 프로세스를 동시에 실행시키고 있습니다. 

즉 어떤 프로그램이 이 데이터를 받아야 할 것인지에 대한 정보가 없기때문에 이에대한 정보를 명시해줄 필요가 있습니다.

L4는 바로 그 부분을 캐치해서 똑바로 전달되게 해주는 녀석입니다.

여기서 사용되는 주소체계는 port라는 것으로 한 프로세스당 하나의 포트만 할당을 받을 수 있기 때문에 포트 주소는 그 프로세스의 주소다라고 생각하시면 될 것 같습니다.

 

Session Layer ~ Application Layer 

얘네들은 하나로 묶어서 처리해도 괜찮을 정도인데 이제부터는 우리가 처리할 수 있는 영역이 되겠습니다.

사실 우리 입장에서는 TCP IP를 공식처럼 사용하고 있다 보니 L5, L6, L7을 뭉뚱겨려서 그냥 하나의 층으로 봤지 쟤네를 다뤄볼 일이 거의 없었습니다.

세션 레이어와 프레젠테이션 레이어는 일반 유저들이 구현해서 사용할 일이 전혀 없기 때문입니다.

정말 컨텐츠와 그 하단을 구분짓기 위해서가 아니라면 거의 구현할 일이 없으며 데이터에대한 검증, 혹은 연결단위 관리등을 코드로 구현한다고 하면 그게 곧 L5, L6가 될 것 같습니다.

네트워크 라이브러리를 다른 사람들이 만들어놓은걸 사용하면서 그 위에서 내가 코드를 짠다고 한다면 그건 L5와 L6를 가져와서 사용하고 나는 L7을 구현한다 정도로 보시면 될 것 같습니다.

 

그럼 이걸 따라서 본다면...

L7을 에서 메시지를 만들어서 보내게 된다면 얘 내들을 L7~L1까지 흘러서 라우터를 타고

7->6->5->4->3->2->1->2->3->2->1->2->3->2->1->2->3->4->5->6->7... 이런 식으로 가게 되는 거죠

 

 

그럼 이상 글을 마치고 다음 글에서 뵙겠습니다 글 읽어주셔서 감사합니다~

안녕히 계세요

320x100

'게임서버 > TCP IP 이론' 카테고리의 다른 글

L4에 대한 정리2  (0) 2021.10.31
L4에 대한 정리  (0) 2021.10.31
L3에 관한 정리  (0) 2021.10.29
L2에 대한 내용 정리  (1) 2021.10.28
내 손을 떠난 메시지 처리과정에 대한 정리  (1) 2021.10.27