컴퓨터 네트워크 23

Network program

TCP/IP 통신에서는 통신할 대상 서버를 찾을 때 호스트 이름이 아니라, IP 주소가 필요하다, 예를 들면 google은 다음과 같이 DNS탐색을 할 수 있다.public class InetAddressMain { public static void main(String[] args) throws UnknownHostException { InetAddress localhost = InetAddress.getByName("localhost"); System.out.println(localhost); InetAddress google = InetAddress.getByName("google.com"); System.out.println(google); ..

네트워크 - 기본 이론

클라이언트와 서버클라이언트-서버 모델 클라이언트 : 클라이언트는 서비스를 요청하는 쪽이다. 마치 식당에서 음식을 주문하는 손님처럼, 클라이언트는 어떤 정보를 얻거나 작업을 처리해달라고 요청하는 역할을 한다 서버 : 서버는 클라이언트의 요청을 받아들이고, 그 요청에 맞게 서비스를 제공하는 쪽이다. 식당에서 음식을 준비해서 손님에게 가져다주는 주방이나 웨이터가 서버의 역할을 한다.  Main 객체가 Service 객체의 메서드를 호출하면 Main 객체는 Service 객체에게 특정 작업을 요청한 것이다. 요청을 받은 Service 객체는 요청을 수행하고 결과를 반환한다. 여기서는 Main 객체가 클라이언트이고, Service 객체가 서버가 된다. Main 객체와 Service 객체의 관계에서 Main 객체는..

InputStream, OutputStream

현대의 컴퓨터는 대부분 byte 단위로 데이터를 주고 받는다. 참고로 bit 단위는 너무 작기 때문에 byte 단위를 기본으로 사용한다. 자바 내부에 있는 데이터를 외부에 있는 파일에 저장하거나, 네트워크를 통해 전송하거나 콘솔에 출력할 때 모두 byte 단위로 데이터를 주고 받는다. 스트림을 사용하면 파일을 사용하든, 소켓을 통해 네트워크를 사용하든 모두 일관된 방식으로 데이터를 주고 받을 수 있다. 그리고 수 많은 기본 구현 클래스들도 제공한다. InputStream, OutputStream 이 다양한 스트림들을 추상화하고 기본 기능에 대한 표준을 잡아둔 덕분에 개발자는 편리하게 입출력 작업을 수행할 수 있다. 이러한 추상화의 장점은 다음과 같다.일관성 : 모든 종류의 입출력 작업에 대해 동일한 인터..

컴퓨터 네트워크 4장- 라우터 내부

4.2 라우터 내부에는 무엇이 있을까?  위 그림을 라우터의 구조를 나타낸다.입력 포트입력 포트의 맨 왼쪽과 맨 오르쪽 박스는 라우터로 들어오는 입력 링크로, 물리 계층 기능을 수행한다.또한 입력 포트는 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크 계층 기능을 수행한다. 이것은 입력 및 출력 포트에서 미들박스로 표시된다.가장 중요한 기능은 입력 포트의 가장 오른쪽에서 수행되는 검색 기능이다. 여기서 포워딩 테이블을 참조하여 도착된 패킷이 스위치 구조를 통해 라우터 출력 포트를 결정한다.라우팅 프로토콜 정보를 전달하는 패킷인 제어 패킷은 입력 포트에서 라우팅 프로세서로 전달된다.여기서의 포트는 앞에서 언급한 포트와는 다르다.스위치 구조스위치 구조는 라우터의 입력 포트와 출력 ..

컴퓨터 네트워크 4장- 네트워크 계층 개요

두 호스트 H1과 H2가 있을 때, 네트워크 계층은 두 호스트 중 하나의 트랜스포트 계층 세그먼트를 추출하여 H2의 트랜스포트 계층까지 전달하는 역할을 한다. 라우터는 트랜스포트 계층과 애플리케이션 계층을 지원하지 않으므로 프로토콜 스택에서 네트워크 계층의 상위 계층은 존재하지 않는다.각 라우터에는 데이터 평면과 제어 평면이 존재한다.데이터 평면 : 입력 링크에서 출력 링크로 데이터그램을 전달한다.제어 평면 : 데이터그램이 출발지 호스트에서 목적지 호스트까지 전달되게끔 로컬 포워딩, 라우터별 포워딩을 대응시킨다. 송신자: 세그먼트를 헤더 + 데이터그램으로 캡슐화하여 링크 계층으로 전달함수신자: 세그먼트를 전송 계층 프로토콜로 전달함네트워크 계층 프로토콜은 모든 인터넷 장치(호스트, 라우터)에 있음라우터:..

컴퓨터 네트워크 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에 존재하..