Devops 엔지니어 솔렐레 IT

네트워크 기본 개념 및 OSI 7계층 총 정리! - 네트워크 계층/ 전송 계층/ 응용 계층 본문

Devops 엔지니어가 알려주는 IT 기본 지식/네트워크 (Network) & OS (Operating System)

네트워크 기본 개념 및 OSI 7계층 총 정리! - 네트워크 계층/ 전송 계층/ 응용 계층

솔렐레_ 2020. 10. 23. 09:00

안녕하세요. 솔렐레입니다.
이번에는 OSI 7 계층 중, 네트워크 계층~응용 계층까지를 이어서 설명하도록 하겠습니다. 그럼 시작하겠습니다.


3. 네트워크 계층
네트워크 계층의 가장 큰 역할은 다른 네트워크에 있는 목적지로 데이터를 전송할 수 있다는 것입니다. 데이터 링크 계층까지는 이더넷을 통해 동일 네트워크 상의 컴퓨터에는 데이터를 전송할 수 있었지만 인터넷이나 다른 네트워크에는 데이터를 전송할 수 없는데 이를 가능하게 하는 것이 네트워크 계층의 역할입니다. 다른 네트워크로 데이터를 전송하기 위해서는 라우터라는 장비가 필요합니다. 라우터의 가장 큰 기능은 목적지까지의 최적의 경로를 설정해준다는 것입니다. 따라서 경로를 선택하기 위해서는 목적지를 알아야하며 이를 확인할 수 있는 주소가 IP 주소 입니다. IP 주소는 어떤 네트워크에 있는 컴퓨터인지를 구분할 수 있도록 하는 주소입니다. IP 주소로 어떤 목적지로 보낼지 뿐만 아니라 어느 경로로 보낼지도 결정을 하게 되는데 이를 라우팅이라고 합니다. 라우터는 라우팅 테이블을 가지고 있어서 경로 정보를 등록하고 관리하고 있습니다.

라우터는 네트워크를 분할할 수 있습니다. 네트워크를 분할한 다음 다른 네트워크로 접속하기 위해서는 라우터의 IP 주소를 설정해야 합니다. 이것은 네트워크의 출입구를 설정하는 것으로 이해하면되고, 이를 기본 게이트웨이라고 합니다. 게이트웨이가 설정된 이후에는 다른 네트워크로 최적의 경로로 이동을해야합니다. 이를 위해서 경로 정보가 등록되어 있는 라우팅 테이블이 필요합니다. 라우팅 테이블을 등록하는 방법은 수동, 자동이 있으며 수동은 소규모 네트워크에 자동은 대규모 네트워크에 적합합니다. 네트워크의 정보가 달라지면 해당 경로를 일일히 관리하기 어렵기 때문에 변경된 내용을 자동으로 관리하는 것이 좋습니다. 라우터 간에 정보를 교환하기 위해서는 라우팅 프로토콜이 필요하며 RIP, OSPF, BGP 등이 있습니다.

네트워크 계층에서는 IP 프로토콜이 가장 중요하여 IP 헤더에는 다양한 정보를 담고 있습니다. 그 중 가장 중요한 정보는출발지/목적지 IP 입니다. 이렇게 IP 헤더가 추가된 데이터를 IP 패킷이라고 합니다. IP 주소는 인터넷 서비스 제공자(ISP)에게 받을 수 있습니다. IP 주소는 네트워크 ID와 호스트 ID로 나눠져 있으며 네트워크 ID는 어떤 네트워크인지를 나타내고 호스트 ID는 어떤 컴퓨터인지를 나타냅니다.
IP 주소는 네트워크의 규모에 따라 A~E 클래스로 나누어 있고 이를 네트워크 ID와 호스트 ID로 조정할 수 있습니다. 일반적으로 A~C 클래스로 이루어져 있습니다. 각각의 클래스는 공인 IP와 사설 IP 주소로 나눌 수 있으며 사설 IP 주소 범위는 공인 IP 주소로 사용할 수 없습니다.

[IP 클래스]
1) A 클래스: 대규모 네트워크, 네트워크 ID 8비트/호스트 ID 24비트, 공인IP(1.0.0.0~9.255.255.255 / 11.0.0.0~126.255.255.255), 사설IP(10.0.0.0~10.255.255.255), 호스트수(1677만 7214대)
2) B 클래스: 중형 네트워크, 네트워크 ID 16비트/호스트 ID 16비트, 공인IP(128.0.0.0~172.15.255.255/ 11.0.0.0~191.255.255.255), 사설IP(172.16.0.0~172.31.255.255), 호스트수(6만 5534대)
3) C 클래스: 소규모 네트워크, 네트워크 ID 24비트/호스트 ID 8비트, 공인IP(192.0.0.0~192.167.255.255 / 192.169.0.0~223.255.255.255), 사설IP(192.168.0.0~192.168.255.255), 호스트수(254대)
4) D 클래스: 멀티캐스트 주소
5) E 클래스: 연구 및 특수 용도

IP 주소는 네트워크 주소와 브로드캐스트 주소로도 나눌 수 있습니다. 네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별할 때 사용합니다. 네트워크 IP는 호스트ID가 0이면 그 네트워크를 대표하는 IP 주소가 됩니다. 브로드캐스트 주소는 네트워크에 있는 장비 모두에게 한번에 데이터를 전송하는데 사용하는 IP 주소입니다. 브로드캐스트 IP는 호스트 ID가 255이면 네트워크 안에 있는 모든 컴퓨터가 데이터를 받게 됩니다.

대규모 네트워크는 네트워크 관리를 쉽고 효율적으로 할 수 있도록 작은 단위의 네트워크로 나누어 관리할 수 있습니다. 이처럼 네트워크를 나누어 분할하는 것을 서브넷팅이라합니다. 서브넷팅을 하게 되면 기존 호스트 ID로 사용하던 비트를 서브넷ID로 바꾸어 네트워크 ID, 서브넷 ID, 호스트 ID 로 나누어지게 됩니다. 이렇게 나누어진 네트워크 ID와 호스트 ID를 식별하기 위해 서브넷 마스크를 사용합니다. A 클래스(255.0.0.0), B클래스(255.255.0.0), C클래스(255.255.255.0)이 됩니다. 이는 /를 통해서도 나타낼 수 있으며 예를 들어 C클래스의 경우 /24로 표시할 수 있습니다. 이렇게 되면 2진수로 표시했을 때 11111111 11111111 11111111 00000000 로 앞에 1이 24비트를 나타냄을 알 수 있습니다.

 

4. 전송 계층
전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요합니다. 전송 계층의 주 역할을 오류를 점검하는 기능과 컴퓨터 내 어떤 애플리케이션이 데이터를 받을지 식별하는 역할을 합니다. 전송 계층은 데이터를 보낼 때 신뢰할 수 있고 정확한 연결을 하는 연결형 통신과 효율적으로 데이터를 전달하는 비연결형 통신이 있습니다. 연결형 통신은 상대방과 상태를 확인하면서 통신하고 비연결형 통신은 상대방의 상태를 확인하지 않고 일방적으로 데이터를 전송하는 방식입니다. 비연결형 통신의 경우 신뢰보다는 빠르게 데이터를 전송해야하는 경우에 사용되며 일반적으로 동영상 스트리밍 서비스에서 많이 사용하는 방식입니다. 연결형 통신 프로토콜에는 TCP가 있고, 비연결형 통신에는 UDP 가 사용됩니다.

1) TCP

TCP로 전송할 때 붙이는 헤더는 TCP 헤더라고하며 이는 세그먼트라고 부르고 있습니다. TPC 헤더에는 목적지까지 데이터를 제대로 전송하기 위한 정보를 가지고 있으며 먼저 코드 비트에 대해서 설명드리겠습니다. 코드 비트에서는 SYN(연결 요청), ACK(확인 응답)가 필요합니다. 이 정보를 가지고 3-way 핸드셰이크 통신을 할 수 있습니다.

* 3-way handshake
(1) 연결 확립 요청: SYN 전달
(2) 연결 확립 응답 + 연결 확립 요청: SYN, ACK 전달
(3) 연결 확립 응답: ACK 전달
이처럼 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드셰이크라고 합니다. 이는 데이터 연결을 끊을 때도 확인을 해야하며 이는 FIN, ACK를 통해 연결 종료를 하고 있습니다. 이런 통신 방식으로 TCP는 신뢰성과 정확성을 가지고 통신을 할 수 있습니다.

연결이 확립된 이후에는 데이터를 전송할 때 TCP 헤더에서의 일련변호와 확인 응답번호를 사용합니다. 이를 통해서 데이터가 몇 번째 데이터인지를 알려주고 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 합니다. 데이터가 항상 올바르게 전달되는 것은 아니므로 손상되거나 유실된 데이터가 있다면 일련번호와 확인 응답 번호를 통해 재전송하고 있습니다. 이를 재전송 제어라고 합니다.

하지만 데이터를 보낼 때 세그먼트 즉, 데이터를 보낼 때마다 확인 응답을 반환하기 때문에 매우 비효율적인 통신입니다. 이에 따라서 한번 보낼 때 세그먼트를 연속으로 보내고 확인 응답을 받는 방법이 있습니다. 데이터를 수신받는 쪽에서는 받은 세그먼트를 버퍼라는 곳에 일시적으로 보관합니다. 이 버퍼를 통해 받은 정보들을 처리하게 되는데 버퍼가 넘칠 경우 오버 플로우를 발생할 수 있습니다. 따라서 이를 방지하기 위해 버퍼의 한계 크기를 알아야하며 이는 TCP 헤더에 Window 크기를 통해 확인할 수 있습니다. 이는 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타냅니다. 이 윈도우 크기를 확인하여 통신하기 때문에 한 번에 여러 세그먼트를 송신하여 통신할 수 있습니다.

그리고 전송 계층에서 어떤 애플리케이션으로 통신해야할지도 판단을 하고 있습니다. 이는 포트 번호를 통해 가능합니다. TCP 헤더의 출발지/목적지 포트번호가 필요하고 포트 번호는 0~65535번까지 사용이 가능합니다. 0~1023번 포트까지는 잘 알려진 포트로 서버 애플리케이션에 예약 사용하고있는 포트입니다. 1024는 예약되어있지만 사용하지 않는 포트번호로 1025~에는 랜덤 포트로 사용할 수 있습니다. 예를들어 HTTP는 80, POP3 110, SMTP 25, HTTPS 443 포트를 사용하고 있습니다. 각각의 포트 번호가 있어서 어떤 애플리케이션에 데이터를 전송해야하는지 구분해줄 수 있습니다.

2) UDP

UDP는 비연결형 데이터로 효율성을 중요시하는 프로토콜입니다. 따라서 데이터는 빠르게 보내는것이 가능하고 이런 UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 합니다. UDP 는 확인과 응답을 거치지 않기 때문에 TCP와 비교하여 단순한 헤더를 가지고 있고, 랜이나 네트워크에 있는 모든 장비에 일괄적으로 데이터를 보낼 수도 있습니다. 이를 브로드캐스트 통신이라고합니다.

5. 응용 계층
서비스를 사용할 때는 클라이언트가 서비스를 호출하여 서버에서 서비스를 제공하게 됩니다. 예를 들어 웹 브라우저는 클라이언트가되고 웹에서 요청하는 처리를 하는 웹 서버가 제공을 하게 됩니다. 이렇게 서비스를 제공하는 애플리케이션은 응용 계층에서 동작하게 됩니다. 응용 계층에서는 애플리케이션에 따라 다양한 프로토콜을 사용하는데 웹 사이트를 볼때는 HTTP, 파일을 전송할 때는 FTP, 메일을 볼 때는 SMTP, 메일을 받를 때는 POP3 프로토콜을 사용합니다. 또한 DNS 프로토콜을 통해 네트워크 장비에 붙여진 이름으로 IP 주소를 알아낼 수도 있습니다. 응용 계층은 각각의 애플리케이션에 대응되는 데이터는 전송하는 역할을 합니다.


이렇게 네트워크에 대해서 OSI 7계층을 통한 설명을 진행하였습니다. 데이터 통신에 대해서 기본 개념에 대한 정리이니 많은 분들이 개념을 잡으시는데 참고하셨으면 좋겠습니다. 감사합니다. :)

Comments