전체 글 206

컴퓨터 네트워크 3장- 혼잡제어

3.7 TCP 혼잡 제어 IP 계층은 네트워크 혼잡에 관해 종단 시스템에게 어떠한 직접적인 피드백도 제공하지 않으므로 전통적인 TCP는 네트워크 지원 혼잡제어 보다는 종단간의 혼잡 제어를 사용한다. 3.7.1 전통적인 TCP의 혼잡 제어 TCP가 취한 접근 방식은 네트워크 혼잡에 따라 연결에 트래픽을 보내는 전송률을 각 송신자가 제한하도록 하는 것. TCP 송신자가 자신과 목적지 간의 경로에서 혼잡이 없음을 감지 ->송신율을 높인다. TCP 송신자가 경로 사이에 혼잡을 감지 -> 송신율을 줄인다. 1. TCP 송신자는 자신의 연결에 송신자 전송 트래픽 전송률을 어떻게 제한하는가? 송신 측에서 동작하는 TCP 혼잡 제어 메커니즘은 추가적인 변수인 혼잡 윈도(congestion window)를 추적한다. c..

컴퓨터 네트워크 3장-혼잡 제어의 원리

3.6 혼잡 제어의 원리 네트워크 혼잡의 원인 : 너무 많은 출발지가 너무 높은 속도로 많은 데이터를 보내려고 시도 -> 이를 처리하기 위해서는 네트워크 혼잡을 일으키는 송신자들을 제어하는 매커니즘이 필요 3.6.1 혼잡의 원인과 비용 시나리오 1 : 2개의 송신자와 무한 버퍼를 갖는 하나의 라우터 -> buffer overflow 가 나지 않음 두 호스트 A와 B가 각각 출발지와 목적지 사이에서 단일 홉을 공유하는 연결을 갖는다. 호스트 A와 B의 애플리케이션이 λin 바이트/초의 평균 전송률로 데이터를 전송하고 있다. 라우터 버퍼의 양은 무한하다고 가정한다. 연결당 처리량(per-connection throughput) : 수신자 측에서의 초당 바이트 수 0 ~ R/2 사이의 전송률 : 수신자 측의 ..

컴퓨터 네트워크 3장 - 연결지향형 트랜스포트: TCP

3.5 연결지향형 트랜스포트: TCP TCP(인터넷의 트랜스포트 계층, 연결형, 신뢰적인 트랜스포트 프로토콜) 신뢰적인 데이터 전송을 위해 오류검출, 재전송, 누적확인응답, 타이머, 확인응답 번호를 위한 헤더필드를 포함. byte stream -> 데이터를 끝없이 연 3.5.1 TCP 연결 TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에, 두 프로세스가 서로 ’핸드셰이크’를 먼저 해야 하므로 연결지향형이다. ->( UDP는 비연결지향형이므로 핸드셰이크X) 즉, 데이터 전송을 보장하는 파라미터들을 각자 설정하기 위한 어떤 사전 세그먼트들을 보내야 한다. TCP연결은 회선교환 네트워크에서와 같은 종단 간의 TDM이나 FDM이 아니다. 대신 연결은 두 통신 종단 시스템의 TCP에 존재하..

컴퓨터 네트워크 3장- 신뢰적인 데이터 전송의 원리

3.4 신뢰적인 데이터 전송의 원리 일반적인 신뢰적인 데이터 전송 문제를 다룬다. 신뢰적인 데이터 전송을 구현하는 문제가 트랜스포트 계층뿐만 아니라 링크계층과 애플리케이션 계층에서도 발생할 수 있기 때문에. 신뢰적인 채널에서는 전송된 데이터가 손상되거나 손실되지 않으며, 모든 데이터는 전송된 순서 그대로 전달된다. - >TCP가 인터넷 애플리케이션에게 제공하는 서비스 모델 데이터 전송 프로토콜의 송신 측은 rdt_send() 호출로 위쪽으로부터 호출될 것이며, 수신 측에서는 상위 계층으로 전달될 데이터를 넘길 것이다. rdt : 신뢰적인 데이터 전송(reliable data transfer) 프로토콜을 나타낸다. _send : rdt의 송신 측이 호출되고 있음을 나타낸다. 수신 측에서 rdt_rcv()는..

컴퓨터 네트워크 3장- 비연결형 트랜스포트: UDP

3.3 비연결형 트랜스포트: UDP UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 동작한다. 다중화/역다중화 기능 간단한 오류 검사 기능 이외에는 IP에 아무것도 추가하지 않는다. UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소한으로 움직인다. 다중화/역다중화와 간단한 오류검사 기능을 제외하면 IP에 아무것도 추가하지 않는다. TCP 대신 UDP를 선택했다면 애플리케이션은 거의 IP와 직접 통신한 것이다. 애플리케이션 프로세스로부터 메시지를 가져와서 다중화/역다중화 서비스에 필요한 출발지 포트 번호 필드와 목적지 포트 번호 필드를 첨부한다. 출발지 호스트의 IP 주소 필드, 목적지 호스트의 IP 주소 필드를 추가한 후에 최종 트랜스포트 계층 세그먼트를 네트워크 계층으로 넘겨준다. 네..

컴퓨터 네트워크 3장- 다중화와 역다중화

3.2 다중화와 역다중화 트랜스포트 계층 다중화(multiplexing)와 역다중화(demultiplexing) 프로세스는 소켓을 갖구있다. 이로 인해 네트워크에서 프로세스로 데이터를 전달하고, 프로세스로부터 네트워크 데이터를 전달하는 출입구 역할을 한다. 수신측 Host의 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않는다. 이것을 소켓에게 전달한다. 식별자 포맷은 UDP인지 TCP인지에 따라 달라진다. 유일한 식별자를 가진다(포트 번호). 1.목적지 호스트에서의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신한다. 트랜스포트 계층은 호스트에서 동작하는 해당 애플리케이션 프로세스에게 이 세그먼트의 데이터를 전달하는 의무를 가진다. 2. 트랜스포트 계층은 세그먼트(데이터..

컴퓨터 네트워크 3장- 트랜스포트 계층 서비스 및 개요

3.1 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜은 각기 다른 호스트에서 동작하는 애플리케이션 프로세스 간의 논리적 통신을 제공한다. 논리적 통신은 애플리케이션 관점에서 보면 프로세스들이 동작하는 Host들이 직접연결된 것처럼 보인다는것을 의미. 트랜스포트 계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현된다. 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 트랜스포트 계층 패킷(segment)으로 변환한다. 애플리케이션 메시지를 작은 조각으로 분할한다. 각각의 조각에 트랜스포트 계층 헤더를 추가한다. 트랜스포트 계층은 송신 종단 시스템에 있는 네트워크 계층으로 세그먼트를 전달한다. 세그먼트는 네트워크 계층 패킷(데이터그램(datagram) : L3-..

컴퓨터 네트워크 2장 - DNS: 인터넷의 디렉터리 서비스

2.4 DNS: 인터넷의 디렉터리 서비스 인터넷 호스트의 식별자 중 하나는 www.facebook.com, www.google.com 등의 호스트 이름(hostname)이다. 그러나 호스트의 이름은 인터넷에서의 호스트 위치에 대한 정보를 거의 제공하지 않는다. 가변 길이의 알파뉴메릭 문자로 구성되므로 라우터가 처리하는 데 어려움이 있다. 이러한 이유로 호스트는 흔히 말하는 IP 주소(IP address)로 식별된다. 2.4.1 DNS(Domain Name System)가 제공하는 서비스 사람 : 호스트 이름 식별자 선호 라우터: 고정 길이의 계층구조를 가진 IP주소 선호 -> 절충하기 위해 IP주소를 변환해주는 디렉터리 서비스가 필요 => 이것이 인터넷 DNS 주요 임무 DNS DNS 서버들의 계층구조로..

컴퓨터 네트워크 2장 - 웹과 HTTP

2.2 웹과 HTTP 웹의 온디맨드(on-demand) 방식은 사용자가 원할 때 원하는 것을 수신한다. 웹 페이지(web page) 웹 페이지는 객체들로 구성된다. (단일 URL로 지정할 수 있는 하나의 파일) 웹 브라우저와 클라이언트 웹 브라우저는 HTTP의 클라이언트 측을 구현하기 때문에, 웹의 관점에서 브라우저와 클라이언트(client)라는 용어를 혼용하여 사용한다. 웹 서버(Web server)는 URL로 각각을 지정할 수 있는 웹 객체를 갖고 있다. 사용자가 웹페이지 요청할때 브라우저는 페이지 내부의 객체에 대한 HTTP 요청 메세지를 서버에게 보낸다. 서버는 요청을 수신하고 객체를 포함하는 HTTP 응답 메시지로 응답한다 클라이언트: 요청을 보내고 받으며(HTTP 프로토콜 사용), 웹 객체를 ..

컴퓨터 네트워크 2장 - 네트워크 애플리케이션의 원리

2.1 네트워크 애플리케이션의 원리 스위치는 정보처리를 하지않는다 - > Host에서 이루어진다. 종단시스템(end System)에서 동작하도록 마든다. 2.1.1 네트워크 애플리케이션 구조 애플리케이션 개발자는 네트워크 구조는 고정되어 있고 해당 애플리케이션에 특정 서비스 집합을 제공한다. 반면, 애플리케이션 구조는 애플리케이션 개발자가 설계하며, 애플리케이션이 여러 종단 시스템에서 어떻게 조직되어야 하는지를 알려준다 두가지 구조가 유명하다. 클라이언트-서버(client-server) 구조 항상 동작하고 있는 서버가 존재(언제 요청이 올지 모르니)하고, 클라이언트라는 다른 호스트들로부터 서비스 요청을 받는다. 클라이언트는 서로 직접적으로 통신하지 않는다.(서버를 거쳐서 통신) 서버는 잘 알려진 고정 I..