문자열 바인딩

문자열 바인딩은 바인딩 개체 UUID, RPC 프로토콜 시퀀스, 네트워크 주소 및 엔드포인트 및 엔드포인트 옵션을 나타내는 문자열로 구성된 서명되지 않은 문자열입니다.

ObjectUUID@ProtocolSequence:NetworkAddress[Endpoint,Option]

매개 변수

ObjectUUID

원격 프로시저 호출에 의해 작동하는 개체의 UUID입니다. 서버에서 RPC 런타임 라이브러리는 개체 형식을 관리자 진입점 벡터(함수 포인터 배열)에 매핑하여 올바른 관리자 루틴을 호출합니다. 개체 UUID를 관리자 진입점 벡터에 매핑하는 방법에 대한 자세한 내용은 인터페이스 등록을 참조하세요.

ProtocolSequence

RPC 프로토콜(예: ncacn), 전송 프로토콜(예: TCP) 및 네트워크 프로토콜(예: IP)의 유효한 조합을 나타내는 문자열입니다. Microsoft RPC는 프로토콜 시퀀스 상수에 지정된 다음 프로토콜을 지원합니다.

NetworkAddress

원격 프로시저 호출을 받을 시스템의 네트워크 주소입니다.

참고

Windows XP에서는 다음 프로토콜 시퀀스가 지원되지 않습니다.

네트워크 주소의 형식과 콘텐츠는 다음과 같이 지정된 프로토콜 시퀀스에 따라 달라집니다.

프로토콜 시퀀스 네트워크 주소 예제
ncacn_nb_tcp 컴퓨터 이름 Myserver
ncacn_nb_ipx 컴퓨터 이름 Myserver
ncacn_nb_nb 컴퓨터 이름 Myserver
ncacn_ip_tcp 4 옥텟 인터넷 주소 또는 호스트 이름입니다. IPv6 네트워크 스택이 설치된 경우 IPv6이 완전히 지원되고 IPv6 주소도 허용됩니다. 128.10.2.30 anynode.microsoft.com
ncacn_np 서버 이름(선행 이중 백슬라이쉬는 선택 사항임) myserver \\myotherserver
ncacn_spx IPX 인터넷 주소 또는 서버 이름 ~0000000108002B30612C myserver
ncacn_dnet_nsp 영역 및 노드 구문 4.120
ncacn_at_dsp 컴퓨터 이름( 필요에 따라 @ 및 AppleTalk 영역 이름) 영역이 제공되지 않은 경우 기본값은 클라이언트 영역인 @*입니다. servername@zonename 서버 이름
ncacn_vns_spp 양식의 StreetTalk 서버 이름 item@group@organization printserver@sdkdocs@microsoft
ncadg_mq 서버 이름 Myserver
ncacn_http 인터넷 주소(4진수 또는 식별 이름 또는 로컬 서버 이름) 128.10.2.30 somesvr@anywhere.com mylocalsvr
ncadg_ip_udp 48진수 인터넷 주소 또는 호스트 이름 128.10.2.30 anynode.microsoft.com
ncadg_ipx IPX 인터넷 주소 또는 서버 이름 ~0000000108002B30612C myserver
ncalrpc 머신 이름 thismachine

네트워크 주소 필드는 선택 사항입니다. 네트워크 주소를 지정하지 않으면 문자열 바인딩이 로컬 호스트를 참조합니다. ncalrpc 프로토콜 시퀀스를 사용할 때 로컬 컴퓨터의 이름을 지정할 수 있지만 이렇게 하는 것은 완전히 필요하지 않습니다.

끝점

원격 프로시저 호출을 수신하는 프로세스의 엔드포인트 또는 주소입니다. 엔드포인트 앞에는 키워드(keyword) endpoint=가 있을 수 있습니다. 서버가 엔드포인트 매퍼에 바인딩을 등록한 경우 엔드포인트를 지정하는 것은 선택 사항입니다. RpcEpRegister를 참조하세요.

엔드포인트의 형식과 콘텐츠는 다음 엔드포인트/옵션 테이블에 표시된 대로 지정된 프로토콜 시퀀스에 따라 달라집니다.

옵션

프로토콜별 옵션입니다. 옵션 필드는 필요하지 않습니다. 각 옵션은 구문 옵션= 이름옵션 값을 사용하는 {name, value} 쌍으로 지정됩니다. 옵션은 다음 엔드포인트/옵션 테이블에 표시된 대로 각 프로토콜 시퀀스에 대해 정의됩니다.

프로토콜 시퀀스 엔드포인트 예제 옵션 이름
ncacn_nb_tcp 1에서 254 사이의 정수입니다. 0에서 32 사이의 많은 값은 Microsoft에서 예약합니다. 100 없음
ncacn_nb_ipx (위와 같이) (위와 같이) 없음
ncacn_nb_nb (위와 같이) (위와 같이) 없음
ncacn_ip_tcp 인터넷 포트 번호입니다. 1025 없음
ncacn_np 명명된 파이프입니다. 이름은 "\\pipe"로 시작해야 합니다. \\pipe\\pipename 보안
ncacn_spx 1에서 65535 사이의 정수입니다. 5,000 없음
ncacn_dnet_nsp DECnet 단계 IV 개체 번호(# 문자 앞에 와야 합니다) 또는 개체 이름입니다. mailserver #17 없음
ncacn_at_dsp 최대 22바이트 길이의 문자열입니다. myservicesendpoint 없음
ncacn_vns_spp 250에서 511 사이의 덩굴 SPP 포트 번호입니다. 500 없음
ncadg_mq 1에서 65535 사이의 정수입니다. 5,000 없음
ncacn_http 인터넷 포트 번호입니다. 2215 HTTP 및 RPC 프록시 서버 이름, HttpConnection 옵션
ncadg_ip_udp 인터넷 포트 번호입니다. 1025 없음
ncadg_ipx 1에서 65535 사이의 정수입니다. 5,000 없음
ncalrpc 애플리케이션 또는 서비스 이름을 지정하는 문자열입니다. 문자열에는 백슬래시 문자가 포함될 수 없습니다. my_printer 보안

ncacn_http 프로토콜 시퀀스에 지원되는 HttpConnectionOption 옵션 이름은 다음 값을 사용합니다.

옵션 이름
HttpConnectOption UseHttpProxy

HttpConnectionOption을 사용하면 HTTP 연결을 만들 때 RPC의 동작을 지시할 수 있습니다. UseHttpProxy 값은 클라이언트가 인터넷 Explorer 로컬 주소에 대해 프록시 서버를 우회하도록 설정된 경우를 포함하여 항상 Http 프록시를 통해 트래픽을 라우팅하도록 RPC에 지시합니다. 이 옵션은 클라이언트가 Http 프록시를 통해 RPC 프록시에 강제로 연결하도록 지시합니다. 이렇게 하면 HTTP 프록시를 사용하기 직전에 RPC 서버 검색이 지연되므로 연결 설정 시간이 빨라집니다.

HttpConnectionOption 옵션을 사용하고 클라이언트의 인터넷 Explorer 해당 Http 프록시를 사용하도록 구성되지 않은 경우 RPC_S_INVALID_NETWORK_OPTIONS 연결이 실패할 수 있습니다.

HttpConnectOption=UseHttpProxy

HttpConnectionOption에 대한 자세한 내용은 RPC 전송으로 HTTP 사용을 참조하세요.

ncalrpc, ncacn_np, ncadg_ip_udp 및 ncadg_ipx 프로토콜 시퀀스에 지원되는 보안 옵션 이름은 다음 옵션 값을 사용합니다.

옵션 이름 옵션 값
보안 {identification | anonymous | impersonation} {dynamic | static} {true | false}

보안 옵션 이름을 지정하는 경우 각 보안 옵션 값 집합에서 하나의 항목도 제공해야 합니다. 옵션 값은 단일 공백 문자로 구분해야 합니다. 예를 들어 다음 옵션 필드는 유효합니다.

Security=identification dynamic true
Security=impersonation static true

보안 옵션 값은 다음과 같은 의미를 갖습니다.

보안 옵션 값 Description
익명 클라이언트가 서버에 대해 익명입니다.
동적 클라이언트 보안 ID의 변경 내용은 서버가 전송 보안을 사용할 때 서버에서 볼 수 있습니다. LRPC(ncalrpc) 전송 수준 보안 및 로컬 명명된 파이프(ncacn_np) 전송 수준 보안의 기본 모드입니다.
False 유효 = FALSE; OFF로 설정된 설정을 포함하여 모든 토큰 권한 설정은 서버의 토큰에 포함되며 서버에서 사용하도록 설정할 수 있습니다. 권한은 동일한 컴퓨터 RPC 호출에만 관련됩니다.
ID 서버에 클라이언트에 대한 정보가 있지만 가장할 수는 없습니다.
가장 서버는 로컬 시스템 내에서 클라이언트를 대신하여 작동할 수 있습니다(전송 수준 보안은 위임을 지원하지 않음).
정적 서버에서 전송 보안을 사용하는 경우 클라이언트 보안 ID의 변경 내용은 서버에서 볼 수 없습니다. 원격 명명된 파이프(ncacn_np) 전송 수준 보안에 사용할 수 있는 유일한 모드입니다. 호출자의 ID는 바인딩 핸들이 생성되는 시점이 아니라 해당 바인딩 핸들에 대한 첫 번째 원격 프로시저 호출 중에 저장됩니다.
True 유효 = TRUE; ON으로 설정된 토큰 권한 설정만 서버의 토큰에 포함됩니다. 이 옵션을 사용하는 경우 서버에서 OFF로 설정된 권한을 설정할 수 없습니다. 권한은 동일한 컴퓨터 RPC 호출에만 관련됩니다.

보안 옵션에 대한 자세한 내용은 보안을 참조하세요.

설명

옵션 구문에 필요한 경우를 제외하고 문자열 바인딩에는 공백이 허용되지 않습니다. NetworkAddress, 엔드포인트옵션 필드의 기본 설정은 ProtocolSequence 멤버의 값에 따라 달라집니다.

모든 문자열 바인딩 필드의 경우 단일 백슬래시 문자(\)가 이스케이프 문자로 해석됩니다. 단일 리터럴 백슬래시 문자를 지정하려면 두 개의 백슬래시 문자(\\)를 제공해야 합니다.

문자열 바인딩에는 바인딩 핸들의 문자 표현과 바인딩 핸들의 일부분이 포함됩니다. 문자열 바인딩은 바인딩 핸들의 일부를 나타내는 데 편리하지만 원격 프로시저 호출에는 사용할 수 없습니다. 먼저 RpcBindingFromStringBinding을 호출하여 바인딩 핸들로 변환해야 합니다.

또한 문자열 바인딩에는 바인딩 핸들의 모든 정보가 포함되지 않습니다. 예를 들어 바인딩 핸들과 연결된 인증 정보가 RpcBindingToStringBinding을 호출하여 반환된 문자열 바인딩으로 변환되지 않습니다.

분산 애플리케이션을 개발하는 동안 서버는 문자열 바인딩을 사용하여 클라이언트에 바인딩 정보를 전달하여 엔드포인트 맵 데이터베이스 또는 이름 서비스 데이터베이스를 사용하지 않고 클라이언트-서버 관계를 설정할 수 있습니다. 이러한 관계를 설정하려면 RpcBindingToStringBinding 함수를 사용하여 바인딩 핸들 벡터에서 문자열 바인딩으로 하나 이상의 바인딩 핸들을 변환하고 클라이언트에 문자열 바인딩을 제공합니다.

예제

다음은 유효한 문자열 바인딩의 예입니다. 이러한 예제에서 obj-uuid 는 편의를 위해 문자열 형식으로 유효한 UUID를 나타내는 데 사용됩니다. UUID 308FB580-1EB2-11CA-923B-08002B1075A7을 표시하는 대신 obj-uuid를 보여 줍니다.

obj-uuid@ncadg_mq:mymqserver
obj-uuid@ncacn_http:major7.microsoft.com[2225]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
    RpcProxy=websvr1.microsoft.com:80]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
    RpcProxy=websvr1.microsoft.com:80,HttpConnectOption=UseHttpProxy]
obj-uuid@ncacn_ip_tcp:16.20.16.27[2001]
obj-uuid@ncacn_ip_tcp:16.20.16.27[endpoint=2001]
obj-uuid@ncacn_nb_nb:
obj-uuid@ncacn_nb_nb:[100]
obj-uuid@ncacn_np:
obj-uuid@ncacn_np:[\\pipe\\p3,Security=impersonation static true]
obj-uuid@ncacn_np:\\\\marketing[\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\marketing[endpoint=\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\sales
obj-uuid@ncacn_np:\\\\sales[\\pipe\\p1,Security=identification dynamic true]
obj-uuid@ncalrpc:
obj-uuid@ncalrpc:[object1_name_demonstrating_that_these_can_be_lengthy]
obj-uuid@ncalrpc:[object2_name,Security=anonymous static true]
obj-uuid@ncacn_vns_spp:server@group@org[500]
obj-uuid@ncacn_dnet_nsp:took[elf_server]
obj-uuid@ncacn_dnet_nsp:took[endpoint=elf_server]
obj-uuid@ncadg_ip_udp:128.10.2.30
obj-uuid@ncadg_ip_udp:maryos.microsoft.com[1025]
obj-uuid@ncadg_ipx: ~0000000108002B30612C[5000]
obj-uuid@ncadg_ipx:printserver
obj-uuid@ncacn_spx:annaw[4390]
obj-uuid@ncacn_spx:~0000000108002B30612C

RpcBindingFromStringBinding

RpcBindingToStringBinding

RpcEpRegister

HTTP를 RPC 전송으로 사용