인터넷 통신
- 클라이언트와 서버가 가까이에 있다면 단순히 케이블을 연결해서 처리할 수도 있다.
- 그러나 실제로는 멀리있는 서버와 통신하는 경우가 대부분을 차지한다.
- 멀리있는 서버와 통신하기 위해서는 인터넷을 통해서 통신해야 한다.
- 인터넷을 통해서 통신하기 위해서는 여러 종류의 케이블들과 중간 서버 노드들을 거치는 등 복잡한 상황이 자주 등장한다.
- 인터넷을 통해서 통신할 때는 전송한 데이터가 목적지까지 안전하게 도착했는지 알 수 있는 방법이 필요하다.
IP
IP(Internet Protocol)란?
- 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약
- 인터넷에서 가장 중요한 프로토콜 중 하나
- 모든 인터넷 트래픽의 기반 역할을 한다.
- 예시 : TCP, UDP, HTTP, HTTPS 등
IP의 역할
- 데이터 주소 지정
- IP는 각 컴퓨터와 장치에 고유한 IP 주소를 할당하여 인터넷에서 식별할 수 있도록 한다.
- 패킷화
- IP는 데이터를 패킷(Packet)이라고 불리는 작은 단위로 나누어 전송한다.
- IP 패킷은 다양한 정보를 가지고 있다.
- 라우팅
- IP는 각 패킷에 목적지 주소를 지정하여 네트워크를 통해 전송한다.
- 오류 감지 및 수정
- IP는 데이터 전송 과정에서 발생하는 오류를 감지하고 수정한다.
IP 프로토콜의 한계점
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 패킷이 도중에 사라지는 경우
- 패킷이 순서대로 오지 않는 경우
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상인 경우
IP 패킷의 구성
- 구성
- IP 패킷 > 전송 데이터
- IP 패킷
- 출발지 IP 주소
- 목적지 IP 주소
- 기타 등등
- 전송 데이터
TCP
TCP(Transmission Control Protocol)란?
- 네트워크 망에 연결된 컴퓨터 프로그램 간 데이터 교환을 제어해주는 프로토콜
- IP 프로토콜 위에서 IP 프로토콜을 보완하는 역할을 한다.
TCP의 역할
- 연결 관리
- 송신자와 수신자 간에 가상적인 통신 채널을 설정하고 관리한다.
- 3-way handshake 과정을 통해 연결을 설정한다.
- 4-way handshake 과정을 통해 연결을 종료한다.
- 신뢰성 있는 데이터 전송
- 데이터를 패킷으로 나누어 전송하고, 각 패킷에 순서 번호를 부여하여 순서대로 전달되도록 한다.
- 오류 검증 체크섬을 사용하여 데이터 손실을 감지하고, 손실된 데이터는 재전송한다.
- 흐름 제어
- 송신자와 수신자의 버퍼 크기를 고려하여 데이터 전송 속도를 조절한다.
- 윈도우 사이즈를 사용하여 송신자가 한 번에 전송할 수 있는 데이터 양을 제어한다.
- 혼잡 제어
- 네트워크 혼잡을 감지하고, 혼잡을 줄이기 위해 데이터 전송 속도를 조절한다.
- 슬로우 스타트 알고리즘과 컨제스션 어보이던스 알고리즘을 사용하여 혼잡을 관리한다.
TCP의 장점
- 신뢰성
- TCP는 데이터 전송 과정에서 오류가 발생할 경우 재전송 처리를 하여 신뢰성 있는 데이터 전송을 보장한다.
- 순서 보장
- TCP는 데이터 세그먼트가 도착 순서를 보장한다.
- 흐름 제어
- TCP는 송신측과 수신측의 버퍼 크기를 고려하여 데이터 전송 속도를 제어한다.
- 혼잡 제어
- TCP는 네트워크 혼잡 상황을 감지하여 데이터 전송 속도를 조절하여 혼잡을 완화한다.
- 보안
- TCP는 연결 설정 과정을 통해 서로 인증하고 데이터 암호화 등의 보안 기능을 제공한다.
TCP의 단점
- 느린 속도
- TCP는 연결 설정 과정과 오류 처리 과정으로 인해 UDP보다 속도가 느리다.
- 높은 오버헤드
- TCP는 헤더 정보가 많아 UDP보다 오버헤드가 높다.
- 복잡성
- TCP는 구현이 복잡하고 사용하기 어렵다.
TCP/IP 패킷의 구성
- 구성
- IP 패킷 > TCP 세그먼트 > 전송 데이터
- IP 패킷
- 출발지 IP 주소
- 목적지 IP 주소
- 기타 등등
- TCP 세그먼트
- 출발지 PORT
- 목적지 PORT
- 전송 제어
- 순서
- 검증 정보
- 기타 등등
- 전송 데이터
UDP
UDP(User Datagram Protocol)란?
- IP를 사용하는 네트워크 내에서 컴퓨터간 메시지들이 교환될 때 제한된 서비스만 제공하는 프로토콜
- TCP와 유사하지만 연결 지향이 아닌 비연결 지향 방식으로 데이터를 전송한다.
UDP의 역할
- 데이터그램 전송
- UDP는 데이터그램이라는 단위로 데이터를 전송한다.
- 데이터그램은 헤더와 데이터로 구성되며 헤더에는 소스 포트 번호, 목적지 포트 번호, 길이, 체크섬 등의 정보가 포함된다.
- 포트 번호 매핑
- UDP는 포트 번호를 사용하여 애플리케이션을 식별한다.
- 출발지(소스) 포트 번호는 데이터를 보내는 애플리케이션을 식별한다.
- 목적지 포트 번호는 데이터를 받는 애플리케이션을 식별합니다.
- 오류 검사
- UDP는 체크섬을 사용하여 데이터 전송 오류를 검사한다.
- 체크섬은 데이터그램의 헤더와 데이터를 기반으로 계산되며 수신 측에서 검증된다.
UDP의 장점
- 빠른 속도
- UDP는 연결 설정 과정 없이 데이터를 전송하기 때문에 TCP보다 빠른 속도로 데이터를 전송할 수 있다.
- 낮은 오버헤드
- UDP는 TCP보다 헤더 정보가 적기 때문에 오버헤드가 낮다.
- 간편함
- UDP는 TCP보다 구현이 간단하고 사용하기 쉽다.
UDP의 단점
- 신뢰성 부족
- UDP는 데이터 전송 과정에서 오류가 발생할 수 있다.
- 오류 발생 시 재전송 처리를 하지 않는다.
- 순서 보장 부족
- UDP는 데이터그램이 도착 순서를 보장하지 않는다.
- 보안 취약점
- UDP는 연결 설정 과정 없이 데이터를 전송하기 때문에 spoofing 공격 등의 보안 취약점에 취약하다.
PORT
- 하나의 컴퓨터가 통신할 때 IP 프로토콜만 사용하면 내가 통신을 실행한 프로세스와 응답받은 프로세스가 다를 수 있다.
- 출발지와 목적지를 명확히 구분하기 위해 TCP/IP 패킷에는 PORT라는 정보가 들어간다.
- PORT는 같은 IP 내에서 프로세스를 구분하기 위해 사용한다.
- 0번에서 65535번까지 할당할 수 있다.
- 0번에서 1023번까지는 잘 알려진 포트이기 때문에 사용하지 않는 것이 좋다.
- FTP : 20, 21
- TELNET : 23
- HTTP : 80
- HTTPS : 443
DNS
- IP 주소는 기억하기 어렵고, 변경될 수 있다.
- IP 주소의 문제를 해결하기 위해 DNS가 도입됬다.
- DNS란 Domain NAme System의 약자로 인터넷 상의 전화번호부 역할을 한다.
- 웹 서비스 제공자는 각 서비스의 IP 주소를 고유한 이름으로 DNS 서버에 저장한다.
- 클라이언트가 특정 도메인에 접근하면 DNS 서버가 해당 도메인을 사용하는 IP 주소를 반환한다.
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 (4계층)
- HTTP
- FTP
- 전송 계층 (3계층)
- TCP
- UDP
- 인터넷 계층 (2계층)
- IP
- 네트워크 인터페이스 계층 (1계층)