OSI7 Layer → TCP/IP 5 Layer
OSI (Open Systems Interconnection) 7 계층은 네트워크에서 데이터 통신을 할 때, 각 계층이 어떤 역할을 하는지 정의한 모델이다.
7개의 계층은 각각의 역할에 맞게 데이터를 처리하며, 이를 통해 복잡한 네트워크 구성을 신속하게 구축하고 관리할 수 있다.
하지만, 현대의 인터넷은 OSI 모델이 아니라 TCP/IP모델을 따르고 있다.
현대의 인터넷이 TCP/IP 모델을 따르는 이유는 단지, OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문이다.
따라서 OSI 7 Layer의 업데이트 버전인, TCP/IP Updated Layer에 대해 공부해 보자.
1. Physical Layer (물리 계층)
두대의 컴퓨터가 어떻게 통할지
전선으로 연결되어 있는 두대의 컴퓨터가 어떻게 데이터를 주고받을 수 있을지 생각해 보자.
발신자 컴퓨터는 0과 1의 나열(데이터)을 아날로그 신호로 바꾸어 전선으로 흘려보내고(encoding),
수신자 컴퓨터에서는 아날로그 신호가 들어오며 0과 1의 나열로 해석(decoding)하여 받을 수 있다.
이 계층에서는 데이터를 전달만 할 뿐, 전송하려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 신경 쓰지 않는다.
단지 데이터를 전기적인 신호(1과 0)로 변환해서 주고받는 기능을 의미한다.
구현
- 통신 케이블
- 리피퍼
- 허브
- 하드웨어 위주로 구현
2. Data Link Layer (데이터 링크 계층)
같은 네트워크 상에서의 컴퓨터가 어떻게 통신을 하는지
데이터 링크 계층은 같은 네트워크 상에서 통신하는 기기들 사이의 통신을 관리하는 계층이다.
우리가 일상적으로 사용하는 Wi-Fi를 통해 데이터 링크 계층이 활용되는 예시를 살펴보자.
- MAC 주소 확인
wifi네트워크에서는 모든 기기에 고유한 mac 주소가 할당된다. 데이터를 보내는 발신 기기는 수신 기기의 mac주소를 확인하여 데이터를 보낸다.
ex) sally가 brown에게 편지를 보낼 때 브라운의 집주소(mac)로 편지를 보냄 - 프레임 생성
데이터 링크 계층에서는 보내는 데이터를 작은 조각인 프레임(Frame)으로 분할하여 전송한다. 프레임에는 발신지 MAC 주소, 수신지 MAC 주소, 데이터, 오류 검사 등의 정보가 포함된다.
ex) 편지 봉투(frame)에 편지(데이터)를 넣고 편지가 전달되기 위해 필요한 정보를 덧붙인다 -> sally가 보냄, brown의 집주소 등 - 오류 검사 및 재전송
프레임이 전송되는 동안에는 오류가 발생할 수 있다. 이를 방지하기 위해 데이터 링크 계층에서는 프레임에 오류 검사 코드를 추가한다. 수신 측에서는 이 코드를 검사하여 오류가 발생한 경우, 송신 측에게 재전송을 요청할 수 있다. - 스위칭
Wi-Fi 네트워크에서는 여러 대의 컴퓨터가 같은 네트워크를 공유한다. 이때, 데이터 링크 계층에서는 라우터 또는 스위치(Switch)라는 기기를 이용하여 데이터를 전송한다. 스위치는 송신 기기의 MAC 주소를 참조하여 해당 프레임을 수신 기기로 전송한다. - ARP(Address Resolution Protocol)
ARP는 IP 주소를 MAC 주소로 변환하여 데이터를 전송하는 데 사용된다. Wi-Fi 네트워크에서 컴퓨터가 다른 컴퓨터에 데이터를 보내려면 먼저 수신자 기기의 IP 주소를 알아야 한다. ARP는 IP 주소를 MAC 주소로 변환하는 과정을 담당한다.
위 과정을 통해 컴퓨터 간에 데이터를 안정적으로 전송할 수 있다.
구현
- 랜카드
- 스위치
- 하드웨어 위주로 구현
3. Network Layer (네트워크 계층)
다른 네트워크상의 컴퓨터는 어떻게 데이터를 주고받을지
네트워크 계층은 데이터를 보내고 받는 경로를 결정하는 계층이다.
이 계층에서는 다른 네트워크와의 연결을 관리하며, 라우팅 기술을 이용하여 최적의 경로를 선택한다.
예를 들어, 서울에 있는 컴퓨터에서 미국에 있는 서버로 데이터를 보낼 때, 네트워크 계층에서는 다음과 같은 일련의 과정이 진행된다.
- IP 주소 확인
먼저, 서울 컴퓨터가 미국 서버의 IP 주소를 확인한다. (IP 주소 : 인터넷상에서 컴퓨터를 식별하는 고유한 주소) - 경로 설정
그다음, 서울 컴퓨터는 데이터를 보내기 위해 어떤 경로를 선택할지 결정한다. 이때, 라우터라는 기기를 이용하여 최적의 경로를 선택한다. (라우터는 다양한 경로 중에서 가장 빠르고 안정적인 경로를 선택하여 데이터를 전달한다.) - 패킷 분할 및 전송
데이터를 보내기 위해, 서울 컴퓨터에서는 먼저 보낼 데이터를 일정한 크기의 패킷으로 분할한다. 이렇게 분할된 패킷은 각각에 목적지 IP 주소와 출발지 IP 주소가 적혀 있다. 이후, 패킷은 인터넷상에서 여러 라우터를 거쳐 미국 서버로 전송된다. - 패킷 재조립
미국 서버에서는 받은 패킷을 다시 하나로 조립한다. 이때 각각의 패킷은 순서대로 재조립된다.
이를 통해 서로 다른 네트워크 상에서도 데이터 전송이 원활하게 이루어질 수 있다.
구현
- 운영체제의 커널에 소프트웨어적으로 구현
4. Transport Layer (전송 계층)
데이터를 어떤 프로세스에게 줘야 할지
인터넷상의 모든 컴퓨터가 서로와 통신할 수 있게 되어 수신자 컴퓨터는 같은 네트워크 내에서, 더 나아가 전 세계의 컴퓨터(다른 네트워크)로부터 데이터를 받을 수 있게 되었다.
이제 컴퓨터 내에서 카카오톡과 슬랙을 켰다고 가정해 보자. 그런데 받은 데이터를 어떤 프로세스(카카오톡? 슬랙?)에게 줘야 될지 어떻게 알 수 있을까?
정답은 포트에 있다.
데이터를 받고자 하는 프로세스들은 포트번호를 가지는데, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트번호를 붙여서 보낸다.
한마디로, 전송 계층은 송신 호스트와 수신 호스트 간의 연결을 제공하고, 데이터 전송을 관리하는 계층이다. 보통 TCP프로토콜을 이용하며, 포트를 열어서 응용 프로그램들이 데이터를 주고받을 수 있도록 도와준다.
- TCP프로토콜
- UDP프로토콜
5. Application Layer (애플리케이션 계층)
Application Layer는 사용자(Client)와 가장 가까우며, 사용자가 상호작용하는 애플리케이션과 인터넷 간의 연결과 데이터 전송을 가능하게 해주는 계층이다.
이메일, 웹서핑 등과 같은 서비스를 제공하고 제공받기 위해서 어떤 형식으로 메시지를 주고받아야 하는지의 프로토콜들이 모여있는 계층이며,
Transport Layer에서 제공하는 API(TCP/IP 소켓 프로그래밍/ 네트워크 프로그래밍)를 활용해서 통신 가능한 프로그램을 만든다.
'CS' 카테고리의 다른 글
[CS] TCP, UDP의 정의와 특징 (0) | 2023.04.23 |
---|---|
[CS] 웹서버 Apache, NginX (0) | 2022.08.24 |
[CS] 서버와 클라이언트 (0) | 2022.08.21 |
[CS] SSR vs CSR (0) | 2022.07.22 |