✅ 프로토콜
- 컴퓨터간 통신을 하기 위한 규칙을 프로토콜이라고 말합니다.
예시
택배 물건 준비 ➡️ 우체국 방문 ➡️ 택배 물건 회수 ➡️ 물류센터에서 분류 ➡️ 택배 물건 이송 ➡️ 택배 수령
각 순서에 따라 담당자가 정해져 있어 그 담당자는 그 업무만 반복 수행하게 됩니다.
이 예시와 같이 프로토콜도 여러개의 프로토콜이 각자의 역할을 담당하며 컴퓨터와의 통신이 이루어집니다.
1️⃣ OSI 7 Layer
- ISO(국제표준화기구)에서 OSI 모델을 제정 하였습니다.
- 여러 컴퓨터 간의 데이터 전송을 지원할 수 있는 추상 모델을 표준화 한 것

-
Layer의 역할
Layer는 반드시 순서를 지켜 데이터를 보냅니다. (ex: 7Layer ➡️ 1Layer 는 안됨)
- 1Layer(물리계층) : 시스템간 물리적 연결과 전기신호 변환 및 제어
- 2Layer(데이터링크 계층) : 네트워크 기기간 데이터 전송 및 물리 주소 결정
- 3Layer(네트워크 계층) : 다른 네트워크와 통신을 위한 경로 설정 및 논리 주소 결정
- 여러 네트워크를 거치는 경로를 관리한다고 생각하면 됩니다.
- 4Layer(전송 계층) : 신뢰할 수 있는 통신 구현
- 데이터가 중간에 깨지면, 깨진 부분을 확인해서 재전송을 한다던지 등 전송한 대로 받을 수 있게 해줍니다.
- 5Layer(세션 계층) : 세션 채결, 통신 방식등을 결정
- 6Layer(표현 계층) : 문자 코드, 압축, 암호화 등의 데이터 변환
- 네트워크 통신 중 데이터가 해킹될 수 있기 때문에 암호화를 진행하는 계층이라고 보시면 됩니다.
- 7Layer(응용 계층) : 이메일, 파일 전송, 웹사이트 열람등 애플리케이션에 대한 서비스 제공
- 응용 프로그램이 필요로 하는 기능을 지원하는 계층입니다.
더 자세한 설명은 아래 작성
2️⃣ 캡슐화와 역캡슐화
캡슐화란?

데이터를 전송할 때 캡슐처럼 데이터를 헤더에 감싸 전송하는 것을 캡슐화라고 합니다.
header
는 데이터와 같이 전송되는데 이를 간단히 설명하면 택배 송장과 같이 정보를 붙여 전송하는 것 입니다. (각 레이어에 정의되어 있는 정보를 보냄)
body
는 실제 데이터를 의미합니다.
- 송신 : 캡슐화(Encapsulation) / 수신 : 역캡슐화(Decapsulation)
3️⃣ Layer의 역할
❶ 물리 계층 (Physical Layer)
- 데이터를 전기 신호로 디지털 신호로 변환해서 송수신 (0와 1로)
❷ 데이터 링크 계층 (Data Link Layer)
- 물리적 네트워크 사이의 데이터 송수신을 담당
- 대표적인 프로토콜로는 Ethernet(이더넷) 프로토콜 입니다.
- 물리 계층과 다른점은 헤더의 MAC Address 확인 후 데이터를 전송합니다.
❸ 네트워크 계층 (Network Layer)
- 네트워크 상에서, 컴퓨터간 논리적 연결을 위해 사용됩니다.
- 논리적 연결이란?
- 각 컴퓨터 간의 주소(IP)를 구분하여 해당 컴퓨터로 데이터가 갈 수 있도록 하는 것이 논리적 연결입니다.
- 대표적인 포로토콜은 IP 프로토콜 입니다.
❹ 전송 계층 (Transport Layer)
- 데이터가 이동이 될 때, 네트워크 문제로 인해 데이터가 손실이 되거나 전달이 안 될 수 있는데, 이 부분을 체크해서 정확한 전달이 되도록 하는 부분을 담당합니다.
- 데이터가 어느 응용 프로그램으로 전달되어야 하는지 포트로 알려줍니다.
- 대표적인 프로토콜로는 TCP, UDP 프로토콜 입니다.
❺ 세션 계층 (Session Layer)
- 세션별로 데이터 송수신이 가능하게 합니다.
- 예시로 FTP로 여러 파일을 받을 때, 각 파일 별로 연결/관리 처리
❻ 표현 계층 (Presentation Layer)
- 응용 계층으로 부터 전달 받거나, 전달하는 데이터의 암호화를 담당합니다.
- 해커가 데이터를 모니터링 할 수 도 있습니다. 정보 유출을 막기 위해 암호화를 하여 데이터를 보호합니다.
❼ 응용 계층 (Application Layer)
- 네트워크 응용 프로그램을 위한 인터페이스를 제공합니다.
- 응용프로그램 별로 데이터를 처리함에 있어 별도의 포로토콜을 사용할 때가 있기 때문입니다.
💡 용어
- 패킷 (Packet) : 네트워크 계층에서 정의되는 데이터 단위
- 프레임 : 데이터 링크 계층에서 정의되는 데이터 단위
✅ TCP와 UDP 프로토콜
프로그램 언어에서도 어떤 프로토콜을 사용할 지 정하는 함수가 많습니다.
- TCP : 연결형 프로토콜로 데이터의 전송 순서를 보장하고, 데이터의 신뢰성을 보장합니다.
- 데이터의 신뢰성이란, 데이터가 손실, 유실되지 않고 정확하게 전달한다는 의미 입니다.
- TCP는 연결 단계를 거쳐 전송 단계에 도달하게 되는데, 이때 송신자가 데이터를 보내고 수신자는 데이터 전송을 잘 받았는지를 확인 시켜 신뢰성을 보장합니다.
TCP 3-way-handshake
: TCP 통신을 위한 연결 설정 과정입니다.
* TCP의 연결 단계를 뜻하며, 클라이언트에서 SYN을 보내 수신 가능 확인을 하고, 서버에서 SYN, ACK로 송신이 가능한지 확인하여 클라이언트에 보냅니다. 클라이언트는 이를 확인하고 ACK를 보내 연결을 마칩니다.
TCP 4-way-handshake
: TCP의 연결 해제 과정입니다.
* 데이터를 다 보내고 난 뒤, 연결을 해제할 때 나타나는 과정입니다.
클라이언트에서 FIN을 보내 연결을 종료한다고 알리고, 서버에서 ACK를 보내 연결을 종료해도 되는지 확인합니다. 확인을 마친 후 FIN을 클라이언트로 보내 종료를 해도 된다고 알린 뒤, 클라이언트가 ACK를 보내 연결을 종료 합니다.
- UDP : 비연결형 프로토콜로 TCP보다 전송속도가 빠릅니다. 주로 스트리밍, 브로드캐스팅 서비스에 사용합니다.
- 빠르기 때문에 사용하는 것은 아닙니다. 신뢰성이 TCP보다 중요하지 않을 때 주로 사용합니다.
- 비연결형이란 송신자가 데이터를 보내면 수신자는 데이터를 받았는지에 대해 확인을 하지 않습니다.
그렇기 때문에 데이터 손실이 일어날 수 있지만, TCP보다 로직이 복잡하지 않아 전송 속도가 빠릅니다.
✅ TCP 제어

-
흐름 제어(sliding window)
- 매번 ACK를 기다리지 않고, 여러 패킷을 연속해서 송신하기 위해 사용됩니다.
- 송,수신자의 윈도우 사이즈를 확인하고, 윈도우 사이즈 만큼 ACK없이 연속해서 송신하는 기법입니다.
-
혼잡 제어(Congestion window)
- 느린 시작(Slow Start) : 처음에는 CWND = 1로 시작하고 ACK가 도착하면(패킷 전송 성공)
CWND = CWND*2로 증가합니다. 그 후 ACK가 일정시간 동안 도착하지 않을 경우(패킷 전송 실패) CWND = 1로 초기값으로 만듭니다.
- 혼잡 회피(Congestion Avoidance) : CWND가 일정 크기에 도달하면, ACK 도착(패킷 전송 성공)시 CWND = CWND + 1을 하게 됩니다.
✅ IP
- Internet Protocol version 4를 사용하고 있습니다.
- 32bit로 구성 되어있습니다. (
0.0.0.0 ~ 255.255.255.255
)
- Internet Protocol version 6 도 있지만, 대부분 v4를 사용하고 있기 때문에 잘 사용하지는 않습니다.(v6는 128bit로 구성되어 있음)
💡 IP 모델
- 인터넷 통신을 위한 모델입니다.
- TCP는 7계층이 있지만 IP모델은 4개의 계층으로 구성 되어 있습니다.
- 네트워크 접속 계층 (Network Access Layer)
- 인터넷 계층 (Internet Layer)
- 전송 계층 (Transport Layer)
- 응용 계층 (Application Layer)
💡 용어
- 포트 : 목적지의 어떤 응용 프로그램에 데이터를 전달해야하는지 식별하는 기능을 합니다.
- 포트 번호는 0 ~ 65535 로 구성되어 있고, 일반적인 포트 번호는 웹서버 80, 이메일 110, FTP21 로 되어있습니다.
💁🏻♀️ UDP는 다음 게시물에서 자세히 다루도록 하겠습니다.