TCP/IP 4계층 개념
TCP/IP 4계층은 장치들이 인터넷 상에서 데이터를 주고받을 때 쓰는 독립적인 프로토콜의 집합을 의미합니다.
TCP(Transmission Control Protocol) / IP(Internet Protocol) 이라는 의미인데 인터넷을 통해 데이터를 보낼 때 주로 TCP와 IP를 이용해서 보내기 때문에 이런 용어를 가집니다.
TCP/IP 4계층은 아래와 같이 구성됩니다.
4️⃣ 애플리케이션 계층(application)
HTTP, SMTP, SSH, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층입니다.
HTTP
HTTP(Hypertext Transfer Protocol)는 처음에 서버와 브라우저 간에 데이터를 주고 받기 위한 설계된 프로토콜이지만, 지금은 브라우저 뿐만 아니라 서버와 서버간의 통신에도 많이 이용합니다.
HTTP는 헤더를 통한 확장이 쉬우며, 동일한 연결에서 연속적으로 수행되는 두 요청 사이에 연속적인 상태(state)값이 없는 stateless 한 특징을 가지고 있습니다. ( 클라이언트가 서버에게 "너 나 기억해?" 하면 서버는.. "..아니..!")
SSH
SSH(Secure SHell Protocol)는 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜로 보통 프라이빗 키가 있는 경로에서 다음과 같이 키를 명시하고 실행합니다.
ssh <pem> <user>@<serverIP>
SMTP
인터넷을 통해 메일을 보낼 때 사용되는 프로토콜(Simple Mail Transfer Protocol)로 보통 서비스를 운영하면 서비스의 출시, 에러, 공지 등을 알림 뿐아니라 메일링 서비스를 하게 되는데 node.js를 통해 메일을 보낸다면 이를 통해 보내야 합니다.
자바스크립트에서는 Nodemailer 라는 라이브러리를 사용할 수 있습니다.
FTP
FTP(File Transfer Protocol)는 노드와 노드간의 파일을 전송하는데 사용되는 프로토콜로 현재 파일을 암호화해서 전송하는 FTPS 또는 SFTP로 대체되고 있습니다.
3️⃣전송 계층(transport)
많은 분들이 익숙한 TCP, UDP가 대표적이며 애플리케이션 계층에서 받은 메시지를 기반으로 세그먼트 또는 데이터그램으로 데이터를 쪼개고 데이터가 오류없이 순서대로 전달될 수 있도록 도움을 주는 층입니다.
이 단계에서 중요한 TCP의 연결 성립 과정(3 - way handshake)와 연결 해제 과정(4 - way handshake)는 추후에 따로 작성하여 링크를 달아두겠습니다. 간단하게 두 프로토콜의 특징을 비교한 표는 다음과 같습니다.
TCP와 UDP의 주요 특징 비교
전송 제어 프로토콜(TCP) | 데이터그램 프로토콜(UDP) | |
패킷교환방식 | 가상회선패킷교환방식 | 데이터그램패킷교환방식 |
신뢰성 | O | X |
오류검사 | 재전송, 체크섬 | 체크섬 |
패킷의 순서보장 | O | X |
헤더 길이 | (20-60) 바이트 가변 길이 | 8바이트 고정 길이 |
연결 보장 | - 연결을 보장함 - 3 - 웨이 핸드셰이크로 연결을 맺고 4 - 웨이 핸드셰이크로 연결을 해제하는 작업이 필요 |
- 연결을 보장하지 않으며 그냥 데이터를 보냄 - 연결을 유지하고 해제하는데 드는 비용이 없음 |
브로드캐스트 지원 | X | O |
속도 | 느림 | 빠름 |
이러한 특징을 바탕으로 TCP는 신뢰성이 중요한 파일 전송, 이메일, 웹 브라우징에 주요 사용되며 UDP는 빠른 속도가 중요한 스트리밍, VolP, 게임 통신 등에 적합합니다.
여기서 재전송이랑 체크섬은 오류 검사의 메커니즘으로,
- 재전송 : 신뢰성 평가 ⇨ TCP에서는 패킷이 유실되거나 손상되었을 때, ACK(확인 응답)이 오지 않으면 서버는 전달되지 않은 데이터에 대해 재전송을 시도합니다.
- 체크섬 : 체크섬을 통해 무결성 평가 ⇨ 송신된 데이터의 체크섬과 수신된 데이터의 체크섬 값을 비교해서 올바르게 왔는지를 판단합니다.
- TCP와 UDP 모두 사용하지만, TCP는 오류가 발견되면 재전송을 통해 복구할 수 있는 반면, UDP는 재전송하지 않고 단순히 오류를 감지하는데 그칩니다.
2️⃣ 인터넷 계층(internet)
IP, ICMP, ARP가 대표적이며 한 노드에서 다른 노드로 전송 계층에서 받은 세그먼트 또는 데이터그램을 패킷화하여 전송합니다.
ICMP
ICMP(Internet Control Message Protocol)는 노드와 노드 사이에서 통신이 잘 되나를 확인할 때 쓰는 프로토콜입니다.
이 프로토콜은 대체로 테스팅에 사용되며 IP와는 달리 TCP 또는 UDP와 같은 전송 계층 프로토콜과 연관되지 않고 독립적인 비연결형 프로토콜입니다.
[참고] ping은 ICMP로 하는 것을 알 수 있습니다.
ARP와 관련된 내용도 추후 ARP, RARP, IP주소, MAC주소와 관련된 내용으로 찾아뵙겠습니다!
1️⃣ 네트워크 엑세스 계층(network access)
전선, 광섬유, 무선 등으로 데이터가 네트워크를 통해 물리적으로 전송되는 방식을 정의합니다.
캡슐화와 비캡슐화 + PDU
TCP/IP 통신에서 데이터를 송신 측에서 수신 측까지 전달하기 위해서는 캡슐화(encapsulation)와 비캡슐화(decapsulation) 과정이 필요합니다.
캡슐화 : 데이터를 보낼 때 송신 측에서 각 계층이 필요한 헤더 정보를 추가하여 최종적으로 전송 가능한 프레임을 만드는 과정
비캡슐화 : 데이터를 받을 때 수신 측에서 캡슐화된 데이터를 역순으로 헤더를 제거하며 원래 데이터로 복원하는 과정
PDU
PDU(protocol data unit)이란 TCP/IP 4계층을 기반으로 설명했을 때 각 계층의 데이터 단위를 의미합니다.
- 애플리케이션 계층 : 메시지
- 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층 : 패킷
- 네트워크 엑세스 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)
세그먼트 : 적절한 크기로 쪼갠 조각(세그먼트와 데이터그램 의미는 같습니다.)
패킷 : 세그먼트에 SP와 DP가 포함된 IP 헤더가 붙은 형태의 조각
프레임 : MAC 주소 헤더와 CRC/체크섬 트레일러가 붙은 조각
이 글은 Inflearn '개발자를 위한 CS 특강' 강의를 참고하여 작성되었습니다.
'CS' 카테고리의 다른 글
[운영체제] 운영체제와 컴퓨터 시스템: 구조, 인터럽트, 시스템콜 정리 (0) | 2025.01.17 |
---|---|
[Network] TCP의 3 Way-Handshake 및 4 Way-Handshake 과정 (0) | 2025.01.09 |
[Network] MTU와 MSS와 PMTUD (0) | 2025.01.07 |
[Network] 네트워크 토폴로지(Network Topology) 정리 (1) | 2025.01.06 |
프레임워크(Framework)와 라이브러리(Library)의 차이 (1) | 2024.12.30 |