인터넷 전송 프로토콜이 제공하는 서비스
인터넷 애플리케이션 지원 유형
- 인터넷은 애플리케이션에게 2개의 전송 프로토콜을 제공 → TCP와 UDP
- 여기서 인터넷은 일반적인 TCP/IP 네트워크를 뜻함
- TCP와 UDP는 서로 다른 서비스 모델을 제공한다.
TCP 서비스
- TCP 서비스 모델은
연결지향적 서비스
와신뢰적인 데이터 전송 서비스
를 제공한다.연결지향형 서비스
- 과정- 메시지 전송 전에, TCP는 클라이언트와 서버가 서로 제어 정보를 교환하게 한다.
→ 핸드셰이킹 과정: 클라이언트와 서버에 패킷이 곧 도달한다는 것을 알려주는 역할 - 핸드셰이킹 과정 이후, TCP 연결이 두 프로세스의 소켓 사이에 존재한다고 칭함
- 해당 연결은 메시지를 동시에 보낼 수 있기 때문에 전이중(full-duple) 연결
- 애플리케이션이 메시지 전송을 마치면 연결을 끊음
- 메시지 전송 전에, TCP는 클라이언트와 서버가 서로 제어 정보를 교환하게 한다.
신뢰적 데이터 전송 서비스
- 통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위해 TCP에 의존
- TCP는 바이트 스트림이 손실되거나 중복되지 않게 수신 소켓으로 전달한다.
- 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달할 경우
- 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달할 경우
- TCP는 혼잡 제어 방식을 채택
- 혼잡 제어 방식
- 통신하는 프로세스의 직접 이득보다 인터넷 전체 성능 향상을 위한 서비스 제공
- TCP 혼잡 제어 방식은 네트워크가 혼잡 상태에 이르면 프로세스의 속도를 낮춤
- TCP 혼잡 제어는 각 TCP 연결이 네트워크 대역폭을 공평하게 공유할 수 있게끔 제한
- 혼잡 제어 방식
UDP
- 최소의 서비스 모델을 가진 간단한 전송 프로토콜
- 비연결형이기 때문에 두 프로세스 통신 전 핸드셰이킹을 하지 않는다.
- UDP는 비신뢰적인 데이터 전송 서비스를 제공
- UDP 소켓을 통해 메시지를 보내면, UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장 X
- 수신 소켓에 도착하는 메시지들의 순서가 뒤바뀔 수도 있음
- UDP는 혼잡 제어 방식 X
- UDP의 송신 측은 데이터를 원하는 속도로 하위 계층에 보낼 수 있다.
인터넷 트랜스포트 프로토콜이 제공하지 않는 서비스
- TCP와 UDP에 대해 처리율 혹은 시간 보장에 대한 언급은 빠져있음
- 현대 인터넷은 대부분의 시간 민감 애플리케이션에게 만족스러운 서비스를 제공할 수 없다.
트랜스포트 프로토콜을 사용하는 인터넷 애플리케이션
- 전자메일, 원격 터미널 접속, 웹, 파일 전송 = TCP 사용
→ TCP가 모든 데이터가 목적지에 도착하도록 보자 하는 신뢰적 데이터 전송 서비스를 제공 - 인터넷 전화 애플리케이션(예 : 스카이프) = TCP와 UDP 사용
- 패킷 손실을 허용하지만, 효율성을 위해 최소의 전송률이 필요 → UDP 선호
- UDP를 사용하면 혼잡 제어 방식과 패킷 오버헤드를 회피할 수 있음
- UDP를 사용하면 혼잡 제어 방식과 패킷 오버헤드를 회피할 수 있음
- 방화벽이 UDP 트래픽을 차단하도록 설정된 경우
→ 인터넷 전화는 UDP 통신 실패를 대비하여 TCP를 사용하도록 설계
- 패킷 손실을 허용하지만, 효율성을 위해 최소의 전송률이 필요 → UDP 선호
애플리케이션 계층 프로토콜
애플리케이션 계층 프로토콜의 정의
- 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법 정의
- 아래와 같은 내용을 정의
- 교환 메시지 타입
- 여러 메시지 타입의 문법
- 필드의 의미, 즉 필드에 있는 정보의 의미
- 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지 결정하는 규칙
RFC
- 여러 애플리케이션 계층 프로토콜은 RFC에 명시되어 있음
→ 공중 도메인(public domain)에서 찾을 수 있다. - 이외의 다른 애플리케이션 계층 프로토콜은 독점(비개방적)이며 공중 도메인을 구할 수 없음
- 스카이프 → 비개방 애플리케이션 계층 프로토콜 사용
HTTP 예시
- 웹 애플리케이션 계층 프로토콜 HTTP는 RFC로 얻을 수 있음
- 브라우저 개발자가 HTTP RFC 규칙을 따를 경우
→ HTTP RFC 규칙에 따른 어떠한 웹서버로부터 웹페이지를 가져올 수 있다.
네트워크 애플리케이션 vs 애플리케이션 계층 프로토콜
- 네트워크 애플리케이션과 애플리케이션 계층 프로토콜을 구분하는 것은 중요
- 애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 요소에 불과
차이점 예시
- 웹 → 웹 서버로부터 문서를 얻게 해주는 네트워크 애플리케이션
- 웹 애플리케이션의 구성요소
- 문서 포맷 표준(HTML)
- 웹 브라우저(크롬, 인터넷 익스플로러)
- 웹 서버(아파치, 마이크로소프트 서버)
- 애플리케이션 계층 프로토콜
- etc…
- 웹 애플리케이션의 구성요소
- 웹 애플리케이션 계층 프로토콜(HTTP)
→ 브라우저와 웹 서버 사이에 교환되는 메시지의 포맷과 순서를 정함
→ 따라서 HTTP는 웹 애플리케이션의 한 요소에 불과
애플리케이션 분야
웹(web)
: 매우 인기 있는 애플리케이션이고 이해하기 쉽게 간단함전자메일
: 여러 애플리케이션 계층 프로토콜을 사용 → 웹보다 복잡DNS
: 인터넷을 위한 디렉터리 서비스를 제공- 대부분의 사용자는 DNS와 직접 상호작용을 하지 않는다.
- 사용자는 다른 애플리케이션을 통해 간접적으로 제어