해당 글은 평소 프로토콜과 관련하여 헷갈렸던 개념들을 총 정리한 글입니다.
✅ 프로토콜(Protocol)
▶ 프로토콜이란?
프로토콜이란 컴퓨터나 원거리 통신 장비 간에 통신하기 위해 미리 정해놓은 통신 규약 및 통신 약속이다.
▶ 프로토콜의 기본 요소
- 구문(Syntax): 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Signal Level) 등을 규정한다.
- 의미(Semantics): 두 기기 간 효율적이고 정확한 정보 전송을 위한 협조 사항과 에러 처리를 위한 제어 정보를 규정한다.
- 시간(Timing): 두 기기 간 통신 속도, 메시지 순서 제어, 동기화 등을 규정한다.
▶ 프로토콜의 기능
기능 | 설명 |
단편화(Fragmentation) | 송신 측에서 긴 데이터 블록을 작은 단위로 나누어 전송하는 기능이다. |
재합성(Assembly) | 수신 측에서 나누어진 작은 블록을 원래의 메시지로 복원하는 기능이다. |
캡슐화(Encapsulation) | 각 프로토콜에 맞는 데이터 블록을 만들기 위해 데이터에 정보(플래그, 주소, 제어 정보, 오류 검출코드 등)를 추가하는 과정이다. |
연결 제어 (Connection Control) |
데이터를 전송할 때 필요한 통신 경로를 설정하고 유지하며 종료하는 기능이다. 비연결 데이터 전송(데이터그램)과 연결 기반 데이터 전송(가상회선)을 지원한다. |
흐름 제어(Flow Control) | 송신 측의 데이터 전송 속도를 수신 측의 처리 능력에 맞게 조절하는 기능이다. |
오류 제어(Error Control) | 데이터 전송 중 발생할 수 있는 오류를 검출하고 수정하는 기능이다. |
순서 결정(Sequencing) | 송신 측에서 전송한 데이터가 수신 측에 올바른 순서로 도착하도록 보장하는 기능이다. 특히 연결 기반 데이터 전송에서 중요하다. |
주소 설정(Addressing) | 데이터를 정확한 목적지로 전달하기 위해 발생지와 목적지 등의 주소를 지정하는 기능이다. |
동기화(Synchronization) | 통신하는 두 장치의 상태(시작, 종료, 오류 검출)를 일치시키는 기능이다. |
다중화(Multiplexing) | 하나의 통신로를 여러 개로 나누거나, 여러 회선을 하나의 통신로로 합쳐 다수의 사용자가 동시에 사용할 수 있도록 하는 기능이다. |
전송 서비스 (Transmission Service) |
통신을 더 편리하고 안전하게 추가적인 서비스(패리티 검사, 보안, 서비스 등급, 우선순위 등)를 제공하는 기능이다. |
▶ 프로토콜의 종류
계층 | 프로토콜 |
응용(Application) | HTTP, SMTP, FTP, Telnet |
표현(Presentation) | ASCII, MPEG, JPEG, MIDI |
세션(Session) | NetBIOS, SAP, SDP |
전송(Transport) | TCP, UDP, SPX |
네트워크(Network) | IP, IPX |
데이터 링크(Data Link) | Ethernet, Token Ring, FDDI, Apple Talk |
물리(Physical) | 없음 |
▶ 프로토콜의 예시
프로토콜 | 포트번호 | 개념 | 특징 |
HTTP | 80 | 클라이언트와 서버 간의 요청/응답 (request/response) 프로토콜 | 주로 HTML 문서와 이미지 등의 웹 페이지 정보를 주고받는 데 사용된다. |
HTTPS | 443 | HTTP의 보안이 강화된 버전 | SSL이나 TLS 프로토콜을 통해 데이터를 암호화하여 안전한 통신을 보장한다. 주로 전자 상거래에 사용된다. |
FTP | 21 | TCP/IP 프로토콜을 이용한 서버와 클라이언트 간 파일 전송 프로토콜 | TCP/IP 프로토콜 스택의 Application 계층에 속하며, 인터넷에서 파일을 전송하는 데 널리 사용된다. |
SFTP | 22 | SSH를 기반으로 한 안전한 파일 전송 프로토콜 | 파일 접근, 전송, 관리를 보안 채널을 통해 수행한다. |
MySQL | 3306 | 데이터베이스 클라이언트와 서버 간의 통신 | MySQL 데이터베이스 서버와 클라이언트 간 SQL 쿼리와 관련된 데이터를 패킷으로 송수신한다. |
SSH | 22 | 원격 시스템에 로그인하거나 명령을 실행, 파일을 복사하는 프로토콜 | 기존의 rsh, rlogin, 텔넷 등을 대체하며, 강력한 인증 방법과 암호화를 사용해 안전한 통신을 보장한다. |
✅ 프로토콜 스택(Protocol Stack)
▶ 프로토콜 스택이란?
프로토콜 스택이란 네트워크 통신에서 데이터를 효율적으로 전송하기 위해 계층화된 구조(스택 구조)로 구성된 프로토콜의 집합이다.
- 계층을 나누는 이유는 복잡한 네트워크에서 각 프로토콜이 맡는 역할을 분담하기 위해서이다.
- 각 계층의 프로토콜은 인접한 계층의 프로토콜과 통신하며, 이러한 방식으로 가장 위에서부터 가장 아래 계층까지, 또는 그 반대로 통신이 이루어진다.
- 실제 데이터 송수신은 가장 아래 계층에서 수행된다.
- 대표적인 프로토콜 스택 모델로는 OSI 7계층 모델과 TCP/IP 4계층 모델이 있는데, OSI 7계층 모델은 교육적인 목적으로 사용되는 이론적 모델이고, TCP/IP 4계층 모델은 실제 인터넷 통신에 사용되는 실제 사용 모델이다.
▶ 프로토콜 스택 구조
5. Application(응용) 계층
- 역할: 송수신 측 사이에 사용자가 사용하는 데이터를 주고받기 위한 서비스를 제공한다.
- 특징:
- Application 계층에서 주고받는 데이터는 메시지로 교환된다.
- 네트워크 애플리케이션은 이 계층과 관계를 맺고, 다른 계층에 대해서는 신경 쓰지 않는다.
- 패킷(데이터 단위): Application 계층의 정보 패킷을 메시지(message)라고 부른다.
- 프로토콜: HTTP, FTP, SMTP, POP, Telnet
4. Transport(전송) 계층
- 역할: 송수신 측 간 데이터 전송의 신뢰성을 보장하는 서비스를 제공한다.
- 특징:
- 데이터 전송의 신뢰성을 보장하기 위해 다음과 같은 기능을 수행한다.
- 송신 측에서 수신 측으로 세그먼트가 정상적으로 전달되었는지 확인한다.
- 세그먼트가 정상적으로 전달되지 않았을 경우, 재전송한다.
- 네트워크에 과부하가 걸리면, 전송 속도를 조절한다.
- 데이터 전송의 신뢰성을 보장하기 위해 다음과 같은 기능을 수행한다.
- 패킷(데이터 단위): Transport 계층의 패킷을 세그먼트(segment)라고 부른다.
- 프로토콜: TCP, UDP
3. Network(네트워크) 계층
- 역할: 패킷이 어떤 라우터를 거쳐 수신 측으로 전달될지를 결정한다. 즉, 송신 기기에서 수신 기기로 패킷 경로를 결정하는 역할을 한다.
- 특징:
- 네트워크 계층은 출발지 호스트에서 목적지 호스트로 데이터그램(datagram)을 라우팅한다.
- 패킷(데이터 단위): Network 계층의 패킷을 데이터그램(datagram)이라고 부른다.
- 프로토콜: IP
라우터(router): 송신기와 수신기 사이에는 라우터라는 네트워크 장비들이 있으며, 패킷들은 라우터를 거쳐 수신 측으로 전달된다.
2. Data Link(데이터 링크) 계층
- 역할: 송수신 측 사이의 경로가 결정되면, 한 노드에서 인접한 노드로 패킷을 보내기 위한 역할을 한다.
- 특징:
- 프레임이 정상적으로 전달될 수 있도록 오류 검출 및 전송 속도 조절을 담당한다.
- 패킷(데이터 단위): Data Link 계층의 패킷을 프레임(frame)이라고 부르며, 이는 실제로 네트워크에 전송할 패킷이다.
- 프로토콜: Ethernet, 토큰 링, FDDI, PPP
노드: 송신 기기, 수신 기기, 그 사이에 있는 네트워크 장비를 모두 일컫는다.
1. Physical(물리) 계층
- 역할: 한 노드의 Data Link 계층에서 생성한 프레임을 인접한 노드로 보내는 역할을 한다.
- 특징:
- 이때 프레임의 각 비트(bit)는 전기 신호로 변조(modulate)되어 유선 또는 무선을 통해 인접한 노드로 전달된다.
- 수신 노드는 이를 원래의 데이터로 복원하는데, 이것을 복조(demodulate)라고 한다.
- 패킷(데이터 단위): Physical 계층의 패킷을 비트(bit)이라고 부른다.
- 프로토콜: IEEE 802.3
▶ 계층들 사이에 주고받는 데이터
송신 기기가 통신을 하기 위해 수신 기기로 패킷을 보낸다고 가정하자.
🔽 송신 측 프로토콜 스택에서 실행되는 작업
- Application 계층은 Transport 계층으로 메시지(message)를 보낸다.
- Transport 계층은 Network 계층으로 세그먼트(segment)를 보낸다.
- Network 계층은 Data Link 계층으로 데이터그램(datagram)을 보낸다.
- Data Link 계층은 Physical 계층으로 프레임(frame)을 보낸다.
- Physical 계층은 수신 측 Physical 계층으로 프레임(frame)의 비트(bit)들을 보낸다.
🔽 수신 측 프로토콜 스택에서 실행되는 작업
- Physical 계층은 송신 측 Physical 계층으로부터 프레임(frame)의 비트(bit)들을 받는다.
- Data Link 계층은 Physical 계층으로부터 프레임(frame)들을 받는다.
- Network 계층은 Data Link 계층으로부터 데이터그램(datagram)을 받는다.
- Transport 계층은 Network 계층으로부터 세그먼트(segment)를 받는다.
- Application 계층은 Transport 계층으로부터 메시지(message)를 받는다.
▶ 송수신 기기들 사이 동일 계층들이 주고받는 데이터
위 그림에서 프로토콜 스택들의 계층 간 전달되는 데이터의 흐름을 알 수 있는데, 이를 달리 해석하면 각 계층은 동일한 계층 간의 통신을 담당한다고도 볼 수 있다.
- 송신 측의 Application 계층은 수신 측의 Application 계층과 메시지(message)를 주고받는다.
- 송신 측의 Transport 계층은 수신 측의 Transport 계층과 세그먼트(segment)를 주고받는다.
- 송신 측의 Network 계층은 수신 측의 Network 계층과 데이터그램(datagram)을 주고받는다.
- 송신 측의 Data Link 계층은 수신 측의 Data Link 계층과 프레임(frame)을 주고받는다.
- 송신 측의 Physical 계층은 수신 측의 Physical 계층과 비트(bit)를 주고받는다.
이 통신은 하위 계층들이 올바르게 동작하는 것을 전제로 한다.
▶ 프로토콜 데이터 단위 (PDU)
프로토콜 데이터 단위(PDU, Protocol Data Unit)는 각 계층에서 전송되는 데이터 단위를 말한다.
계층 | 데이터 단위 | 설명 | 형태 |
Application (응용) |
메시지 (message) |
Application 계층에서 주고받는 데이터 | ![]() |
Transport (전송) |
세그먼트 (segment) |
- 메시지에 세그먼트 헤더를 결합하여 세그먼트가 생성 - 세그먼트 헤더에는 전송 제어 정보와 포트 번호를 포함 |
![]() |
Network (네트워크) |
데이터그램 (datagram) |
- 세그먼트에 데이터그램 헤더를 결합하여 데이터그램이 생성 - 데이터그램 헤더에는 네트워크 주소(IP 주소 등)가 포함 |
![]() |
Data Link (데이터 링크) |
프레임 (frame) |
- 데이터그램에 프레임 헤더를 결합하여 프레임이 생성 - 프레임 헤더에는 물리적 주소(MAC 주소 등)와 에러 검출 정보가 포함 |
![]() |
Physical (물리) |
비트 (bit) |
- 프레임을 구성하는 비트 단위의 데이터 변조: 비트 단위를 유선/무선으로 전송하기 위한 신호로 변환 복조: 수신 측에서는 이들을 다시 비트로 원복 |
![]() |
패킷(packet): 네트워크를 통해 전송되는 데이터의 기본 단위로, 여러 계층에서 사용되는 데이터 단위를 총칭하는 데 쓰인다. 메시지, 세그먼트, 데이터그램, 프레임, 비트와 같은 데이터 단위들을 모두 포괄한다.
▶ 실제 데이터 전송 과정
- 웹 브라우저가 URL을 분석하여 DNS 서버로부터 IP 주소를 받아온다.
- 웹 브라우저는 Application 계층에서 HTTP 요청 메시지를 생성하여 웹 서버에 보낼 준비를 한다.
- 생성된 HTTP 요청은 프로토콜 스택을 통해 전송 준비를 한다.
- HTTP 요청은 Transport 계층으로 전달되어 클라이언트 측 포트 번호와 서버 측 포트 번호가 TCP 헤더에 추가된 세그먼트(segment)가 생성된다.
- 세그먼트(segment)는 Network 계층으로 전달되어 IP 주소가 추가된 데이터그램(datagram)이 생성된다.
- 데이터그램(datagram)은 Data Link 계층으로 전달되어 MAC 주소가 추가된 프레임(frame)이 생성된다.
- 프레임(frame)은 Physical 계층으로 전달되어 랜 카드를 통해 전기 신호로 변환된다.
- 변환된 전기 신호는 네트워크 장비를 통해 전송된다.
- 예를 들어, 스위치 A에서 라우터 A로 전송되고, 라우터 A는 데이터를 분석하여 알맞은 경로인 라우터 B로 전달한다. 라우터 B에서 스위치 B로 데이터가 전달된 후, 스위치 B는 웹 서버에 데이터를 전기 신호로 전달한다.
- 웹 서버는 수신된 전기 신호를 Physical 계층에서 다시 비트(bit)로 변환하고, 프로토콜 스택을 통해 상위 계층으로 데이터를 전달한다.
Data Link 계층에서 프레임(frame)을, Network 계층에서 데이터그램(datagram)을, Transport 계층에서 세그먼트(segment)를 처리한 후, 최종적으로 Application 계층에서 HTTP 요청 메시지를 받아 처리한다.
▶ 캡슐화와 역캡슐화
프로토콜 스택 모델에서 데이터 통신은 캡슐화(encapsulation)와 역캡슐화(decapsulation) 과정을 통해 이루어진다. 이는 데이터를 송신 측에서 받아서 수신 측으로 전달하는 과정이다.
🔽 캡슐화(Encapsulation)
캡슐화는 송신 측에서 데이터를 전송할 때, 각 계층을 거치면서 해당 계층의 프로토콜 헤더를 추가하는 과정이다. 각 계층은 자신만의 헤더를 추가하여 데이터를 하위 계층으로 전달한다.
🔽 역캡슐화(Decapsulation)
역캡슐화는 데이터가 수신 측에서 수신될 때, 각 계층을 거치면서 해당 계층의 프로토콜 헤더를 제거하고 원래 데이터를 추출하는 과정이다. 각 계층은 자신의 헤더를 제거하고 데이터를 상위 계층으로 전달한다.
헤더(header): 데이터의 앞 부분에 위치하는 데이터 전송에 필요한 정보
🔽 캡슐화와 역캡슐화의 필요성
- 독립성 유지: 다른 계층에 미치는 영향을 최소화할 수 있다.
- 계층별 기능 수행: 목적에 부합하는 기능만 수행한다.
- 호환성 유지: 네트워크 동일 계층 간 호환성 유지
✅ 프로토콜 스택 모델: OSI 7계층 모델
OSI 7계층 모델은 교육적인 목적으로 사용되는 이론적 모델이다.
▶ OSI 7계층 모델
OSI(Open Systems Interconnection) 모델은 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명하기 위한 모델로, 네트워크 통신을 7개의 계층으로 나눈다.
7. Application(응용) 계층
- 개념: 사용자가 네트워크에 접근할 수 있도록 응용 프로그램과 직접 상호작용하는 계층
- 특징:
- 다양한 네트워크 서비스와 응용 프로그램을 제공한다. (응용 프로그램은 Application 계층의 일부가 아니다.)
- 최종 사용자와 가장 가까운 계층으로, 사용자가 볼 수 있는 유일한 계층이다.
- 데이터 단위(PDU): 메시지(message)
- 프로토콜: HTTP, FTP, SMTP(이메일 통신 프로토콜), DNS
6. Presentation(표현) 계층
- 개념: 데이터의 변환 작업(인코딩, 디코딩, 암호화, 복호화)을 하는 계층
- 특징:
- 수신 장치의 Application 계층이 이해할 수 있는 형식으로 수신 데이터를 변환한다.
- Application 계층에서 수신한 데이터를 전송하기 전에 압축해 준다.
- 장치가 암호화된 연결을 통해 통신을 하는 경우, 최종 송신자에게 암호화를 추가할 뿐만 아니라 최종 수신자에게 암호화를 디코딩하여 암호화되지 않은 데이터로 변환해 준다.
- 프로토콜: JPEG, MPEG, ASCII, XML
5. Session(세션) 계층
- 개념: 응용 프로그램 간의 논리적 연결인 세션을 지원하는 계층
- 특징:
- 세션을 설정, 유지, 종료, 전송 중단 시 복구 등의 기능이 있다.
- TCP/IP 세션을 설정하고 종료하는 책임을 진다.
- Transport 계층에서도 연결을 맺고 종료할 수 있기 때문에, 세션 계층은 응용 프로그램 관점에서 봐야 한다.
- 프로토콜: NetBIOS
4. Transport(전송) 계층
- 개념: 종단 간(end to end) 통신과 데이터 전송 방식을 담당하는 계층
- 특징:
- 송신 기기의 Transport 계층에서는 데이터를 세그먼트(segment)로 분할하고, 수신 기기의 Transport 계층에서는 Session 계층이 이용할 수 있는 데이터로 재조립한다.
- 신뢰성 있는 데이터 전송을 위해 흐름 제어(전송 속도 조절), 오류 제어(수신되지 않은 경우 재전송), 혼잡 제어, 중복 검사 등을 지원한다.
- 포트(port) 번호를 사용하여 데이터 전송을 수행한다.
- 데이터 단위(PDU):
- TCP: 세그먼트(segment)
- UDP: 데이터그램(datagram)
- 장비: 게이트웨이
- 프로토콜: TCP(전송 제어 프로토콜), UDP(사용자 데이터그램 프로토콜)
3. Network(네트워크) 계층
- 개념: 라우팅을 통해 서로 다른 두 네트워크 간 데이터를 전달함으로써 인터넷이 가능하게 만드는 계층
- 특징:
- 데이터에 논리적인 주소인 IP 주소를 부여하고, 데이터를 출발지에서 목적지까지 가장 효율적으로 전달하기 위한 경로를 지정(라우팅)한다.
- 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(internetworking) 등을 수행한다.
- 통신하는 두 장치가 동일한 네트워크에 있는 경우 네트워크 계층이 필요하지 않다.
- 데이터 단위(PDU): 패킷(packet)
- 장비: 라우터, 스위치(L3)
- 프로토콜: IP, ICMP(인터넷 제어 메시지 프로토콜), IGMP(인터넷 그룹 메시지 프로토콜)
라우팅: 네트워크에서 데이터 패킷을 출발지에서 목적지까지 전달하기 위해 최적의 경로를 선택하는 과정
2. Data Link(데이터 링크) 계층
- 개념: 물리 계층을 통해 전송된 데이터의 오류를 검출하고 흐름을 관리하여 신뢰성 있는 전송을 보장하는 계층
- 특징:
- MAC 주소를 사용하여 네트워크 내 장치 간의 통신을 관리한다.
- 재전송, 흐름 제어, 오류 검출 및 수정 기능을 제공한다.
- 데이터 단위(PDU): 프레임(frame)
- 장비: 스위치(L2), 브리지, 랜카드
- 프로토콜: MAC, PPP
MAC(Media Access Control) 주소: 네트워크 인터페이스 카드(NIC)에 할당된 고유 식별자, 네트워크에서 데이터를 주고받는 데 사용되며, 하드웨어에 고정된 주소이므로 네트워크 구성 요소마다 주소가 다르다.
1. Physical(물리) 계층
- 개념: 전송 매체를 통해 데이터를 물리적으로 전송하는 계층
- 특징:
- 전기적, 기계적, 기능적 특성을 이용하여 통신 케이블로 데이터를 전송한다.
- 단지 데이터를 전기적인 신호로 변환해서 전달만 한다. (데이터 유형, 에러 유무 등을 확인하지 않는다.)
- 데이터 단위(PDU): 비트(bit) (0과 1로 나타내는, 전기적 on/off 상태)
- 장비: 네트워크 케이블, 리피터, 허브
- 프로토콜: Ethernet
▶ OSI 7계층 모델을 통해 데이터가 전송되는 과정 예시
- 상황: A가 B에게 이메일을 보낸다.
- 캡슐화 과정:
- A가 자신의 노트북에 있는 이메일 애플리케이션에서 메시지를 작성하고 발송을 누른다.
- A의 이메일 애플리케이션이 메시지를 Application 계층으로 넘기면, Application 계층은 프로토콜(SMTP)을 선택하고, 데이터를 Presentation 계층으로 전달한다.
- Presentation 계층이 압축한 데이터는 Session 계층에 전달되어 세션을 시작한다.
- 데이터가 발신자의 Transport 계층으로 넘어가 세그먼트(segment)로 나뉘어 Network 계층으로 전달된다.
- 해당 세그먼트(segment)는 Network 계층에서 패킷(packet)으로 나뉘어 Data Link 계층으로 전달된다.
- 해당 패킷(packet)은 Data Link 계층에서 프레임(frame)으로 나뉘어 Physical 계층으로 전달된다.
- 해당 프레임(frame)은 Physical 계층에서 데이터를 비트(bit) 스트림으로 변환하고 물리적 매체(예: 케이블)를 통해 전송한다.
- 역캡슐화 과정:
- B의 컴퓨터가 물리적 매체(예: 와이파이)를 통해 비트(bit) 스트림을 수신하면, 데이터는 반대 순서로 계층을 지난다.
- 해당 비트(bit) 스트림은 Physical 계층에서 프레임(frame)으로 변환되어 Data Link 계층으로 전달된다.
- 해당프레임(frame)은 Data Link 계층에서 패킷(packet)으로 재조립되어 Network 계층으로 전달된다.
- 해당 패킷(packet)은 Network 계층에서 세그먼트(segment)로 변환되어 Transport 계층으로 전달된다.
- 해당 세그먼트(segment)는 Transport 계층에서 재조립되어 하나의 데이터로 전달된다.
- 이 데이터는 수신자의 Session 계층으로 전달된 후 Presentation 계층으로 전달되면, 통신 세션이 종료된다.
- Presentation 계층은 압축을 제거하고 원본 데이터를 Application 계층으로 넘기고, Application 계층은 사람이 읽을 수 있는 데이터를 B의 이메일 소프트웨어에 제공한다.
- B는 자신의 노트북 화면에서 이메일 소프트웨어를 통해 B의 이메일을 읽을 수 있게 된다.
✅ 프로토콜 스택 모델: TCP/IP 4계층 모델
TCP/IP 4계층 모델은 실제 인터넷 통신에 사용되는 실제 사용 모델이다.
▶ TCP/IP 4계층 모델
TCP/IP 4계층 모델은 인터넷 프로토콜의 기본 구조를 설명하는 네트워크 구조로, OSI 모델을 기반으로 실제 사용될 수 있도록 단순화된 모델이다. 이 모델은 OSI 7계층 모델과 다르게, 데이터 통신을 위한 4개의 주요 계층으로 나누어져 있다.
TCP/IP 4계층 | 역할 | 데이터 단위 | 전송 주소 | 예시 | 장비 |
Application | 응용 프로그램들 간 데이터 송수신 | 데이터/메시지 | - | HTTP, FTP, SMTP | - |
Transport | 호스트끼리 송수신 | 세그먼트/데이터그램 | Port | TCP, UDP | 게이트웨이 |
Internet | 데이터 전송을 위한 논리적 주소 및 경로 지정 | 패킷 | IP | IP, ARP, ICMP, RARP | 라우터 |
Network Interface | 실제 데이터인 프레임 송수신 | 프레임 | MAC | Ethernet | 브릿지, 스위치 |
4. Application(응용) 계층
- 개념: 응용 프로그램들 간 데이터를 교환하기 위한 계층
- 특징:
- 사용자가 응용 프로그램과 직접적인 상호작용을 처리한다.
- OSI 계층에서 Session, Presentation, Application 계층에 해당한다.
- 데이터 단위(PDU): 데이터(data) / 메시지(message)
- 프로토콜: HTTP, FTP, SMTP, DNS
3. Transport(전송) 계층
- 개념: 통신 노드 간의 데이터 전송에 있어 신뢰성을 보장하는 계층
- 특징:
- 데이터의 신뢰성 및 흐름 제어를 제공한다.
- 데이터의 분할 및 재조립을 담당한다.
- OSI 계층에서 Transport 계층에 해당한다.
- 데이터 단위(PDU): 세그먼트(segment) / 데이터그램(datagram)
- 장비: 게이트웨이
- 전송 주소: 포트(port) 번호
- 프로토콜: TCP, UDP
2. Internet(인터넷) 계층
- 개념: 데이터 전송을 위한 주소를 지정하고, 경로를 설정하는 계층
- 특징:
- 논리적 주소인 IP를 이용한 노드 간 데이터 전송과 라우팅 기능을 담당한다.
- OSI 계층에서 Network 계층에 해당한다.
- 데이터 단위(PDU): 패킷(packet)
- 장비: 라우터
- 전송 주소: IP 주소
- 프로토콜: IP, ARP, ICMP, RARP
1. Network Interface(네트워크 인터페이스) 계층
- 개념: 물리적인 데이터 전송을 담당하는 계층
- 특징:
- 물리적 주소인 MAC을 참조해 데이터를 전송한다.
- 에러 검출 기능과 패킷(packet)의 프레임화 기능을 담당한다.
- OSI 계층에서 Physical, Data Link 계층에 해당한다.
- 데이터 단위(PDU): 프레임(frame)
- 장비: 브리지, 스위치
- 전송 주소: MAC 주소
- 프로토콜: LAN, WAN, MAN 패킷망 등에 사용되는 프로토콜 (대표적으로 Ethernet)
Network Access(네트워크 액세스) 계층이라고도 불린다.
▶ TCP/IP 4계층 모델을 통해 데이터가 전송되는 과정 예시
- 상황: 웹 브라우저에서의 HTTP 통신
- 캡슐화 과정:
- 웹 브라우저에서 데이터(data)를 보내면서 HTTP 헤더가 추가되어 HTTP 메시지가 된다.
- Transport 계층을 거치면서 TCP 헤더(checksum, port address 등)가 추가되어 세그먼트(segment)가 된다. (TCP의 경우)
- Internet 계층을 거치면서 IP 주소가 포함된 IP 헤더(checksum, IP address 등)가 추가되어 패킷(packet)이 된다.
- Network Interface 계층을 거치면서 이더넷 헤더(MAC address 등)와 FCS(프레임 체크 시퀀스)가 추가되어 프레임(frame)이 되고, 실제 하드웨어를 통해 전송된다.
- 역캡슐화 과정:
- 수신 측의 네트워크 장치에 도착하면, Network Interface 계층에서는 송신 측의 Network Interface 계층에서 추가한 FCS를 통해 오류 검사를 수행하고, 헤더를 참조하여 수신지를 확인한다. 오류 검사 결과에 이상이 있거나 수신지가 틀릴 경우 해당 프레임(frame)을 폐기한다. 이상이 없으면 데이터 부분만 Internet 계층으로 보낸다.
- 수신 측의 Internet 계층에서는 송신 측의 Internet 계층에서 추가한 checksum과 IP address의 이상 유무를 확인한다. 오류 검사 결과에 이상이 있으면 해당 패킷(packet)을 삭제한다. 주소 정보가 틀릴 경우 송신 측에 에러 메시지를 보낼 수 있다. 이상이 없으면 데이터 부분만 Transport 계층으로 보낸다.
- 수신 측의 Transport 계층에서는 송신 측의 Transport 계층에서 추가한 checksum과 port address의 이상 유무를 확인한다. 오류 검사 결과에 이상이 있으면 해당 세그먼트(segment)를 삭제한다. 이상이 없으면 데이터 부분만 Application 계층으로 보낸다.
- 수신 측의 Application 계층에 있는 웹 서버 프로그램에 데이터(data)가 도착한다.
checksum은 오류 검사를 위한 오류 검사 자료를 의미하며, 자세한 설명은 여기를 참고하면 좋을 것 같다.
✅ 용어 정리
아래는 프로토콜 및 프로토콜 스택을 이해하기 위한 용어에 대한 정리이다.
▶ IP, IP 주소
🔽 IP란?
IP(Internet Protocol): 인터넷을 통해 데이터를 주고받을 때 사용되는 프로토콜
🔽 IP 주소란?
IP 주소(IP Address): 네트워크에서 장비를 식별하기 위해 사용되는 고유한 번호이다.
IP는 프로토콜 그 자체이고, IP 주소는 IP 통신을 하기 위해 각 기기를 구분하는 식별자이다.
🔽 IP의 역할
- 지정한 IP 주소에 데이터를 전달한다.
- 패킷(packet) 단위로 데이터를 전달한다. (패킷에는 출발지 IP, 목적지 IP 등의 정보가 있다.)
🔽 IP의 한계
- 비연결성: 패킷을 받을 대상이 없거나, 서비스가 불능 상태여도 패킷을 전송할 수 있다.
- 비신뢰성: 패킷이 중간에 손실되거나, 순서대로 도착하지 않을 수 있다.
- 프로그램 구분: 같은 IP를 사용하는 애플리케이션이 둘 이상이면 구분할 수 없다.
IP와 관련된 자세한 설명은 여기를 참고하면 좋을 것 같다.
▶ 포트(Port)
🔽 포트란?
포트(Port): 하나의 IP 주소 내에서 특정 프로세스가 진행되는 식별자
🔽 IP와 포트(Port)
- IP는 컴퓨터를 식별하기 위함이고, 포트는 컴퓨터 내에 특정 프로그램을 식별하기 위함이다.
- 데이터는 특정 IP 주소를 가진 컴퓨터(서버)로 전송되고, 해당 데이터는 컴퓨터 내의 포트를 통해 올바른 애플리케이션이나 서비스로 전달된다.
▶ TCP
🔽 TCP란?
TCP(Transmission Control Protocol): 인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 연결 지향적 프로토콜이다.
🔽 TCP 특징
TCP 세그먼트(segment)에는 출발지 PORT, 목적지 PORT, 전송 제어 정보, 순서 제어 정보, 검증 정보 등에 대한 내용이 있다.
- 연결 지향: TCP 3-way handshake
- 신뢰성:
- 데이터 전달 보장: 수신자는 데이터 패킷을 확인(ACK)하여 송신자에게 전달 여부를 알린다.
- 데이터 순서 보장: 데이터가 순서대로 도착하지 않으면 재전송을 요청한다.
- 흐름 제어: 송신자가 수신자의 버퍼 오버플로우를 방지하기 위해 데이터 전송 속도를 조절한다.
- 혼잡 제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하기 위해 송신자가 전송 속도를 조절한다.
🔽 TCP 3-way handshake
SYN: 접속 요청, ACK: 요청 수락
- SYN (클라이언트 -> 서버)
- ACK + SYN (클라이언트 <- 서버)
- ACK (클라이언트 -> 서버)
TCP와 관련된 자세한 설명은 여기를 참고하면 좋을 것 같다.
▶ UDP
🔽 UDP란?
UDP(User Datagram Protocol): 데이터를 데이터그램 단위로 처리하는 비연결 지향적 프로토콜이다.
🔽 UDP 특징
- 비연결 지향: 송신자와 수신자 간 연결 설정이 필요하지 않다. 데이터를 독립적인 패킷(datagram)으로 전송한다.
- 비신뢰성:
- 데이터 전달 보장 없음: 송신자는 데이터 패킷을 보낸 후 수신 여부를 확인하지 않는다.
- 데이터 순서 보장 없음: 데이터 전송의 순서를 보장하지 않는다. 데이터가 손실되거나 순서가 뒤바뀔 수 있다.
- 빠른 속도: TCP보다 빠른 속도를 제공한다.
UDP와 관련된 자세한 설명은 여기를 참고하면 좋을 것 같다.
▶ 소켓
🔽 소켓이란?
소켓(Socket): 네트워크에서 데이터 통신을 위한 종단점(Endpoint)이다. Transport 계층과 Application 계층 사이에 있는 인터페이스이다.
🔽 소켓의 구성 요소
- 프로토콜(TCP, UDP)
- IP 주소
- 포트(Port) 번호
🔽 소켓의 종류
스트림(Stream) 소켓 | 데이터그램(Datagram) 소켓 | |
프로토콜 | TCP | UDP |
연결 방식 | 연결 지향 | 비연결 지향 |
데이터 전송 방식 | 스트림 형태 (연속적인 바이트 스트림) | 독립적인 데이터그램을 전송 |
신뢰성 | 신뢰성 높음, 데이터 순서와 무결성 보장 | 신뢰성 낮음, 데이터 순서와 무결성 보장 없음 |
데이터 흐름 | 데이터 경계의 구분이 없는 바이트 스트림(Byte Stream) 서비스 | 데이터 경계를 구분하는 데이터그램(Datagram) 서비스 |
연결 방식 | 점대점 연결(Point to Point) | 점대점 연결(Point to Point), 일대다 연결(One to Many) |
🔽 소켓과 패킷의 연관관계
애플리케이션이 데이터를 소켓을 통해 전송하면, 이 데이터는 패킷으로 나누어져 네트워크를 통해 전달된다. 소켓은 이러한 패킷의 송수신을 관리하는 역할을 한다.
- 소켓 생성: 애플리케이션은 소켓을 생성하여 네트워크 연결을 설정한다. 이 소켓은 특정 IP 주소와 포트 번호를 사용하여 통신 상대방과 연결된다.
- 송신 측 캡슐화: Application 계층에서 생성된 데이터(data)는 소켓을 통해 Transport 계층으로 전달되며, Transport 계층은 이 데이터(data)를 TCP 세그먼트(segment) 또는 UDP 데이터그램(datagram)으로 캡슐화한다.
- 수신 측 역캡슐화: Transport 계층에서 TCP 세그먼트(segment) 또는 UDP 데이터그램(datagram)은 데이터(data)로 복원한 후 소켓을 통해 Application 계층으로 전달한다.
▶ MAC 주소
🔽 MAC 주소란?
MAC 주소(Media Access Control Address): 네트워크에서 각 장비를 유일하게 식별하기 위해 사용되는 고유한 식별자이다.
🔽 MAC 주소 특징
- 네트워크 인터페이스 카드(NIC)나 장비에 할당된 48비트(6바이트) 길이의 주소이다.
- 일반적으로 16진수로 표기된다. (예: 00:1A:2B:3C:4D:5E)
- Data Link 계층에서 사용된다.
▶ 패킷
🔽 패킷이란?
- 네트워크를 통해 전송되는 데이터의 기본 단위로, 여러 계층에서 사용되는 데이터 단위를 총칭하는 데 쓰인다.
- 메시지(message), 세그먼트(segment), 데이터그램(datagram), 프레임(frame), 비트(bit) 등의 데이터 단위들을 모두 포괄한다.
🔽 패킷의 구성 요소
- Header: 패킷의 전송과 처리를 위한 필수 정보를 포함한다.
- 구성:
- 출발지 주소: 패킷이 어디에서 왔는지를 나타낸다.
- 목적지 주소: 패킷이 어디로 가야 하는지를 나타낸다.
- 프로토콜 정보: 어떤 프로토콜이 사용되고 있는지를 나타낸다.
- 시퀀스 번호: 데이터의 순서를 정하는 데 사용된다.
- 체크섬(checksum): 패킷 데이터가 손상되지 않았는지 확인하는 오류 검출 정보이다.
- 구성:
- Payload: 실제 전송되는 데이터의 내용으로, 패킷의 본문 또는 데이터라고 부른다.
- 구성: 사용자 데이터 또는 애플리케이션 데이터
- Trailer(= Footer): 일부 프로토콜에서는 추가적인 제어 정보를 포함한다.
- 구성:
- FCS(Frame Check Sequence): Data Link 계층에서 사용되며, 패킷이 손상되지 않았는지 확인하는 오류 검출 정보이다. 패킷에서 사용되는 가장 일반적인 오류 검사를 CRC(Cyclic Redundancy Check)라고 하는데, 이 알고리즘을 통해 FCS를 생성한다.
- 추가적인 제어 정보: 일부 프로토콜에서는 패킷의 끝을 식별하는 데 사용된다.
- 구성:
▶ PCI, PDU, SDU
🔽 PCI(Protocol Control Information)란?
- Header와 Trailer 형태인 프로토콜 제어 정보를 의미한다.
- 흐름 제어 정보, 오류 제어 정보, 주소 정보(발신지, 수신지) 등이 포함되어 있다.
🔽 PDU(Protocol Data Unit)란?
- 각 네트워크 계층에서 사용되는 데이터 단위이다.
- 각 계층에서 SDU를 캡슐화하여 자신만의 PDU를 생성한다.
🔽 SDU(Service Data Unit)란?
- 실제 서비스되는 Data Unit을 의미한다.
- PCI가 더해진, 즉 캡슐화가 되어 상위 계층에서 하위 계층으로 보내는 데이터이다.
- SDU = PCI + PDU
🔽 예시
- Application 계층에서 웹 페이지 요청 데이터(HTTP 요청)를 생성한다. 이 데이터가 SDU이다.
- Transport 계층에서 이 데이터에 TCP 헤더를 추가하여 세그먼트(segment)라는 PDU를 만든다.
- Network 계층에서 이 세그먼트(segment)에 IP 헤더를 추가하여 패킷(packet)이라는 PDU를 만든다.
- Data Link 계층에서 이 패킷(packet)에 이더넷 헤더를 추가하여 프레임(frame)이라는 PDU를 만든다.
▶ 스위치, 라우터
🔽 스위치란?
스위치(Switch): 목적지로 출발한 데이터를 중간에 적합한 경로로 스위칭해 주는 역할을 한다.
🔽 스위치 특징
- MAC 주소 기반으로 데이터를 전달한다.
- 동일 네트워크 내의 장비를 연결한다.
- Data Link 계층에 속한다.
🔽 라우터란?
라우터(Router): 데이터가 올바른 목적지로 가는 적합한 경로를 찾아주는 라우팅 기능을 한다.
🔽 라우터 특징
- IP 주소 기반으로 데이터를 전달한다.
- 서로 다른 네트워크를 연결한다.
- Network 계층에 속한다.
🔽 차이점
스위치 | 라우터 | |
기능 | 네트워크 내 장비 간의 데이터 전송 | 서로 다른 네트워크 간의 연결 및 데이터 경로 설정 |
역할 | 트래픽 관리 | 라우팅 |
OSI 모델 계층 | Data Link 계층 | Network 계층 |
주소 유형 | MAC 주소 | IP 주소 |
브로드캐스트 도메인 | 브로드캐스트 도메인을 구분하지 않는다. | 브로드캐스트 도메인을 구분한다.(서로 다른 네트워크 대역을 구분) |
브로드캐스트 처리 | 불명확한 목적지의 데이터는 모든 포트로 브로드캐스트한다. | 브로드캐스트 데이터를 수신 시 해당 데이터를 버린다. |
설정 필요성 | 일반적으로 관리자의 설정이 필요 없다. | 관리자의 설정이 필요하다.(라우팅 테이블 설정 및 관리) |
네트워크 범위 | 주로 로컬 네트워크(LAN) 내에서 사용한다. | 로컬 네트워크와 외부 네트워크(WAN) 간의 연결에 사용한다. |
브로드캐스트 메시지(Broadcast Message): 네트워크의 모든 장비에 동시에 전송되는 메시지이다.
브로드캐스트 도메인(Broadcast Domain): 네트워크에서 브로드캐스트 메시지가 전송될 수 있는 범위
🔽 데이터를 전송하는 과정
- 컴퓨터: 데이터 전송을 시작한다.
- 스위치 A: 컴퓨터가 속한 로컬 네트워크 내에서 데이터 패킷을 처리한다.
- 수신한 데이터 패킷을 MAC 주소를 기준으로 분석하여 올바른 포트(라우터 A로 향하는 포트)로 전달한다.
- 라우터 A: 서로 다른 네트워크를 연결하고 데이터 경로를 결정한다.
- 스위치 A에서 받은 패킷을 분석하고, 라우팅 테이블을 참조하여 패킷을 다음 네트워크 구간(라우터 B로 향하는 경로)으로 전송한다.
- 이 과정에서 패킷의 IP 주소를 기반으로 최적의 경로를 선택한다.
- 라우터 B: 네트워크를 넘어서 패킷을 계속해서 전달한다.
- 라우터 A에서 받은 패킷을 분석하고, 라우팅 테이블을 참조하여 패킷을 스위치 B로 전달한다.
- 이 과정에서 패킷의 IP 주소를 기반으로 다음 목적지로의 경로를 결정한다.
- 스위치 B: 웹 서버가 연결된 로컬 네트워크에서 패킷을 처리한다.
- 수신한 데이터 패킷을 MAC 주소를 기준으로 분석하여 웹 서버가 연결된 포트로 전달한다.
- 웹 서버: 최종 목적지로서 데이터 패킷을 수신하고 처리한다.
🔽 이러한 과정을 거치는 이유
- 로컬 네트워크와 외부 네트워크(인터넷 등)의 경계를 설정하고 이를 구분하여 관리하는 방식에 적합하다.
- 스위치는 로컬 네트워크 내의 데이터 전송을 효율적으로 처리하고, 네트워크 세그먼트 내의 데이터 충돌을 줄이며, 라우터는 IP 주소를 사용하여 패킷을 올바른 네트워크 경로로 전송하는데, 이를 통해 서로 다른 네트워크 대역을 넘는 데이터 전송이 가능하다. 따라서 스위치와 라우터를 사용하는 것은 필수적이다.
- 네트워크가 커짐에 따라 데이터는 여러 네트워크 장비를 통과하면서 적절히 라우팅되고 전달되는데, 이는 대규모 네트워크에서 데이터 전송의 효율성을 보장한다.
✅ TCP/IP 4계층 모델 요약
🔽 프로토콜 계층
🔽 TCP/IP 패킷
- TCP/IP 패킷: TCP/IP 4계층 모델에서 사용하는 패킷
📍 참고 자료
- 프로토콜(Protocol)이란? - 정의, 기본 요소, 종류, 기능
- [Protocol] 프로토콜 정의, 요소, 종류, 기능, 예시
- [네트워크] 프로토콜 스택(protocol stack)이란?
- [네트워크] 프로토콜
- [네트워크] 인터넷 프로토콜 계층
- [Network] 프로토콜 스택이란 무엇인가?
- OSI 7 계층이란?, OSI 7 계층을 나눈 이유
- OSI 모델이란?
- [Network]프로토콜 계층화란?
- OSI 7계층, TCP/IP 4계층 + TCP, UDP 정리
- [Network] TCP/IP 4계층에 대하여
- 프레임(Frame), 세그먼트(Segment) 모두 다 패킷(Packet)이다 - TCP/IP Data Flow
- IP, TCP, UDP, PORT, DNS 개념
- [Network] OSI 7계층, SDU와 PDU
- Packet / Fragment / Frame / Datagram / Segment
- 스위치, 라우터의 차이
- [허언증/네트워크] IP와 Port(포트) 관계
- 소켓이란? 종류, 통신 흐름, HTTP통신과의 차이
'Programming > Network' 카테고리의 다른 글
[Network] IP (0) | 2024.08.06 |
---|---|
[Network] DHCP (0) | 2024.08.05 |
[Network] 네트워크 (0) | 2024.08.05 |
[Network] TCP, UDP (0) | 2024.07.28 |
[Network] HTTP/1.1, HTTP/2.0, HTTP/3.0 (0) | 2024.07.28 |