면접 후 정리
해당 면접에서 부족하다고 느낀 점은 다음과 같았습니다.
- 데이터 전송 방식을 데이터 전송 모델로 착각했다는 점에서 개념 정리를 한번 해야된다고 생각했습니다.
- NIC 관련해서 좀 더 자세한 정리의 필요성이 느껴집니다.
- HTTP 관련 복습이 필요합니다.
- TCP/IP 모델에 대한 개념을 다시 한번 정리해야 합니다.
3번의 경우 2주차의 질문들이 HTTP에 관련된 질문들로 이루어져 있기 때문에 HTTP 완벽가이드를 보며 정리를 할 예정입니다.
따라서, 1번과 2번, 4번을 여기서 정리하고 가겠습니다.
데이터 전송 방식
컴퓨터 네트워크에서 데이터를 전송하는 방식은 회선 교환 방식과 패킷 교환 방식이 있습니다.
회선 교환 방식은 일대일 네트워크 연결 회선을 미리 점유해서 데이터 전송을 하는 방식입니다. 회선을 점유하는 동안은 다른 컴퓨터가 데이터를 전송할 수 없습니다.
패킷 교환 방식은 데이터를 패킷이라는 작은 단위로 나눠서 전송하는 방식입니다. 회선을 점유하지 않기 때문에 여러 컴퓨터들이 데이터 전송을 할때 회선을 효율적으로 사용할 수 있습니다.
좀 더 깊이 있게 정리를 해봅히다.
일단 회선 공유 방식을 전통적인 전화 시스템에서 상요하는 방식과 유사하며, 데이터 전송 시작되기 전에 물리적 또는 논리적 연결을 확립하는 것을 말합니다.
회선을 미리 점유하는 방식은 다음과 같습니다.
회선 할당 방식
- 시분할 다중화(TDM, Time-Division Multiplexing): 시간을 여러 슬롯으로 나누고, 각 사용자나 장치는 특정 시간 슬롯 동안만 데이터를 전송할 수 있습니다.
- 주파수 분할 다중화(FDM, Frequency-Division Multiplexing): 이 방식은 전체 대역폭을 여러 개의 주파수 대역으로 나누고, 각 사용자나 장치에게 특정 주파수 대역을 할당합니다.
회선 공유 방식의 이점은 다음과 같습니다.
- 효율성: 네트워크 자원을 여러 사용자가 공유함으로써 자원 활용도를 극대화할 수 있습니다.
- 신뢰성: 각 사용자에게 할당된 시간 슬롯이나 주파수 대역 덕분에, 데이터 전송의 일관성과 예측 가능성이 향상됩니다.
- 유연성: 다양한 사용자와 장치들이 동일한 네트워크를 통해 서로 연결될 수 있어, 네트워크 설계와 관리가 보다 유연해집니다.
하지만 이 방식은 인터넷 전송 방식으로는 사용되지 않고, 현대의 데이터 전송 방식은 패킷 전송 방식입니다.
이유가 무엇일까요?
가장 큰 이유 중 하나는 회선 교환 방식은 대역폭의 낭비가 심하다는 것입니다.
물리 매체가 가지고 있는 속도가 있고 그것을 분할 방식으로 나눠서 할당하게 된다면 사용자는 나눠진 만큼 감소된 속도를 사용하게 됩니다. 사용자들마다 물리 매체를 점유하는 시간도 다르고 사용하는 양도 다르기 때문에 이 방식은 비효율적입니다.
따라서, 이 방식을 보완하기 위해서 패킷 전송 방식을 사용하고 패킷 전송 방식은 회선 교환 방식과는 다르게 네트워크 장비마다 Point to Point로 연결되어 있고 패킷 단위로 버퍼에 저장 후 전송 방식을 사용하기 때문에 호스트들이 네트워크를 사용할 때 물리 매체를 점유하고 있을 필요가 사라졌습니다.
NIC
NIC(Network Interface Card)는 2계층에서 동작하는 하드웨어 장치로, 네트워크 어댑터(Network adapter)에 구현됩니다. 네트워크 어댑터의 중심에는 "링크 계층 제어기"가 있으며, 링크 계층 제어기는 링크 계층 서비스들(프레임화, 링크 접속, 오류 검출 등)의 대다수가 구현되어 있는 단일의 특수 용도 칩입니다.
좀더 자세히 들여다 보면 다음과 같은 구조로 LAN 어댑터가 구현되어 있습니다.

각 구성 요소의 필요성에 대해서 간단히 정리하고 넘어갑시다.
- 버퍼 메모리: 스위치는 MAC 주소를 기반으로 플로우 테이블을 이용해서 입력 포트로 들어온 프레임을 출력 포트로 전송해주는 작업을 수행합니다. 스위칭 작업은 여러 입력포트에 있는 프레임들을 서로 다른 출력 포트로 내보내는 작업의 경우에는 동시에 수행할 수는 있지만 동일한 출력 포트로 포워딩 하는 작업의 경우에는 동시에 수행할 수 없습니다. 따라서, 버퍼를 가지고 있어야 하며 이것은 "패킷 손실"의 발생을 유발하는 주요 원인 중 하나입니다.
- MAC: 스위칭 작업이 일어나는 부분이라고 생각하면 될 것 같습니다. 이 과정에서 위에서 말했던 충돌 작업으로 인해 HOL 패킷이 발생할 수 있고, 무엇을 먼저 보낼지는 전송 방식에 달려있습니다. MAC 주소 기반으로 동작합니다.
- PHY(MAU): 신호를 케이블에 송출하는 형식으로 변환하여 송신합니다. 이더넷은 케이블의 종류나 전송 속도에 따라 몇 가지 신호 형식이 규정되어 있지만, MAC 회로는 이러한 형식의 차이에 신경쓰지 않고 어느 형식으로도 변환할 수 있는 공통 형식의 신호를 PHY(MAU) 보냅니다. PHY 회로에서 실제로 케이블에 송출하는 형식으로 변환하여 송신하는 역할을 수행합니다.
전체적인 동작 과정을 정리해 보겠습니다.
- 파형에서 타이밍을 계산하여 스타트 프레임 딜리미터를 감지합니다.
- PHY 회로에서 MAC 회로로 공통 형식(디지털 데이터)으로 변환하여 전달합니다.
- MAC 회로는 변환된 디지털 신호를 처리하여 프레임 형태로 재구성합니다. 이 데이터는 일시적으로 NIC의 버퍼메모리에 저장됩니다.
- 수신된 프레임의 무결성을 확인하기 위해 FCS(Frame Check Sequence) 검사가 수행됩니다. CRC(Cyclical Redundancy Check)는 FCS의 일반적인 방법으로, 데이터 전송 중에 발생한 오류를 감지하는 데 사용됩니다.
여기까지가 NIC의 기본 동작으로 볼 수 있습니다. 하지만 이 다음 동작에서는 어떤 장치에 따라 차이가 발생합니다.
우선 종단지점 장치의 NIC 동작의 이후 동작은 다음과 같습니다.
- 수신된 프레임의 목적지 MAC 주소를 확인하여, 자신의 주소와 일치하거나 브로드캐스트/멀티캐스트 주소인 경우 처리합니다.
스위치의 이후 동작은 다음과 같습니다.
- 수신된 프레임의 목적지 MAC 주소를 확인하고, 이를 플로우 테이블과 비교합니다.
- 플로우 테이블을 바탕으로 적절한 링크 인터페이스를 결정하고, 해당 인터페이스를 통해 프레임을 전달합니다.
TCP/IP 4계층 모델
이전에는 TCP/IP를 OSI 7계층에서 표현 계층과 세션 계층이 빠진 간단하고 실용적인 네트워크 모델이라고 소개하였고, 이것은 네트워크의 발달과 함께 표준 프로토콜로 자리 잡았다고 설명했습니다.
여기서 설명이 빠진 것은 데이터 링크 계층과 물리 계층이 합쳐저 링크 계층으로 취급한다는 점입니다.
즉, TCP/IP는 다음과 같은 형태로 계층 구조를 이루고 있습니다.
- 링크 계층(Link Layer): 이 계층은 물리적 네트워크 하드웨어와 관련된 프로토콜을 포함합니다. 이에는 LAN, WAN 등의 물리적 매체와 네트워크 어댑터, 드라이버 등이 포함됩니다.
- 인터넷 계층(Internet Layer): 이 계층에서는 네트워크 간의 패킷 전송을 처리합니다. 가장 중요한 프로토콜인 IP(Internet Protocol)을 포함하며, 데이터를 목적지까지 전달하는 라우팅 기능을 담당합니다.
- 전송 계층(Transport Layer): 이 계층에서는 호스트 간의 데이터 전송을 관리합니다. TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)등이 여기에 속합니다. 이 계층은 데이터의 신뢰성, 순서, 오류 검사 등을 책임집니다.
- 응용 계층(Application Layer): 사용자가 직접 상호작용하는 계층으로, 다양한 종류의 네트워크 응용 프로그램을 포함합니다. HTTP, FTP, SMTP 등의 프로토콜이 이 계층에 속합니다.
OSI 모델은 표준화 목적으로 개발되었으나, 실제 인터넷은 TCP/IP 모델을 기반으로 동작합니다.
참고한 자료
- 컴퓨터 네트워킹: 하향식 접근
- 성공과 실패를 결정하는 1%의 네트워크 원리