728x90
320x100
인터넷 프로토콜 스택의 4계층
인터넷 프로토콜 스택의 4계층을 간략하게 보면 위와 같다. 이를 좀 더 뜯어보자.
인터넷 프로토콜(Internet Protocol, IP)
- 인터넷 프로토콜(Internet Protocol, IP)은 컴퓨터 네트워크에서 데이터를 주고받는 데 사용하는 규약이다.
- IP는 인터넷의 핵심 프로토콜로, 모든 인터넷 트래픽의 전달을 담당한다.
- IP 주소를 사용하여 발신지와 수신지를 식별하고, 데이터를 패킷(packet)이라는 작은 단위로 나누어 전송한다.
인터넷에서 데이터를 주고 받기 위해서 각자 전송과 송신이 가능한 식별자가 필요한데, 그 중 하나가 IP이다.
인터넷 프로토콜(Internet Protocol, IP) 주요 개념
IP 주소
IPv4 (Internet Protocol version 4)
- 기존의 IP 프로토콜로, 32비트 주소를 사용합니다. 예: 192.168.1.1
- 4,294,967,296개의 고유 주소를 제공하지만, IP 주소 부족 문제를 겪고 있다.
- NAT(Network Address Translation)와 같은 기술을 통해 문제를 해결하려고 한다.
IPv6 (Internet Protocol version 6)
- 주소 부족 문제를 해결하기 위해 개발된 차세대 프로토콜이다. 예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 128비트 주소를 사용하여 사실상 무한한 IP 주소를 제공한다.
- 더 나은 보안, 자동 구성 기능 등을 제공한다.
IPv4는 여전히 널리 사용되지만, 주소 부족 문제를 해결하기 위해 IPv6로의 전환이 진행되고 있다.
패킷
- 네트워크를 통해 전송되는 데이터의 단위. 패킷은 헤더(Header)와 데이터(Payload)로 구성된다.
- 헤더: 발신지와 수신지 IP 주소 등 라우팅에 필요한 정보를 포함한다.
- 데이터: 실제 전송되는 정보.
라우팅
- 패킷이 발신지에서 수신지로 전달되는 경로를 결정하는 과정. 라우터는 이 과정에서 중요한 역할을 한다.
인터넷 프로토콜(Internet Protocol, IP) 의 한계
- 비연결성 : 패킷 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송할 수 있어 연결성이 떨어진다
- 비신뢰성 : 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않는다면 패킷에 대한 신뢰성이 떨어진다.
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 프로그램 구분이 어렵다.
TCP (Transmission Control Protocol)
TCP는 연결 지향 프로토콜로, 신뢰성 있는 데이터 전송을 보장한다.
- 연결 지향 (Connection-oriented):
- TCP는 데이터를 전송하기 전에 송신자와 수신자 간의 연결을 설정합니다. 이를 3-way 핸드셰이크라고 한다.
- SYN: 송신자가 연결 요청을 보냅니다.
- SYN-ACK: 수신자가 요청을 받고 응답합니다.
- ACK: 송신자가 응답을 확인하고 연결이 설정됩니다.
- TCP는 데이터를 전송하기 전에 송신자와 수신자 간의 연결을 설정합니다. 이를 3-way 핸드셰이크라고 한다.
- 신뢰성 (Reliability):
- 데이터가 손실되거나 손상되지 않도록 보장한다.
- 각 패킷에는 순서 번호가 부여되어 수신자가 올바른 순서로 데이터를 재조립할 수 있다.
- 수신자가 패킷을 받으면 송신자에게 확인 응답(ACK)을 보낸다. ACK를 받지 못하면 송신자는 패킷을 재전송한다
- 흐름 제어 (Flow Control):
- 수신자의 데이터 처리 능력을 초과하지 않도록 조절한다.
- 윈도우 크기를 사용하여 송신자가 전송할 수 있는 데이터 양을 제어한다.
- 혼잡 제어 (Congestion Control):
- 네트워크 혼잡을 감지하고 완화하기 위해 데이터 전송 속도를 조절한다.
TCP는 IP가 가진 한계 비연결성, 비신뢰성, 순서 보장 등의 한계를 보완해준다.
UDP (User Datagram Protocol)
UDP는 비연결 지향 프로토콜로, 빠르고 효율적인 데이터 전송을 제공한다.
- 비연결 지향 (Connectionless):
- 데이터를 전송하기 전에 연결을 설정하지 않습니다.
- 각 데이터그램은 독립적으로 처리되며, 송신자와 수신자 간의 연결 설정 과정이 없습니다.
- 단순함 (Simplicity):
- UDP는 TCP보다 헤더가 간단하여 오버헤드가 적습니다.
- 연결 설정 및 유지 관리가 필요 없어 전송 속도가 빠릅니다.
- 신뢰성 없는 전송 (Unreliable Transmission):
- 데이터그램의 전송 성공 여부를 확인하지 않습니다.
- 패킷 손실, 중복, 순서 바뀜에 대한 처리가 없습니다.
- 신뢰성이 필요한 애플리케이션은 자체적으로 오류 검출 및 수정 메커니즘을 구현해야 합니다.
- 브로드캐스팅 및 멀티캐스팅 지원 (Broadcasting and Multicasting):
- 한 번의 전송으로 여러 수신자에게 데이터를 전달할 수 있습니다.
- 스트리밍, 온라인 게임, VoIP 등 실시간 애플리케이션에서 주로 사용됩니다.
기능이 거의 없어 IP와 거의 같다.
PORT
- 포트(Port)는 네트워크에서 특정 프로세스 또는 서비스와의 통신을 식별하는 데 사용되는 논리적인 엔드포인트이다.
- 네트워크 통신에서는 IP 주소를 사용하여 호스트(장치)를 식별하고, 포트를 사용하여 호스트 내에서 실행되는 특정 애플리케이션 또는 서비스와의 통신을 구분한다.
포트 번호의 범위
- 0 ~ 65535 할당 가능
- 잘 알려진 포트(Well-known Ports):
- 0번에서 1023번까지의 포트 번호.
- 주요 프로토콜과 서비스에 할당되어 있음.
- 예: HTTP(80), HTTPS(443), FTP(21), SSH(22), DNS(53)
- 등록된 포트(Registered Ports):
- 1024번에서 49151번까지의 포트 번호.
- 특정 애플리케이션과 서비스에 등록되어 있음.
- 예: MySQL(3306), Microsoft SQL Server(1433)
- 동적 포트 또는 사설 포트(Dynamic or Private Ports):
- 49152번에서 65535번까지의 포트 번호.
- 일시적으로 클라이언트 애플리케이션에서 사용된다.
- 주로 클라이언트가 서버와의 통신을 위해 임시로 할당받는 포트.
같은 아이피 내에서 프로세스를 구분하게끔 해준다.
DNS (Domain Name System)
- IP는 변경될 수 있으며 기억하기 어렵기 때문에 DNS을 이용하여 도메인명을 IP주소로 변환해준다.
- 용자가 기억하기 쉬운 도메인 이름(예: www.example.com)을 사용하여 인터넷 자원을 접근할 수 있게 해주며, 이를 IP 주소(예: 192.0.2.1)로 변환하여 실제 네트워크 통신이 가능하도록한다.
- 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 참고하여 정리하였습니다.
728x90
320x100
'💻 하나씩 차곡차곡 > Back-end' 카테고리의 다른 글
[HTTP] HTTP 정의/특징/메시지/메서드(GET,POST,PUT 등) (0) | 2024.08.08 |
---|---|
[HTTP] URL / URN / URI (정의 / 특징 / 차이점) (0) | 2024.08.06 |
[스프링(Spring)] 롬복(Lombok) (롬복이란 / 자주 쓰는 기능 / @Data 사용을 지양해야 하는 이유 등) (0) | 2024.08.02 |
[스프링(Spring)] HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 (@RequestParam, @RequestBody, @ModelAttribute 이해하기) (0) | 2024.08.02 |
[스프링(Spring)] 어노테이션(Annotation)이란? (특징, 원리, 자주 쓰는 어노테이션 정리) (0) | 2024.08.02 |