[면접을 위한 CS 전공지식 노트] 2.2. TCP/IP 4계층 모델

1. TCP/IP 4계층 모델

인터넷 프로토콜 슈트 (Internet Protocol Suite)

- 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합

- 이 중 OSI 7계층 모델, TCP/IP 4계층 모델 등이 있음

 

TCP/IP (Transmission Control Protocol/Internet Protocol) 4계층 모델

- 네트워크에서 사용되는 통신 프로토콜의 집합으로, 계층들은 프로토콜의 네트워크 범위에 따라 네 개의 추상화 계층으로 구성됨

 

계층을 나누는 이유는?

- 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 해당 단계만 수정할 수 있기 때문임

 

2. Network Access Layer (네트워크 접근 계층  == 링크 계층)

- 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 게층

 

2.1.  Pysical Layer (물리 계층)

- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈

- 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층

 

2.1.1. 유선LAN

- 유선LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며, 전이중화 통신을 사용함

 

전이중화 통신

- 양쪽 장치가 동시에 송수신할 수 있는 방식

- 송신로와 수신로로 나눠서 데이터를 주고받으며 현대의 고속 이더넷은 이 방식을 기반으로 통신함

CSMA/CD

- 이전에는 유선LAN에 반이중화 통신 중 하나인 CSMA/CD를 사용함

- 데이터를 보낸 이후 충돌이 발생한다면, 일정 시간 이후 재전송하는 방식

- 하나의 경로를 기반으로 데이터를 보내기에 충돌에 대비해야 했기 때문

 

2.1.2. 무선LAN

- 무선LAN 장치는 수신과 송신에 같은 채널을 사용하기에 반이중화 통신을 사용함

 

반이중화 통신

- 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식을 말함

- 일반적으로 장치가 신호를 수신하기 시작하면, 응답하기 전에 전송이 완료될 때까지 기다려야 함

- 둘 이상의 장치가 동시에 전송하면 충돌이 발생하여 메시지가 손실되거나 왜곡될 수 있기에 충돌 방지 시스템이 필요함

 

- 프로그램은 0과 1의 나열, 전자기파는 숫자 하나로 고정되지 않고 계속 변함 (sin 그래프)

Encoding

- 0과 1의 나열을 아날로그 신호로 바꿔서 전선으로 흘려보냄

Decoding

- 아날로그 신호가 들어오면 0과 1의 나열로 해석함

 

- 1계층 모듈(함수, 회로)은 PHY칩에 하드웨어적으로 구현되어 있음

- 그렇게면 여러 대의 컴퓨터가 통신하기 위해서는?

 

2.2. Data Link Layer (데이터 링크 계층)

- 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해 필요한 모듈

- '이더넷 프레임'을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층

 

이더넷이란?

- 하나의 인터넷 회선에 유/무선 통신 장비, 공유기, 허브 등을 통해 다수의 시스템이 랜선 및 통신 포트에 연결되어 통신이 가능한 네트워크 구조

 

이더넷 프레임이란?

- 데이터 링크 레이어에서 데이터를 전송할 때 사용하는 기본 단위

- Preamble: 이더넷 프레임이 시작임을 알림

- SFD(Start Frame Delimiter): 다음 바이트부터 MAC 주소 필드가 시작됨을 알림

- DMAC, SMAC: 수신, 송신 MAC 주소

- Length(EtherType): 데이터 계층의 상위 계층인 IP 프로토콜을 정의함. 예를 들어 IPV4 또는 IPV6

- Payload: 전달받은 데이터

- CRC: 에러 확인 비트

 

MAC 주소란?

- 컴퓨터나 노트북 등 각 장치에는 네트워크에 연결하기 위한 하드웨어 장치가 있음 (Network Interface Card, LAN 카드 등의 이름으로 불림)

- 이는 CPU에 부하가 걸리지 않도록 패킷 생성과 전송을 CPU 도움 없이 독자적으로 처리함

- NIC는 이를 구별하기 위한 식별번호로 MAC 주소를 가지고 있음

- 6바이트(48비트)로 구성됨

 

- 물리 계층에서는 두 대의 컴퓨터가 통신했는데, 전선 하나로 여러 대의 컴퓨터와 통신할 수 있는 방법은?

- 허브를 통해 여러 대의 컴퓨터를 연결함. 이때 특정 컴퓨터가 아닌 연결된 모든 컴퓨터에 데이터가 보내진다는 문제 발생

- 허브가 특정 컴퓨터에게만 데이터를 보내도록 함 -> 스위치

 

L2 스위치란?

- L2 스위치는 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당함

- IP 주소를 이해하지 못해 IP 주소 기반 라우팅을 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 함

 

- 여러 대의 컴퓨터가 통신하기에, 데이터를 제대로 끊어 읽을 수 있어야 함

- 송신자는 데이터 앞 뒤에 특정한 비트열을 붙여서 구분함 -> Framing

- ex. 1111(보내고자 하는 데이터)0000

- 이러한 데이터 링크 레이어 기술은 LAN카드에 하드웨어적으로 구현되어 있음

 

3. Internet Layer (인터넷 계층)

- 네트워크 속에서 목적지 컴퓨터로 데이터를 전송하기 위해 IP 주소를 사용해서 길을 찾고(Routing), 자신 다음의 라우터에게 데이터를 넘겨주는(Forwarding) 역할을 하는 모듈

- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층

- 상대방이 데이터를 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징

- 네트워크 레이어 기술은 운영체제의 커널에 소프트웨어적으로 구현되어 있음

- IP, ARP, ICMP 등이 있음

 

4. Transport Layer (전송 계층)

- 포트 번호를 사용하여 최종 도착지인 도착지 컴퓨터의 프로세스까지 데이터가 도달하게 하는 모듈

- 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있음

 

- 전달받은 데이터를 실행 중인 프로그램 중 어떤 프로그램, 즉 어떤 프로세스에 주어야 할지 어떻게 알 수 있을까?

- 데이터를 받고자 하는 프로세스들은 포트 번호를 가져야 함

- 송신자는 보낼 데이터 앞에 목적지 프로세스의 포트 번호를 붙여서 보냄

 

Port Number란?

- 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 고유하게 가지는 정수 값

 

- 전송 레이어 기술은 운영체제의 커널에 소프트웨어적으로 구현되어 있음

- TCP, UDP 등이 있음

 

5. Application Layer (애플리케이션 계층)

- 응용 프로그램이 사용되는 프로토콜 계층으로, 웹 서비스나 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층

- FTP, SSH, HTTP, SMTP, DNS 등이 있음