본문 바로가기

분류 전체보기32

신뢰적인 데이터 전송의 원리 3.4 신뢰적인 데이터 전송의 원리 상위 계층 객체에게 제공되는 서비스 추상화는 데이터가 전송될 수 있는 신뢰적인 채널의 서비스 추상화다. 이러한 서비스 추상화를 구현하는 것이 신뢰적인 데이터 전송 프로토콜(reliable data transfer protocol)의 의무다. 이 작업은 신뢰적인 전송 프로토콜의 '아래에 있는' 계층이 신뢰적이지 않을 수 있어서 어려워진다. TCP는 비신뢰적인 종단 간의 네트워크 계층(IP)의 바로 상위에 구현된 신뢰적인 데이터 전송 프로토콜이다. 여기서 신뢰적이지 않은 계층 위에 어떻게 신뢰성이 있는 데이터 전송 프로토콜을 개발할 것인지에 대해 알아본다. 3.4.1 신뢰적인 데이터 전송 프로토콜의 구축 완벽하게 신뢰적인 채널상에서의 신뢰적인 데이터 전송 : rdt 1.0.. 2024. 2. 1.
UDP 3.3 비연결형 트랜스포트 : UDP RFC 768에서 정의된 UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 동작한다. UDP는 다중화/역다중화 기능과 간단한 오류 검사 기능을 제외하면 IP에 아무것도 추가하지 않는다. UDP는 세그먼트를 송신하기 전에 송신 트랜스포트 계층 개체들과 수신 트랜스포트 계층 개체들 사이에 핸드셰이크를 사용하지 않는다. 이런 이유로 UDP를 비연결형이라고 한다. UDP가 유용한 경우 무슨 데이터를 언제 보낼지에 대해 애플리케이션 레벨에서 더 정교한 제어 : 애플리케이션 프로스세가 데이터를 UDP에게 데이터를 전달하자마자 UDP는 데이터를 UDP 세그먼트로 만들고, 그 세그먼트를 즉시 네트워크 계층으로 전달한다. TCP는 혼잡 제어 메커니즘을 갖고 있다. 혼잡 .. 2024. 1. 29.
트랜스포트 계층 개요, 다중화와 역다중화 3.1 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜은 각기 다른 호스트에서 동작하는 애플리케이션 프로세스간의 논리적 통신(logical communication)을 제공한다. 애플리케이션의 관점에서 보면 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보인다. 애플리케이션 프로세스는 메시지 운반에 사용되는 물리적 인프라스트럭처의 세부 사항에 상관없이 서로 메시지를 송신하기 위해 트랜스포트 계층에서 제공하는 논리적 통신을 사용한다. 트랜스포트 계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현된다. 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 트랜스 포트 계층 세그먼트(segment)라고 알려진 트랜스포트 계층 패킷으로 변환한다. 애플리케이션 메시지.. 2024. 1. 26.
DNS 2.4 DNS: 인터넷의 디렉터리 서비스 인터넷 호스트는 호스트 이름(hostname)으로 식별할 수 있다. www.facebook.com, www.google.com 등으로 식별한다. 호스트 이름은 영문자와 숫자로 되어있으므로 라우터가 처리하는데 어려움이 있다. 이러한 이유로 호스트는 IP 주소(IP address)로도 식별된다. 2.4.1 DNS가 제공하는 서비스 DNS(domain name system)는 호스트 이름을 IP 주소로 변환해준다. DNS는 DNS 서버들의 계층구조로 구현된 분산 데이터베이스이다. 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 프로토콜이다. DNS 프로토콜은 UDP상에서 수행되고, 포트번호는 53번을 이용한다. DNS는 호스트 이름을 IP 주소로 변환하는 .. 2024. 1. 22.
웹과 HTTP 2.2 웹과 HTTP 2.2.1 HTTP 개요 HTTP(HyperText Transfer Protocol) 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신한다. HTTP는 메시지의 구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있다. HTTP는 TCP를 전송 프로토콜로 사용한다. HTTP 클라이언트는 먼저 서버에 TCP 연결을 시작한다. 일단 연결이 이루어지면, 브라우저와 서버 프로세스는 그들의 소켓 인터페이스를 통해 TCP로 접속한다. HTTP는 TCP를 사용하기 때문에, 신뢰적인 데이터 전송 서비스를 제공한다. HTTP 서버는 클라이언트에 대한 정보를 유지하지 않는다. HTTP는 비상태 프로토콜(stateless protocol)이다. 2.2.2 비.. 2024. 1. 15.
네트워크 애플리케이션의 원리 2.1 네트워크 애플리케이션의 원리 2.1.1 네트워크 애플리케이션 구조 클라이언트-서버 구조(client-server architecture)에서는 항상 동작하고 있는 호스트를 서버(server)라고 부르는데, 서버와의 서비스는 클라이언트(client)라는 다른 호스트들로부터 서비스 요청을 받는다. 클라이언트-서버 구조에서는 클라이언트 서로가 직접적으로 통신하지 않는다. 클라이언트-서버 구조에서는 서버가 고정 IP 주소라는 잘 알려진 주소를 갖는다. 서버는 항상 동작하고 있으므로 클라이언트는 서버 주소로 패킷을 보내서 언제든지 서버에 연결할 수 있다. P2P 구조에서는 항상 켜져 있는 인프라스트럭처 서버에 최소로 의존한다.(혹은 전혀 의존하지 않음). 대신에 애플리케이션은 피어(peer)라는 간헐적으로.. 2024. 1. 10.