인터넷 통신
클라이언트 ------------- 서버
클라이언트 -------------인터넷 (노드) ------------ 서버
수 많은 인터넷 망에서 어떻게 원하는 곳에 전달 수 있을까?
=> 최소한의 규칙 (IP) 필요
IP (Internet Protocol)
IP 주소 부여
메세지 전달을 위해 출발지(클라이언트) 목적지(서버)에 IP를 부여함
IP 역할
지정한 IP 주소(IP Address)에 데이터 전달
패킷(Packet)이라는 통신 단위로 데이터 전달
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트는 대상 서버의 상태를 알 수 없어 패킷을 항상 전송하게된다.
- 비신뢰성
- 패킷 소실
- 패킷 전달 순서 문제
패킷 용량의 크기가 크면 나눠서 보내게 됨 -> 같은 노드(경로)를 거쳐 도착하는 것이 아니기 때문에 순서가 보장 되지 않음
- 프로그램 미 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 때 이를 구분하지 않는다.
(ex. 클라이언트가 음악을 들으면서 게임하는 상태)
==> IP 프로토콜만으로는 이를 해결하지 못함. 때문에 이 문제를 해결할 수 있는 TCP 프로토콜을 사용함.
TCP / UDP
- 인터넷 프로토콜 스택의 4계층
계층 | 역할 | 데이터 전송 단위 (PDU) | 전송 주소 | 예시 | 관련 장비 |
응용 계층 (Application Layer) |
애플리케이션 간 데이터 송수신 | 데이터 / 메시지 (Data/Message) |
도메인 이름 (URL) |
HTTP, DNS, FTP, SMTP 등 | 애플리케이션 서버, 웹 서버 |
전송 계층 (Transport Layer) |
호스트끼리 송수신 | 세그먼트 (Segment) |
포트 번호 | TCP, UDP 등 | - |
인터넷 계층 (Internet Layer) |
(데이터 전송을 위한) 논리적 주소 지정 및 라우팅 |
패킷 (Packet) | IP 주소 | IP, ARP, ICMP, RARP 등 | 라우터 |
네트워크 인터페이스 계층 (Network Access Layer) |
물리적 네트워크 연결 및 프레임 전송 | 프레임 (Frame) | MAC 주소, 물리적 주소 | Ethernet 등 | 스위치, 허브 |
프로토콜 계층
Packet(패킷) = Package(수화물) + bucket(덩어리)
TCP/IP 패킷 정보
ip 패킷 안에 TCP 세그먼트가 들어감으로써, IP만으로 해결이 안됐던 순서 문제나 이런 것들이 해결이 됨
TCP 특징
전송 제어 프로토콜 (Transmission Control protocol)
신뢰할 수 있는 프로토콜, 현재는 대부분 TCP 사용
- 연결지향 (연결 후에 메세지를 보냄)
- TCP 3 way handshake (가상연결. 물리적 연결x, 개념적 연결)최근에는 최적화가 되어 3.ACK와 함께 패킷(데이터)을 보냄. 기존에는 3. ACK 후 4. 패킷전송 - 데이터 전달 보증
- 순서 보장
- TCP에 전송 제어, 순서, 검증 정보가 포함되어 있기 때문에 순서 보장 가능
UDP 특징
사용자 데이터그램 프로토콜 (User Datagram Protocol)
기능이 거의 없음
연결지향X(TCP 3 way handshake)데이터 전달 보증X순서 보장X- 단순하고 빠름
=> IP와 거의 같음.
IP + PORT + 체크섬 정도만 추가
애플리케이션에서 추가 작업 필요
TCP는 이미 구축(3WH 등)이 되어있기 때문에 최적화를 할 수 없음.
하지만 UDP는 기본 기능이 없기 때문에 내가 만들어 낼 수 있음. 사용자가 직접 최적화 가능
PORT
한 IP에서 둘 이상의 통신을 해야할때 port 사용
IP : 목적지 서버를 찾는 것
PORT : 그 서버 안에서 돌아가는 애플리케이션(프로세스)들을 구분하는 것
0 ~ 65535 할당 가능
0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443
DNS (Domain Name System)
도메인 이름을 IP 주소로 변환하는 시스템
IP는 기억하기 어렵고 변경될 수 있가 때문에 DNS를 사용함
인프런 김영한님의 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 듣고 정리한 내용입니다.
'HTTP' 카테고리의 다른 글
5. HTTP 특징(1) (1) | 2025.03.03 |
---|---|
4. HTTP (0) | 2025.03.03 |
3. 웹 브라우저 요청 흐름 (0) | 2025.02.17 |
2. URI (0) | 2025.02.16 |