컴퓨터 네트워크 면접 정리(1)
컴퓨터 네트워크란?
- 두 대 이상의 컴퓨터가 서로 데이터를 주고받을 수 있도록 유선 혹은 무선으로 연결된 시스템을 의미한다.
- 컴퓨터 네트워크는 컴퓨터, 서버, 라우터, 스위치 등 다양한 장치들이 연결되어 있으며, 정보를 공유하고 자원을 효율적으로 사용하기 위해 구축된다.
- 네트워크는 다양한 기능을 제공함으로써 기기들이 연결되도록 돕는다.
- 애플리케이션 목적에 맞는 통신 방법 제공
- 신뢰할 수 있는 데이터 전송 방법 제공
- 네트워크 간의 최적의 통신 경로 결정
- 목적지로 데이터 전송
- 노드 사이의 데이터 전송
- 네트워크는 규모와 범위에 따라 LAN(Local Area Network)과 WAN(Wide Area Network)으로 구분된다.
LAN과 WAN이란?
LAN (Local Area Network):
- LAN은 하나의 건물이나 학교와 같은 비교적 작은 지역에서 컴퓨터와 장치들을 연결하는 네트워크이다.
WAN (Wide Area Network):
- WAN은 도시나 국가 또는 대륙과 같은 넓은 지역을 연결하는 네트워크이다.
- WAN은 주로 여러 LAN을 연결하여 구성되며, 속도는 LAN보다 느릴 수 있지만 더 큰 범위를 커버한다.
데이터 전송 및 프로토콜
컴퓨터 네트워크에서 데이터를 어떻게 전송하는가?
네트워크에서 데이터를 전송하는 방식은 여러 가지가 있지만 가장 기본적인 원리는 데이터를 패킷이라는 작은 단위로 나눠 보내는 것이다.
1. 데이터 분할
데이터를 전송할 때, 원본 데이터를 패킷이라고하는 작은 조각 단위로 나눈다. 각각의 패킷은 독립적으로 전송될 수 있으며, 필요한 경우 재전송될 수도 있다.
2. 패킷 헤더 추가
각 패킷에는 헤더(header)라는 추가 정보가 붙으며 헤더에는 다음과 같은 정보가 포함된다:
- 출발지 주소: 데이터를 보내는 장치의 IP 주소.
- 목적지 주소: 데이터를 받는 장치의 IP 주소.
- 패킷 번호: 원래 데이터에서 패킷이 몇 번째 조각인지를 나타내는 번호.
- 프로토콜 정보: 전송에 사용된 프로토콜 정보 (예: TCP, UDP).
3. 데이터 전송
패킷들은 네트워크를 통해 전송된다. 이 과정에서 다양한 라우터나 스위치 같은 네트워크 장치를 거쳐 목적지에 도달한다. 각 패킷은 독립적으로 전송되기 때문에, 같은 목적지에 도착할 때도 경로가 다를 수 있다.
4. 패킷 재조립
목적지에 도착한 패킷들은 원래의 데이터로 재조립된다. 각 패킷에는 번호가 있기 때문에 순서가 뒤바뀌거나 누락된 패킷을 확인할 수 있다.
만약 패킷이 손실되거나 오류가 발생한 경우, 이를 감지하여 재전송을 요청하는 과정도 이루어진다.
5. 오류 감지 및 교정
전송 중 패킷에 오류가 발생할 수 있다. TCP와 같은 프로토콜은 이러한 오류를 감지하고, 필요할 경우 패킷을 다시 요청하여 정확한 데이터를 받을 수 있도록 한다. UDP 같은 경우는 속도에 중점을 두고 오류 감지를 생략하는 경우도 있다.
6. 데이터 수신
패킷이 모두 모이고, 오류가 없다면 데이터를 성공적으로 수신한 것으로 간주된다. 이후 애플리케이션이나 시스템에서 이 데이터를 사용하게 된다.
프로토콜이란?
네트워크에는 다양한 통신 기기와 소프트웨어가 존재한다. 이들이 통신하기 위해서 통신에 참여하는 주체들 사이에 약속된 통신 방법이 있어야 하는데 이 약속된 통신 방법을 프로토콜이라고 한다.
프로토콜(Protocol)은 네트워크에서 데이터 통신을 수행할 때 따르는 규칙과 절차의 집합이다.
각 장치가 데이터를 주고받기 위해서는 같은 프로토콜을 사용해야 하며, 이를 통해 네트워크의 원활한 통신이 가능하다.
ex) HTTP는 웹에서 데이터를 주고받기 위한 프로토콜, TCP/IP는 인터넷의 기본 프로토콜
프로토콜이 필요한 이유
- 상호 호환성 보장 :
네트워크에는 다양한 종류의 기기와 소프트웨어가 존재하기 때문에 이들이 서로 통신하기 위해서는 공통된 규칙이 필요하다. 프로토콜은 이러한 규칙을 정의하여, 서로 다른 제조사나 플랫폼의 기기들이 호환될 수 있도록 도와준다.
하지만 하나의 프로토콜로는 기능의 복잡성, 호환성 등의 문제로 인해 모든 네트워크 기능을 포괄하기 어렵다.
이러한 한계를 극복하기 위해, 네트워크 기능을 기능별로 분리하여 구현하는 모듈화가 필요하다.
또한 기능들을 어떻게 분리할 것인가 하는 기준이 필요한데 네트워크의 기능들은 각각 특정한 계층에서 동작하므로, 계층 구조로 모델링하며 이로 인해 탄생한 것이 OSI 7계층과 TCP/IP 계층 구조이다.
TCP / IP이란?
TCP/IP는 단순히 두 프로토콜만을 의미하는 것이 아니라, 이 두 프로토콜이 포함된 전체 프로토콜 스택을 의미한다.
TCP와 IP는 각각 전송 계층과 인터넷 계층의 대표적인 프로토콜로, 다른 많은 프로토콜들과 함께 네트워크 통신을 가능하게 한다. 하지만 이 두 프로토콜이 워낙 중요한 역할을 하기 때문에 전체 구조를 대표하는 이름으로 사용된다.
- IP (Internet Protocol):
인터넷 계층에서 사용되는 프로토콜로서 데이터를 전송할 때 주소를 지정하고, 경로를 설정하는 역할을 한다.
- 인터넷을 통해 데이터를 주고받기 위해 각각의 장치에 IP 주소가 부여되며 이 주소는 데이터를 보내고 받을 위치를 정확히 지정하는 데 사용된다.
- 라우팅 : IP는 데이터를 목적지로 전송하기 위한 최적의 경로를 찾아 데이터를 패킷 단위로 나누어 목적지까지 보내는 과정을 관리한다.
- 조각들의 순서가 바뀌거나 일부가 누락되어도 단순히 데이터를 전송하는 데 집중한다
=> 순서 보장 x, 패킷 유실에 대한 방안 x - TCP (Transmission Control Protocol):
전송 계층에서 사용되는 프로토콜로 서버와 클라이언트 간의 데이터를 신뢰성있게 전달하기 위해 만들어졌다.
- 데이터를 송수신할 때, 큰 데이터를 작은 조각들로 나누어 전송하는데, 이때 각 조각이 목적지에 도착했는지 확인하고, 도착하지 않았다면 재전송하는 역할
- 데이터의 순서 보장: 전송된 데이터가 올바른 순서로 도착하도록 하고, 누락되거나 손상된 데이터가 있으면 재전송 요청을 한다.
- 흐름 제어 및 혼잡 제어: 네트워크의 상태를 감지하여, 데이터를 너무 많이 보내지 않도록 조절한다.
OSI 7 Layer란?
네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.
OSI 7 Layer는 네트워크 통신을 계층화한 모델로, 각 계층이 특정한 기능을 담당하며 독립적으로 작동한다.
또한 각 레이어에 맞게 프로토콜이 세분화 되어서 동작하며 각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작한다.
각 계층은 다음과 같이 구성된다:
1. Physical Layer (물리 계층) - L1:
- 실제 데이터 전송을 위한 물리적 매체를 담당
- 단순히 데이터를 전기적인 신호로 변환해서 주고받는 기능만 존재
- 전송, 전달 받는 데이터가 무엇인지, 어떤 에러가 있는지에 대해서는 신경 쓰지 않는다.
- bits 단위의 데이터를 전송한다.
2. Data Link Layer (데이터 링크 계층):
- 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행하도록 도와주는 역할
- 직접 연결된 노드 간의 통신을 담당한다.
- mac 주소*를 가지고 통신
- ex) ARP (IP 주소 => MAC 주소)
3. Network Layer (네트워크 계층) - L3:
- 데이터 패킷의 라우팅 및 주소 지정을 담당한다.
- 호스트 간의 통신을 담당한다.
- 목적지 호스트로 데이터를 전송한다.
- 네트워크 간의 최적의 경로를 결정한다.
- ex) IP
4. Transport Layer (전송 계층) - L4:
- 애플리케이션의 통신을 담당한다.
- 목적지 애플리케이션으로 데이터를 어떠한 방식으로 전송하는지(TCP / UDP) 결정한다.
- 데이터의 신뢰성 있는 전송을 담당하며, TCP/UDP가 이 계층에 속한다.
- 데이터 전송을 위해 Port 번호가 사용된다.
- ex) TCP, UDP
+ UDP : 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 전송
5. Session Layer (세션 계층) - L5:
- 통신 세션을 설정, 관리, 종료하는 역할을 한다.
- 애플리케이션 간의 통신에서 세션*을 관리한다.
세션 : 컴퓨터 네트워크에서 두 개 이상의 기기, 사용자, 애플리케이션 간에 이루어지는 상호작용의 기간 또는 상태를 의미
6. Presentation Layer (표현 계층) - L6:
- 데이터의 형식 변환, 암호화, 압축 등을 담당합니다.
- 애플리케이션 간의 통신에서 메시지 포맷을 관리한다.
7. Application Layer (응용 계층) - L7:
- 사용자가 네트워크에 접근할 수 있는 응용 프로그램과 서비스를 제공한다.
- 애플리케이션 목적에 맞는 통신 방법을 제공한다.
ex) HTTP, DNS, SMTP, FTP
OSI 7 Layer, TCP/IP 처럼 프로토콜을 계층화하는 이유
흐름을 한눈에 알아보기 쉽고 단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건드리지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다.
캡슐화 (Encapsulation)
캡슐화는 데이터를 전송하기 위해 네트워크 프로토콜의 각 계층이 데이터를 포장하는 과정을 말한다.
OSI 모델 또는 TCP/IP 모델의 각 계층은 상위 계층에서 받은 데이터를 특정한 헤더를 추가하여 패킷, 세그먼트, 프레임 등으로 만들어 다음 계층으로 전달한다.
이 과정은 데이터가 네트워크를 통해 안전하고 효율적으로 전송될 수 있도록 도와준다.
비캡슐화 (Decapsulation)
비캡슐화는 캡슐화의 반대 과정으로, 수신된 데이터에서 각 계층의 헤더를 제거하여 원래의 데이터를 복원하는 과정이다. 수신된 데이터는 물리 계층에서 시작하여 상위 계층으로 전달되며, 각 계층은 자신이 추가한 헤더를 제거하고, 남은 데이터를 상위 계층으로 전달한다. 최종적으로 응용 계층에서 원래의 데이터를 얻을 수 있다.
네트워크 장비
NIC란?
- 컴퓨터나 네트워크 장치가 네트워크에 연결될 수 있도록 해주는 하드웨어 장치이다.
이를 통해 컴퓨터는 네트워크로 데이터를 송수신할 수 있다.
- NIC는 MAC 주소라는 고유 식별자를 가지고 있으며, 데이터 링크 계층에서 통신을 처리한다.
- 유선 LAN의 경우 이더넷 카드라고도 불리며, 무선 LAN의 경우 Wi-Fi 어댑터가 이에 해당한다.
리피터란?
- 리피터는 물리 계층 장치로, 네트워크 신호를 증폭하여 더 먼 거리에 전달할 수 있도록 도와준다.
- 네트워크 케이블의 길이가 길어지면 신호가 약해지거나 손실될 수 있는데, 리피터는 이러한 신호를 수신하여 원래의 강도로 재생성하여 다시 전송한다.
- 오늘날 광케이블의 보급으로 인해 잘 쓰이지 않는 장치이다.
- 주로 LAN에서 사용되며, 네트워크의 범위를 확장하는 데 유용하다.
브리지란?
두 개의 근거리 LAN을 상호 접속 할 수 있도록 하는 통신망 연결 장치로 , 포트와 포트 사이의 중간 다리 역할을 한다.
통신망의 범위를 확장하고 서로 다른 LAN 등으로 이루어진 하나의 통신망을 구축할 때 사용한다.
L2 스위치란?
L2 스위치는 데이터 링크 계층에서 동작하는 네트워크 장치로, MAC 주소를 기반으로 데이터 프레임을 전송한다.
L2 스위치는 각 포트를 독립적인 충돌 도메인으로 만들어 네트워크의 충돌을 최소화하고, 트래픽을 효율적으로 관리한다.
라우터란?
라우터(Router)는 네트워크 계층에서 동작하며, 서로 다른 네트워크 간의 데이터 패킷을 라우팅(경로 설정)하는 장치이다. IP 주소를 기반으로 패킷을 최적의 경로로 전달하며, 네트워크 간의 트래픽을 관리한다.
라우터는 네트워크 간의 경로 정보를 학습하고 저장하여, 목적지 네트워크까지 데이터를 전송한다.
L3 스위치란?
L3 스위치는 네트워크 계층에서 동작하는 스위치로, L2 스위치의 기능과 라우터의 기능을 결합한 장치이다.
L3 스위치는 IP 주소를 기반으로 패킷을 라우팅하며, 고속의 데이터 처리가 가능하도록 설계되었다.
L7 스위치란?
L7 스위치는 응용 계층에서 동작하는 스위치로, 데이터 패킷의 내용에 따라 트래픽을 처리하고 분배하는 장치이다.
주로 로드 밸런싱, 애플리케이션 기반 라우팅, 보안 필터링 등에 사용된다.
L7 스위치는 HTTP, HTTPS, FTP 등 다양한 프로토콜을 이해하며, 웹 서버의 부하를 분산시키거나 특정 콘텐츠에 대한 접근을 제어하는 데 유용하다.
참고
https://pinggoopark.tistory.com/793
면접을 위한 cs 전공지식노트
쉬운 코드 - 프로토콜과 OSI 7 layer 설명 ( https://www.youtube.com/watch?v=6l7xP7AnB64&list=LL&index=2 )