http://www.microsoft.com/korea/TechNet/network/tcpip2k.asp
Microsoft Windows 2000 TCP/IP 구현 정보
운영 체제
백서
저자: Dave MacDonald 및 Warren Barkley
요약
이 백서는 Microsoft® Windows® 2000 운영 체제의 TCP/IP 구현 정보에 대해 설명한 Microsoft Windows 2000 TCP/IP 제품 설명서의 보충 자료입니다. 여기서는 Microsoft TCP/IP 프로토콜 제품군을 기초부터 자세히 점검해 보겠습니다. 이 백서에서는 주요 개념에 대한 설명을 돕기 위해 네트워크 추적 기법을 사용합니다. 이러한 추적 자료는 Microsoft Systems Management Server(SMS) 제품에 포함되어 있는 소프트웨어 기반 프로토콜 추적 및 분석 도구인 Microsoft 네트워크 모니터를 사용하여 수집하고 포맷하였습니다. 이 백서는 이미 TCP/IP에 익숙한 지원 전문가와 네트워크 엔지니어를 대상으로 작성되었습니다.
Microsoft사는 자체 플랫폼에 대한 전략적인 엔터프라이즈 네트워크 전송 프로토콜로 TCP/IP를 채택하였습니다. 1990년대 초, Microsoft사는 Microsoft 네트워킹의 확장성을 크게 개선하는 TCP/IP 스택과 서비스를 개발하는 야심찬 프로젝트를 시작했습니다. Microsoft사는 Microsoft® Windows NT® 3.5 운영 체제를 출시하면서 전혀 새로운 TCP/IP 스택을 선보였습니다. 이 새로운 스택은 지난 10년간 개발해 온 많은 성능 및 관리 개선 사항들을 포함하도록 설계되었습니다. 스택은 산업 표준 TCP/IP 프로토콜을 고성능의 휴대용 32비트 방식으로 구현한 것입니다. 새로운 Windows NT 버전을 출시할 때마다 새로운 기능과 서비스를 스택에 추가하여 그 성능과 안정성을 향상시켜 왔습니다.
TCP/IP 스택의 설계 목표는 다음과 같은 성능을 얻기 위한 것입니다.
- 표준과의 호환성
- 상호 운용성
- 이식성
- 확장 가능
- 고성능
- 다기능
- 자체 조정
- 관리의 편의성
- 적응성
이 백서는 Windows 2000 구현 정보에 대해 설명한 Microsoft Windows 2000 TCP/IP 설명서의 보충 자료입니다. 이 백서는 Microsoft TCP/IP 구현 정보를 기초부터 자세히 수록하고 있으며 이미 TCP/IP에 익숙한 지원 전문가와 네트워크 엔지니어를 대상으로 작성되었습니다.
이 백서에서는 주요 개념에 대한 설명을 돕기 위해 네트워크 추적 기법을 사용합니다. 이러한 추적 자료는 Microsoft Systems Management Server(SMS) 제품에 포함되어 있는 소프트웨어 기반 프로토콜 추적 및 분석 도구인 Microsoft Network Monitor 2.0을 사용하여 수집하고 포맷하였습니다. Windows 2000 Server에는 그 기능이 일부 제한된 네트워크 모니터 버전이 포함되어 있습니다. 이 버전과 Systems Management Server(SMS) 버전의 가장 큰 차이점은 기능 제한 버전의 경우 어댑터가 불규칙(promiscuous) 모드에 있어야 하는 네트워크를 통해 전달되는 모든 프레임이 아니라 그 버전이 설치된 컴퓨터에서 정상적으로 표시되는 프레임만을 캡처할 수 있다는 점입니다. 또한 이러한 기능 제한 버전에서는 원격 네트워크 모니터 에이전트에 대한 연결을 지원하지 않습니다.
용량 및 기능 | |
개요
Windows 2000용 TCP/IP 제품군을 사용하면 Microsoft 시스템을 대기업, 정부 기관 및 공용 네트워크에 손쉽게 통합한 후 해당 네트워크에서 안전하게 운영할 수 있습니다. Windows 2000은 인터넷 시대를 대비한 운영 체제입니다.
표준 기능 지원
Windows 2000에서는 다음과 같은 표준 기능들을 지원합니다.
- 미디어 종류가 서로 다른 여러 네트워크 어댑터를 결합하는 기능
- 논리 및 물리 다중홈 기능
- 내부 IP 라우팅 기능
- 인터넷 그룹 관리 프로토콜(GMP) 버전 2(IP 멀티캐스팅)
- 중복 IP 주소 검색
- 복수의 기본 게이트웨이 사용
- 작동하지 않는 게이트웨이 검색
- 자동 경로 최대 전송 단위(PMTU) 검색
- IP 보안(IPSec)
- 서비스 품질(QoS)
- 비동기 전송 모드(ATM) 서비스
- 가상 개인 네트워크(VPN)
- 계층 2 터널링 프로토콜(L2TP)
성능 개선 사항
또한 Windows 2000은 다음과 같이 성능이 개선되었습니다.
- 새로운 고속 지연 링크 알고리즘과 기본 창 크기 증가를 포함하여 처리량을 늘려주는 프로토콜 스택 조정
- TCP 확장 가능한 창 크기(RFC 1323 지원)
- 선택 승인(SACK)
- TCP 고속 재전송
- 왕복 시간(RTT) 및 재전송 초과 시간(RTO) 계산 기능 향상
- 다중 연결 관리 기능 향상
- 하드웨어 작업 오프로드 메커니즘
사용 가능한 서비스
Windows 2000 Server 패밀리를 운영 체제에 설치하면 다음과 같은 서비스들이 제공됩니다.
- 동적 호스트 구성 프로토콜(DHCP) 클라이언트 및 서비스
- Windows 인터넷 이름 서비스(WINS), NetBIOS 이름 클라이언트 및 서버
- 동적 도메인 이름 서버(DDNS)
- 전화 접속(PPP/SLIP) 지원
- 원격 가상 개인 네트워크를 위한 지점간 터널링 프로토콜(PPTP) 및 계층 2 터널링 프로토콜(L2TP)
- TCP/IP 네트워크 인쇄(lpr/lpd)
- SNMP 에이전트
- NetBIOS 인터페이스
- Windows 소켓 버전 2(Winsock2) 인터페이스
- 원격 프로시저 호출(RPC) 지원
- 네트워크 동적 데이터 교환(NetDDE)
- 광역 네트워크(WAN) 검색 지원
- 고성능 Microsoft 인터넷 정보 서비스(IIS)
- finger, ftp, rcp, rexec, rsh, telnet 및 tftp를 포함한 기본 TCP/IP 연결 유틸리티
- Character Generator, Daytime, Discard, Echo 및 Quote of the Day를 포함한 단순 네트워크 프로토콜용 서버 소프트웨어
- arp, ipconfig, nbtstat, netstat, ping, pathping, route, nslookup 및 tracert를 포함한 TCP/IP 관리 및 진단 도구
Microsoft TCP/IP 버전간 기능 비교표
아래의 표에서는 기능과 운영 체제 버전을 참조용으로 나열합니다. 이 기능들은 이 백서 전체에 걸쳐 자세히 설명됩니다.
표 1 N=아니오, Y=예, D=기본적으로 사용 안함
기능 |
Windows 95 | Windows 95 Winsock 2 | Windows 98 | Windows 98 SE | Windows NT 4.0 SP5 | Windows 2000 |
---|---|---|---|---|---|---|
작동하지 않는 게이트웨이 검색 | N | N | Y | Y | Y | Y |
VJ 고속 재전송 | N | Y | Y | Y | Y | Y |
AutoNet | N | N | Y | Y | N | Y |
선택 승인(SACK) | N | Y | Y | Y | N | Y |
점보 프레임 지원 | Y | Y | Y | Y | Y | Y |
큰 창 | N | D | D | D | N | D |
동적 도메인 이름 서버(DDNS) | N | N | N | N | N | Y |
미디어 감지 | N | N | N | N | N | Y |
Wake-On-LAN | N | N | N | N | N | Y |
IP 전달 | N | N | N | D | D | D |
NAT | N | N | N | D | N | D |
Kerberos 버전 5 | N | N | N | N | N | Y |
IP 보안(IPSec) | N | N | N | N | N | Y |
PPTP | N | N | Y | Y | Y | Y |
L2TP | N | N | N | N | N | Y |
IP 도우미 API | N | N | Y | Y | Y | Y |
Winsock2 API | N | Y | Y | Y | Y | Y |
GQoS API | N | N | Y | Y | N | Y |
IP 필터링 API | N | N | N | N | N | Y |
방화벽 후크 | N | N | N | N | N | Y |
패킷 스케줄러 | N | N | N | N | N | D |
RSVP | N | N | Y | Y | N | Y |
ISSLO | N | N | Y | Y | N | Y |
트로이 필터링 | N | N | N | N | D | D |
원본 라우팅 차단 | N | N | N | Y | Y | Y |
ICMP 라우터 검색 | N | Y | Y | Y | D | D |
오프로드 TCP | N | N | N | N | N | Y |
오프로드 IPSec | N | N | N | N | N | Y |
Microsoft Windows 2000 TCP/IP에서 지원하는 인터넷 RFC
설명 요청(RFC)은 꾸준히 개발되고 있는 인터넷 커뮤니티에서 사용되는 일련의 보고서, 프로토콜 제안이자 프로토콜 표준입니다. RFC는 FTP를 통해 다음 사이트에서 구할 수 있습니다.
- nis.nsf.net
- nisc.jvnc.net
- wuarchive.wustl.edu
- src.doc.ic.ac.uk
- normos.org
표 2 이 Microsoft TCP/IP 버전에서 지원하는 RFC
RFC | 제목 |
---|---|
768 | 사용자 데이터그램 프로토콜(UDP) |
783 | 간소화된 파일 전송 프로토콜(TFTP) |
791 | 인터넷 프로토콜(IP) |
792 | 인터넷 제어 메시지 프로토콜(ICMP) |
793 | 전송 제어 프로토콜(TCP) |
816 | 결함 격리 및 복구 |
826 | 주소 확인 프로토콜(ARP) |
854 | Telnet 프로토콜(TELNET) |
862 | Echo 프로토콜(ECHO) |
863 | Discard 프로토콜(DISCARD) |
864 | Character Generator 프로토콜(CHARGEN) |
865 | Quote of the Day 프로토콜(QUOTE) |
867 | Daytime 프로토콜(DAYTIME) |
894 | 이더넷을 통한 IP |
919, 922 | IP 브로드캐스트 데이터그램(서브넷 브로드캐스팅) |
950 | 인터넷 표준 서브네팅 프로시저 |
959 | 파일 전송 프로토콜(FTP) |
1001, 1002 | NetBIOS 서비스 프로토콜 |
1065, 1035, 1123, 1886 | 도메인 이름 시스템(DNS) |
1042 | IEEE 802 네트워크를 통한 IP 데이터그램 전송 표준 |
1055 | 직렬 회선을 통한 IP(IP-SLIP) 전송 |
1112 | 인터넷 그룹 관리 프로토콜(IGMP) |
1122, 1123 | 호스트 요구 사항(통신 및 응용 프로그램) |
1144 | 저속 직렬 링크용 압축 TCP/IP 헤더 |
1157 | 단순 네트워크 관리 프로토콜(SNMP) |
1179 | 라인 프린터 데몬 프로토콜 |
1188 | FDDI를 통한 IP |
1191 | 경로 MTU 검색 |
1201 | ARCNET을 통한 IP |
RFC | 제목 |
1256 | ICMP 라우터 검색 메시지 |
1323 | 고성능 TCP 확장(TCP1323opts 레지스트리 매개 변수 참조) |
1332 | PPP 인터넷 프로토콜 제어 프로토콜(IPCP) |
1518 | CIDR을 이용한 IP 주소 할당 아키텍처 |
1519 | 클래스 없는 도메인간 라우팅(CIDR): 주소 지정 및 집계 전략 |
1534 | DHCP와 BOOTP 사이의 상호 운용 |
1542 | 부트스트랩 프로토콜의 명시 및 확장 |
1552 | PPP 네트워크간 패킷 교환 제어 프로토콜(IPXCP) |
1661 | 지점간 프로토콜(PPP) |
1662 | HDLC 방식 프레이밍의 PPP |
1748 | SMIv2를 사용한 IEEE 802.5 MIB |
1749 | SMIv2를 사용한 IEEE 802.5 스테이션 원본 라우팅 |
1812 | IP 버전 4 라우터 요구 사항 |
1828 | 키가 있는 MD5를 이용한 IP 인증 |
1829 | ESP DES-CBC 변환 |
1851 | ESP 트리플 DES-CBC 변환 |
1852 | 키가 있는 SHA를 이용한 IP 인증 |
1886 | IP 버전 6을 지원하기 위한 DNS 확장 |
1994 | PPP Challenge Handshake 인증 프로토콜(CHAP) |
1995 | DNS에서의 증분 영역 전송 |
1996 | 영역 변경에 대한 신속한 DNS 알림 메커니즘 |
2018 | TCP 선택 승인 옵션 |
2085 | 재생 방지된 HMAC-MD5 IP 인증 |
2104 | HMAC: 메시지 인증을 위한 암호화된 해싱 |
2131 | 동적 호스트 구성 프로토콜(DHCP) |
2136 | 도메인 이름 시스템의 동적 업데이트(DNS UPDATE) |
2181 | DNS 사양에 대한 설명 |
2205 | 리소스 예약 프로토콜(RSVP) - 버전 1 기능 사양 |
2236 | 인터넷 그룹 관리 프로토콜(IGMP) 버전 2 |
2308 | DNS 쿼리의 네거티브 캐싱(DNS NCACHE) |
2401 | 인터넷 프로토콜용 보안 아키텍처 |
2401 | 인터넷 프로토콜용 보안 아키텍처 |
2402 | IP 인증 헤더 |
2406 | IP 캡슐화 보안 페이로드(ESP) |
2581 | TCP 혼잡 제어 |
아키텍처 모델 | |
개요
Microsoft TCP/IP 제품군은 핵심 프로토콜 요소, 서비스 및 제품간 인터페이스로 이루어져 있습니다. 전송 드라이버 인터페이스(TDI)와 네트워크 장치 인터페이스 사양(NDIS)은 현재 공개되어 있으므로 Microsoft사로부터 이러한 사양들을 구할 수 있습니다(http://www.microsoft.com/korea/ 및 ftp://ftp.microsoft.com).1 또한 사용자 모드 응용 프로그램에서 사용할 수 있는 고급 인터페이스도 매우 많습니다. 그 중에서도 Windows 소켓, 원격 프로시저 호출(RPC) 및 NetBIOS가 가장 일반적으로 사용됩니다.
그림 1 Windows 2000 TCP/IP 네트워크 모델
플러그 앤 플레이
Windows 2000에서는 플러그 앤 플레이(PnP) 기능을 지원합니다. 플러그 앤 플레이 기능은 다음과 같습니다.
- 설치 하드웨어에 대한 동적 자동 인식. 여기에는 초기 시스템 설치, 시스템 부팅들 사이에서 발생하는 고정 하드웨어 변경에 대한 인식, 도킹/도킹 해제, 카드 삽입 또는 제거와 같은 런타임 하드웨어 이벤트에 대한 반응 등이 모두 포함됩니다.
- 동적 하드웨어 활성화, 리소스 조정, 장치 드라이버 로딩, 드라이브 탑재 등을 포함하여 동적 자동 하드웨어 인식에 따른 유연한 하드웨어 구성
- ISA, PCI, PCMCIA, PC Card/CardBus, USB 및 1394를 포함하여 동적 자동 하드웨어 인식과 유연한 하드웨어 구성을 위한 특정 버스 및 기타 하드웨어 표준 지원. 여기에는 하드웨어 동작 방식에 대한 표준과 장치 설명이 포함됩니다.
- 드라이버 기록 장치를 순서대로 작동시킬 수 있는 플러그 앤 플레이 프레임워크. 여기에는 장치 정보(INF) 인터페이스, 응용 프로그램 프로그래밍 인터페이스(API), 커널 모드 알림, 실행 인터페이스 등의 인프라가 포함됩니다.
- 사용자 모드 코드와 응용 프로그램에서 하드웨어 환경 변화를 파악하여 적절한 조치를 취할 수 있게 하는 메커니즘
PnP 작동에는 PnP 하드웨어가 필요하지 않습니다. 위의 처음 두 가지 사항은 PnP 하드웨어 뿐만 아니라 레거시 하드웨어에 대해서도 어느 정도는 적용됩니다. 경우에 따라서는 그 검색 방법이 파괴적이거나 너무 많은 시간이 소요되기 때문에 레거시 장치를 순서대로 파악하지 못할 수도 있습니다.
PnP 지원 기능이 프로토콜 스택에 미치는 가장 큰 영향은 언제든지 네트워크 인터페이스를 작동하거나 중단할 수 있다는 점입니다. Windows 2000 TCP/IP 스택 및 관련 구성 요소는 PnP 기능을 지원할 목적으로 채택되었습니다.
NDIS 인터페이스 이하 | |
Microsoft 네트워킹 프로토콜은 네트워크 장치 인터페이스 사양(NDIS)을 사용하여 네트워크 카드 드라이버와 상호 작용합니다. 대부분의 OSI 모델 연결 계층 기능은 프로토콜 스택 내에서 구현됩니다. 따라서 네트워크 카드 드라이버의 개발이 훨씬 쉬워집니다.
네트워크 드라이버 인터페이스 사양(3.1 - 5.0)
NDIS 3.1에서 제공하는 기본 서비스를 사용하면 프로토콜 모듈이 네트워크 장치를 통해 원시 패킷을 보낼 수 있으며 동일한 모듈이 네트워크 장치로부터 원시 패킷을 수신했음을 통보할 수 있습니다.
NDIS 4.0에서는 다음과 같은 NDIS 3.1에 없는 기능들을 새로 추가했습니다.
- 브로드캐스트 PC에 필요한 대역폭을 벗어난 데이터 지원
- 무선 WAN 미디어 확장
- 성능을 크게 향상시킨 고속 패킷 송수신
- 고속 IrDA 미디어 확장
- PC 97의 Designed for Windows 로고와 이후의 하드웨어 설계 가이드에 필요한 미디어 감지. Microsoft Windows 2000 TCP/IP 스택은 이 백서의 "자동 클라이언트 구성" 부분에서 설명한 미디어 감지 정보를 이용합니다.
- 네트워크 모니터의 CPU 독점을 방지하기 위해 전체를 로컬 패킷 필터로 구성
- Windows 95, Windows 98, Windows NT 및 Windows 2000 사이의 미니포트 이진 호환에 필요한 새로운 많은 NDIS 시스템 기능
NDIS 5.0에는 NDIS 4.0에 정의된 모든 기능 뿐만 아니라 다음과 같은 기능들도 포함됩니다.
- 네트워크 전원 관리와 네트워크 웨이크업에 필요한 NDIS 전원 관리
- 플러그 앤 플레이. Windows 95 NDIS에는 이미 플러그 앤 플레이 기능이 포함되어 있으므로 이러한 변경 내용은 Windows 2000 네트워크 드라이브에만 적용됩니다.
- NDIS 미니포트 및 관련 어댑터에 대한 웹 기반 엔터프라이즈 관리(WBEM) 호환 도구를 제공하는 WMI(Windows Management Instrumentation) 지원
- Windows 운영 체제 전반에 걸친 단일 INF 형식 지원. 새로운 INF 형식은 Windows 98 INF 형식에 기초하여 만들어집니다.
- 성능 향상을 위해 직렬 배치 방식에서 탈피한 미니포트
- TCP 및 UDP 검사값, 고속 패킷 전달 등의 작업을 위한 작업 오프로드 메커니즘
- Windows 브로드캐스트 서비스에 필요한 브로드캐스트 미디어 확장
- 비동기 전송 모드[ATM], 비대칭 디지털 가입자 회선[ADSL], Windows 드라이버 모델-연결 스트리밍 아키텍처[WDM-CSA]를 지원하는 데 필요한 연결 지향 NDIS
- 서비스 품질(QoS) 지원
- 브로드캐스트 PC, 가상 LAN, QoS용 패킷 일정 관리, IEEE 1394 네트워크 장치의 NDIS 지원에 필요한 중간 드라이버 지원
NDIS는 시스템에서 전원 수준 변경을 요청할 때 네트워크 어댑터의 전원을 끌 수 있습니다. 사용자나 시스템이 이러한 요청을 할 수 있습니다. 예를 들어, 사용자가 컴퓨터를 휴면 모드로 두거나, 키보드나 마우스 작동이 없을 때 시스템이 전원 수준 변경을 요청할 수 있습니다. 또한 네트워크 인터페이스 카드(NIC)가 이 기능을 지원하는 경우에는 네트워크 케이블 연결이 끊기면 전원 끄기를 요청할 수 있습니다. 이 때 케이블 연결이 끊긴 원인이 네트워크 장치 자체의 케이블 연결이 끊어진 것이 아니라 네트워크 배선이 일시적으로 바뀐 것일 수 있기 때문에, 시스템은 NIC 전원을 끄기 전에 먼저 일정 시간(설정이 가능함) 동안 기다립니다.
NDIS 전원 관리 정책은 네트워크 활동 없음을 기준으로 합니다. 즉, NIC 전원을 끄기 전에 먼저 해당하는 모든 네트워크 구성 요소들이 그 요청에 동의해야 합니다. 네트워크에서 현재 활동 중인 세션이나 열려 있는 파일이 있으면 여기에 관련된 구성 요소(들)에서 전원 끄기 요청을 거부할 수 있습니다.
또한 네트워크 이벤트에 따라 컴퓨터의 절전 모드를 해제할 수도 있습니다. 시스템의 절전 모드 상태는 다음과 같은 이벤트를 통해 해제될 수 있습니다.
- 케이블 재연결과 같이 네트워크 연결 상태가 바뀌는 것을 감지
- 네트워크 웨이크업 프레임 수신
- 매직 패킷 수신(자세한 내용은 http://www.microsoft.com 참조)
드라이버를 초기화하는 과정에서 NDIS는 미니포트의 용량을 쿼리하여 매직 패킷, 패턴 일치 또는 연결 변경 웨이크업 등을 지원하는지 여부와 각각의 웨이크업에 필요한 가장 낮은 전력 상태를 결정합니다. 그런 다음 네트워크 프로토콜이 미니포트 용량을 쿼리합니다. 실행 과정에서 프로토콜은 웨이크업 사용, 패킷 패턴 설정 및 패킷 패턴 제거 등의 개체 식별자(OID)를 사용하여 웨이크업 정책을 설정합니다.
현재 Microsoft TCP/IP는 네트워크 전원 관리를 지원하는 유일한 Microsoft 프로토콜 스택입니다. 여기서는 미니포트 초기화 과정에서 다음과 같은 패킷 패턴을 등록합니다.
- 방향 지정된 IP 패킷
- 스테이션의 IP 주소를 위한 ARP 브로드캐스트
- 스테이션의 할당된 컴퓨터 이름에 대한 TCP/IP를 통한 NetBIOS 브로드캐스트
NDIS 호환 드라이버는 많은 공급업체가 제공하는 광범위한 NIC에서 사용할 수 있습니다. NDIS 인터페이스를 사용하면 종류가 다른 여러 프로토콜 드라이버를 하나의 NIC 드라이버에 바인딩하고 하나의 프로토콜을 여러 NIC 드라이버에 바인딩할 수 있습니다. NDIS 사양에 이러한 작업을 완료하는 데 사용되는 멀티플렉싱 메커니즘이 설명되어 있습니다. 바인딩은 Windows의 네트워크 연결 폴더에서 보거나 변경할 수 있습니다.
Windows 2000 TCP/IP는 다음과 같은 사항들을 지원합니다.
- 이더넷 및 802.3 SNAP
- FDDI
- 토큰 링(802.5)
- ATM(LANE 및 CLIP)
- ARCnet
- 데이터폰 디지털 서비스(DDS) 및 T 캐리어(Fractional T1, T1 및 T3) 등의 광역 네트워크(WAN) 전용 연결
- 전화 접속 서비스 또는 아날로그 전화, ISDN 및 xDSL 등의 영구적인 회로 교환형 WAN 서비스
- X.25, 프레임 릴레이 및 ATM 등의 패킷 전환 WAN 서비스
이러한 새로운 기능들이 사용되는 목적은 다음과 같습니다.
- 사용의 편의성 향상 및 총 소유 비용(TCO) 절감
- 성능 개선
- 새로운 미디어 유형, 서비스 및 응용 프로그램 사용
- 드라이버 아키텍처의 유연성 개선
연결 계층 기능
연결 계층 기능은 네트워크 인터페이스 카드/드라이버 조합과 낮은 수준의 프로토콜 스택 드라이버를 통해 제공됩니다. 네트워크 카드/드라이버 조합 필터는 각 프레임의 대상 미디어 액세스 제어(MAC) 주소를 기반으로 합니다.
일반적으로 하드웨어는 다음과 같은 대상 주소를 제외한 모든 수신 프레임을 필터링합니다.
- 어댑터 주소
- 올 원스 브로드캐스트 주소(FF-FF-FF-FF-FF-FF)
- 현재 호스트 상의 프로토콜 드라이버가 NDIS 프리미티브를 사용하여 등록한 해당 멀티캐스트 주소
최초의 필터링 결정은 하드웨어가 내리기 때문에, NIC는 CPU 처리를 거치지 않고서도 필터 기준에 맞지 않는 모든 프레임을 버립니다. 그런 다음, 하드웨어 필터를 통과한 모든 프레임(브로드캐스트 포함)이 하드웨어 인터럽트를 통해 NIC 드라이버로 전달됩니다.2 NIC 드라이버는 컴퓨터 상에서 실행되는 소프트웨어이기 때문에, 프레임이 전달되기 위해서는 어느 정도의 CPU 처리 시간이 필요합니다. NIC 드라이버는 해당 프레임을 인터페이스 카드에서 시스템 메모리로 가져옵니다. 그런 다음 프레임을 적절한 바운드 전송 드라이버로 지정(전달)합니다. NDIS 5.0 사양은 이러한 프로세스에 대한 자세한 정보를 제공합니다.
프레임은 바인드된 모든 전송 드라이버로 바인드 순서에 따라 전달됩니다.
패킷이 하나 또는 여러 네트워크를 통과할 때, 항상 그 패킷을 미디어로 보낸 NIC의 미디어 액세스 제어 주소가 원본 미디어 액세스 제어 주소로 사용되며 미디어에 있는 패킷을 꺼내는 NIC의 미디어 액세스 제어 주소는 대상 미디어 액세스 제어 주소로 사용됩니다. 즉, 라우팅된 네트워크에서는 원본 및 대상 미디어 액세스 제어 주소가 네트워크 계층 장치(라우터 또는 계층 3 스위치)를 통과할 때마다 달라집니다.
최대 전송 단위(MTU)
각각의 미디어 유형마다 초과할 수 없는 최대 프레임 크기 값을 가집니다. 연결 계층은 이러한 MTU를 알아낸 후 상위 프로토콜에 보고해야 합니다. 프로토콜 스택은 NDIS 드라이버에게 로컬 MTU를 쿼리합니다. 인터페이스의 MTU에 대한 정보는 TCP와 같이 각 미디어의 패킷 크기를 자동으로 최적화하는 상위 계층 프로토콜에서 사용됩니다. 자세한 내용은 이 백서의 "전송 제어 프로토콜(TCP)" 부분에 있는 TCP 경로 최대 전송 단위(PMTU) 검색에 대한 논의를 참조하십시오.
ATM 드라이버와 같은 NIC 드라이버에서 LAN 에뮬레이션 모드를 사용하는 경우에는 해당 미디어 종류에 대해 예상되는 값보다 MTU가 높다고 보고될 수 있습니다. 예를 들어, 이더넷을 에뮬레이트하는데, MTU가 9180바이트라고 보고하는 경우가 있을 수 있습니다. Windows NT와 Windows 2000에서는 해당 미디어 종류의 정상 MTU를 초과하더라도 어댑터에서 보고하는 MTU 크기를 그대로 사용합니다.
간혹 프로토콜 스택에 보고된 MTU가 해당 미디어 종류의 예상 MTU보다 작을 수 있습니다. 예를 들어, 이더넷을 통한 QoS용 802.1p 표준을 사용하면 연결 계층 헤더가 커짐으로 인해 보고된 MTU가 4 바이트(이 크기는 하드웨어에 따라 다름)까지 줄어들기도 합니다.
핵심 프로토콜 스택 구성 요소와 TDI 인터페이스 | |
핵심 프로토콜 스택 구성 요소는 그림 1에서 NDIS와 TDI 인터페이스 사이에 표시된 구성 요소들입니다. 이러한 구성 요소들은 Windows 2000 Tcpip.sys 드라이버에서 구현됩니다. Microsoft 스택은 TDI 인터페이스와 NDIS 인터페이스를 통해 액세스할 수 있습니다. 또한 Winsock2 인터페이스는 프로토콜 스택에 대한 직접 액세스를 어느 정도 지원합니다.
주소 확인 프로토콜(ARP)
ARP는 송신 패킷에 대한 IP 주소 대 미디어 액세스 제어(MAC) 주소 확인 작업을 수행합니다. 각각의 송신 IP 데이터그램이 프레임으로 캡슐화될 때 원본 및 대상 미디어 액세스 제어 주소를 추가해야 합니다. 각 프레임의 대상 미디어 액세스 제어 주소는 ARP에서 결정합니다.
ARP는 모든 아웃바운드 IP 데이터그램에 있는 대상 IP 주소와 프레임을 보낼 NIC의 ARP 캐시를 비교합니다. 서로 일치하는 항목이 있으면 MAC 주소를 캐시로부터 읽어들입니다. 그렇지 않으면 ARP는 로컬 서브넷에 있는 ARP 요청 패킷을 브로드캐스트하여 해당 IP 주소 소유자에게 그 미디어 액세스 제어 주소에 응답할 것을 요청합니다. 패킷이 라우터를 통해 송신되는 경우, ARP는 마지막 대상 호스트가 아닌 그 다음 홉 라우터의 미디어 액세스 제어 주소를 확인합니다. ARP 응답이 수신되면 ARP 캐시가 새로운 정보를 사용하여 업데이트된 후 연결 계층에서 패킷 주소를 지정하는 데 사용됩니다.
ARP 캐시
ARP 유틸리티를 사용하면 ARP 캐시 항목을 보거나 추가 또는 삭제할 수 있습니다. 다음에 그 예가 나와 있습니다. 수동으로 추가된 고정 항목은 캐시로부터 자동으로 제거되지 않는 반면, 동적 항목은 캐시로부터 자동으로 제거됩니다. 자세한 내용은 "ARP 캐시 에이징" 부분을 참조하십시오.
다음과 같이 arp 명령을 사용하면 ARP 캐시를 볼 수 있습니다.
C:\>arp -a
Interface: 199.199.40.123
Internet Address Physical Address Type
199.199.40.1 00-00-0c-1a-eb-c5 dynamic
199.199.40.124 00-dd-01-07-57-15 dynamic
Interface: 10.57.8.190
Internet Address Physical Address Type
10.57.9.138 00-20-af-1d-2b-91 dynamic
위의 예에서, 컴퓨터는 둘 이상의 NIC를 갖는 다중홈 컴퓨터이므로 각각의 인터페이스마다 ARP 캐시가 별도로 있습니다.
다음 예에서는 arp -s 명령을 사용해서 IP 주소가 10.57.10.32이고 NIC 주소가 00608C0E6C6A인 호스트의 두 번째 인터페이스에 사용되는 ARP 캐시에 고정 항목을 추가합니다.
C:\>arp -s 10.57.10.32 00-60-8c-0e-6c-6a 10.57.8.190
C:\>arp -a
Interface: 199.199.40.123
Internet Address Physical Address Type
199.199.40.1 00-00-0c-1a-eb-c5 dynamic
199.199.40.124 00-dd-01-07-57-15 dynamic
Interface: 10.57.8.190
Internet Address Physical Address Type
10.57.9.138 00-20-af-1d-2b-91 dynamic
10.57.10.32 00-60-8c-0e-6c-6a static
ARP 캐시 에이징
Windows NT와 Windows 2000은 시스템 환경에 맞게 ARP 캐시 크기를 자동으로 조정합니다. 항목이 2분 동안 송신 데이터그램에 사용되지 않으면 그 항목은 ARP 캐시로부터 제거됩니다. 참조되고 있는 항목은 10분 후에 ARP로부터 제거됩니다. 수동으로 추가한 항목은 캐시로부터 자동으로 제거될 수 없습니다. Windows NT 3.51 서비스 팩 4에서는 더욱 정밀한 에이징 관리 제어를 수행할 수 있는 새로운 레지스트리 매개 변수인 ArpCacheLife를 추가했습니다. 이 매개 변수는 부록 A에서 설명합니다.
다음과 같이 arp -d 명령을 사용하여 캐시 항목을 삭제합니다.
C:\>arp -d 10.57.10.32
C:\>arp -a
Interface: 199.199.40.123
Internet Address Physical Address Type
199.199.40.1 00-00-0c-1a-eb-c5 dynamic
199.199.40.124 00-dd-01-07-57-15 dynamic
Interface: 10.57.8.190
Internet Address Physical Address Type
10.57.9.138 00-20-af-1d-2b-91 dynamic
IP 주소가 미디어 액세스 제어 주소로 변경되는 동안, ARP는 지정된 대상 주소에 대해 하나의 아웃바운드 IP 데이터그램만 대기열에 대기시킵니다. 사용자 데이터그램 프로토콜(UDP) 기반 응용 프로그램이 중지되지 않고 여러 IP 데이터그램을 단일 대상 주소로 보내는 경우, 기존 ARP 캐시 항목이 없으면 일부 데이터그램이 사라질 수 있습니다. 응용 프로그램은 패킷 스트림을 보내기 전에 iphlpapi.dll 루틴 SendArp()를 호출하여 ARP 캐시 항목을 설정함으로써 이러한 문제를 해결할 수 있습니다. IP 도우미 API에 대한 자세한 내용은 Microsoft 기술 자료 문서 Q193059<http://support.microsoft.com/servicedesks/msdn/search/default.htm> 또는 Platform SDK<http://msdn.microsoft.com/downloads/sdks/platform/platform.asp>를 참조하십시오.
인터넷 프로토콜(IP)
IP는 패킷 정렬 및 배달이 일어나는 TCP/IP 스택에 대한 우체국의 역할을 합니다. 이 계층에 있는 각각의 송수신 패킷은 데이터그램이라고 합니다. 각각의 IP 데이터그램은 보낸 사람의 원본 IP 주소와 받는 사람의 대상 IP 주소를 지닙니다. 데이터그램에 있는 IP 주소는 미디어 액세스 제어 주소와 달리 네트워크 사이를 지나는 전체 패킷 전송 과정에서 동일하게 유지됩니다. 아래에서는 IP 계층 기능에 대해 설명합니다.
라우팅
라우팅은 기본 IP 기능입니다. 데이터그램은 상위의 UDP 및 TCP로부터, 그리고 하위의 NIC로부터 IP로 전달됩니다. 각 데이터그램에는 원본 및 대상 IP 주소가 지정됩니다. IP는 각 데이터그램의 대상 주소를 검사하여 이를 로컬에서 관리하는 경로 테이블과 비교한 후 어떤 작업을 실행할 것인지를 결정합니다. 각 데이터그램에는 다음과 같은 세 가지 기능이 있습니다.
- 데이터그램이 로컬 호스트의 IP 위쪽에 있는 프로토콜 계층으로 전달될 수 있습니다.
- 데이터그램이 로컬 연결된 NIC 중 하나를 사용하여 전달될 수 있습니다.
- 데이터그램이 무시될 수 있습니다.
경로 테이블에는 네 가지 종류의 경로만 표시됩니다. 아래에서는 일치하는 것으로 검색된 순서대로 경로들을 나열했습니다.
- 호스트(특정한 단일 대상 IP 주소에 대한 경로)
- 서브넷(서브넷에 대한 경로)
- 네트워크(전체 네트워크에 대한 경로)
- 기본값(일치하는 경로가 없는 경우)
IP는 다음 절차를 사용하여 IP 데이터그램 전달에 사용할 단일 경로를 결정합니다.
- IP는 라우팅 테이블에 있는 각각의 경로에 대해 대상 IP 주소와 네트워크 마스크 사이에서 비트 범위의 논리 AND를 수행합니다. IP는 그 결과와 네트워크 대상을 비교하여 일치 여부를 파악합니다. 일치하는 경우, IP는 그 경로를 대상 IP 주소와 일치하는 경로로서 표시합니다.
- 일치하는 경로 목록 중에서 IP는 대부분의 비트가 네트워크 마스크에 있는 경로를 판별합니다. 이는 대부분의 비트가 대상 IP 주소와 일치하는 경로이므로 결국 IP 데이터그램에 가장 적합한 경로입니다. 이 방법은 가장 길거나 가장 가까운 일치하는 경로를 찾는 것으로 알려져 있습니다.
- 가장 가까운 일치하는 경로가 여러 개 발견되면 IP는 메트릭이 가장 낮은 경로를 사용합니다. 가장 낮은 메트릭을 갖는 경로 중에서 가장 가까운 일치하는 경로가 여러 개 발견되면 IP는 그 중 하나의 경로를 선택하여 사용할 수 있습니다.
다음과 같이 route print 명령을 사용하면 명령 프롬프트에서 경로 테이블을 볼 수 있습니다.
C:\>route print
=========================================================================
Interface List
0x1 ...........................MS TCP Loopback interface
0x2 ...00 a0 24 e9 cf 45 ......3Com 3C90x Ethernet Adapter
0x3 ...00 53 45 00 00 00 ......NDISWAN Miniport
0x4 ...00 53 45 00 00 00 ......NDISWAN Miniport
0x5 ...00 53 45 00 00 00 ......NDISWAN Miniport
0x6 ...00 53 45 00 00 00 ......NDISWAN Miniport
=========================================================================
=========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.99.99.254 10.99.99.1 1
10.99.99.0 255.255.255.0 10.99.99.1 10.99.99.1 1
10.99.99.1 255.255.255.255 127.0.0.1 127.0.0.1 1
10.255.255.255 255.255.255.255 10.99.99.1 10.99.99.1 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 224.0.0.0 10.99.99.1 10.99.99.1 1
255.255.255.255 255.255.255.255 10.99.99.1 10.99.99.1 1
Default Gateway: 10.99.99.254
=========================================================================
Persistent Routes:
None
위의 경로 테이블은 클래스 A IP 주소가 10.99.99.1이며 서브넷 마스크가 255.255.255.0이고 기본 게이트웨이가 10.99.99.254인 컴퓨터에 사용됩니다. 여기에는 다음과 같은 일곱 개의 항목이 포함됩니다.
- 주소 0.0.0.0에 대한 첫 번째 항목은 기본 경로입니다.
- 두 번째 항목은 이 컴퓨터가 상주하는 서브넷 10.99.99.0에 사용됩니다.
- 주소 10.99.99.1에 대한 세 번째 항목은 로컬 호스트의 호스트 경로입니다. 세 번째 항목은 루프백 주소를 지정하는데, 이 주소는 로컬 호스트용으로 바운드된 데이터그램이 내부에서 루프백 처리하는 데 사용됩니다.
- 네 번째 항목은 네트워크 브로드캐스트 주소에 사용됩니다.
- 다섯 번째 항목은 루프백 주소 127.0.0.0에 사용됩니다.
- 여섯 번째 항목은 IP 멀티캐스팅(이 백서의 후반부에서 설명함)에 사용됩니다.
- 마지막 항목은 제한된 올 원스브로드캐스트 주소에 사용됩니다.
Default Gateway는 현재 활성화되어 있는 기본 게이트웨이로, 이는 복수 기본 게이트웨이가 구성되는 시기를 파악하는 데 유용합니다.
이 호스트에서 패킷이 10.99.99.40으로 보내지는 경우, 가장 가까운 일치하는 경로는 로컬 서브넷 경로(마스크가 255.255.255.0인 10.99.99.0)입니다. 패킷은 로컬 인터페이스 10.99.99.1을 통해 보내집니다. 패킷이 10.200.1.1로 보내지는 경우 가장 가까운 일치하는 경로가 기본 경로이며, 이 때 패킷은 기본 게이트웨이로 전달됩니다.
대부분의 경우 경로 테이블은 자동으로 관리됩니다. 호스트가 초기화될 때, 로컬 네트워크, 루프백, 멀티캐스트 및 구성된 기본 게이트웨이에 대한 항목이 추가됩니다. IP 계층이 많은 경로를 식별하는 경우에는 더 많은 경로가 테이블에 나타날 수 있습니다. 예를 들어, 호스트용 기본 게이트웨이가 ICMP(이 백서의 후반부에서 설명함)를 사용하여 특정 네트워크, 서브넷 또는 호스트에 대해 더 적합한 경로를 제시할 수 있습니다. 또한 route 명령이나 라우팅 프로토콜을 사용하여 경로를 수동으로 추가할 수도 있습니다. route 명령에 -p(persistent) 스위치와 함께 사용하면 영구 경로를 지정할 수 있습니다. 영구 경로는 레지스트리에서 다음과 같은 레지스트리 키로 저장됩니다.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\Tcpip
\Parameters
\PersistentRoutes
Windows 2000 TCP/IP는 기본 게이트웨이에 대한 새로운 메트릭 구성 옵션을 사용합니다. 이러한 메트릭을 이용하면 특정 시간에 어떤 기본 게이트웨이가 활성화되는지를 보다 세밀하게 제어할 수 있습니다. 기본 메트릭 값은 1입니다. 높은 메트릭을 가진 경로보다는 낮은 메트릭 값을 가진 경로를 사용하는 것이 좋습니다. 기본 게이트웨이의 경우, 컴퓨터는 가장 낮은 메트릭을 가진 활성 경로를 사용합니다. 이 경우 작동하지 않는 게이트웨이를 검색하면 목록에서 두 번째로 낮은 메트릭을 갖는 기본 게이트웨이로 전환하게 됩니다. TCP/IP 고급 구성 속성을 사용하면 기본 게이트웨이 메트릭을 설정할 수 있습니다. DHCP 서버는 기본 메트릭과 기본 게이트웨이 목록을 제공합니다. DHCP 서버가 100이라는 기본 메트릭과 세 개의 기본 게이트웨이로 구성된 목록을 제공하는 경우, 게이트웨이는 각각 100, 101, 102라는 메트릭을 사용하여 구성됩니다. DHCP 서버가 제공하는 기본 메트릭은 동적으로 구성된 기본 게이트웨이에는 적용되지 않습니다.
대부분의 독립 시스템(AS) 라우터는 라우팅 정보 프로토콜(RIP) 또는 개방 최단 경로 우선(OSPF) 등의 프로토콜을 사용하여 라우팅 테이블을 서로 교환합니다. Windows 2000 Server에는 이러한 프로토콜에 대한 지원 기능이 포함되어 있으며, Windows 2000 Professional에는 "Silent RIP"에 대한 지원 기능이 포함되어 있습니다.
기본적으로 Windows 기반 시스템은 라우터 역할을 수행하지 않으며 인터페이스들 사이에서 IP 데이터그램을 전달하지 않습니다. 하지만 Windows 2000 Server에는 라우팅 및 원격 액세스 서비스가 포함되어 있습니다. 이러한 서비스를 사용 가능으로 설정하고 완전한 멀티프로토콜 라우팅 서비스를 제공하도록 구성할 수 있습니다.
라우팅 및 원격 액세스를 관리하려면
- 시작 메뉴에서 프로그램을 누릅니다.
- 관리 도구를 누른 후 라우팅 및 원격 액세스를 누릅니다.
하나의 물리 네트워크에서 여러 개의 논리 서브넷을 실행하는 경우에는 다음 명령을 사용하여 IP에서 모든 서브넷을 로컬로 처리하고 ARP를 대상에 직접 사용하도록 지정할 수 있습니다.
route add 0.0.0.0 MASK 0.0.0.0 <로컬 IP 주소>
따라서 로컬이 아닌 서브넷을 대상으로 하는 패킷은 라우터로 전송되는 것이 아니라 로컬 미디어로 직접 전송됩니다. 기본적으로 로컬 인터페이스 카드를 기본 게이트웨이로 지정할 수 있습니다. 이는 라우터 없이 외부에 연결되는 여러 개의 클래스 C 네트워크를 하나의 물리 네트워크에서 사용하는 경우나 프록시 ARP 환경에서 유용합니다.
중복 IP 주소 검색
중복 주소 검색은 중요한 기능입니다. 스택이 처음 초기화되거나 새로운 IP 주소가 추가될 때, 로컬 호스트의 IP 주소에 대한 무상 ARP 요청이 브로드캐스트됩니다. 보낼 ARP의 개수는 ArpRetryCount 레지스트리 매개 변수로 제어되며 기본값은 3입니다. 다른 호스트가 이러한 ARP에 응답할 때 IP 주소는 이미 사용되고 있는 상태입니다. 이러한 경우 Windows 기반 컴퓨터는 여전히 부팅될 수 있지만, 위반하는 주소를 갖는 컴퓨터는 사용할 수 없게 되고 시스템 로그 항목이 생성되며 오류 메시지가 표시됩니다. 그 주소를 방어하고 있는 호스트가 Windows 기반 컴퓨터인 경우에도 마찬가지로 시스템 로그 항목이 생성되고 오류 메시지가 표시됩니다. 다른 컴퓨터의 ARP 캐시에 발생한 손상을 복구하기 위해, 공격 컴퓨터는 다른 ARP를 다시 브로드캐스트하여 다른 컴퓨터의 ARP 캐시에 있는 원래 값을 복원합니다.
중복 IP 주소를 사용하는 컴퓨터는 네트워크에 연결되어 있지 않을 때 시작될 수 있습니다. 이러한 경우에는 아무런 충돌도 일어나지 않습니다. 그러나 그 후 네트워크에 연결되면, 다른 IP 주소에 대한 ARP 요청을 처음으로 보낼 때 충돌하는 주소를 갖는 Windows NT 기반 컴퓨터에서 충돌이 일어나게 됩니다. 충돌을 발견한 컴퓨터는 오류 메시지를 표시하고 자세한 이벤트 정보를 시스템 로그에 기록합니다. 다음은 이벤트 로그 항목에 대한 예입니다.
시스템에서 네트워크 하드웨어 주소 00:DD:01:0F:7A:B5을(를) 가진 시스템과 IP 주소 00:DD:01:0F:7A:B5의 주소 충돌이 발견되었습니다. 로컬 인터페이스를 사용할 수 없습니다.
DHCP 사용 클라이언트는 IP 주소 충돌 여부를 DHCP 서버에게 알린 후, 스택의 사용을 막는 대신에 DHCP 서버에게 새로운 주소를 요청하고 충돌하는 주소를 잘못된 주소로서 표기하도록 서버에게 요청합니다. 이러한 기능은 보통 DHCP 거부 지원으로 알려져 있습니다.
다중홈 기능
둘 이상의 IP 주소로 구성된 컴퓨터는 다중홈 시스템이라고 합니다. 다중홈 기능은 다음과 같은 세 가지 방법으로 지원됩니다.
- 인터페이스용 주소를 추가하려면 시작 메뉴에서 설정을 가리킨 후 네트워크 및 전화 접속 연결을 누릅니다. 로컬 영역 연결을 마우스 오른쪽 단추로 누르고 등록 정보를 누릅니다. 인터넷 프로토콜(TCP/IP)을 선택하고 등록 정보를 선택한 후 고급을 누릅니다. 고급 설정 대화 상자의 IP 설정 탭에서 추가를 눌러 IP 주소를 추가합니다.
- TCP/IP를 통한 NetBIOS(NetBT)는 하나의 인터페이스 카드에 IP 주소를 하나만 바인드합니다. NetBIOS 이름 등록이 보내질 때, 하나의 인터페이스에 IP 주소가 하나만 등록됩니다. 이러한 등록은 사용자 인터페이스(UI)에 처음 나열되는 IP 주소를 통해 발생합니다.
- 하나의 물리 네트워크에서 여러 NIC를 지원. 하드웨어 이외의 제한 사항은 없습니다.
- 다중 네트워크와 미디어 유형. 하드웨어와 미디어 지원 이외의 제한 사항은 없습니다. 지원되는 미디어 유형은 "NDIS 인터페이스 이하" 부분을 참조하십시오.
하나의 NIC에서 여러 개의 IP 주소를 지원
다중홈 호스트에서 보낸 IP 데이터그램은 대상에 이르는 최상의 경로를 갖는 인터페이스로 전달됩니다. 따라서 데이터그램은 다중홈 호스트에 있는 하나의 인터페이스에 대한 원본 IP 주소를 포함할 수 있지만 미디어에 놓일 때는 인터페이스별로 위치합니다. 프레임의 원본 미디어 액세스 제어 주소는 프레임을 미디어로 실제 전송한 인터페이스의 미디어 액세스 제어 주소입니다. 원본 IP 주소는 보내는 응용 프로그램이 그 원본을 가져온 IP 주소로서, 반드시 네트워크 연결 UI에 있는 보내는 인터페이스와 연관된 IP 주소 중 하나일 필요는 없습니다.
NIC를 원격 액세스 연결 네트워크 및 로컬 연결 네트워크와 같이 서로 인식할 수 없게 분리되어 있는 네트워크에 다중홈 컴퓨터를 연결하면 라우팅 문제가 발생할 수 있습니다. 이러한 경우에는 간혹 원격 네트워크에 대한 고정 경로 설정이 필요할 수 있습니다.
두 개의 분리된 네트워크에서 다중홈 컴퓨터를 구성하는 가장 적절한 방법은 주 네트워크 또는 가장 크면서 잘 알려져 있지 않은 네트워크에서 기본 게이트웨이를 설정하는 것입니다. 그런 다음 고정 경로를 추가하거나 라우팅 프로토콜을 사용하여 작거나 잘 알려져 있는 네트워크에서 호스트에 대한 연결을 제공합니다. 양쪽에서 기본 게이트웨이를 다르게 구성하면 안됩니다. 그렇게 하면 예기치 않은 동작이 발생하여 연결이 끊어질 수 있습니다.
참고 컴퓨터에서 언제든지 사용할 수 있는 활성 상태의 기본 게이트웨이는 하나 뿐입니다.
이름 등록, 분석, 그리고 다중홈 컴퓨터의 아웃바운드 데이터그램에 대한 NIC 선택 등에 대한 자세한 내용은 이 백서의 "전송 제어 프로토콜(TCP)", "TCP/IP를 통한 NetBIOS" 및 "Windows 소켓" 부분에 나와 있습니다.
클래스 없는 도메인간 라우팅(CIDR)
RFC 1518 및 1519에 설명되어 있는 CIDR은 IP 주소 할당 및 관리 프로세스로부터 클래스라는 개념을 제거합니다. CIDR은 미리 정의되고 잘 알려져 있는 경계 대신에 시작 주소 및 범위를 사용하여 정의된 주소를 할당하므로 사용 가능한 공간을 보다 효율적으로 사용할 수 있습니다. 범위는 주소의 네트워크 부분을 정의합니다. 예를 들어, ISP가 기업 클라이언트에 대해 할당한 IP 주소는 10.57.1.128 /25로 표현될 수 있습니다. 여기서 128 주소 블록은 로컬에서 사용되며 상위 25 비트는 주소의 네트워크 식별자 부분입니다. 레거시 클래스 전체 할당은 <net>.0.0.0 /8, <net>.<net>.0.0 /16 또는 <net>.<net>.<net>.0 /24로 표현됩니다. 이들은 다시 요청되는 과정에서 클래스없는 CIDR 기술을 사용하여 재할당됩니다.
전체 시스템을 설치한 CIDR의 초기 구현으로 클래스 C 공간의 요소들이 상호 연결되었습니다. 이러한 프로세스는 슈퍼네팅이라고 합니다. 슈퍼네팅은 여러 개의 클래스 C 네트워크 주소를 하나의 논리 네트워크로 결합하는 데 사용될 수 있습니다. 슈퍼네팅을 사용하려면 결합할 IP 네트워크 주소들이 동일한 상위 비트를 공유해야 하며, 주소의 네트워크 부분에 있는 비트를 제거하여 호스트 부분에 추가할 수 있도록 서브넷 마스크가 짧아야 합니다. 예를 들어, 클래스 C 네트워크 주소 199.199.4.0, 199.199.5.0, 199.199.6.0, 199.199.7.0은 다음과 같이 각각 255.255.252.0이라는 서브넷 마스크를 사용하여 결합될 수 있습니다.
NET 199.199.4 (1100 0111.1100 0111.0000 0100.0000 0000)
NET 199.199.5 (1100 0111.1100 0111.0000 0101.0000 0000)
NET 199.199.6 (1100 0111.1100 0111.0000 0110.0000 0000)
NET 199.199.7 (1100 0111.1100 0111.0000 0111.0000 0000)
MASK 255.255.252.0 (1111 1111.1111 1111.1111 1100.0000 0000)
라우팅 결정을 할 때, 서브넷 마스크에 포함된 비트만 사용되므로 이러한 모든 주소들은 라우팅 목적상 동일한 네트워크의 일부로 나타납니다. 또한 사용 중인 모든 라우터는 CIDR을 지원해야 하며 경우에 따라서는 특별한 구성이 필요할 수 있습니다. Windows 2000 TCP/IP는 RFC 1878에서 설명한 것처럼 0으로 구성된 서브넷과 1로 구성된 서브넷을 지원합니다.
IP 멀티캐스팅
IP 멀티캐스팅은 동일한 네트워크 세그먼트에 위치하지 않을 수도 있는 클라이언트들에게 효율적인 멀티캐스트 서비스를 제공합니다. Windows 소켓 응용 프로그램을 멀티캐스트 그룹에 연결하면 광역 회의 등에 참여할 수 있습니다.
Windows 2000은 RFC 1112의 수준 2(송수신)와 호환됩니다. IGMP는 IP 멀티캐스팅을 관리하는 데 사용되는 프로토콜로서, 이 백서의 후반부에서 설명합니다.
ATM을 통한 IP
Windows 2000에서는 ATM을 통한 IP를 지원합니다. RFC 1577 및 그 이후 사양에서는 ATM을 통한 IP 네트워크, 또는 더 자세히 말해서 ATM을 통한 논리 IP 서브넷 네트워크의 기본 동작을 정의합니다. 논리 IP 서브넷(LIS)은 서로 직접 통신할 수 있는 일련의 IP 호스트들입니다. 서로 다른 논리 IP 서브넷에 속한 두 개의 호스트들은 두 서브넷 모두에 속한 IP 라우터를 통해서만 통신할 수 있습니다.
ATM 주소 확인
ATM 네트워크는 브로드캐스트용이 아니기 때문에 이더넷이나 토큰 링에서 사용되는 ARP 브로드캐스트는 적절한 솔루션이라 할 수 없습니다. 그 대신, 전용 주소 확인 프로토콜(ARP) 서버를 사용하여 IP 대 ATM 주소 확인 기능을 제공합니다.
LIS에 있는 스테이션들 중 하나가 ARP 서버로 지정되며, 그 서버에서 ARP 서버 소프트웨어가 로드됩니다. ARP 서버의 서비스를 사용하는 스테이션은 ARP 클라이언트라고 합니다. LIS 내의 모든 IP 스테이션은 ARP 클라이언트입니다. 각각의 ARP 클라이언트는 ARP 서버의 ATM 주소를 사용하여 구성됩니다. ARP 클라이언트를 시작할 때, ARP 클라이언트는 ARP 서버에 대한 ATM 연결을 구축하고 클라이언트의 IP 및 ATM 주소를 포함하는 패킷을 서버에게 보냅니다. ARP 서버는 IP 주소 대 ATM 주소 매핑 테이블을 작성합니다. IP 주소는 알려져 있지만 ATM 주소는 알려져 있지 않은 다른 클라이언트에게 IP 패킷을 보낼 때, 클라이언트는 먼저 IP 패킷을 받을 클라이언트의 ATM 주소를 ARP 서버에게 쿼리합니다. ATM 주소가 포함된 응답이 수신되면 클라이언트는 대상 클라이언트에 대한 직접 ATM 연결을 구축한 후 이렇게 연결되어 있는 대상 클라이언트에 대해 IP 패킷을 보냅니다.
클라이언트는 서버에 대한 연결을 포함하여 사용하지 않는 모든 ATM 연결을 닫습니다. 모든 클라이언트는 서버와 함께 자신의 IP 및 ATM 주소를 주기적(기본값은 15분임)으로 갱신합니다. 20분(기본값)이 경과한 후에도 갱신되지 않는 항목은 서버에서 제거됩니다. ATM ARP 클라이언트와 ARP 서버는 조정 가능한 많은 레지스트리 매개 변수(부록 A 참조)를 지원합니다.
인터넷 제어 메시지 프로토콜(ICMP)
ICMP는 RFC 792에 지정되어 있는 관리 프로토콜로, 일반적으로 IP 계층에 속하는 것으로 간주됩니다. ICMP 메시지는 상호 네트워크 전체에서 라우팅될 수 있도록 IP 데이터그램에 캡슐화됩니다. Windows NT 및 Windows 2000에서는 ICMP를 사용하여 다음과 같은 작업들을 수행합니다.
- 경로 테이블 작성 및 관리
- 라우터 검색 수행
- 경로 최대 전송 단위(PMTU) 검색 지원
- 문제 진단(ping, tracert, pathping)
- 링크 또는 라우터 포화를 방지하기 위한 흐름 제어 조정
ICMP 라우터 검색
Windows 2000에서는 RFC 1256에서 지정한 대로 라우터 검색을 수행합니다. 라우터 검색 기능은 기본 게이트웨이를 구성하고 검색할 수 있는 개선된 방법을 제공합니다. 호스트는 수동 구성되거나 DHCP가 구성된 기본 게이트웨이를 사용하는 대신에 자신의 서브넷에서 라우터를 동적으로 검색할 수 있습니다. 기본 라우터에 이상이 생기거나 네트워크 관리자가 라우터 기본 설정을 바꾼 경우, 호스트는 백업 라우터로 자동 전환할 수 있습니다.
라우터 검색 기능을 지원하는 호스트가 초기화될 때, 그 호스트는 모든 시스템 IP 멀티캐스트 그룹(224.0.0.1)에 가입한 후 라우터가 그룹에 보내는 라우터 알림을 수신합니다. 또한 호스트는 인터페이스가 초기화될 때 구성 지연 문제가 발생하지 않도록 라우터 권고 메시지를 모든 라우터 IP 멀티캐스트 주소(224.0.0.2)로 보낼 수 있습니다. Windows 2000에서는 약 600밀리초 간격으로 최대 세 개의 권고 메시지를 보냅니다.
라우터 검색 기능의 사용은 PerformRouterDiscovery 및 SolicitationAddressBCast 레지스트리 매개 변수로 제어되며 Windows 2000에서는 DHCP 제어로 기본 설정됩니다.
SolicitationAddressBCast를 1로 설정하면 RFC에서 지정한 것처럼, 라우터 권고 메시지는 멀티캐스트되는 것이 아니라 브로드캐스트됩니다.
경로 테이블 관리
Windows 기반 컴퓨터가 초기화될 때, 일반적으로 경로 테이블에는 몇 가지 항목만 들어 있습니다. 이 항목들 중 하나에서 기본 게이트웨이를 지정합니다. 대상 IP 주소에 대한 경로 테이블에 더 잘 일치하는 항목이 없는 경우 그 데이터그램은 기본 게이트웨이로 보내집니다. 그러나 라우터들은 네트워크 토폴로지에 대한 정보를 서로 공유하기 때문에 기본 게이트웨이가 해당 주소에 대한 더 나은 경로를 알고 있을 수도 있습니다. 이러한 경우, 보통 라우터는 더 나은 경로를 갖는 데이터그램을 수신하는 즉시 그 데이터그램을 전달합니다. 그런 다음 ICMP 리디렉션 메시지를 사용하여 더 나은 경로를 발신자에게 권고합니다. 이러한 메시지에서 하나의 호스트, 서브넷 또는 전체 네트워크에 대한 리디렉션을 지정할 수 있습니다. ICMP 리디렉션 메시지를 수신한 Windows 기반 컴퓨터는 그 메시지가 현재 경로의 첫 번째 홉 게이트웨이로부터 발생했는지와 그 게이트웨이가 직접적으로 연결된 네트워크 상에 있는지를 확인하는 유효성 검사를 수행합니다. 유효성 검사에 통과하면 그 수명이 10분인 호스트 경로가 대상 IP 주소의 경로 테이블에 추가됩니다. ICMP 리디렉션 메시지가 현재 경로의 첫 번째 홉 게이트웨이로부터 발생하지 않은 경우 또는 그 게이트웨이가 직접적으로 연결된 네트워크 상에 없는 경우에는 ICMP 리디렉션 메시지가 무시됩니다.
경로 최대 전송 단위(PMTU) 검색
TCP에서는 이 백서의 후반부에 있는 "전송 제어 프로토콜(TCP)" 부분에서 설명한 바와 같이 경로 최대 전송 단위(PMTU) 검색을 사용합니다. PMTU 검색 메커니즘은 ICMP의 대상 접근 불가 메시지에 따라 달라집니다.
ICMP를 사용한 문제 진단
- ping 명령줄 유틸리티는 ICMP 에코 요청을 IP 주소로 보내고 ICMP 에코 응답을 대기하는 데 사용됩니다. ping은 요청을 보낸 후 응답을 수신할 때까지 걸리는 시간과 수신된 응답 수를 보고합니다. ping 유틸리티에서는 많은 옵션들을 사용할 수 있습니다. ping에 대해서는 이 백서의 문제 해결 부분에서 자세히 설명합니다.
- tracert는 아주 유용한 경로 추적 유틸리티입니다. tracert는 IP 헤더에 있는 TTL(Time to Live) 필드를 1부터 증분시키면서 ICMP 에코 요청을 IP 주소로 보낸 후 그에 따라 반환되는 ICMP 오류를 분석합니다. 이어지는 각 에코 요청은 TTL 필드가 0에 도달하고 그 요청을 전달하려고 시도하는 라우터가 ICMP Time Exceeded 오류 메시지를 반환하기 전에 하나의 홉을 네트워크에 더 추가하려고 시도합니다. tracert는 이러한 오류 메시지를 반환한 경로에 있는 라우터 목록을 순서대로 보여줍니다. -d(각 IP 주소에서 DNS 역 쿼리를 수행 안함) 스위치를 사용하는 경우에는 각 라우터에서 가까운 쪽 인터페이스의 IP 주소가 보고됩니다. 아래의 예에서는 tracert를 사용하여 지점간 프로토콜(PPP)을 통해 시애틀에 있는 인터넷 공급자(http://www.whitehouse.gov)의 컴퓨터로 가는 경로를 찾는 방법을 보여줍니다.
C:\>tracert www.whitehouse.gov
Tracing route to www.whitehouse.gov [128.102.252.1]
over a maximum of 30 hops:
1 300 ms 281 ms 280 ms roto.seanet.com [199.181.164.100]
2 300 ms 301 ms 310 ms sl-stk-1-S12-T1.sprintlink.net [144.228.192.65]
3 300 ms 311 ms 320 ms sl-stk-5-F0/0.sprintlink.net [144.228.40.5]
4 380 ms 311 ms 340 ms icm-fix-w-H2/0-T3.icp.net [144.228.10.22]
5 310 ms 301 ms 320 ms arc-nas-gw.arc.nasa.gov [192.203.230.3]
6 300 ms 321 ms 320 ms n254-ed-cisco7010.arc.nasa.gov [128.102.64.254]
7 360 ms 361 ms 371 ms www.whitehouse.gov [128.102.252.1] - pathping은 ping 기능과 tracert 기능을 결합한데다 몇 가지 새로운 기능이 더 추가된 명령줄 유틸리티입니다. tracert의 추적 기능과 함께 사용할 경우, pathping은 설정된 기간 동안 경로를 따라 각각의 홉을 핑(ping)하고 지연 및 패킷 손실을 보여주는데, 이는 취약한 링크가 경로에 있는지를 판별하는 데 유용합니다.
서비스 품질(QoS) 및 리소스 예약 프로토콜(RSVP)
다른 새로운 Windows 2000 기능들 중 하나는 QoS 지원 기능입니다. Windows 2000은 리소스 예약 프로토콜(RSVP), DiffServ(Differentiated Services), IEEE 802.1p, ATM QoS 등과 같이 여러 가지의 QoS 메커니즘을 지원합니다. Windows 2000에서 지원되는 QoS 메커니즘은 간단한 GqoS(Generic QoS) API로 요약됩니다. 여기서는 스택 및 관련 시스템 구성 요소에서 발생하는 QoS 지원에 대해 간략하게 설명합니다.
GQoS API는 Winsock 프로그래밍 인터페이스를 확장한 것입니다. GqoS API에는 시스템 구성 요소와 API가 들어 있는데, 이는 클라이언트와 서버 사이에서 네트워크 대역폭을 예약하는 방법을 응용 프로그램에게 제공해줍니다. Windows 2000에서는 GqoS 요청을 RSVP, Diffserv, 802.1p 또는 ATM QoS와 같은 QoS 메커니즘으로 자동 매핑합니다. RSVP는 개별 네트워크 흐름에 대한 대역폭의 예약에 사용되는 계층 3 신호 프로토콜입니다. RSVP는 각각의 흐름에 대해 예약을 설정하기 때문에 단위 흐름 QoS 메커니즘입니다. Diffserv도 역시 계층 3 QoS 메커니즘입니다. Diffserv는 IP 패킷의 우선 순위를 매기는 방법을 결정하는 6비트를 IP 헤더에서 정의합니다.3 Diffserv 트래픽의 우선 순위는 PHB(Per Hop Behavior)라고 알려진 64개의 클래스로 매겨질 수 있습니다. 그와는 반대로, 802.1p는 이더넷 스위치와 같은 계층 2 장치가 트래픽 우선 순위를 매기는 방법을 정의하는 계층 2 QoS 메커니즘입니다. 802.1p는 8개의 우선 순위 클래스(0-7)를 정의합니다. DiffServ 및 802.1p는 모든 트래픽을 제한된 수의 우선 순위 클래스로 분류하기 때문에 집계 QoS 메커니즘이라고 불립니다.
아래의 이벤트 시퀀스에서는 응용 프로그램과 GQoS의 상호 작용에 대해 설명합니다.
- 응용 프로그램이 GQoS를 통해 추상적으로 QoS를 요청합니다.
- 응용 프로그램의 요청이 RSVP 신호 메시지로 변환됩니다. RSVP 신호 메시지가 네트워크로 보내지고 네트워크 경로에 있는 모든 RSVP 인식 노드의 대역폭을 예약합니다.
- RSVP 메시지는 예약을 설정할 뿐만 아니라 네트워크 상의 정책 서버에 의한 정밀한 검사를 받습니다. 네트워크 정책을 위반한 경우에는 정책 서버가 RSVP 요청을 거부할 수 있습니다. 따라서 네트워크 관리자는 누가 QoS를 가질 것인지를 강제로 지정할 수 있습니다.
- RSVP 예약이 설치되면 Windows 2000은 적절한 DiffServ 클래스와 802.1p 우선 순위를 지닌 상태로 흐르는 모든 송신 패킷을 표시하기 시작합니다.
- 그 흐름으로부터 발생하는 트래픽이 네트워크를 통과하게 만들기 때문에, 그 트래픽은 네트워크에서 802.1p 우선 순위 매김의 장점(802.1p 사용 이더넷 스위치인 경우), RSVP 예약의 장점(RSVP 사용 라우터인 경우) 및 DiffServ 우선 순위 매김의 장점(DiffServ 사용 클라우드인 경우)을 가지게 됩니다.
QoS 메커니즘에는 GQoS 요청을 ATM을 통한 클래식 IP 네트워크에서 ATM QoS로 자동 매핑하는 ATM을 통한 통합 서비스(ISATM) 등이 있습니다. 저속 비트를 통한 통합 서비스(SSLOW)는 느린 WAN 링크에서 우선 순위가 매겨진 트래픽에 대한 대기 시간을 줄여주는 QoS 메커니즘입니다. GQoS API 뿐만 아니라 제어 또는 관리 응용 프로그램도 트래픽 제어(TC) API를 통해 트래픽 제어 기능에 액세스합니다. TC API를 사용하는 제어 또는 관리 응용 프로그램에서는 QoS를 사용하지 않는 응용 프로그램에 대한 서비스 품질을 일부 제공할 수 있습니다. 또한 Windows 2000에서는 QoS 허가 제어 서비스(QoS ACS)라는 정책 서버를 제공합니다. 네트워크 관리자는 QoS ACS를 사용하여 누가 네트워크에서 QoS를 가지는지를 제어할 수 있습니다. 또한 QoS ACS는 로컬 정책 모듈(LPM) API라는 API를 제공합니다. LPM API를 사용하면 QoS ACS에 있는 정책 강제 실행 기능에 추가되는 사용자 정의 정책 모듈을 ISV가 만들 수 있습니다.
아래의 그림 2에서는 QoS 및 RSVP에 관련된 시스템 구성 요소에 대해 설명합니다. GQoS는 RSVP 신호를 불러오고 트래픽 제어를 처리하고 이벤트를 응용 프로그램에게 통보할 수 있는 QoS 제공자입니다. Rsvp.exe는 네트워크에 대한 RSVP 신호 전송을 처리하고 흐름 및 필터를 스택에 추가하기 위해 Traffic.dll을 불러오는 역할을 합니다. 패킷 분류기는 Traffic.dll에 나타난 패킷 필터에 따라 패킷을 분류합니다. 규칙 분석기, 셰이퍼 및 패킷 순서기를 포함하는 패킷 스케줄러는 각각의 트래픽 분류에 대해 별도의 대기열을 관리합니다. 셰이퍼는 약정된 속도로 패킷 대기열에 흐름이 들어오도록 관리하며, 순서기는 자신이 관리하는 대기열의 우선 순위에 따라 패킷을 네트워크 인터페이스로 보냅니다. QoS 사양에 없는 트래픽은 우선 순위가 가장 낮은 최적의 대기열로 보내집니다.
그림 2 QoS/RSVP 아키텍처
그림 2의 흐름도에서는 응용 프로그램이 QoS RSVP를 사용하여 데이터 흐름을 클라이언트(들)에게 전달하는 방법을 보입니다. 여기서 응용 프로그램은 오디오 서버로서, 클라이언트에게 허용 가능한 품질의 오디오를 제공하려면 초당 1MB의 안정적인 대역폭이 필요합니다. RSVP는 유니캐스트 흐름과 멀티캐스트 흐름을 모두 지원합니다. 이 예에서는 단일 클라이언트에 대해 유니캐스트 흐름을 사용합니다.
응용 프로그램은 GQoS에게 제공될 구조를 초기화하고 완성합니다. 이러한 구조에는 송수신 흐름 규정이 포함되며, 흐름 규정에는 최고 대역폭, 대기 시간, 지연 편차, 서비스 종류 등과 같은 매개 변수들이 들어 있습니다. 제공되는 서비스로는 최대 보장(Best Effort) 및 완전 보장(Guaranteed) 등이 있습니다.
그런 다음 응용 프로그램은 WSAConnect를 호출하여 클라이언트에 연결합니다. 이 기능을 호출하면 다수의 이벤트를 처리할 수 있습니다. 특수한 경로 메시지를 보냄으로써 네트워크 신호를 처리하기 위한 RSVP를 불러옵니다. 경로 메시지는 흐름이 들어가는 주소와 동일한 대상 IP 주소로 보내집니다. 이는 흐름에서 라우터를 설정하고 흐름을 식별하기 위한 것입니다. 경로 메시지를 수신하는 라우터는 자신의 IP 주소를 경로 메시지의 마지막 홉에 삽입하여 클라이언트에 도달할 때까지 그 메시지를 다음 경로에 있는 라우터로 전달합니다. 이렇게 하면 클라이언트가 발신자와 송신자 사이의 경로를 알 수 있고 해당 경로를 따라 응용 프로그램의 대역폭을 예약할 수 있습니다. 클라이언트는 동일한 경로를 따라 예약 요청(해당 흐름을 다시 설명함)을 반환합니다. 경로에 있는 라우터는 사용 가능한 리소스를 검사하고 예약을 수락할 수 있는지를 결정합니다. 경로에 있는 모든 라우터가 예약을 수락하면 응용 프로그램이 해당 네트워크 대역폭과 기타 다른 특징들을 사용할 수 있습니다.
네트워크가 동적이고 서버 또는 클라이언트가 네트워크에게 알리지 않은 상태로 잘못해서 자신의 리소스를 버릴 수도 있기 때문에 경로 메시지와 예약 요청은 자주 갱신해야 합니다. 네트워크에 변화가 없으면 추가 경로 메시지와 예약 요청만 기존 경로에 추가됩니다. 그러나 새로운 라우터가 나타나면 네트워크가 조정되는 대로 흐름에 사용되는 경로가 변경될 수 있습니다.
서버 응용 프로그램이 많은 클라이언트들에 대한 멀티캐스팅 작업에 사용될 때 유사한 이벤트 시퀀스가 발생합니다. 한 가지 흥미로운 차이점은 라우터들이 동일한 흐름을 참조하는 다양한 클라이언트로부터 예약 요청을 수신할 때 그 라우터들이 동일한 정보 흐름에 대해 별도의 예약들을 유지하는 것이 아니라 예약 요청을 병합할 수 있다는 점입니다.
이에 대한 자세한 내용은 Winsock2 사양 및 RFC 2205를 참조하십시오.
IP 보안(IPSec)
IP 보안(IPSec)은 Windows 2000의 새로운 기능입니다. IPSec 기능 및 구현에 대한 사항은 매우 복잡하며 여러 개의 RFC 및 IETF 초안과 그 밖의 Microsoft 백서에 자세히 설명되어 있습니다. IPSec는 암호문 형식의 보안을 사용하여 액세스 제어, 연결없는 무결성, 데이터 근원 인증, 재생 방지, 기밀성 및 제한된 트래픽 흐름 기밀성을 제공합니다. IPSec는 IP 계층에서 제공되기 때문에, IPSec 서비스는 스택에 있는 상위 계층 프로토콜에서 사용이 가능하며 기존 응용 프로그램에서도 문제없이 사용할 수 있습니다.
IPSec를 사용하면 시스템이 보안 프로토콜을 선택하고 IPSec 서비스에 사용할 알고리즘을 결정하고 각각의 보안 관계를 위한 암호 키를 만들어서 관리할 수 있습니다. IPSec는 호스트간 경로, 보안 게이트웨이간 경로 또는 호스트와 보안 게이트웨이간 경로를 보호할 수 있습니다. 트래픽에 사용할 수 있는 필수 서비스는 IPSec 정책을 사용하여 구성됩니다. IPSec 정책은 한 컴퓨터에서 로컬로 구성되거나 Active Directory™ 서비스를 사용하는 Windows 2000 그룹 정책 메커니즘을 통해 지정될 수 있습니다. Active Directory를 사용하는 경우, 호스트는 시작할 때 정책 지정을 감지하고 정책을 검색한 후 정책 업데이트를 주기적으로 확인합니다. IPSec 정책은 컴퓨터들이 서로를 신뢰하는 방법을 지정합니다. IPSec는 인증서나 Kerberos 중 하나를 인증 방법으로 사용합니다. 가장 손쉽게 사용할 수 있는 신뢰는 Kerberos를 기반으로 하는 Windows 2000 도메인 신뢰입니다. 미리 정의된 IPSec 정책은 동일한 Windows 2000 도메인이나 기타 신뢰할 수 있는 Windows 2000 도메인에 있는 컴퓨터를 신뢰하도록 구성됩니다.
IP 계층에서 처리되는 각각의 IP 데이터그램은 보안 정책에서 제공하는 필터를 통해 비교되며, 이러한 필터는 관리자가 도메인에 소속된 컴퓨터용으로 관리합니다. IP는 데이터그램을 사용하여 다음 중 하나의 작업을 수행할 수 있습니다.
- IPSec 서비스를 데이터그램에게 제공합니다.
- 데이터그램을 수정하지 않은 상태로 통과시킵니다.
- 데이터그램을 무시합니다.
IPSec 정책에는 필터, 필터 동작, 인증, 터널 설정 및 연결 형식이 포함됩니다. 예를 들어, 동일한 Windows 2000 도메인에 있는 두 대의 독립형 컴퓨터들 사이에서 IPSec를 사용하고 보안 서버 정책을 활성화하도록 구성할 수 있습니다. 두 컴퓨터가 동일한 도메인이나 신뢰할 만한 도메인에 소속되어 있지 않은 경우에는 다음과 같은 방법으로 보안 서버 모드에서 인증서나 미리 공유된 키를 사용하여 신뢰를 구성해야 합니다.
- 두 호스트들 사이에서 모든 트래픽을 지정하는 필터 설정
- 인증 방법 선택
- 협상 정책 선택. 이 경우 보안 서버를 선택해야 하는데, 이는 필터와 일치하는 모든 트래픽에서 반드시 IPSec를 사용해야 함을 의미합니다.
- 연결 형식(LAN, 전화 접속 또는 모두) 지정
정책이 올바르게 구성되면 필터에 일치하는 트래픽은 IPSec에서 제공하는 서비스를 사용합니다. 여기서의 ping과 같은 간단한 트래픽을 포함한 IP 트래픽이 하나의 호스트에 의해 다른 호스트로 보내지면 UDP 포트 500을 통한 간단한 상호 작용과 인터넷 키 교환(IKE) 서비스를 거쳐 보안 연결(SA)이 구축된 후 트래픽이 흐르기 시작합니다. 아래의 네트워크 추적에서는 위와 같은 두 개의 IPSec 사용 호스트들간의 TCP 연결 구축에 대해 설명합니다. IP 데이터그램 중에서 SA가 만들어진 후에도 여전히 암호화되지 않고 Netmon에 표시되는 유일한 부분들은 미디어 액세스 제어 및 IP 헤더입니다.
Source IP Dest IP Prot Description
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 216 (0xD8)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 216 (0xD8)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 128 (0x80)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 128 (0x80)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 76 (0x4C)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 76 (0x4C)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 212 (0xD4)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 172 (0xAC)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 84 (0x54)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 92 (0x5C)
davemac-ipsec calvin-ipsec IP ID = 0xC906; Proto = 0x32; Len: 96
calvin-ipsec davemac-ipsec IP ID = 0xA202; Proto = 0x32; Len: 96
davemac-ipsec calvin-ipsec IP ID = 0xCA06; Proto = 0x32; Len: 88
SA가 만들어진 후 보내진 IP 데이터그램들 중 하나를 열 때 데이터그램에 실제로 존재하는 사항들(TCP SYN 또는 연결 요청)이 거의 드러나지 않습니다. 패킷 중에서 명확히 볼 수 있는 부분은 이더넷과 IP 헤더 뿐입니다. ESP가 사용되는 경우에는 TCP 헤더까지 암호화되어 버리기 때문에 Netmon을 통해 구문 분석될 수 없습니다.
Src IP Dest IP Protoc Description
===================================================
davemac-ipsec calvin-ipsec IP ID = 0xC906; Proto = 0x32; Len: 96
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
IP: ID = 0xC906; Proto = 0x32; Len: 96
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Precedence = Routine
IP: Type of Service = Normal Service
IP: Total Length = 96 (0x60)
IP: Identification = 51462 (0xC906)
+ IP: Flags Summary = 2 (0x2)
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = 0x32
IP: Checksum = 0xD55A
IP: Source Address = 172.30.250.139
IP: Destination Address = 157.59.24.37
IP: Data: Number of data bytes remaining = 76 (0x004C)
00000: 52 A4 68 7B 94 80 00 00 90 1D 84 80 08 00 45 00 R.h{..........E.
00010: 00 60 C9 06 40 00 80 32 D5 5A AC 1E FA 8B 9D 3B .`..@..2.Z.....;
00020: 18 25 18 D9 03 E8 00 00 00 01 F6 EF D0 23 1C 59 .%...........#.Y
00030: BD 01 78 BE 69 24 D6 EB AE 4F 08 DA 0F D4 6C 04 ..x.i$...O....l.
00040: 5F BC A6 E0 8D BE 5C 89 2D 56 60 80 FA 8B CC 5E _.....\.-V`....^
00050: 4E 61 3D 46 75 B9 D1 5B 52 45 79 7D 1E 36 1F 01 Na=Fu..[REy}.6..
00060: FF 25 E5 BA 48 AF D7 7A D5 9A 34 3E 5D 7D .%..H..z..4>]}
또한 보안 서버 정책을 사용하면 IPSec를 이해하지 못하거나 동일한 신뢰 그룹에 속하지 않는 대상에는 도달하지 못하도록 제한됩니다. 보안 초기화 정책은 서버에 가장 적합한 설정을 제공합니다. 트래픽 보안이 시도되지만, 클라이언트가 IPSec를 이해하지 못하는 경우에는 협상에서 다시 명확한 텍스트 패킷을 보냅니다.
IPSec를 사용하여 데이터를 암호화하면 일반적으로 암호화 처리 오버헤드로 인해 네트워크 성능이 저하됩니다. 이러한 오버헤드의 충격을 줄일 수 있는 방법들 중 하나는 처리 작업을 하드웨어 장치로 오프로드하는 것입니다. NDIS 5.0은 작업 오프로드 기능을 지원하기 때문에, 암호화 하드웨어를 NIC에 포함시키는 것이 가능합니다. IPSec 하드웨어 오프로드 기능을 지원하는 NIC는 여러 공급업체에서 제공합니다.
IPSec는 공용 네트워크 트래픽과 기밀을 요하는 기업/정부 내부 트래픽을 보호하는 데 널리 사용될 수 있습니다. 한가지 일반적인 구현 방식은 기밀 정보를 저장 또는 제공하는 데 사용되는 특정 서버에 대해서만 보안 서버 IPSec 정책을 적용하는 것입니다.
인터넷 그룹 관리 프로토콜(IGMP)
Windows 2000에서는 RFC 1112 및 RFC 2236에서 지정된 바와 같이 IP 멀티캐스팅(IGMP 버전 2)에 대한 레벨 2(전체) 지원 기능을 제공합니다. RFC 1112의 소개 부분에 IP 멀티캐스팅에 대한 전반적인 요약이 나와 있습니다. 그 내용은 다음과 같습니다.
"IP 멀티캐스팅은 호스트 그룹(단일 IP 대상 주소로 식별되는 0개 이상의 호스트 집합)으로 IP 데이터그램을 전송하는 것입니다. 멀티캐스트 데이터그램은 일반 유니캐스트 IP 데이터그램과 마찬가지로 안정성을 '최대한' 유지하면서 모든 대상 호스트 그룹 구성원들에게 전달됩니다. 즉, 데이터그램이 모든 대상 그룹 구성원들에게 원 상태대로 전달되거나 다른 데이터그램과 비교하여 동일한 순서대로 전달된다고는 보장할 수 없습니다."
"호스트 그룹의 구성원 관계는 동적입니다. 즉, 호스트는 언제든지 그룹에 가입하거나 탈퇴할 수 있습니다. 호스트 그룹에 속한 구성원의 위치나 수에는 제한이 없습니다. 하나의 호스트가 둘 이상의 그룹에 동시에 소속될 수 있습니다. 그룹 구성원이 아닌 호스트도 그룹에 데이터그램을 보낼 수 있습니다."
"호스트 그룹은 영구적이거나 일시적일 수 있습니다. 영구 그룹은 관리자가 지정한 잘 알려진 IP 주소를 가집니다. 이 주소는 영구 주소이며 그룹 구성원에게 반드시 필요한 사항은 아닙니다. 즉, 영구 그룹은 언제든지 모든 수(0개도 가능)의 구성원을 가질 수 있습니다. 영구 그룹용으로 예약되지 않은 이러한 IP 멀티캐스트 주소는 소속 구성원이 있는 동안에만 존재하는 임시 그룹을 동적으로 할당하는 데 사용될 수 있습니다."
"네트워크간 IP 멀티캐스트 데이터그램 전송은 인터넷 게이트웨이와 함께 설치되거나 인터넷 게이트웨이와 별도로 설치되는 멀티캐스트 라우터에서 처리됩니다. 호스트는 대상 호스트 그룹의 인접하는 모든 구성원들에게 도달하는 로컬 네트워크 멀티캐스트로서 IP 멀티캐스트 데이터그램을 전송합니다. 데이터그램이 1보다 큰 IP TTL(Time-to-Live)을 가지는 경우에는 로컬 네트워크에 연결된 멀티캐스트 라우터가 해당 데이터그램을 대상 그룹의 구성원이 속해 있는 다른 모든 네트워크로 전송합니다. IP TTL(Time-to-Live) 내에서 도달할 수 있는 이러한 다른 구성원 네트워크에 있는 연결된 멀티캐스트 라우터는 데이터그램을 로컬 멀티캐스트로 전송함으로써 전달을 완료합니다."
IP 멀티캐스팅을 위한 IP/ARP 확장
IP 멀티캐스팅을 지원하는 추가 경로는 호스트 상에서 정의됩니다. 데이터그램이 멀티캐스트 호스트 그룹에 보내지고 있는 경우 기본적으로 추가된 경로는 그 데이터그램이 기본 게이트웨이로 전달되는 것이 아니라 로컬 인터페이스 카드를 통해 호스트 그룹의 IP 주소로 보내져야 한다고 지정합니다. 아래의 경로(route print 명령을 사용하여 찾을 수 있음)에서 이를 보여줍니다.
Network Address Netmask Gateway Address Interface Metric
224.0.0.0 224.0.0.0 10.99.99.1 10.99.99.1 1
호스트 그룹 주소는 클래스 D 범위(224.0.0.0 - 239.255.255.255)에 있으므로 쉽게 식별됩니다. 이러한 IP 주소들은 모두 1110자리의 상위 비트 수를 가집니다.
로컬 인터페이스를 사용하여 패킷을 호스트 그룹에 보내기 위해서는 IP 주소가 미디어 액세스 제어 주소로 확인되어야 합니다. RFC에 다음과 같이 설명되어 있습니다.
"IP 호스트 그룹 주소는 IP 주소의 하위 23자리 비트를 이더넷 멀티캐스트 주소인 01-00-5E-00-00-00(16진수)의 하위 23자리 비트로 바꿈으로써 이더넷 멀티캐스트 주소로 매핑됩니다. IP 호스트 그룹 주소에는 중요한 28자리 비트가 있기 때문에, 둘 이상의 호스트 그룹 주소가 동일한 이더넷 멀티캐스트 주소로 매핑될 수 있습니다."
예를 들어, 225.0.0.5라는 멀티캐스트 주소로 지정된 데이터그램은 01-00-5E-00-00-05라는 (이더넷) 미디어 액세스 제어 주소로 보내집니다. 이러한 미디어 액세스 제어 주소는 01-00-5E와 225.0.0.5의 23자리 하위 비트(00-00-05)를 조합하여 형성됩니다.
둘 이상의 호스트 그룹 주소가 동일한 이더넷 멀티캐스트 주소로 매핑될 수 있기 때문에, 로컬 응용 프로그램에 등록되어 있지 않은 호스트 그룹의 핸드업 멀티캐스트가 인터페이스에 나타날 수 있습니다. 이러한 추가 멀티캐스트는 TCP/IP에서 무시합니다.
Windows 소켓에 대한 멀티캐스트 확장
인터넷 프로토콜 멀티캐스팅은 현재 SOCK_DGRAM 및 SOCK_RAW 유형의 AF_INET 소켓에서만 지원됩니다. IP 멀티캐스트 데이터그램은 기본적으로 TTL(Time-to-Live) 1로 보내집니다. 응용 프로그램은 setsockopt 함수를 사용하여 TTL을 지정합니다. 규정에 따르면, 멀티캐스트 라우터는 TTL 임계값을 사용하여 데이터그램이 얼마나 멀리 전달될 수 있는지를 결정합니다. 이러한 TTL 임계값은 다음과 같이 정의됩니다.
- 초기 TTL이 0인 멀티캐스트 데이터그램은 동일한 호스트로 제한됩니다.
- 초기 TTL이 1인 멀티캐스트 데이터그램은 동일한 서브넷으로 제한됩니다.
- 초기 TTL이 32인 멀티캐스트 데이터그램은 동일한 사이트로 제한됩니다.
- 초기 TTL이 64인 멀티캐스트 데이터그램은 동일한 지역으로 제한됩니다.
- 초기 TTL이 128인 멀티캐스트 데이터그램은 동일한 대륙으로 제한됩니다.
- 초기 TTL이 255인 멀티캐스트 데이터그램은 거리 제한을 받지 않습니다.
Windows 구성 요소에서 IGMP 사용
일부 Windows NT 및 Windows 2000 구성 요소들은 IGMP를 사용합니다. 예를 들어, 라우터 검색에서는 기본적으로 멀티캐스트를 사용합니다. WINS 서버는 복제 파트너의 위치를 찾을 때 멀티캐스팅을 사용합니다.
전송 제어 프로토콜(TCP)
TCP는 연결 기반의 안정적인 바이트 스트림 서비스를 응용 프로그램에게 제공합니다. Microsoft 네트워킹은 로그온, 파일 및 인쇄 공유, 도메인 컨트롤러들 사이의 정보 복제, 찾아보기 목록 전송 및 기타 다른 공통 기능에서 TCP 전송을 사용합니다. TCP는 일대일 통신에서만 사용될 수 있습니다.
TCP는 각 세그먼트의 헤더와 페이로드 모두에 대해 검사값을 사용함으로써 네트워크 손상이 검색되지 않은 상태로 진행될 소지를 줄여줍니다. NDIS 5.0은 작업 오프로딩 지원 기능을 제공하며, Windows 2000 TCP는 NIC 드라이버가 TCP 검사값 계산 기능을 지원하는 경우 NIC가 TCP 검사값 계산을 수행할 수 있게 허용함으로써 이러한 작업 오프로딩 지원 기능을 이용합니다. 처리량이 매우 많은 환경에서 검사값 계산을 하드웨어로 오프로드하면 그 성능이 향상될 수 있습니다. 또한 Windows 2000 TCP는 지난 수년 동안 다양한 공격들을 받으면서 보다 견고해졌으며 향후 발생할 수 있는 공격에 대한 피해를 줄이기 위한 내부 보안 검토를 거쳤습니다. 예를 들어, 초기 시퀀스 번호 알고리즘은 시스템이 시작될 때 임의의 2048비트 키를 사용하여 초기화되는 RC4 기반 난수 생성기를 사용하여 ISN을 임의로 증분시킬 수 있도록 수정되었습니다.
TCP 수신 창 크기의 계산 및 조정(RFC 1323)
TCP 수신 창 크기는 하나의 연결에서 한 번에 버퍼링될 수 있는 수신 데이터의 양(바이트 단위)입니다. 송신 호스트는 수신 호스트가 인식하여 창 크기를 업데이트하기 전에 수신 창 크기 만큼의 데이터 양만 보낼 수 있습니다. Windows 2000 TCP/IP 스택은 대부분의 환경에서 스스로를 조정하도록 설계되었으며 이전 버전에서보다 큰 기본 창 크기를 사용합니다. TCP는 하드 코드화된 기본 수신 창 크기를 사용하는 대신에 연결 구축 과정에서 협상된 최대 세그먼트 크기(MSS)를 일정하게 증가시켜 조정합니다. 수신 창이 일정한 MSS 증분과 일치하면 대량 데이터 전송 과정에서 사용되는 전체 크기의 TCP 세그먼트 비율이 증가합니다.
수신 창 크기 값은 기본적으로 다음과 같이 계산됩니다.
- 원격 호스트에 보내지는 첫 번째 연결 요청은 16KB(16,384바이트)의 수신 창 크기를 알립니다.
- 연결이 구축되면 수신 창 크기가 연결 구축 과정에서 협상된 TCP 세그먼트 크기(MSS) 단위로 올림하여 계산됩니다.
- 증분 값이 MSS의 네 배 이상이 되지 않으면 창 크기 조정 옵션(RFC 1323)이 적용되지 않는 한 최대 크기 64KB를 사용하여 4 * MSS로 조정됩니다.
이더넷의 경우, 일반적으로 창은 17,520바이트(16KB로, 1460바이트*12 세그먼트를 올림하여 계산한 경우)로 설정됩니다. 수신 창 크기를 특정 값으로 설정하는 방법은 다음과 같이 두 가지가 있습니다.
- TcpWindowSize 레지스트리 매개 변수(부록 A 참조)
- setsockopt Windows 소켓 함수(소켓 단위)
Windows 2000에서는 상위 대역폭 및 고지연 네트워크의 성능을 향상시킬 수 있는 확장 가능한 창 지원(RFC 1323) 기능을 도입했습니다. RFC 1323에서는 TCP가 연결을 구축할 때 창 크기 조정 요소를 협상할 수 있게 함으로써 확장 가능한 창을 지원하는 방법에 대해 자세히 설명합니다. 이러한 지원으로 실제로 최대 1GB의 수신 창을 사용할 수 있게 됩니다. RFC 1323 섹션 2.2에 다음과 같이 설명되어 있습니다.
"TCP는 SYN 세그먼트에서 3바이트 창 크기 조정 옵션을 보낼 수도 있습니다. 이렇게 조정 옵션을 보내는 목적은 TCP가 수신 창 및 송신 창 크기 조정을 모두 수행할 준비가 되었음을 나타내기 위한 것과 수신 창에 적용될 크기 조정 인수를 알리기 위한 것 두 가지입니다. 따라서 창 크기를 조정할 준비가 된 TCP는 자신의 크기 조정 인수가 1인 경우에도 옵션을 보내야 합니다. 크기 조정 인수는 2의 제곱승으로 제한되며 대수 방식으로 인코딩되므로 이진 자리 이동 동작을 통해 구현됩니다."
TCP Window Scale Option (WSopt):
Kind: 3 Length: 3 bytes
+---------+---------+---------+
| Kind=3 |Length=3 |shift.cnt|
+---------+---------+---------+
"이 옵션은 하나의 제안이지 실제적인 약속은 아닙니다. 양측 모두 창 크기 조정 기능을 각 방향에서 사용 가능으로 설정하려면 창 크기 조정 옵션을 자신의 SYN 세그먼트에서 보내야 합니다. 창 크기 조정 기능이 사용 가능으로 설정되면 창 배율 옵션을 보낸 TCP는 SEG.WND에서 전송을 위해 실제 수신 창 값을 'shift.cnt' 값만큼 오른쪽으로 자리 이동시킵니다. shift.cnt 값은 0일 수 있으며, 이 경우 크기 조정 인수 1을 수신 창에 적용하는 동시에 크기 조정 기능을 제공합니다."
"이 옵션은 초기 <SYN> 세그먼트, 즉 SYN 비트는 켜고 ACK 비트는 끈 세그먼트에서 보내집니다. 또한 이 옵션은 <SYN,ACK> 세그먼트에서 보내질 수 있지만, 이는 창 크기 조정 옵션이 초기 <SYN> 세그먼트에서 수신된 경우에만 가능합니다. SYN 비트가 없는 세그먼트의 창 크기 조정 옵션은 무시됩니다."
"SYN(즉, <SYN> 또는 <SYN,ACK>) 세그먼트의 창 필드 자체는 크기 조정되지 않습니다."
창 크기 조정을 지원하는 두 대의 컴퓨터간에 구축된 연결에서 네트워크 추적을 살필 때에는 항상 추적에서 알려진 창 크기가 협상된 크기 조정 인수에 따라 크기 조정되어야 한다는 점을 기억해야 합니다. 크기 조정 인수는 아래의 네트워크 모니터 캡처에서 설명한 바와 같이 연결 구축(3방향 핸드셰이크) 패킷에서 찾을 수 있습니다.
*************************************************************************
**************************
Src Addr Dst Addr Protocol Description
THEMACS1 NTBUILDS TCP ....S., len:0, seq:725163-725163,
ack:0, win:65535, src:1217 dst:139
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet
Protocol
+ IP: ID = 0xB908; Proto = TCP; Len: 64
TCP: ....S., len:0, seq:725163-725163, ack:0, win:65535,
src:1217 dst:139 (NBT Session)
TCP: Source Port = 0x04C1
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 725163 (0xB10AB)
TCP: Acknowledgement Number = 0 (0x0)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x02 : ....S.
TCP: Window = 65535 (0xFFFF)
TCP: Checksum = 0x8565
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
+ TCP: Maximum Segment Size Option
TCP: Option Nop = 1 (0x1)
TCP: Window Scale Option
TCP: Option Type = Window Scale
TCP: Option Length = 3 (0x3)
TCP: Window Scale = 5 (0x5)
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: SACK Permitted Option
00000: 8C 04 C8 BD A3 82 00 00 50 7D 83 80 08 00 45 00 ........P}....E.
00010: 00 40 B9 08 40 00 80 06 A7 1A 9D 36 15 FD AC 1F .@..@......6....
00020: 3B 42 04 C1 00 8B 00 0B 10 AB 00 00 00 00 B0 02 ;B..............
00030: FF FF 85 65 00 00 02 04 05 B4 01 03 03 05 01 01 ...e............
00040: 08 0A 00 00 00 00 00 00 00 00 01 01 04 02 ..............
*************************************************************************
**************************
위에서 패킷을 보내는 컴퓨터는 크기 조정 인수가 5인 창 크기 조정 옵션을 제공하고 있습니다. 대상 컴퓨터가 SYN-ACK 안에 있는 창 크기 조정 옵션을 수락한다고 응답하는 경우에는 이 컴퓨터가 알리는 모든 TCP 창이 현재 위치로부터 5비트 만큼 왼쪽으로 자리 이동되어야 합니다. SYN 자체는 크기 조정되지 않습니다. 예를 들어, 컴퓨터가 첫 번째 데이터 송신에서 32KB 창을 알린 경우, 이 값은 아래와 같이 5비트 만큼 왼쪽으로 자리 이동되어야 합니다. 자리 이동은 오른쪽부터 0을 삽입하는 방식으로 이루어집니다.
32Kbytes = 0x7fff = 111 1111 1111 1111
Left-shift 5 bits = 1111 1111 1111 1110 0000 = 0xffffe (1,048,544
bytes)
As a check, left-shifting a number 5 bits is equivalent to
multiplying it by 25, or 32. 32767 * 32 = 1,048,544
크기 조정 인수가 반드시 대칭적일 필요는 없으며 각각의 데이터 흐름 방향에 따라 달라질 수 있습니다.
TcpWindowSize가 64KB보다 큰 값으로 설정되고 Tcp1323Opts 레지스트리 매개 변수가 적절히 설정된 경우, Windows 2000에서는 창 크기 조정 기능을 자동으로 사용합니다. 이러한 매개 변수 설정에 대한 자세한 내용은 부록 A를 참조하십시오.
지연된 승인
RFC 1122에 설명된 바와 같이 TCP는 지연된 승인(ACK)을 사용하여 미디어의 송신 패킷 수를 줄입니다. Microsoft TCP/IP 스택은 일반적인 접근 방법을 사용하여 지연된 ACK를 구현합니다. 연결에서 TCP가 데이터를 수신할 때, 다음 중 하나의 조건이 충족되면 승인을 돌려보냅니다.
- 이미 수신된 세그먼트에 대해 ACK가 보내지지 않았을 경우
- 하나의 세그먼트가 수신되지만 다른 세그먼트들이 해당 연결에서 200밀리초 이내에 도달하지 않았을 경우
간단히 말해서, ACK는 보통 지연된 ACK 타이머(200밀리초)가 만료되지 않는 한 해당 연결에서 다른 TCP 세그먼트가 수신될 때마다 보내집니다. 지연된 ACK 타이머는 Windows 2000에 새로 추가된 매개 변수인 TcpDelAckTicks 레지스트리 매개 변수를 통해 조정될 수 있습니다.
TCP 선택 승인(RFC 2018)
Windows 2000에서는 선택 승인(SACK)이라는 중요한 기능을 새로 지원합니다. 대형 TCP 창 크기를 사용하는 연결인 경우에는 SACK가 특히 중요합니다. SACK가 지원되기 전까지 수신자는 수신된 연속 데이터의 가장 늦은 시퀀스 번호나 수신 창의 왼쪽 가장자리만 승인할 수 있었습니다. SACK가 사용되면 수신자가 수신 창의 왼쪽 가장자리를 승인하는 데 ACK 번호를 계속 사용하고 수신된 데이터의 다른 인접하지 않은 블록도 개별적으로 승인할 수 있습니다. SACK는 아래와 같이 TCP 헤더 옵션을 사용합니다. 아래의 내용은 FFC 2018에서 직접 인용한 것입니다.
SACK 허용 옵션
"2바이트 SACK 허용 옵션은 연결이 구축된 후 SACK 옵션을 수신 및 처리하도록 확장된 SYN에서 TCP에 의해 보내집니다. SYN 이외의 세그먼트에서는 이 옵션을 보내지 않아야 합니다."
TCP Sack-Permitted Option:
Kind: 4
+---------+---------+
| Kind=4 | Length=2|
+---------+---------+
SACK 옵션 형식
SACK 옵션은 확장된 승인 정보를 구축된 TCP 연결을 통해 수신자로부터 송신자에게 전달하는 데 사용됩니다.
TCP SACK Option:
Kind: 5
Length: Variable
+--------+--------+
| Kind=5 | Length |
+--------+--------+--------+--------+
| Left Edge of 1st Block |
+--------+--------+--------+--------+
| Right Edge of 1st Block |
+--------+--------+--------+--------+
| |
/ . . . /
| |
+--------+--------+--------+--------+
| Left Edge of nth Block |
+--------+--------+--------+--------+
| Right Edge of nth Block |
+--------+--------+--------+--------+
SACK가 사용 가능으로 설정(기본값)되면 패킷 수가 줄어들 수 있습니다. 이 경우 수신자는 송신자에게 어떠한 데이터가 수신되었고 데이터가 어디로 빠져나갔는지를 정확히 알려줄 수 있습니다. 따라서 송신자는 이미 성공적으로 수신된 데이터 블록은 재전송하지 않고 손실된 데이터만 선택하여 재전송할 수 있습니다. SACK는 SackOpts 레지스트리 매개 변수로 제어합니다. 아래의 네트워크 모니터 캡처에서는 시퀀스 번호 54857341까지의 모든 데이터와 시퀀스 번호 54858789-54861685의 데이터를 승인하는 호스트에 대해 설명합니다.
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
+ IP: ID = 0x1A0D; Proto = TCP; Len: 64
TCP: .A...., len:0, seq:925104-925104, ack:54857341, win:32722,
src:1242 dst:139
TCP: Source Port = 0x04DA
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 925104 (0xE1DB0)
TCP: Acknowledgement Number = 54857341 (0x3450E7D)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x10 : .A....
TCP: Window = 32722 (0x7FD2)
TCP: Checksum = 0x4A72
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
TCP: SACK Option
TCP: Option Type = 0x05
TCP: Option Length = 10 (0xA)
TCP: Left Edge of Block = 54858789 (0x3451425)
TCP: Right Edge of Block = 54861685 (0x3451F75)
TCP 타임스탬프(RFC 1323)
Windows 2000에서 도입한 또 다른 RFC 1323 기능으로는 TCP 타임스탬프에 대한 지원이 있습니다. SACK와 마찬가지로 이 기능은 대형 창 크기를 사용하는 연결에서 매우 중요합니다. 타임스탬프는 TCP가 왕복 시간(RTT)을 정확히 측정하여 재전송 초과 시간을 조정하는 데 도움을 주도록 개발되었습니다. RFC 1323에 설명된 타임스탬프에 대한 TCP 헤더 옵션은 다음과 같습니다.
TCP 타임스탬프 옵션(TSopt):
Kind: 8
Length: 10 bytes
+-------+-------+---------------------+---------------------+
|Kind=8 | 10 | TS Value (TSval) |TS Echo Reply (TSecr)|
+-------+-------+---------------------+---------------------+
1 1 4 4
"타임스탬프 옵션은 두 개의 4바이트 타임스탬프 필드를 제공합니다. 타임스탬프 값 필드(TSval)에는 옵션을 보내는 TCP의 현재 타임스탬프 클럭 값이 들어 있습니다."
"타임스탬프 에코 응답 필드(TSecr)는 TCP 헤더에 ACK 비트가 설정되어 있을 때만 유효합니다. 이 필드가 유효한 경우에는 원격 TCP가 보낸 타임스탬프 값을 타임스탬프 옵션의 Tsval 필드에 에코합니다. TSecr이 유효하지 않은 경우에는 0의 값을 가져야 합니다. TSecr 값은 일반적으로 가장 최근에 수신한 타임스탬프 옵션으로부터 얻어집니다. 그러나 아래의 경우는 예외입니다."
"TCP는 초기 <SYN> 세그먼트, 즉 ACK 비트를 제외하고 SYN 비트만 포함하는 세그먼트에서 타임스탬프 옵션(TSopt)을 보내며 Tsopt가 초기 <SYN> 세그먼트에서 수신된 경우에만 해당 연결에 대해 타임스탬프 옵션(Tsopt)을 다른 세그먼트에서 보냅니다."
TCP 옵션 필드를 확장하면 네트워크 모니터 캡처에 다음과 같은 타임스탬프 옵션 필드가 나타납니다.
TCP: Timestamps Option
TCP: Option Type = Timestamps
TCP: Option Length = 10 (0xA)
TCP: Timestamp = 2525186 (0x268802)
TCP: Reply Timestamp = 1823192 (0x1BD1D8)
타임스탬프는 기본적으로 사용 안함으로 설정됩니다. 타임스탬프를 사용 가능으로 설정하려면 부록 A에서 설명한 Tcp1323Opts 레지스트리 매개 변수를 사용합니다.
경로 최대 전송 단위(PMTU) 검색
PMTU 검색 기능은 RFC 1191에 설명되어 있습니다. 연결이 구축되면 연관된 두 호스트가 TCP 최대 세그먼트 크기(MSS) 값을 교환합니다. 연결에는 두 MSS 값들 중 작은 값이 사용됩니다. 경험상으로 볼 때 호스트의 MSS는 링크 계층 MTU로부터 IP 및 TCP 헤더용 40바이트를 뺀 값입니다. 단, 타임스탬프와 같은 추가 TCP 옵션을 지원하기 위해서는 일반적인 TCP+IP 헤더가 52바이트 이상으로 증가합니다.
그림 3 MTU 대 MSS
TCP 세그먼트가 비로컬 네트워크로 향하는 경우에는 Don't Fragment(조각내지 않음) 비트가 IP 헤더에 설정됩니다. 경로를 따라 존재하는 모든 라우터나 미디어는 두 호스트의 MTU와 틀린 MTU를 가질 수 있습니다. 미디어 세그먼트가 현재 라우팅되고 있는 IP 데이터그램에 비해 너무 작은 MTU를 가지는 경우에는 라우터가 데이터그램을 조각으로 나눕니다. 그런 다음 조각나지 않은 비트가 IP 헤더에 설정되어 있는지를 확인합니다. 이 시점에서 라우터는 데이터그램을 조각으로 나누지 않고서는 더 이상 전달할 수 없음을 송신 호스트에게 알려주어야 합니다. 이는 ICMP Destination Unreachable Fragmentation Needed and DF Set 메시지를 사용하여 수행됩니다. 또한 대부분의 라우터는 RFC 792에서 사용되지 않은 ICMP 헤더 필드의 하위 16비트에 그 값을 넣음으로써 다음 홉에 대한 MTU를 지정합니다. 이 메시지 형식에 대한 자세한 내용은 RFC 1191의 4절을 참조하십시오. 이러한 ICMP 오류 메시지가 수신되면 TCP는 그 연결에 대해 자신의 MSS를 지정된 MTU로부터 TCP 및 IP 헤더 크기를 뺀 값으로 조정하므로, 그 연결에서 보내진 다른 추가 패킷은 조각으로 나뉘지 않고서도 경로를 통과할 수 있는 최대 크기보다 작아집니다.
참고 최대 허용 MTU는 88바이트이며 Windows 2000 TCP는 이러한 제한을 철저히 지킵니다.
이를 따르지 않는 일부 라우터는 조각낼 수 없는 IP 데이터그램을 알리지 않고 버리거나 그 다음 홉 MTU를 틀리게 보고합니다. 이러한 경우에는 구성을 PMTU 검색 알고리즘으로 변경해야 합니다. 이러한 비호환 장치의 문제를 해결하기 위해 Windows 2000의 TCP/IP 스택에 대해 두 가지 레지스트리를 변경할 수 있습니다. 이러한 레지스트리 항목은 부록 A에서 자세히 설명합니다.
- EnablePMTUBHDetect—PMTU 검색 알고리즘을 조정하여 블랙 홀 라우터 검색을 시도합니다. 블랙 홀 검색은 기본적으로 사용 안함으로 설정됩니다.
- EnablePMTUDiscovery—PMTU 검색 메커니즘을 완전히 사용 가능 또는 사용 안함으로 설정합니다. PMTU 검색을 사용 안함으로 설정한 경우, 536바이트의 MSS가 모든 비로컬 대상 주소에 사용됩니다. PMTU 검색은 기본적으로 사용 가능으로 설정됩니다.
다음과 같이 ping 명령에 -f(don't fragment) 스위치를 사용하면 두 호스트 사이의 PMTU를 수동으로 검색할 수 있습니다.
ping -f -n <핑(ping) 수> -l <크기> <대상 IP 주소>
아래의 예와 같이, MTU를 찾기 전까지는 크기 매개 변수가 달라질 수 있습니다. ping에 사용되는 크기 매개 변수는 송신될 데이터 버퍼의 크기(헤더는 포함되지 않음)입니다. ICMP 헤더의 크기는 8바이트이며 IP 헤더의 크기는 보통 20바이트입니다. 아래의 예(이더넷)에서 링크 계층 MTU는 최대 크기 ping 버퍼와 28바이트를 합한 값이거나 1500바이트입니다.
C:\>ping -f -n 1 -l 1472 10.99.99.10
1472바이트의 데이터로 10.99.99.10을 핑(ping):
Reply from 10.99.99.10: bytes=1472 time<10ms TTL=128
10.99.99.10에 대한 통계 핑(ping):
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
대략적인 왕복 시간(밀리초 단위):
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>ping -f -n 1 -l 1473 10.99.99.10
1473바이트의 데이터로 10.99.99.10 핑(ping):
Packet needs to be fragmented but DF set.
10.99.99.10에 대한 통계 핑(ping):
Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),
대략적인 왕복 시간(밀리초 단위):
Minimum = 0ms, Maximum = 0ms, Average = 0ms
위의 예에서 IP 계층은 ping이 해석하는 ICMP 오류 메시지를 반환합니다. 라우터가 블랙 홀 라우터인 경우, 그 크기가 라우터에서 처리할 수 있는 MTU를 초과하는 경우에는 ping이 응답하지 않습니다. 이러한 방법으로 ping을 사용하여 블랙 홀 라우터를 검색할 수 있습니다.
다음은 ICMP Destination unreachable 오류 메시지에 대한 예입니다.
******************************************************************************
Src Addr Dst Addr Protocol Description
10.99.99.10 10.99.99.9 ICMP Destination Unreachable: 10.99.99.10
See frame 3
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
+ IP: ID = 0x4401; Proto = ICMP; Len: 56
ICMP: Destination Unreachable:10.99.99.10 See frame 3
ICMP: Packet Type = Destination Unreachable
ICMP: Unreachable Code = Fragmentation Needed, DF Flag Set
ICMP: Checksum = 0xA05B
ICMP: Next Hop MTU = 576 (0x240)
ICMP: Data:Number of data bytes remaining = 28 (0x001C)
ICMP: Description of original IP frame
ICMP: (IP) Version = 4 (0x4)
ICMP: (IP) Header Length = 20 (0x14)
ICMP: (IP) Service Type = 0 (0x0)
ICMP: Precedence = Routine
ICMP: ...0.... = Normal Delay
ICMP: ....0... = Normal Throughput
ICMP: .....0.. = Normal Reliability
ICMP: (IP) Total Length = 1028 (0x404)
ICMP: (IP) Identification = 45825 (0xB301)
ICMP: Flags Summary = 2 (0x2)
ICMP: .......0 = Last fragment in datagram
ICMP: ......1. = Cannot fragment datagram
ICMP: (IP) Fragment Offset = 0 (0x0) bytes
ICMP: (IP) Time to Live = 32 (0x20)
ICMP: (IP) Protocol = ICMP - Internet Control Message
ICMP: (IP) Checksum = 0xC91E
ICMP: (IP) Source Address = 10.99.99.9
ICMP: (IP) Destination Address = 10.99.99.10
ICMP: (IP) Data:Number of data bytes remaining = 8 (0x0008)
ICMP: Description of original ICMP frame
ICMP: Checksum = 0xBC5F
ICMP: Identifier = 256 (0x100)
ICMP: Sequence Number = 38144 (0x9500)
00000: 00 AA 00 4B B1 47 00 AA 00 3E 52 EF 08 00 45 00 ...K.G...>R...E.
00010: 00 38 44 01 00 00 80 01 1B EB 0A 63 63 0A 0A 63 .8D........cc..c
00020: 63 09 03 04 A0 5B 00 00 02 40 45 00 04 04 B3 01 c....[...@E.....
00030: 40 00 20 01 C9 1E 0A 63 63 09 0A 63 63 0A 08 00 @.....cc..cc...
00040: BC 5F 01 00 95 00
이러한 오류는 이더넷 기반 호스트에서 ping -f -n 1 -l 1000을 사용하여 576바이트의 MTU만 지원하는 라우터 인터페이스를 통해 대형 데이터그램을 보낼 때 발생합니다. 라우터에서 MTU 크기가 프레임 크기보다 작은 네트워크로 프레임을 보내려고 할 때, 조각화가 가능하지 않음을 알게 됩니다. 따라서 그 라우터는 전달될 수 있는 가장 큰 데이터그램이 0x240 또는 576바이트임을 알리는 오류 메시지를 반환합니다.
작동하지 않는 게이트웨이 검색
작동하지 않는 게이트웨이 검색 기능은 TCP가 기본 게이트웨이의 고장난 부분을 찾은 후 IP 라우팅 테이블을 조정하여 다른 기본 게이트웨이를 사용하도록 만드는 데 이용됩니다. Microsoft TCP/IP 스택은 고객의 경험과 피드백을 바탕으로 약간의 수정을 거쳐 RFC 816에 설명된 것과 같은 재선택 방법을 사용합니다.
기본 게이트웨이를 통과하도록 라우팅된 TCP 연결이 응답을 수신하지 않은 상태로 여러 번(레지스트리 값 TcpMaxDataRetransmissions의 절반에 해당)에 걸쳐 TCP 패킷을 대상에 보내려고 시도할 때, 알고리즘은 목록의 다음 기본 게이트웨이를 사용하도록 원격 IP 주소의 라우트 캐시 항목(RCE)을 변경합니다. TCP 연결 중 25%가 그 다음 게이트웨이로 이동되면 알고리즘은 컴퓨터의 기본 게이트웨이를 현재 연결에 사용되고 있는 게이트웨이로 변경하도록 IP에게 알립니다.
예를 들어, 기본 게이트웨이를 통과하도록 라우팅된 11개의 서로 다른 IP 주소들에 대한 TCP 연결이 현재 존재하며 기본 게이트웨이가 고장나 있고 두 번째 기본 게이트웨이가 이미 구성되어 있으며 TcpMaxDataRetransmissions 값이 기본적으로 5로 설정되어 있다고 가정하십시오.
첫 번째 TCP 연결이 데이터를 보내려고 시도할 때에는 아무런 승인도 수신되지 않습니다. 세 번째 재전송이 완료되면 원격 IP 주소에 대한 RCE가 목록의 다음 기본 게이트웨이로 바뀝니다. 이 때 그 원격 IP 주소에 대한 모든 TCP 연결은 바뀌지만 나머지 연결들은 여전히 원래의 기본 게이트웨이를 사용하려고 시도합니다.
두 번째 TCP 연결이 데이터를 보내려고 시도할 때에도 마찬가지입니다. 이제는 11개의 RCE 중 2개가 새로운 게이트웨이를 사용합니다.
세 번째 TCP 연결이 데이터를 보내려고 시도할 때, 세 번째 재전송이 완료되면 11개의 RCE 중 3개가 두 번째 기본 게이트웨이로 바뀝니다. 이 때 RCE 중 25% 이상이 이동되었기 때문에 전체 컴퓨터의 기본 게이트웨이가 새로운 게이트웨이로 이동하게 됩니다.
문제가 발생하여 작동하지 않는 게이트웨이 알고리즘이 목록의 다음 게이트웨이를 시도하거나 또는 컴퓨터가 다시 시작할 때까지는 이 기본 게이트웨이가 컴퓨터의 기본 게이트웨이로 사용됩니다.
마지막 기본 게이트웨이까지 검색되면 목록의 처음 부분으로 돌아갑니다.
TCP 재전송 동작
TCP는 각각의 아웃바운드 세그먼트가 IP에게 전달될 때 재전송 타이머를 시작합니다. 타이머가 만료될 때까지 해당 세그먼트에 있는 데이터에 대해 아무런 승인도 수신되지 않으면 세그먼트가 재전송됩니다. 새로운 연결 요청에서 재전송 타이머는 TcpInitialRtt 어댑터당 레지스트리 매개 변수를 사용해서 제어 가능한 시간인 3초로 초기화되며 요청(SYN)은 TcpMaxConnectRetransmissions에서 지정한 값(Windows 2000 기본값은 2회)에 도달할 때까지 재송신됩니다. 기존 연결에서는 재전송 횟수가 TcpMaxDataRetransmissions 레지스트리 매개 변수(기본값은 5)로 제어됩니다. 재전송 초과 시간은 Van Jacobson의 "Congestion Avoidance and Control" 문서에 나와 있는 고른 왕복 시간(SRTT) 계산 방식을 사용하여 연결 특성에 맞게 즉시 조정됩니다. 그 세그먼트가 각각 재전송된 후 세그먼트 타이머는 두 배로 증가합니다. TCP는 이러한 알고리즘을 사용하여 정상 연결 지연으로 자체 조정합니다. 고지연 링크를 통한 TCP 연결에 걸리는 시간은 저지연 링크를 통한 TCP 연결에 걸리는 시간보다 큽니다.4
다음의 추적은 하나의 서브넷에서 이더넷을 통해 연결된 두 호스트에 대한 재전송 알고리즘을 보이고 있습니다. 수신 호스트의 네트워크 연결이 끊겼을 때 FTP 파일 전송은 진행 중에 있었습니다. 이 연결에 대한 SRTT가 아주 작기 때문에, 첫 번째 재전송은 약 0.5초 후에 보내집니다. 그런 다음 이어지는 각 재전송에 대해 타이머가 두 배가 증가합니다. 다섯 번째 재전송이 발생한 후 타이머가 다시 한번 두 배로 증가합니다. 타이머가 만료될 때까지 아무런 승인도 수신되지 않으면 연결이 중단됩니다.
delta source ip dest ip pro flags description
0.000 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
0.521 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
1.001 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
2.003 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
4.007 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
8.130 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
재전송 타이머가 만료되기 이전에 TCP가 데이터를 재전송하는 경우도 간혹 발생합니다. 이러한 재전송이 발생하는 원인은 보통 고속 재전송이라는 기능 때문입니다. 고속 재전송 기능을 지원하는 수신자가 현재 예상되는 시퀀스 번호보다 큰 데이터를 수신할 때에는 일부 데이터가 손실된다고 간주합니다. 송신자가 수신자에게 이러한 이벤트를 알릴 수 있도록 수신자는 즉시 ACK 번호가 예상 시퀀스 번호로 설정된 ACK를 보냅니다. 이러한 작업은 수신 스트림에서 손실된 데이터 이후의 데이터를 가지고 도달하는 다른 TCP 세그먼트에 대해서도 계속됩니다. 동일한 시퀀스 번호를 승인하고 있는 상황에서 현재 전송되고 있는 시퀀스 번호보다 앞선 시퀀스 번호를 갖는 ACK 스트림이 수신되면 송신자는 하나 이상의 세그먼트가 손실되었다고 추측할 수 있습니다. 고속 재전송 알고리즘을 지원하는 송신자는 그 세그먼트에 대한 재전송 타이머가 만료되기를 기다리는 것이 아니라 그 즉시 수신자가 비어 있는 데이터 부분을 채울 것으로 예상하는 세그먼트를 다시 전송합니다. 이렇게 최적화하면 트래픽이 많은 네트워크 환경에서 성능이 크게 향상됩니다.
동일한 시퀀스 번호에 대해 세 개의 ACK를 수신하고 그 시퀀스 번호가 현재 시퀀스 번호보다 낮은 경우 Windows 2000에서는 기본적으로 세그먼트를 다시 전송합니다. 이는 TcpMaxDupAcks 레지스트리 매개 변수로 제어할 수 있습니다. 이 백서의 "TCP 선택 승인(RFC 2018)" 부분을 참조하십시오.
TCP 연결 유지 메시지
TCP 연결 유지 패킷은 연결할 현재 시퀀스 번호보다 시퀀스 번호가 낮게 설정된 ACK입니다. 이러한 ACK 중 하나를 수신하는 호스트는 현재 시퀀스 번호에 대한 ACK로 응답합니다. 연결 유지 메시지는 원격 연결 부분에 있는 컴퓨터를 여전히 사용할 수 있는지를 확인하는 데 사용될 수 있습니다. 다른 데이터나 상위 수준의 연결 유지 메시지가 TCP 연결을 통해 전달되지 않는 경우, KeepAliveTime(기본값은 7,200,000밀리초 또는 2시간)에 도달할 때마다 TCP 연결 유지 메시지가 보내질 수 있습니다. 연결 유지 메시지에 대한 응답이 없으면 KeepAliveInterval 초마다 연결 유지 메시지가 반복됩니다. KeepAliveInterval의 기본값은 1초입니다. 많은 Microsoft 네트워킹 구성 요소에 사용되는 NetBT 연결은 NetBIOS 연결 유지 메지지를 더 자주 보내므로, 보통 NetBIOS 연결에서는 아무런 TCP 연결 유지 메시지도 보내지 않습니다. TCP 연결 유지 메지지는 기본적으로 사용 안함으로 설정되지만 Windows 소켓 응용 프로그램에서 setsockopt 함수를 사용하면 TCP 연결 유지 메시지를 사용 가능으로 설정할 수 있습니다.
저속 시작 알고리즘 및 혼잡 기피
연결이 구축되면, TCP는 연결 대역폭을 검사하고 수신 호스트 또는 경로에 있는 다른 장치나 링크의 오버플로우를 피하기 위해 처음에는 느리게 시작됩니다. 송신 창은 두 개의 TCP 세그먼트로 설정되며 이미 승인된 경우에는 세 개의 세그먼트로 증분됩니다.5 이 세그먼트들이 승인되면 다시 증분됩니다. 이러한 작업은 버스트당 송신되고 있는 데이터의 양이 원격 호스트의 수신 창 크기와 같아질 때까지 계속됩니다. 여기서부터는 저속 시작 알고리즘이 더 이상 사용되지 않으며 수신 창이 흐름 제어를 관리합니다. 그러나 그 연결에서는 전송 과정에서 여전히 혼잡이 발생할 수 있습니다. 이러한 상황이 발생해서 재전송이 필요한 경우 송신 창 크기를 일시적으로 줄였다가 수신 창 크기만큼 다시 늘리는 혼잡 기피 알고리즘이 사용됩니다. 저속 시작 및 혼잡 기피는 RFC 1122 및 RFC 2581에 자세히 설명되어 있습니다.
SWS(Silly Window Syndrome)
SWS(Silly Window Syndrome)는 RFC 1122에 다음과 같이 설명되어 있습니다.
"간단히 말해서, SWS는 데이터를 수신하는 데 사용할 수 있는 새로운 버퍼 공간이 발생할 때마다 오른쪽 창 가장자리를 늘리는 수신자와 그 크기에 상관없이 증분 창을 사용하여 더 많은 데이터를 보내는 송신자로 인해 유발됩니다[TCP:5]. 그 결과 송신자와 수신자 모두 연결에 사용할 총 버퍼 공간을 충분히 가지더라도 매우 적은 양의 데이터 세그먼트만 보내는 안정적인 경향을 보입니다."
Windows 2000 TCP/IP는 전체 TCP 세그먼트를 보낼 수 있는 충분한 창 크기를 수신자 쪽에서 알려줄 때까지는 많은 데이터를 보내지 않음으로써 RFC 1122에 지정된 바와 같이 SWS 방지 기능을 구현합니다. 또한 Windows 2000 TCP/IP는 TCP 세그먼트보다 증분 단위가 작은 수신 창은 열지 않음으로써 연결 수신자의 SWS 방지 기능을 구현합니다.
Nagle 알고리즘
Windows NT 및 Windows 2000 TCP/IP는 RFC 896에 설명된 Nagle 알고리즘을 구현합니다. Nagel 알고리즘의 목적은 특히 고지연(원격) 링크에서 크기가 작은 세그먼트가 전송되는 횟수를 줄이는 것입니다. Nagle 알고리즘에서는 한 번에 하나의 작은 세그먼트만 승인을 받지 않은 상태로 남아 있을 수 있습니다. 첫 번째 세그먼트에 대한 ACK를 기다리는 동안 더 많은 작은 세그먼트들이 발생하는 경우, 이러한 세그먼트들은 하나의 커다란 세그먼트로 결합됩니다. 충분한 수신 창을 사용할 수 있다는 가정 하에, 전체 크기의 세그먼트는 항상 즉시 전송됩니다. Nagle 알고리즘은 Telnet과 같은 대화형 응용 프로그램에서 특히 저속 링크를 통해 송신되는 패킷의 수를 줄이는 데 효과적입니다.
Nagle 알고리즘은 Microsoft 네트워크 모니터에서 캡처한 다음과 같은 추적에서 나타날 수 있습니다. 아래의 추적은 PPP를 통해 인터넷 공급자에게 9600BPS로 전화 접속하여 캡처한 것입니다. Telnet(문자 모드) 세션이 만들어진 다음 Windows NT 워크스테이션에서 Y 키가 눌려졌습니다. 이전 세그먼트에 대한 승인이 수신될 때까지는 하나의 세그먼트가 보내질 때마다 스택에 Y 문자가 하나씩 더 늘어납니다. 이 예에서는 3-4개의 Y 문자가 매번 버퍼된 후 하나의 세그먼트로 함께 보내졌습니다. Nagle 알고리즘을 채택한 결과 송신 패킷 수가 크게 줄었고, 패킷 수도 약 3배 정도 감소했습니다.
Time Source IP Dest IP Prot Description
0.644 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
0.144 199.181.164.4 204.182.66.83 TELNET To Client Port = 1901
0.000 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
0.145 199.181.164.4 204.182.66.83 TELNET To Client Port = 1901
0.000 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
0.144 199.181.164.4 204.182.66.83 TELNET To Client Port = 1901
. . .
각각의 세그먼트에 여러 개의 Y 문자가 들어 있습니다. 다음은 첫 번째 세그먼트를 자세히 분석한 결과이며 데이터 부분은 아래쪽에 16진수로 표시되어 있습니다.
***********************************************************************
Time Source IP Dest IP Prot Description
0.644 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
+ IP: ID = 0xEA83; Proto = TCP; Len: 43
+ TCP: .AP..., len: 3, seq:1032660278, ack: 353339017, win: 7766,
src: 1901 dst: 23 (TELNET)
TELNET: To Server From Port = 1901
TELNET: Telnet Data
D2 41 53 48 00 00 52 41 53 48 00 00 08 00 45 00 .ASH..RASH....E.
00 2B EA 83 40 00 20 06 F5 85 CC B6 42 53 C7 B5 .+..@......BS..
A4 04 07 6D 00 17 3D 8D 25 36 15 0F 86 89 50 18 ...m..=.%6....P.
1E 56 1E 56 00 00 79 79 79 .V.V..yyy
^^^
data
Windows 소켓 응용 프로그램에서는 자신의 연결에 대해 Nagle 알고리즘을 사용할 수 없도록 TCP_NODELAY 소켓 옵션을 설정할 수 있습니다. 그러나 이러한 작업은 네트워크 이용을 늘리기 때문에 반드시 필요한 경우가 아니면 가급적 사용하지 않아야 합니다. 다수의 소형 패킷 전송으로 인해 발생하는 영향과 Nagle 알고리즘을 고려하지 않은 상태로 설계된 네트워크 응용 프로그램은 제대로 수행되지 않을 수 있습니다. Nagle 알고리즘은 성능상의 이유로 인해 TCP 연결을 루프백하는 데는 적용되지 않습니다. Windows 2000 Netbt는 직접 호스트된 리디렉터/서버 연결뿐만 아니라 TCP를 통한 NetBIOS 연결에 대해서도 네이글링을 사용할 수 없게 만듭니다. 따라서 다수의 소형 파일 조작 명령을 발행하는 응용 프로그램의 경우 성능이 향상될 수 있습니다. 그러한 응용 프로그램으로는 파일 잠금/잠금 해제 기능을 자주 사용하는 응용 프로그램을 들 수 있습니다.
TCP 대기 시간 지연
TCP 연결을 닫으면 소켓 쌍이 대기 시간(TIME-WAIT)이라고 알려진 상태로 들어갑니다. 이렇게 대기 시간 상태로 바뀌는 이유는 잘못 라우팅되거나 지연된 세그먼트가 예기치 않게 전달되는 것을 방지하기 위해, 충분한 시간이 경과할 때까지는 새로운 연결이 동일한 프로토콜, 원본 IP 주소, 대상 IP 주소, 원본 포트 및 대상 포트를 사용하지 못하도록 만들기 위해서입니다. 소켓 쌍이 재사용되지 않아야 하는 시간은 RFC 793에서 지정한 최대 세그먼트 존속 시간의 2배(2MSL) 또는 4분입니다. Windows NT 및 Windows 2000에서는 이 시간이 기본값으로 설정되어 있습니다. 그러나 이러한 기본값을 사용하는 경우, 짧은 시간 동안 많은 아웃바운드 연결을 수행하는 일부 네트워크 응용 프로그램에서는 포트가 재순환되기 전에 미리 사용 가능한 포트를 모두 소모해버릴 수 있습니다.
Windows NT 및 Windows 2000에서는 이러한 작동을 제어할 수 있는 두 가지 방법을 제공합니다. 첫 번째는 TcpTimedWaitDelay 레지스트리 매개 변수를 사용하여 이 값을 변경하는 것입니다. Windows NT 및 Windows 2000에서는 이 값을 30초로 낮게 설정할 수 있습니다. 이 값을 30초로 설정하면 대부분의 환경에서 문제가 발생하지 않습니다. 두 번째는 아웃바운드 연결을 소싱하는 데 사용될 수 있는 사용자 액세스가 가능한 포트(일시적으로 존재하는)의 수를 MaxUserPorts 레지스트리 매개 변수를 사용해서 구성하는 것입니다. 기본적으로 응용 프로그램이 아웃바운드 호출에 사용하기 위해 시스템으로부터 소켓을 요청하면 1024와 5000 사이의 포트가 제공됩니다. MaxUserPorts 매개 변수를 사용하면 관리자가 아웃바운드 연결을 허용하기 위해 선택하는 최상위 포트의 값을 설정할 수 있습니다. 예를 들어, 이 값을 10,000(십진수)으로 설정하면 대략 9,000개의 사용자 포트를 아웃바운드 연결에 사용할 수 있습니다. 이러한 개념에 대한 자세한 내용은 RFC 793, MaxFreeTcbs 및 MaxHashTableSize 레지스트리 매개변수를 참조하십시오.
다중홈 컴퓨터와의 TCP 연결
다중홈 호스트에 대한 TCP 연결이 만들어질 때, WINS 클라이언트와 도메인 이름 확인자(DNR)는 이름 서버에서 제공하는 대상 IP 주소가 로컬 컴퓨터의 인터페이스와 동일한 서브넷에 있는지를 판별하려고 시도합니다. 대상 IP 주소가 동일한 서브넷에 있는 경우, 응용 프로그램에서 동일한 서브넷에 있지 않은 주소들을 판별하기 전에 먼저 판별할 수 있도록 동일한 서브넷에 있는 주소들을 목록 위쪽에 정렬합니다. 어떠한 주소도 로컬 컴퓨터와 동일한 서브넷에 있지 않은 경우에는 이름 공간에 따라 동작이 달라집니다. PrioritizeRecordData TCP/IP 레지스트리 매개 변수를 사용하면 DNR 구성 요소가 로컬 서브넷 주소와 분리되기 때문에 목록 위쪽으로 정렬되는 것을 방지할 수 있습니다.
WINS 이름 공간에서 클라이언트는 제공된 주소들간의 임의 조정 또는 로드 균형 조정을 수행하는 역할을 합니다. WINS 서버는 항상 주소 목록을 동일한 순서대로 반환하며 WINS 클라이언트는 각각의 연결에 대해 이들 중 하나의 주소를 임의로 지정합니다.
DNS 이름 공간에서 DNS 서버는 일반적으로 주소를 순서없이 제공하도록 구성됩니다. DNR은 주소를 더 이상 임의로 지정하려고 시도하지 않습니다. 일부 경우에는 다중홈 컴퓨터의 특정 인터페이스에 연결하는 것이 좋습니다. 이러한 작업을 수행하는 가장 좋은 방법은 고유의 DNS 항목을 가진 인터페이스를 제공하는 것입니다. 예를 들어, raincity라는 한 대의 컴퓨터는 두 IP 주소(실제로 DNS에는 동일한 이름을 가진 두 개의 서로 다른 레코드가 있음)를 모두 나열하는 하나의 DNS 항목과 raincity1 및 raincity2(각각 컴퓨터에 할당된 IP 주소들 중 하나에만 연관됨)용으로 존재하는 DNS 레코드들을 가질 수 있습니다.
다중홈 호스트로부터 TCP 연결이 만들어지는 경우에는 상황이 다소 복잡해집니다. DNS 이름 공간을 사용하는 Winsock 연결인 경우에는 그 연결에 대한 대상 IP 주소가 알려진 후 TCP가 사용 가능한 원본 IP 주소들 중 가장 적합한 원본 IP 주소로부터 연결하려고 시도합니다. 이러한 결정을 내리는 데는 경로 테이블이 사용됩니다. 대상 IP 주소와 동일한 서브넷에 있는 로컬 컴퓨터에 인터페이스가 있는 경우, 그 IP 주소는 연결 요청에서 원본으로 사용됩니다. 가장 적합한 원본 IP 주소를 사용할 수 없는 경우, 시스템은 임의로 하나의 원본 IP 주소를 선택합니다.
리디렉터를 사용하는 NetBIOS 기반 연결인 경우에는 응용 프로그램 수준에서 사용할 수 있는 라우팅 정보가 거의 없습니다. NetBIOS 인터페이스는 다양한 프로토콜을 통한 연결을 지원하며 IP 정보를 가지고 있지 않습니다. 그 대신에 리디렉터는 자신에게 바운드되는 모든 전송에 대해 호출을 생성합니다. 두 개의 컴퓨터 인터페이스와 하나의 프로토콜이 설치되어 있는 경우, 리디렉터에 대해 사용할 수 있는 전송 방식은 두 가지입니다. 두 전송 모두에 대해 호출이 생성되면 NetBT는 각 인터페이스의 IP 주소를 사용하여 연결 요청을 스택에 보냅니다. 두 호출이 모두 성공할 수도 있는데, 그런 경우에는 리디렉터가 그 중 하나를 취소합니다. 어떠한 호출을 취소할 것인지의 여부는 리디렉터의 ObeyBindingOrder 레지스트리 값에 따라 결정됩니다.6 위의 레지스트리 값을 0(기본값)으로 설정하면 1차 전송(바인딩 순서에 따라 결정됨)이 선택되며 리디렉터는 1차 전송이 시간 제한할 때까지 기다린 후 2차 전송 연결을 승인합니다. 위의 레지스트리 값을 1로 설정하면 리디렉터는 바인딩 순서에 상관없이 첫 번째 연결을 승인하고 나머지 연결은 취소합니다.
처리량 고려 사항
TCP는 다양한 링크 조건에서 최적의 성능을 제공하도록 설계되었으며 Windows 2000에는 RFC 1323을 지원하는 향상된 기능들이 들어 있습니다. 실제 링크 처리량은 다양한 변수에 따라 결정되지만 가장 중요한 요소들은 다음과 같습니다.
- 링크 속도(1초당 전송될 수 있는 비트 수)
- 전파 지연
- 창 크기(TCP 연결에서 처리되지 않은 미승인 데이터 양)
- 링크 안정성
- 네트워크 및 중간 장치 혼잡
- 경로 MTU
TCP 처리량 계산은 W. Richard Stevens가 작성한 TCP/IP Illustrated에 있는 20-24장에 자세히 설명되어 있습니다.7 몇 가지 주요 고려 사항들은 다음과 같습니다.
- 파이프 용량은 대역폭과 왕복 시간을 곱한 값입니다. 이 값은 대역폭-지연 곱이라고 알려져 있습니다. 링크가 안정적인 경우, 최적의 성능을 얻기 위해서는 송신 스택이 가득 채울 수 있도록 창 크기가 파이프 용량보다 크거나 같아야 합니다. TCP 헤더에 있는 16비트 필드로 인해 지정 가능한 가장 큰 창 크기는 65535이지만, 이 백서의 초반부에 설명된 바와 같이 창 크기 조정 기능을 사용하면 더 큰 창을 사용할 수 있습니다. 부록 A의 TcpWindowSize를 참조하십시오.
- 처리량은 창 크기를 왕복 시간으로 나눈 값보다 크면 안됩니다.
- 링크가 불안정하거나 몹시 혼잡하고 패킷이 손실되고 있는 경우에는 더 큰 창 크기를 사용하더라도 처리량이 향상되지 않습니다. Windows 2000에서는 창 크기 조정 지원과 함께 RFC 2018에 나와 있는 선택 승인(SACK)을 지원함으로써 패킷 손실이 발생하고 있는 환경에서 성능을 개선합니다. 또한 Windows 2000에는 RTT 추정을 개선하기 위한 타임스탬프 지원 기능도 들어 있습니다.
- 전파 지연은 빛의 속도, 전송 장비의 대기 시간 등에 따라 결정됩니다.
- 전송 지연은 미디어 속도에 따라 결정됩니다.
- 특정 경로에서 전파 지연은 고정적이지만 전송 지연은 패킷 크기에 따라 결정됩니다.
- 느린 속도에서는 전송 지연이 제한 요소이며, 빠른 속도에서는 전파 지연이 제한 요소가 될 수 있습니다.
요약하면, Windows NT 및 Windows 2000 TCP/IP는 대부분의 네트워크 환경에 적응할 수 있고 각각의 연결에서 최상의 처리량과 안정성을 동적으로 제공할 수 있습니다. 자격있는 네트워크 엔지니어가 먼저 데이터 흐름을 자세히 조사하지 않은 상태에서 수동 조정을 시도하면 간혹 생산성에 반하는 결과가 초래됩니다.
사용자 데이터그램 프로토콜(UDP)
UDP는 불안정하고 연결이 없는 전송 서비스를 제공합니다. 간혹 브로드캐스트나 멀티캐스트 IP 데이터그램을 사용하는 통신에서 UDP를 너무 많이 사용하곤 합니다. UDP 데이터그램이 확실히 배달된다고 보증할 수 없기 때문에, UDP를 사용하는 응용 프로그램에서는 필요한 경우 안정성을 확보하기 위한 자체적인 메커니즘을 가지고 있어야 합니다. Microsoft 네트워킹에서는 로그온, 찾아보기 및 이름 확인 작업을 수행할 때 UDP를 사용합니다. 또한 UDP는 IP 멀티캐스트 스트림을 전송하는 데도 사용될 수 있습니다.
UDP 및 이름 확인
UDP는 유니캐스트를 사용한 NetBIOS 이름 대 NetBIOS 이름 서버 또는 서브넷 브로드캐스트 확인과 DNS 호스트 이름 대 IP 주소 확인에 사용됩니다. NetBIOS 이름 확인은 UDP 포트 137을 통해 수행됩니다. DNS 쿼리는 UDP 포트 53을 사용합니다. UDP 자체는 데이터그램 전달을 보장하지 않기 때문에, NetBIOS 이름 확인 서비스와 DNS 쿼리 서비스는 모두 쿼리에 대한 응답이 수신되지 않는 경우 고유의 재전송 구성표를 사용합니다. 브로드캐스트 UDP 데이터그램은 일반적으로 IP 라우터를 통해 전달되지 않으므로 라우팅된 환경의 NetBIOS 이름 확인을 위해서는 특정한 종류의 이름 서버를 사용하거나 고정 데이터베이스 파일을 사용해야 합니다.
UDP를 통한 메일 슬롯
대부분의 NetBIOS 응용 프로그램들은 메일 슬롯 메시징을 사용합니다. 2차 클래스 메일 슬롯은 UDP를 통해 NetBIOS 이름들 사이에서 메시지를 전송하는 간단한 메커니즘입니다. 메일 슬롯 메시지는 서브넷을 통해 브로드캐스트되거나 원격 호스트로 보내질 수 있습니다. 메일 슬롯 메시지를 다른 호스트로 보내려면 몇 가지 NetBIOS 이름 확인 방법들을 사용할 수 있어야 합니다. Microsoft에서는 이를 위해 Windows 인터넷 이름 서버(WINS)를 제공합니다.
TCP/IP를 통한 NetBIOS
Windows NT 및 Windows 2000의 TCP/IP를 통한 NetBIOS 구현은 NetBT라고 합니다. NetBT에서는 다음과 같은 TCP 및 UDP 포트들을 사용합니다.
- UDP 포트 137(이름 서비스)
- UDP 포트 138(데이터그램 서비스)
- TCP 포트 139(세션 서비스)
TCP/IP를 통한 NetBIOS는 RFC 1001 및 RFC 1002에 규정되어 있습니다. NetBT.sys 드라이버는 TDI 인터페이스를 지원하는 커널 모드 구성 요소입니다. Windows NT 워크스테이션 및 Windows NT 서버와 같은 서비스들은 TDI 인터페이스를 직접 사용하지만 기존의 NetBIOS 응용 프로그램은 자신의 호출을 Netbios.sys 드라이버를 사용하여 TCI 호출로 매핑합니다. TDI를 사용한 NetBT 호출이 보다 어려운 프로그래밍 작업이기는 하지만 성능을 향상시키며 기존의 NetBIOS 제한 사항을 탈피할 수 있게 해줍니다. NetBIOS 개념은 이 백서의 "네트워크 응용 프로그램 인터페이스" 부분에서 자세히 설명합니다.
전송 드라이버 인터페이스(TDI)
Microsoft에서는 전송 드라이버 인터페이스(TDI)를 개발하여 NetBIOS 및 Windows 소켓과 같은 기존 인터페이스보다 더 향상된 유연성과 기능을 제공합니다. 모든 Windows 전송 공급자들은 TDI를 적용해야 합니다. TDI 사양에서는 전송 드라이버와 TDI 클라이언트가 통신에 사용하는 기본 기능들과 이러한 기능에 액세스할 때 사용되는 호출 메커니즘에 대해 설명합니다. 현재 TDI는 커널 모드 전용입니다.
Windows 2000 리디렉터와 서버는 모두 NetBIOS 매핑 계층을 통하는 대신에 TDI를 직접 사용합니다. 따라서 NetBIOS의 많은 제한 사항들(예: 레거시 254 세션 제한)로부터 벗어날 수 있습니다.
TDI 기능
TDI는 모든 Windows 네트워크 API 중에서 가장 사용하기 어려운 API일 수 있습니다. 이는 간단한 콘딧에 불과하므로 메시지 형식과 그 의미는 프로그래머가 결정해야 합니다.
TDI에는 다음과 같은 기능들이 들어 있습니다.
- 대부분의 Windows NT 또는 Windows 2000 전송에서 TDI 지원(DLC 제외)
- 개방형 이름 지정 및 주소 지정 구성표
- 메시지 및 스트림 모드 데이터 전송
- 비동기 작동
- 지시하지 않아도 이벤트 표시 지원
- 확장성—클라이언트는 자신의 요청을 이해하는 전송 드라이버에게 개인 요청을 보낼 수 있음
- 데이터 송수신을 위한 표준 커널 모드 I/O 기능의 제한된 사용 지원
- 32비트 주소 지정 및 값
- TDI 주소 개체의 액세스 제어 목록(보안에 사용되는 ACL) 지원
TDI에 대한 자세한 내용은 Windows 2000 DDK(장치 드라이버 키트)를 참조하십시오.
보안 고려 사항
네트워크 보안은 공용 네트워크에 노출된 컴퓨터를 관리하는 관리자에게 있어 중요한 고려 사항입니다. Microsoft TCP/IP 스택은 많은 공격들을 받으면서 견고해졌으며 기본 상태에서 대부분의 일반적인 공격들을 처리합니다. 레지스트리에 있는 SynAttackProtect 키를 사용하면 자주 발생되는 서비스 거부(DoS) 공격에 대해 몇 가지 보호 기능을 추가할 수 있습니다. 관리자는 이러한 키를 사용하여 SYN 공격에 대한 다양한 보호 수준을 선택할 수 있습니다.
다음은 공격에 대한 취약성을 낮출 수 있는 일반적인 지침들입니다.
- 불필요하거나 선택적인 서비스들(예: IIS 서버의 Microsoft 네트워크용 클라이언트)을 사용 안함으로 설정합니다.
- TCP/IP 필터링을 사용 가능으로 설정하고 서버 작동에 필요한 포트만 액세스할 수 있게 제한합니다. Windows 서비스에 사용되는 포트 목록은 Microsoft 기술 자료 문서 번호 Q150543<http://search.support.microsoft.com/kb/c.asp>을 참조하십시오.
- 필요치 않은 TCP/IP를 통한 NetBIOS를 바인드 해제합니다.
- 공용 어댑터용 고정 IP 주소와 매개 변수를 구성합니다.
- 최대 보호를 위해 레지스트리 설정을 구성합니다(부록 D 참조).
Microsoft 보안 웹 사이트<http://www.microsoft.com/security/default.asp>의 보안 게시판을 정기적으로 참조하십시오.
네트워크 응용 프로그램 인터페이스 | |
네트워크 응용 프로그램이 TCP/IP 프로토콜을 사용하여 통신할 수 있는 방법은 여러 가지입니다. 그 중 명명된 파이프 등의 일부 방법은 Windows NT 워크스테이션 서비스들 중 하나인 네트워크 리디렉터를 통과합니다. 대부분의 기존 응용 프로그램들은 TCP/IP를 통한 NetBIOS에서 지원하는 NetBIOS 인터페이스로 작성되었습니다.
현재 가장 많이 사용되는 인터페이스는 Windows 소켓입니다. 여기서는 Windows 소켓 인터페이스와 NetBIOS 인터페이스에 대해 간략하게 설명합니다.
Windows 소켓
Windows 소켓은 버클리 소재 캘리포니아 대학에서 만든 소켓 인터페이스를 토대로 하여 프로그래밍 인터페이스를 지정합니다. Windows 소켓에는 Microsoft Windows의 메시지 구동성을 활용하는 확장 세트가 포함됩니다. 버전 1.1 사양은 1993년 1월, 버전 2.2.0 사양은 1996년 5월에 각각 발표되었습니다.8 Windows 2000에서는 일반적으로 Winsock2라고 하는 버전 2.2를 지원합니다.
응용 프로그램
사용할 수 있는 Windows 소켓 응용 프로그램들은 매우 많습니다. FTP 및 DHCP 클라이언트와 서버, Telnet 클라이언트 등과 같이 Windows 2000과 함께 제공되는 많은 유틸리티들은 Windows 소켓을 기반으로 합니다. 또한 Internet Explorer에서 사용되는 Windows 인터넷 API(WinInet)와 같이 Winsock을 기반으로 하는 고급 프로그래밍 인터페이스도 함께 제공됩니다.
이름 및 주소 확인
Windows 소켓 응용 프로그램에서는 일반적으로 gethostbyname() 함수를 사용하여 호스트 이름 대 IP 주소 확인 작업을 수행합니다. gethostbyname() 함수는 다음(기본값)과 같은 이름 조회 시퀀스를 사용합니다.
- 로컬 호스트 이름들 중 일치하는 이름이 있는지 검사합니다.
- 호스트 파일들 중에서 일치하는 이름 항목이 있는지 검사합니다.
- 도메인 이름 서버(DNS)가 구성된 경우에는 이를 쿼리합니다.
- 일치하는 항목을 찾을 수 없는 경우에는 DNS 확인이 시도되는 시점까지 NetBIOS 이름 확인을 시도합니다.
일부 응용 프로그램에서는 gethostbyaddr() 함수를 사용하여 IP 주소 대 호스트 이름 확인 작업을 수행합니다. gethostbyaddr() 호출에서는 다음(기본값)과 같은 시퀀스를 사용합니다.
- 호스트 파일들 중에서 일치하는 주소 항목이 있는지 검사합니다.
- 도메인 이름 서버(DNS)가 구성된 경우에는 이를 쿼리합니다.
- NetBIOS 어댑터 상태 요청을 쿼리 중인 IP 주소로 보낸 후 해당 어댑터에 대해 등록된 NetBIOS 이름 목록이 오면 이를 분석하여 컴퓨터 이름을 찾습니다.
IP 멀티캐스팅 지원
Winsock2는 IP 멀티캐스팅을 지원합니다. 멀티캐스팅은 Windows 소켓 2.0 사양과 이 백서의 IGMP 부분에서 설명합니다. IP 멀티캐스팅은 현재 SOCK_DGRAM 및 SOCK_RAW 형식의 AF_INET 소켓에서만 지원됩니다.
백로그 매개 변수
Windows 소켓 서버 응용 프로그램은 일반적으로 소켓을 만든 후 그 소켓에 있는 listen() 함수를 사용하여 연결 요청을 수신합니다. listen()을 호출할 때 전달되는 매개 변수들 중 하나는 응용 프로그램이 Windows 소켓으로 하여금 대기하도록 만들려는 연결 요청 백로그입니다. 이 값은 수락되지 않는 연결들 중 대기할 수 있는 연결 개수를 제어합니다. 응용 프로그램이 연결을 수락하면 그 연결이 연결 요청 백로그에서 제외되어 더 이상 카운트하지 않습니다. Windows 소켓 1.1 사양에는 허용 가능한 최대 백로그 값이 5로 지정되어 있습니다. 그러나 Windows NT 3.51에서는 백로그 값을 최대 100까지 수락하며 Windows NT 4.0 및 Windows 2000 Server에서는 최대 200까지, 그리고 Windows NT 4.0 Workstation 및 Windows 2000 Professional에서는 최대 5(메모리 요구량이 적음)까지 백로그 값을 허용합니다.
푸시 비트 해석
기본적으로 Windows 2000 TCP/IP는 다음 중 하나의 조건이 충족되면 recv() 호출을 완료합니다.
- PUSH 비트 세트를 가진 데이터가 도달한 경우
- 사용자 recv 버퍼가 가득 찬 경우
- 데이터 도달 후 0.5초가 경과한 경우
송신 동작에서 푸시 비트를 설정하지 않도록 TCP/IP를 구현한 컴퓨터에서 클라이언트 응용 프로그램을 실행하는 경우에는 응답 지연이 발생할 수 있습니다. 이러한 문제는 클라이언트에서 해결하는 것이 가장 좋지만, 비록 푸시 비트가 설정되어 있더라도 도달하는 모든 패킷을 처리하도록 구성 매개 변수(IgnorePushBitOnReceives)가 Afd.sys에 추가되었습니다. Windows NT 4.0에서 새로 추가된 이러한 매개 변수는 Windows 2000에서도 지원됩니다.
TCP/IP를 통한 NetBIOS
NetBIOS는 프로토콜이 아닌 소프트웨어 인터페이스와 이름 지정 규칙을 정의합니다. 초기 버전의 Microsoft 네트워킹 제품들에서는 NetBEUI 근거리 통신망 프로토콜에게만 NetBIOS 응용 프로그램 프로그래밍 인터페이스를 제공했습니다. NetBEUI는 빠르고 간단한 프로토콜로서 아무런 네트워킹 계층도 가지지 않기 때문에 라우팅되지 않으며 간혹 WAN 구현에도 적합하지 않습니다. NetBEUI는 이름 확인 브로드캐스트와 서비스 위치에 따라 달라집니다. TCP/IP를 통한 NetBIOS는 TCP/IP 프로토콜을 통한 NetBIOS 프로그래밍 인터페이스를 제공하며 NetBIOS 클라이언트 및 서버 프로그램의 범위를 WAN으로 확장하고 기타 다양한 운영 체제와의 상호 운용성을 제공합니다.
워크스테이션 서비스, 서버 서비스, 브라우저, 메신저 및 NetLogon 서비스는 모두 직접적인 NetBT 클라이언트들입니다. 이들은 이 백서의 초반부에 설명된 TDI를 사용하여 NetBT와 통신합니다. Windows NT 및 Windows 2000에도 NetBIOS 에뮬레이터가 포함되어 있습니다. 에뮬레이터는 NetBIOS 응용 프로그램의 표준 NetBIOS 요청을 수신한 후 이를 동등한 TDI 프리미티브로 변환합니다.
Windows 2000에서는 여전히 TCP/IP를 통한 NetBIOS를 사용하여 이전 버전의 Windows NT 및 Windows 95 등의 다른 클라이언트들과 통신하지만, Windows 2000 리디렉터와 서버 구성 요소도 이제는 Windows 2000을 실행하는 다른 컴퓨터와 통신하기 위한 직접 호스팅을 지원합니다. 직접 호스팅은 DNS를 이름 확인에 사용합니다. NetBIOS 이름 확인(WINS 또는 브로드캐스트)은 사용되지 않으며 프로토콜은 더욱 간단해졌습니다. 직접 호스트 TCP는 NetBIOS TCP 포트 139가 아닌 포트 445를 사용합니다.
NetBIOS와 직접 호스팅이 모두 기본적으로 사용되며 새 연결이 구축될 때 둘 다 똑같이 시도됩니다. 그 중 연결에 먼저 성공한 쪽이 모든 시도에 사용됩니다. NetBIOS 지원을 사용 안함으로 설정하면 모든 트래픽이 직접 호스팅을 사용하도록 강제로 지정할 수 있습니다.
NetBIOS 지원을 사용 안함으로 설정하려면
- 시작 메뉴에서 설정을 선택한 후 네트워크 및 전화 접속 연결을 누릅니다. 로컬 영역 연결을 마우스 오른쪽 단추로 누른 후 등록 정보를 누릅니다.
- 인터넷 프로토콜(TCP/IP)을 선택한 후 등록 정보를 누릅니다.
- 고급을 누릅니다.
- WINS 탭을 누른 후 TCP/IP에서 NetBIOS 사용 안함을 선택합니다.
이 절차를 마치면 NetBIOS를 사용하는 응용 프로그램과 서비스가 더 이상 작동하지 않게 됩니다. 따라서 NetBIOS 지원을 사용 안함으로 설정하기 전에 클라이언트와 응용 프로그램에서 더 이상 NetBIOS 지원이 필요치 않은지를 확인해야 합니다. 예를 들어, Windows 2000 이전의 버전들이 설치된 컴퓨터에서 NetBIOS를 사용 안함으로 설정하면 Windows 2000 컴퓨터에 대한 파일 및 인쇄 공유 연결을 찾아보거나 만들 수 없습니다.
NetBIOS 이름
NetBIOS 이름 공간은 평면 구조로 되어 있는데, 이는 이름 공간에 들어 있는 모든 이름들이 고유해야 함을 의미합니다. NetBIOS 이름의 길이는 16자입니다. 리소스는 컴퓨터를 부팅하거나 서비스 또는 응용 프로그램을 시작하거나 사용자가 로그온할 때 동적으로 등록되는 NetBIOS 이름으로 식별됩니다. 고유한 이름(소유자가 한 명) 또는 그룹 이름(소유자가 여러 명)을 등록할 수 있습니다. NetBIOS 이름 쿼리는 이름 대 IP 주소를 확인함으로써 리소스를 찾는 데 사용됩니다.
워크스테이션 및 서버 서비스 등의 Microsoft 네트워킹 구성 요소들은 사용자나 관리자가 NetBIOS 이름의 처음 15자를 지정할 수 있게 허용하지만 NetBIOS 이름의 16번째 문자는 리소스 종류(16진수 00-FF)를 표시하기 위해 예약되어 있습니다. 또한 자주 사용되는 대부분의 타사 소프트웨어 패키지는 이러한 문자를 사용하여 자신의 고유 서비스를 식별하고 등록합니다. 표 3에서는 Microsoft 구성 요소에 사용되는 일부 NetBIOS 이름에 대한 예를 보이고 있습니다.
표 3 Microsoft 구성 요소에 사용되는 NetBIOS 이름의 예
고유 이름 | 서비스 |
---|---|
computer_name[00h] | Windows NT Workstation 서비스 |
computer_name[03h] | 메신저 서비스 |
computer_name[06h] | RAS 서버 서비스 |
computer_name[1Fh] | NetDDE 서비스 |
computer_name[20h] | Windows NT Server 서비스 |
computer_name[21h] | RAS 클라이언트 서비스 |
computer_name[BEh] | 네트워크 모니터 에이전트 |
computer_name[BFh] | 네트워크 모니터 응용 프로그램 |
user_name[03] | 메신저 서비스 |
domain_name[1Dh] | 마스터 브라우저 |
domain_name[1Bh] | 도메인 마스터 브라우저 |
그룹 이름 | 서비스 |
domain_name[00h] | 도메인 이름 |
domain_name[1Ch] | 도메인 컨트롤러 |
domain_name[1Eh] | 브라우저 서비스 선택 |
\\--__MSBROWSE__[01h] | 마스터 브라우저 |
컴퓨터가 NetBT를 통해 등록한 이름을 찾으려면 MS-DOS 명령 프롬프트에서 다음을 입력하십시오.
nbtstat -n
Windows 2000에서는 컴퓨터를 이미 시작한 후에도 이름 서버를 사용해서 이름을 다시 등록할 수 있습니다. 다시 등록하려면 MS-DOS 명령 프롬프트에서 다음을 입력하십시오.
nbtstat -RR
NetBIOS 이름 등록 및 확인
Windows TCP/IP 시스템에서는 다음과 같이 다양한 방법들을 통해 NetBIOS 리소스를 찾습니다.
- NetBIOS 이름 캐시
- NetBIOS 이름 서버
- IP 서브넷 브로드캐스트
- 고정 Lmhosts 파일
- 로컬 호스트 이름(EnableDns 레지스트리 매개 변수에 따른 옵션)
- 고정 호스트 파일(EnableDns 레지스트리 매개 변수에 따른 옵션)
- DNS 서버(EnableDns 레지스트리 매개 변수에 따른 옵션)
NetBIOS 이름 확인 순서는 노드 종류 및 시스템 구성에 따라 결정됩니다. 다음은 지원되는 노드에 대한 설명입니다.
- B 노드는 브로드캐스트를 사용하여 이름을 등록 및 확인합니다.
- P 노드는 WINS와 같은 NetBIOS 이름 서버를 사용하여 이름을 등록 및 확인합니다.
- M 노드는 브로드캐스트를 사용하여 이름을 등록합니다. 이름 등록의 경우, 먼저 브로드캐스트를 시도한 후 아무런 응답도 수신되지 않으면 P 노드로 전환됩니다.
- H 노드는 NetBIOS 이름 서버를 사용하여 이름을 등록 및 확인합니다. 그러나 이름 서버를 찾을 수 없으면 B 노드로 전환됩니다. 이름 서버를 계속 폴링한 후 사용 가능한 이름 서버를 찾으면 P 노드로 다시 전환됩니다.
- Microsoft 확장은 표준 유형의 노드뿐만 아니라 로컬 Lmhosts 파일이나 WINS 프록시와 함께 Windows 소켓 gethostbyname 호출(표준 DNS 또는 로컬 호스트 파일을 사용함)을 사용합니다.
Microsoft사는 Windows 인터넷 이름 서비스(WINS)라는 NetBIOS 이름 서버를 제공합니다. 대부분의 WINS 클라이언트들은 H 노드로 설정됩니다. 즉, 먼저 WINS를 사용하여 이름 등록 및 확인을 시도한 후 이러한 작업에 실패하면 로컬 서브넷 브로드캐스트를 시도합니다. 다음과 같은 두 가지 이유 때문에 브로드캐스트 방법보다는 이름 서버를 사용하여 리소스를 찾는 방법이 권장됩니다.
- 라우터는 일반적으로 브로드캐스트를 전달하지 않습니다.
- 비록 각 컴퓨터마다 처리 시간이 필요하기는 하지만 서브넷에 있는 모든 컴퓨터가 브로드캐스트를 수신합니다.
다중홈 컴퓨터의 NetBIOS 이름 등록 및 확인
앞에서 설명한 바와 같이 NetBT는 하나의 물리적 네트워크 인터페이스에 IP 주소를 하나만 바인드합니다. NetBT 측면에서 보면 둘 이상의 NIC가 설치된 경우에만 다중홈으로 지정됩니다. 다중홈 컴퓨터로부터 보내지는 이름 등록 패킷은 다중홈 이름 등록으로 플래그되므로 동일한 컴퓨터의 다른 인터페이스를 통해 등록 중인 동일한 이름과 충돌하지 않습니다.
다중홈 컴퓨터가 브로드캐스트 이름 쿼리를 수신하는 경우, 쿼리를 수신하는 모든 NetBT/인터페이스 바인딩은 자신의 주소로 응답하며 클라이언트는 기본적으로 첫 번째 응답을 선택한 후 그 응답을 보낸 주소에 연결합니다. 부록 B에서 설명하는 RandomAdapter 레지스트리 매개 변수를 사용하면 이러한 동작을 제어할 수 있습니다.
방향 지정된 이름 쿼리가 WINS 서버로 보내질 때, WINS 서버는 다중홈 컴퓨터가 WINS를 통해 등록한 모든 IP 주소 목록과 함께 응답합니다.
멀터홈 컴퓨터에서 가장 적합한 연결 IP 주소를 선택하는 역할은 클라이언트가 담당합니다. 현재 다음과 같은 알고리즘이 나열된 순서대로 사용됩니다.
- 이름 쿼리 응답 목록에 있는 IP 주소들 중 하나가 로컬 컴퓨터의 NetBT 호출 바인딩과 동일한 논리 서브넷에 있는 경우에는 그 주소가 선택됩니다. 둘 이상의 주소가 선택 기준을 충족시키는 경우에는 그 중 하나가 임의로 선택됩니다.
- 이름 쿼리 응답 목록에 있는 IP 주소들 중 하나가 로컬 컴퓨터 NetBT의 호출 바인딩과 동일한 클래스 없는 네트워크에 있는 경우에는 그 주소가 선택됩니다. 둘 이상의 주소가 선택 기준을 충족시키는 경우에는 그 중 하나가 임의로 선택됩니다.
- 이름 쿼리 응답 목록에 있는 IP 주소들 중 하나가 로컬 컴퓨터 NetBT의 바인딩과 동일한 논리 서브넷에 있는 경우에는 그 주소가 선택됩니다. 둘 이상의 주소가 선택 기준을 충족시키는 경우에는 그 중 하나가 임의로 선택됩니다.
- 이름 쿼리 응답 목록에 있는 IP 주소들이 로컬 컴퓨터 NetBT의 바인딩과 동일한 서브넷에 없는 경우에는 목록에 있는 주소들 중 하나가 임의로 선택됩니다.
위와 같은 알고리즘은 여러 NIC에 걸쳐 있는 서버에 대한 연결 균형을 조정하며 가능한 경우 직접적인 동일 서브넷 연결을 즐겨 사용하는 좋은 방법을 제공합니다. 반환되는 IP 주소 목록은 가장 적합한 순서로 정렬되며 NetBT는 하나의 주소가 응답할 때까지 목록에 있는 각각의 주소에 대해 핑(ping)을 시도합니다. 그런 다음 NetBT는 그 응답 주소에 대한 연결을 시도합니다. 응답하는 주소가 없으면 첫 번째 목록 주소에 대한 연결이 시도됩니다. 이러한 시도는 방화벽이나 ICMP 트래픽을 필터링하는 다른 장치가 있는 경우에 발생합니다. Windows 2000에서는 각각의 인터페이스에 대해 NetBT 이름 캐싱 기능을 지원하며 nbtstat -c는 각각의 인터페이스에 대해 이름 캐시를 표시합니다.
NetBT 인터넷/DNS의 개선 및 SMB 장치
하나의 Windows 기반 컴퓨터에서 인터넷을 통한 NetBT를 사용하여 다른 Windows 기반 컴퓨터로 연결하는 것은 언제든지 가능했습니다. 이렇게 하려면 몇 가지 이름 확인 수단이 제공되어야 했습니다. 이러한 수단으로는 Lmhosts 파일을 사용하거나 WINS 서버를 사용하는 방법 두 가지가 가장 일반적으로 사용되었습니다. Windows NT 4.0에서 새로 추가되어 Windows 2000으로 이어져온 여러 가지 개선된 기능들 때문에 이렇게 복잡한 구성이 필요없게 되었습니다.
이제는 다음과 같은 두 가지 새로운 방법으로 TCP/IP 리소스를 통해 NetBIOS에 연결할 수 있습니다.
- net use \\IP 주소\공유_이름 명령을 사용하는 방법. 이 명령을 사용하면 NetBIOS 이름 확인을 구성하지 않아도 됩니다.
- net use \\FQDN\공유_이름 명령을 사용하는 방법. 이 명령을 사용하면 DNS를 통해 정식 도메인 이름(FQDN)을 사용하여 컴퓨터에 연결할 수 있습니다.
다음은 새로운 기능을 사용하여 드라이브를 ftp.microsoft.com에 매핑하는 명령들에 대한 예입니다. 아래에 나열된 IP 주소는 변경될 수 있습니다.
- net use f:\\ftp.microsoft.com\data
- net use \\198.105.232.1\data
- net view \\198.105.232.1
- dir \\ftp.microsoft.com\bussys\winnt
또한 이벤트 뷰어의 로그 메뉴에 있는 컴퓨터 선택 옵션과 같은 다양한 응용 프로그램을 사용하면 FQDN 또는 IP 주소를 직접 입력할 수 있습니다. Windows 2000에서는 직접 호스팅을 사용하여 NetBIOS 이름 공간이나 매핑 계층을 전혀 사용하지 않고서도 Windows 2000 컴퓨터들간의 리디렉터 또는 서버 연결을 구축할 수 있습니다. Windows에서는 기본적으로 두 가지 방법들을 모두 사용하여 연결을 시도하므로 더 낮은 수준의 컴퓨터에 대한 연결을 지원할 수 있습니다. 하지만 Windows 2000만 설치된 환경에서는 네트워크 연결 폴더로부터 NetBIOS를 사용 안함으로 설정할 수 있습니다.
SMB 장치는 NetBIOS 없이 작업할 수 있게 해주는 Windows 2000의 새로운 인터페이스입니다. SMB 장치는 개별 네트워크 어댑터/프로토콜 스택 조합과 마찬가지로 리디렉터와 서버에게 다른 인터페이스처럼 보여집니다. 그러나 TCP/IP 스택에서 SMB 장치는 ADDR_ANY로 바인드되며 Windows 소켓 응용 프로그램처럼 DNS 이름 공간을 고유하게 사용합니다. SMB 장치에서 호출이 일어나면 DNS 이름 대 IP 주소 확인을 수행하기 위한 표준 DNS 조회가 발생하며, 그 뒤로 경로 테이블에서 판별된 최적의 원본 IP 주소와 인터페이스를 사용하는 단일 아웃바운드 연결 요청이 나옵니다. 또한 TCP/IP를 통한 NetBIOS가 이미 존재하기 때문에, 맨 위의 TCP 연결에는 아무런 NetBIOS 세션 설정도 없습니다. 기본적으로 리디렉터는 NetBIOS 장치와 SMB 장치 모두에 대해 호출하며, 파일 서버는 NetBIOS 장치와 SMB 장치 모두에 대한 호출을 수신합니다. 파일 서버 SMB 장치는 기존의 TCP를 통한 NetBIOS 포트 139가 아닌 TCP 포트 445에서 호출을 받으려 대기합니다.
TCP를 통한 NetBIOS 세션
NetBIOS 세션은 두 개의 이름들 사이에서 구축됩니다. 예를 들어, Windows 2000 Professional 기반 워크스테이션이 TCP/IP를 통한 NetBIOS를 사용하는 서버에 대해 파일 공유 연결을 만들 때, 다음과 같은 시퀀스의 이벤트가 발생합니다.
- 서버의 NetBIOS 이름에서 IP 주소가 확인됩니다.
- 미디어 액세스 제어 주소에서 IP 주소가 확인됩니다.
- 워크스테이션으로부터 서버에 대한 TCP 연결이 포트 139를 사용하여 구축됩니다.
- 워크스테이션이 TCP 연결을 통해 NetBIOS 세션 요청을 서버 이름에게 보냅니다. 서버가 그 이름을 수신한 경우에는 긍정적으로 응답하고 세션이 구축됩니다.
NetBIOS 세션이 구축되면 워크스테이션과 서버가 사용할 SMB 프로토콜 수준을 협상합니다. Microsoft 네트워킹은 항상 두 개의 이름들 사이에서 하나의 NetBIOS 세션만 사용합니다. 모든 추가 파일 또는 인쇄 공유 연결은 SMB 헤더 내에 있는 식별자를 사용하는 동일한 NetBIOS 세션을 통해 멀티플렉싱됩니다.
각각의 연결에서 NetBIOS 연결 유지 메시지를 사용하여 서버와 워크스테이션 모두 자신의 세션을 유지할 수 있는지를 확인합니다. 따라서 워크스테이션이 비정상적으로 종료되더라도 결과적으로 서버는 해당 연결 및 그와 연관된 리소스를 정리합니다. 그 반대의 경우도 마찬가지입니다. NetBIOS 연결 유지 메시지 수는 SessionKeepAlive 레지스트리 매개 변수로 제어되며 시간당 1회가 기본값입니다.
LMhosts 파일이 사용되는 경우에는 항목의 철자가 잘못 입력되어 있더라도 틀린 이름이 아니라 올바른 IP 주소를 사용하여 서버에 대한 연결을 시도할 수 있습니다. 이 경우, 서버에 대한 TCP 연결은 여전히 구축됩니다. 그러나 틀린 이름을 사용한 NetBIOS 세션 요청은 그 이름으로 게시된 수신이 없기 때문에 서버에 의해 거부됩니다. 오류 51 "Remote computer not listening"이 반환됩니다.
NetBIOS 데이터그램 서비스
데이터그램은 하나의 NetBIOS 이름으로부터 다른 NetBIOS 이름으로 UDP 포트 138을 통해 보내집니다. 데이터그램 서비스를 사용하면 고유 이름이나 그룹 이름으로 메시지를 보낼 수 있습니다. 그룹 이름은 IP 주소 목록이나 브로드캐스트에 대해 확인할 수 있습니다. 예를 들어, net send /d:mydomain test 명령은 "test" 텍스트를 포함하는 데이터그램을 mydomain[03] 그룹 이름으로 보냅니다. mydomain[03] 이름은 IP 서브넷 브로드캐스트에 대해 확인되므로 다음과 같은 특징과 함께 데이터그램이 보내집니다.
- 대상 미디어 액세스 제어 주소: 브로드캐스트(FFFFFFFFFFFF)
- 원본 미디어 액세스 제어 주소: 로컬 컴퓨터의 NIC 주소
- 대상 IP 주소: 로컬 서브넷 브로드캐스트 주소
- 원본 IP 주소: 로컬 컴퓨터의 IP 주소
- 대상 이름: mydomain[03](원격 컴퓨터의 메신저 서비스)
- 원본 이름: username[03](로컬 컴퓨터의 메신저 서비스)
서브넷에 있는 모든 호스트는 데이터그램을 선택하여 적어도 UDP 프로토콜에 대해서는 이 데이터그램을 처리합니다. NetBIOS 데이터그램 서비스를 실행하고 있는 호스트에서 UDP는 포트 138을 통해 NetBT로 데이터그램을 보냅니다. NetBT는 대상 이름을 검사하여 응용 프로그램이 데이터그램 수신을 게시하였지를 확인한 후 만약 그렇다면 그 데이터그램을 전달합니다. 아무런 수신도 게시되지 않은 경우에는 데이터그램이 무시됩니다.
Windows 2000에서 NetBIOS 지원을 사용 안함으로 설정한 경우에는 NetBIOS 데이터그램 서비스를 사용할 수 없습니다.
중요한 클라이언트 서비스 및 스택 구성 요소 | |
이 백서에서는 TCP/IP 스택 구성 요소를 사용하는 여러 서비스들이 아니라 핵심적인 TCP/IP 스택 구성 요소에 대해 중점적으로 설명합니다. 그러나 스택 자체는 다양한 서비스들을 통해 구성 정보와 이름 및 주소 확인 동작을 수행합니다. 아래에서는 이러한 몇가지 중요한 클라이언트 서비스에 대해 설명합니다.
자동 클라이언트 구성 및 미디어 감지
가장 중요한 클라이언트 서비스들 중 하나는 동적 호스트 구성 프로토콜(DHCP) 클라이언트입니다. Windows 2000에서는 DHCP 클라이언트의 역할이 확대되었습니다. 새로운 주요 기능은 주소 할당에 사용할 수 있는 DHCP 서버를 설치하지 않은 상태로 소규모 개인 네트워크(예: 가정용 네트워크)에서 클라이언트가 시작될 때 IP 주소와 서브넷 마스크를 자동으로 구성하는 기능입니다. 또 다른 새로운 기능은 휴대용 장치 사용자의 로밍 성능을 향상시킬 수 있는 미디어 감지 지원입니다.
- IP 주소 및 기타 매개 변수를 사용하여 수동으로 구성하는 것이 아니라 Microsoft TCP/IP 클라이언트가 설치되어 DHCP 서버로부터 TCP/IP 프로토콜 구성 정보를 동적으로 가져오도록 설정된 경우, 컴퓨터가 다시 시작될 때마다 DHCP 클라이언트 서비스가 사용됩니다. 이제는 DHCP 클라이언트 서비스가 IP 주소 및 기타 구성 정보를 사용하는 2단계 과정을 거쳐 클라이언트를 구성합니다.
- 설치된 클라이언트는 DHCP 서버를 찾은 후 그로부터 구성을 가져오려 시도합니다. 대부분의 TCP/IP 네트워크에서는 관리자가 네트워크에 연결된 클라이언트에게 정보를 보내도록 구성한 DHCP 서버를 사용합니다. DHCP 서버를 찾으려는 시도가 실패하면 Windows 2000 DHCP 클라이언트는 서브넷 마스크가 255.255.0.0인 IANA 예약 클래스 B 네트워크 169.254.0.0으로부터 선택한 IP 주소로 스택을 자동으로 구성합니다.9 DHCP 클라이언트는 무료 ARP를 사용한 테스트를 수행하여 아직 사용되지 않은 IP 주소를 선택했는지를 확인합니다. 그 IP 주소가 이미 사용되고 있는 경우에는 다른 IP 주소가 선택되며 이러한 과정은 최대 10회까지 가능합니다. 아직 사용되지 않은 주소로 확인되면 DHCP 클라이언트는 그 주소를 사용하여 인터페이스를 구성합니다. DHCP 클라이언트는 5분마다 DHCP 서버를 백그라운드에서 계속 확인합니다. DHCP 서버가 발견되면 자동 구성 정보가 버려지고 그 대신 DHCP 서버에서 제공하는 구성이 사용됩니다. 단일 서브넷을 갖는 가정용 네트워크나 작은 사무실 네트워크에서 자동 개인 IP 주소 지정(APIPA)이라는 자동 구성 기능을 사용하면 TCP/IP를 고정적으로 구성하거나 DHCP 서버를 관리하지 않더라도 TCP/IP를 사용할 수 있게 됩니다.
DHCP 클라이언트가 이미 DHCP 서버로부터 임대를 받은 경우에는 다음과 같이 수정된 이벤트 시퀀스가 발생합니다.
- 부팅할 때 클라이언트의 임대가 만료되지 않고 여전히 유효한 경우, 클라이언트는 DHCP 서버로부터 받은 임대를 갱신하려고 시도합니다. 갱신을 시도하는 과정에서 DHCP 서버를 찾을 수 없다면, 클라이언트는 임대 목록에 있는 기본 게이트웨이를 핑(ping)하려 시도합니다. 기본 게이트웨이에 대한 ping이 성공하면 DHCP 클라이언트는 현재 임대를 받았던 네트워크에 여전히 존재하는 것으로 인식하여 그 임대를 계속 사용합니다. 기본적으로 클라이언트는 지정된 임대 기간의 절반이 경과하면 백그라운드로 임대를 갱신하려고 시도합니다.
- 기본 게이트웨이에 대한 핑(ping) 시도가 실패하는 경우, 클라이언트는 홈 네트워크와 같이 현재 사용할 수 있는 DHCP 서비스가 없는 네트워크로 이동해 버린 것으로 인식하여 위에 설명된 것처럼 자동 구성을 수행합니다. 자동 구성이 완료된 이후에도 클라이언트는 DHCP 서버를 찾는 동작을 5분마다 백그라운드로 계속 시도합니다.
NDIS 5.0에서는 미디어 감지 지원 기능이 추가되었습니다. 미디어 감지 지원 기능은 프로토콜 스택에게 미디어 연결 이벤트와 미디어 연결 끊기 이벤트를 알릴 수 있는 네트워크 인터페이스 카드(NIC) 메커니즘을 제공합니다. Windows 2000 TCP/IP는 이러한 알림을 통해 자동 구성을 지원합니다. 예를 들어, 휴대용 컴퓨터가 설치되고 DHCP가 이더넷 서브넷에서 구성된 후 재부팅 과정을 거치지 않은 상태로 다른 서브넷으로 이동된 경우에는 Windows NT 4.0의 프로토콜 스택이 그러한 이동을 전혀 인식하지 못합니다. 이는 구성 매개 변수가 부실해지기 때문에 새 네트워크에 적합하지 않게 된다는 것을 의미합니다. 또한 컴퓨터가 종료된 후 다시 부팅되더라도 Windows NT 4.0의 프로토콜 스택은 NIC가 더 이상 네트워크에 연결되어 있지 않으며 구성 매개 변수가 부실한 상태로 존재한다는 사실을 여전히 인식하지 못합니다. 이는 서브넷 경로, 기본 게이트웨이 등과 관련된 문제를 유발할 수 있으며 전화 접속 매개 변수와 충돌할 수 있습니다.
프로토콜 스택은 미디어 감지 지원 기능을 통해 이벤트에 반응하여 부실한 매개 변수들을 무효로 만들 수 있습니다. 예를 들어, Windows 2000을 실행하는 컴퓨터의 네트워크 연결이 끊어지면(NIC가 미디어 감지 기능을 지원한다고 가정함) 스택에 구현된 대기 시간(현재 3초)이 경과한 후 TCP/IP는 연결이 끊긴 네트워크에 연관된 매개 변수들을 무효로 만듭니다. IP 주소는 더 이상 송신을 허용하지 않으며 인터페이스에 연관된 모든 경로는 무효가 됩니다. 연결을 선택하여 마우스 오른쪽 단추로 누르고 등록 정보를 누른 후 연결되면 작업 표시줄에 아이콘 표시 확인란에 선택 표시하면 작업 표시줄에서 네트워크 연결 상태를 볼 수 있습니다. 또한 어댑터가 연결 문제를 가지고 있는 경우에는 빨간색 "X" 표시를 갖는 네트워크 연결 아이콘이 자동으로 나타납니다.
무효가 된 주소를 사용하고 있는 소켓에 응용 프로그램이 바인드되어 있는 경우, 그 응용 프로그램은 시스템의 다른 IP 주소를 사용하려고 시도하는 이벤트 또는 사용자에게 연결이 끊겼음을 알리는 이벤트 등을 확실하게 처리하고 복구해야 합니다.
DNS 클라이언트의 동적 업데이트
Windows 2000에는 RFC 2136에 설명된 것과 같은 DNS에 대한 동적 업데이트 지원 기능이 들어 있습니다. 새 주소나 주소 갱신 등의 주소 이벤트가 발생할 때마다 DHCP 클라이언트는 옵션 81과 정식 이름을 DHCP 서버에게 보내고 DHCP 서버에게 DNS 포인터 리소스 레코드 PTR RR을 대신 등록하도록 요청합니다. 동적 업데이트를 수행하는 클라이언트는 A RR 등록을 자체적으로 처리합니다. 그 이유는 호스트 IP 주소들 중 어떠한 IP 주소가 그 이름에 매핑되는지는 클라이언트만이 알고 있기 때문입니다. DHCP 서버는 충분한 정보를 가지고 있지 않기 때문에 A RR 등록을 제대로 수행할 수 없습니다. 그러나 서버가 DNS를 사용하여 양쪽 레코드를 모두 등록하는 것을 허용하라고 클라이언트에게 지시하도록 DHCP 서버를 구성할 수 있습니다. 동적 업데이트를 수행하는 DNS 클라이언트에 연관된 레지스트리 매개 변수는 부록 C에 나와 있습니다.
Windows 2000 DHCP 서버는 RFC 초안에 설명된 바와 같이 옵션 81 요청을 처리합니다.10 Windows 2000 DHCP 클라이언트가 옵션 81을 처리하지 못하는 하위 수준의 DHCP 서버에게 지시하는 경우, 서버는 PTR RR을 자체적으로 등록합니다. Windows 2000 DNS 서버는 동적 업데이트를 처리할 수 있습니다.
DHCP가 아닌 고정적으로 구성된 클라이언트는 DNS 서버를 사용하여 A RR과 PTR RR을 모두 등록합니다.
DNS 확인자 캐시 서비스
Windows 2000에는 기본적으로 사용 가능으로 설정된 DNS 확인자 캐시 서비스가 들어 있습니다. 문제 해결을 위해, 이러한 서비스는 다른 Windows 서비스와 마찬가지로 보거나 중지 및 시작할 수 있습니다. 캐싱 확인자는 DNS 쿼리용 로컬 캐시를 제공하므로 DNS 네트워크 트래픽이 감소하고 이름 확인 속도가 빨라집니다. 이름 쿼리 응답은 응답에 지정된 TTL용으로 캐시되며(MaxCacheEntryTtlLimit 매개 변수에 지정된 값을 초과하지 않음) 그 이후 발생하는 쿼리들은 가능한 경우 캐시로부터 응답을 받습니다. DNS 확인자 캐시 서비스의 중요한 기능들 중 하나는 네거티브 캐싱의 지원입니다. 예를 들어, 주어진 호스트 이름에 대한 DNS 서버 쿼리가 수행되고 그에 대한 응답이 네거티브인 경우에는 NegativeCacheTime초(기본값 300) 동안 동일한 이름에 대해 수행되는 이후의 쿼리들은 캐시로부터 네거티브 방식으로 응답을 받습니다. 네커티브 캐싱에 대한 다른 예는 모든 DNS 서버가 쿼리되고 이들 중 어떠한 서버도 사용할 수 없는 경우 NetFailureCacheTime초(기본값 30) 동안 수행되는 이후의 모든 이름 쿼리들은 시간 제한되는 것이 아니라 즉시 실패합니다. 부팅 과정에서 특히 클라이언트가 네트워크로부터 부팅될 때 DNS를 쿼리하는 서비스인 경우에는 이러한 실패로 인해 시간을 절약할 수 있습니다.
DNS 확인자 캐시 서비스에는 조정 가능한 레지스트리 매개 변수들(부록 C 참조)이 다수 포함되어 있습니다.
TCP/IP 문제 해결 도구 및 전략 | |
대부분의 네트워크 문제 해결 도구들을 Windows에서 사용할 수 있습니다. 그 중 대부분은 해당 제품이나 Windows 2000 Server 리소스 키트에 들어 있습니다. Microsoft 네트워크 모니터는 탁월한 네트워크 추적 도구입니다. Microsoft Systems Management Server 제품에는 정식 버전이 포함되어 있으며 Windows 2000 Server 제품에는 기능이 일부 제한된 버전이 포함되어 있습니다.
문제 해결을 시도할 때에는 논리적인 접근 방법을 택하는 것이 좋습니다. 다음과 같은 질문을 통해 문제 해결 방향을 잡으십시오.
- 무엇이 작동합니까?
- 무엇이 작동하지 않습니까?
- 작동하는 것과 작동하지 않는 것 사이에는 어떤 관련이 있습니까?
- 현재 작동하지 않는 것이 이 컴퓨터/네트워크에서 작동했던 적이 있습니까?
- 만약 그렇다면 마지막으로 작동한 후 어떤 변화가 있었습니까?
아래에서 위로 문제를 해결해 나가는 것이 신속하게 문제점을 파악할 수 있는 좋은 방법입니다. 아래에 나열된 도구들이 이러한 상향식 접근 방법에 사용됩니다.
IPConfig 도구
IPConfig는 호스트의 TCP/IP 관련 구성을 화면에 표시하는 명령줄 유틸리티입니다. /all 스위치를 함께 사용하면 구성된 직렬 포트(RAS)를 포함한 모든 인터페이스에 대한 자세한 구성 보고서를 볼 수 있습니다. 다음과 같이 수행하면 표시된 결과를 파일로 만들어 다른 문서에 붙여넣을 수 있습니다.
C:\>ipconfig /allWindows 2000 IP configuration:
Host Name . . . . . . . . . . . . : DAVEMAC2
Primary DNS Suffix . . . . . . . . : mytest.microsoft.com
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List . . . . . . : microsoft.com
Ethernet adapter Local Area Connection 2:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : 3Com EtherLink III EISA (3C579-TP)
Physical Address. . . . . . . . . : 00-20-AF-1D-2B-91
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IP Address . . . . . . . . . . . . : 10.57.8.190
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . : 10.57.9.254
Primary WINS Server . . . . . . . : 10.57.9.254
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . . :
Description . . . . . . . . . . . : AMD Family PCI Ethernet Adapter
Physical Address. . . . . . . . . : 00-80-5F-88-60-9A
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 199.199.40.22
Autoconfiguration Enabled . . . . : Yes
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 199.199.40.1
DNS Servers . . . . . . . . . . . : 199.199.40.254
Primary WINS Server . . . . . . . : 199.199.40.254
Ping 도구
ping은 IP 수준에서 연결성을 확인할 수 있는 도구입니다. ping 명령어를 사용하면 ICMP 에코 요청을 대상 이름 또는 IP 주소로 보낼 수 있습니다. 먼저 간단한 테스트로 대상 호스트의 IP 주소를 핑(ping)하여 그 주소가 응답하는지를 확인합니다. 핑에 성공하면 이름에 대한 핑(ping)을 시도합니다. ping은 Windows 소켓 형식의 이름 확인을 사용하여 이름 대 주소 확인 작업을 수행합니다. 따라서 주소를 사용한 ping은 성공하는 반면 이름을 사용한 ping은 실패하는 경우, 네트워크 연결성 문제가 아니라 이름 확인 문제가 있는 것입니다.
ping -?을 입력하여 어떠한 명령줄 옵션을 사용할 수 있는지를 파악합니다. ping 명령을 사용할 때에는 사용할 패킷 크기, 보낼 패킷 수, 사용된 경로 기록 여부, 사용할 TTL 값, don't fragment 플래그 설정 여부를 지정할 수 있습니다. ping을 사용하여 두 대의 컴퓨터간에 PMTU를 수동으로 판별하는 방법을 자세히 알려면 이 백서의 PMTU 검색 부분을 참조하십시오.
다음 예에서는 1450바이트 크기의 ping을 각각 두 번 10.99.99.2 주소로 보내는 방법에 대해 설명합니다.
C:\>ping -n 2 -l 1450 10.99.99.2
1450바이트의 데이터로 10.99.99.2 핑(ping):
Reply from 10.99.99.2: bytes=1450 time<10ms TTL=32
Reply from 10.99.99.2: bytes=1450 time<10ms TTL=32
10.99.99.2에 대한 핑(ping):
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
대략적인 왕복 시간(밀리초 단위):
Minimum = 0ms, Maximum = 0ms, Average = 0ms
기본적으로 ping은 각각의 응답이 반환되기를 1초 동안 기다렸다가 시간 제한됩니다. 핑(ping)되고 있는 원격 시스템이 위성 링크처럼 고지연 링크에 연결되어 있는 경우에는 응답 반환 시간이 더 길어질 수 있습니다. -w(wait) 스위치를 사용하면 초과 시간을 더 길게 지정할 수 있습니다. IPSec를 사용하는 컴퓨터의 경우에는 ping에 응답하기 전에 보안 연결을 구축하기 때문에 수 초의 시간이 필요합니다.
PathPing 도구
pathping 명령은 ping 명령과 tracert 명령의 기능을 조합하여 이러한 도구들이 제공하지 못하는 추가 정보를 제공하는 경로 추적 도구입니다. pathping 명령은 최종 대상에 도달하기 전에 거쳐야 하는 각각의 라우터로 지정된 시간 동안 패킷을 보낸 후 각각의 홉으로부터 반환되는 패킷에 따라 그 결과를 계산합니다. 이 명령을 통해 해당 라우터나 링크에서 패킷이 얼마만큼 손실되는지 파악할 수 있으므로 네트워크 문제를 유발하는 라우터나 링크를 쉽게 판별할 수 있습니다. -R -T 스위치와 함께 pathping 명령을 사용하면 경로에 있는 장치가 802.1P 호환 장치인지 여부와 RSVP 인식 장치인지 여부를 판별할 수 있습니다.
다음은 최대 30홉 동안 www.sectur.gov.ar [200.1.247.2]에 대한 경로를 추적할 때 발생하는 기본 출력에 대한 예입니다.
0 warren.microsoft.com [163.15.2.217]
1 tnt2.seattle2.wa.da.uu.net [206.115.150.106]
2 206.115.169.217
3 119.ATM1-0-0.HR2.SEA1.ALTER.NET [152.63.104.38]
4 412.atm11-0.gw1.sea1.ALTER.NET [137.39.13.73]
5 teleglobe2-gw.customer.ALTER.NET [157.130.177.222]
6 if-0-3.core1.Seattle.Teleglobe.net [207.45.222.37]
7 if-1-3.core1.Burnaby.Teleglobe.net [207.45.223.113]
8 if-1-2.core1.Scarborough.Teleglobe.net [207.45.222.189]
9 if-2-1.core1.Montreal.Teleglobe.net [207.45.222.121]
10 if-3-1.core1.PennantPoint.Teleglobe.net [207.45.223.41]
11 if-5-0-0.bb1.PennantPoint.Teleglobe.net [207.45.222.94]
12 BOSQUE-aragorn.tecoint.net [200.43.189.230]
13 ARAGORN-bosque.tecoint.net [200.43.189.229]
14 GANDALF-aragorn.tecoint.net [200.43.189.225]
15 Startel.tecoint.net [200.43.189.18]
16 200.26.9.245
17 200.26.9.26
18 200.1.247.2
450초 동안 통계 계산:
Source to Here This Node/Link
Hop RTT Lost/Sent = Pct Lost/Sent = Pct Address
0 warren.microsoft.com [63.15.2.217]
0/ 100 = 0% |
1 115ms 0/ 100 = 0% 0/ 100 = 0% tnt2.seattle2.wa.da.uu.net [206.115.150.106]
0/ 100 = 0% |
2 121ms 0/ 100 = 0% 0/ 100 = 0% 206.115.169.217
0/ 100 = 0% |
3 122ms 0/ 100 = 0% 0/ 100 = 0% 119.ATM.ALTER.NET [152.63.104.38]
0/ 100 = 0% |
4 124ms 0/ 100 = 0% 0/ 100 = 0% 412.atm.sea1.ALTER.NET [137.39.13.73]
0/ 100 = 0% |
5 157ms 0/ 100 = 0% 0/ 100 = 0% teleglobe2-gw.ALTER.NET [157.130.177.222]
0/ 100 = 0% |
6 156ms 0/ 100 = 0% 0/ 100 = 0% if-0-3.Teleglobe.net [207.45.222.37]
0/ 100 = 0% |
7 198ms 0/ 100 = 0% 0/ 100 = 0% if-1-3.core1.Teleglobe.net [207.45.223.113]
0/ 100 = 0% |
8 216ms 0/ 100 = 0% 0/ 100 = 0% if-1-2.core1.Teleglobe.net [207.45.222.189]
0/ 100 = 0% |
9 207ms 0/ 100 = 0% 0/ 100 = 0% if-2-1.Teleglobe.net [207.45.222.121]
0/ 100 = 0% |
10 220ms 0/ 100 = 0% 0/ 100 = 0% if-3-1.core1.Teleglobe.net [207.45.223.41]
0/ 100 = 0% |
11 240ms 0/ 100 = 0% 0/ 100 = 0% if-5-0-0.bb1.Teleglobe.net [207.45.222.94]
0/ 100 = 0% |
12 423ms 1/ 100 = 1% 1/ 100 = 1% BOSQUE-aragorn.tecoint.net [200.43.189.230]
0/ 100 = 0% |
13 412ms 0/ 100 = 0% 0/ 100 = 0% ARAGORN-bosque.tecoint.net [200.43.189.229]
0/ 100 = 0% |
14 415ms 1/ 100 = 1% 1/ 100 = 1% GANDALF-aragorn.tecoint.net [200.43.189.225]
0/ 100 = 0% |
15 578ms 0/ 100 = 0% 0/ 100 = 0% Startel.tecoint.net [200.43.189.18]
2/ 100 = 2% |
16 735ms 2/ 100 = 2% 0/ 100 = 0% 200.26.9.245
5/ 100 = 5% |
17 1005ms 8/ 100 = 8% 1/ 100 = 1% 200.26.9.26
0/ 100 = 0% |
18 1089ms 7/ 100 = 7% 0/ 100 = 0% 200.1.247.2
추적이 완료되었습니다.
pathping을 실행하면 현재 테스트되고 있는 경로에서 발생하는 문제에 대한 결과가 가장 먼저 표시됩니다. 이는 tracert 명령에서 표시되는 것과 동일합니다. 그런 다음 pathping 명령은 추적 진행 중임을 나타내는 메시지를 다시 450초(이 시간은 홉 크기에 따라 달라짐) 동안 표시합니다. 이 시간 동안 pathping은 앞에 나열된 모든 라우터와 그 라우터들간의 링크로부터 정보를 수집합니다. 이 시간이 끝나면 테스트 결과가 표시됩니다.
가장 오른쪽에 있는 두 개의 열(This Node/Link Lost/Sent=Pct 및 Address)에는 가장 유용한 정보가 들어 있습니다. 200.26.9.245(홉 16)와 200.26.9.26(홉 17) 사이의 링크는 전체 패킷들 중 8%를 손실시키고 있습니다.
가장 오른쪽 열의 | 옆에 표시된 링크에 대해 표시되는 손실율은 해당 경로를 따라 전달되고 있는 패킷의 손실율을 나타냅니다. 이러한 손실은 링크 혼잡이 있음을 나타냅니다. 가장 오른쪽 열의 해당 IP 주소 옆에 나타난 라우터에 대해 표시되는 손실율은 그 라우터의 CPU에 로드가 지나치게 많음을 나타냅니다. 또한 혼잡이 발생한 라우터는 종단간 문제를 발생시키는 요인이 될 수 있습니다.
Arp 도구
arp 명령은 ARP 캐시를 보는 경우에 유용합니다. 하나의 서브넷에 있는 두 대의 호스트가 서로 핑할 수 없는 경우에는 각각의 컴퓨터에서 arp -a 명령어를 실행하여 서로의 목록에 있는 MAC 주소가 맞는지를 확인할 수 있습니다. IPConfig를 사용하면 호스트의 미디어 액세스 제어 주소를 판별할 수 있습니다. 중복 IP 주소를 갖는 다른 호스트가 네트워크에 연결되어 있는 경우, ARP 캐시는 네트워크에 연결된 다른 컴퓨터의 미디어 액세스 제어 주소를 이미 가지고 있을 수 있습니다. arp -d를 사용하면 잘못된 항목을 삭제할 수 있으며, arp -s를 사용하면 항목을 추가할 수 있습니다.
Tracert 도구
tracert는 경로 추적 유틸리티입니다. tracert는 IP TTL 필드와 ICMP 오류 메시지를 사용하여 하나의 호스트로부터 네트워크를 통해 다른 호스트에 이르는 경로를 판별합니다. tracert 명령의 출력에 대한 예는 이 백서의 ICMP 부분을 참조하십시오.
Route 도구
route를 사용하면 경로 테이블을 보거나 수정할 수 있습니다. route print는 IP가 호스트에 대해 알려준 현재 경로 목록을 표시합니다. 출력에 대한 예는 이 백서의 IP 부분을 참조하십시오. Windows 2000에서 현재 활성화된 기본 게이트웨이는 경로 목록의 끝 부분에 표시됩니다. route add를 사용하면 테이블에 경로를 추가할 수 있습니다. route delete를 사용하면 테이블에 있는 경로를 제거할 수 있습니다.
-p 스위치를 지정하지 않는 한 테이블에 추가된 경로는 영구적이지 않습니다. 비영구적인 경로는 컴퓨터를 다시 부팅하면 사라집니다.
두 대의 호스트가 서로 IP 데이터그램을 교환하는 경우에는 두 호스트 모두 상대방에 대한 경로를 가지거나 하나의 경로를 알고 있는 기본 게이트웨이를 사용해야 합니다. 일반적으로 라우터들은 라우팅 정보 프로토콜(RIP) 또는 최단 경로 우선 개방(OSPF) 등의 프로토콜을 사용하여 서로 정보를 교환합니다. Silent RIP는 Windows 2000 Professional에서 사용할 수 있으며 라우팅 및 원격 액세스 서비스를 사용하는 Windows 2000 Server에서는 모든 라우팅 프로토콜들을 지원합니다.
Netstat
netstat는 프로토콜 통계 및 현재 TCP/IP 연결을 표시합니다. netstat -a는 모든 연결을 표시하며 netstat -r은 경로 테이블과 모든 활성 상태의 연결을 표시합니다. netstat에서 -n 스위치를 함께 사용하면 주소와 포트 번호가 이름으로 변환되지 않으므로 실행 속도가 빨라집니다. 이더넷 통계를 표시하는 -e 스위치를 -s 스위치와 함께 사용하면 프로토콜 통계를 볼 수 있습니다. 다음은 출력 예입니다.
C:\>netstat -e
인터페이스 통계:
Received Sent
Bytes 372959625 123567086
Unicast packets 134302 145204
Non-unicast packets 55937 886
Discards 0 0
Errors 0 0
Unknown protocols 1757381
C:\>netstat -an
활성 상태의 연결:
Proto Local Address Foreign Address State
TCP 0.0.0.0:42 0.0.0.0:0 LISTENING
TCP 0.0.0.0:88 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:593 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1038 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1041 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1048 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1054 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1077 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1080 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1088 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1092 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1723 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3268 0.0.0.0:0 LISTENING
TCP 10.99.99.1:53 0.0.0.0:0 LISTENING
TCP 10.99.99.1:139 0.0.0.0:0 LISTENING
TCP 10.99.99.1:389 10.99.99.1:1092 ESTABLISHED
TCP 10.99.99.1:1092 10.99.99.1:389 ESTABLISHED
TCP 10.99.99.1:3604 10.99.99.1:135 TIME_WAIT
TCP 10.99.99.1:3605 10.99.99.1:1077 TIME_WAIT
UDP 0.0.0.0:42 *:*
UDP 0.0.0.0:88 *:*
UDP 0.0.0.0:123 *:*
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:389 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1073 *:*
UDP 0.0.0.0:1076 *:*
UDP 0.0.0.0:1087 *:*
UDP 10.99.99.1:53 *:*
UDP 10.99.99.1:67 *:*
UDP 10.99.99.1:137 *:*
UDP 10.99.99.1:138 *:*
UDP 127.0.0.1:1052 *:*
D:\>netstat -s
IP 통계:
Packets Received = 3175996
Received Header Errors = 0
Received Address Errors = 38054
Datagrams Forwarded = 0
Unknown Protocols Received = 0
Received Packets Discarded = 0
Received Packets Delivered = 3142564
Output Requests = 3523906
Routing Discards = 0
Discarded Output Packets = 0
Output Packet No Route = 0
Reassembly Required = 0
Reassembly Successful = 0
Reassembly Failures = 0
Datagrams Successfully Fragmented = 0
Datagrams Failing Fragmentation = 0
Fragments Created = 0
ICMP 통계:
Received Sent
Messages 462 33
Errors 0 0
Destination Unreachable 392 4
Time Exceeded 0 0
Parameter Problems 0 0
Source Quenchs 0 0
Redirects 0 0
Echos 1 22
Echo Replies 12 1
Timestamps 0 0
Timestamp Replies 0 0
Address Masks 0 0
Address Mask Replies 0 0
TCP 통계:
Active Opens = 12164
Passive Opens = 12
Failed Connection Attempts = 79
Reset Connections = 11923
Current Connections = 1
Segments Received = 2970519
Segments Sent = 3505992
Segments Retransmitted = 18
UDP 통계:
Datagrams Received = 155620
No Ports = 16578
Receive Errors = 0
Datagrams Sent = 17822
NBTStat 도구
NBTStat는 NetBIOS 이름 확인 문제를 해결하는 데 유용한 도구입니다. NBTStat -n은 서버나 리디렉터 등의 응용 프로그램이 로컬로 시스템에 등록한 이름을 표시합니다. NBTStat -c는 다른 컴퓨터의 이름 대 주소 매핑이 들어 있는 NetBIOS 이름 캐시를 표시합니다. NBTStat -R은 이름 캐시를 지운 후 Lmhosts 파일로부터 다시 읽어들입니다. Windows 2000 및 NT 4.0 SP5에서 새로 추가된 NBTStat -RR은 이름 서버를 사용하여 모든 이름을 등록합니다. NBTStat -a name은 name에 지정된 컴퓨터에 대해 NetBIOS 어댑터 상태 명령을 실행합니다. 어댑터 상태 명령은 그 컴퓨터의 로컬 NetBIOS 이름 테이블과 어댑터 카드의 미디어 액세스 제어 주소를 표시합니다. NBTStat -s는 현재 NetBIOS 세션과 그 상태 및 통계 목록을 표시합니다.
Nslookup 도구
Windows NT 4.0에서 새로 추가된 nslookup은 호스트 이름 확인 등의 DNS 문제 해결에 유용한 도구입니다. nslookup을 실행하면 로컬 시스템용으로 구성된 DNS 서버의 호스트 이름과 IP 주소가 나타난 후 명령 프롬프트가 표시됩니다. 물음표(?)를 입력하면 nslookup에서 사용할 수 있는 명령들을 보여줍니다.
DNS를 사용하는 호스트의 IP 주소를 찾으려면 호스트 이름을 입력한 후 Enter 키를 누릅니다. nslookup은 기본적으로 현재 이 도구가 실행되고 있는 컴퓨터에 대해 구성된 DNS 서버를 사용하지만 server name(name은 향후 조회 작업에 사용할 서버의 호스트 이름임)을 입력하면 다른 DNS 서버를 사용할 수 있습니다.
nslookup을 사용하려면 도메인의 이름 단계적 추이 방식을 알고 있어야 합니다. 호스트 이름을 입력한 후 Enter 키를 누르면 nslookup은 DNS를 쿼리하기 전에 먼저 cswatcp.microsoft.com과 같은 컴퓨터의 도메인 접미사를 호스트 이름에 추가합니다. 그 이름을 찾을 수 없으면 도메인 접미사를 한 수준 단계적 추이(여기서 접미사는 cswatcp를 뺀 microsoft.com임)한 후 DNS를 다시 쿼리합니다. Windows 2000 기반 컴퓨터에서는 2차 도메인 수준(여기서는 microsoft.com)까지만 단계적 추이할 수 있으므로 이번 쿼리에서도 이름을 찾지 못하면 더 이상 이름 확인을 시도하지 않습니다. 끝부분에 있는 구분 점을 통해 알 수 있는 정식 도메인 이름이 입력되면 DNS 서버가 그 이름에 대해 쿼리되기만 할 뿐 단계적 추이 작업은 발생하지 않습니다. 도메인 외부에 있는 호스트 이름을 찾으려면 정식 이름을 입력해야 합니다.
한 가지 특히 유용한 문제 해결 기능으로 set debug를 입력하거나 자세한 정보를 얻기 위해 set d2를 입력하여 불러올 수 있는 디버그 모드가 있습니다. 디버그 모드에서 nslookup은 다음 예에 나타난 것처럼 해당 명령을 완료하기 위해 취할 단계들을 나열합니다.
C:\>nslookup
(null) davemac3.cswatcp.microsoft.com
Address: 10.57.8.190
> set d2
> rain-city
(null) davemac3.cswatcp.microsoft.com
Address: 10.57.8.190
------------
SendRequest(), len 49
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
QUESTIONS:
rain-city.cswatcp.microsoft.com, type = A, class = IN
------------
Got answer (108 bytes):
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 2, authority records = 0, additional = 0
QUESTIONS:
rain-city.cswatcp.microsoft.com, type = A, class = IN
ANSWERS:
-> rain-city.cswatcp.microsoft.com
type = CNAME, class = IN, dlen = 31
canonical name = seattle.cswatcp.microsoft.com
ttl = 86400 (1 day)
-> seattle.cswatcp.microsoft.com
type = A, class = IN, dlen = 4
internet address = 10.1.2.3
ttl = 86400 (1 day)
------------
(null) seattle.cswatcp.microsoft.com
Address: 10.1.2.3
Aliases: rain-city.cswatcp.microsoft.com
위의 예에서는 set d2를 입력하여 nslookup을 디버그 모드로 설정한 후 rain-city라는 호스트 이름에 대한 주소 조회를 시도합니다. 출력 내용들 중 처음 두 줄은 조회를 수신하는 DNS 서버의 호스트 이름과 IP 주소를 보여줍니다. 그 다음 단락이 표시될 때, rain-city라는 이름 뒤에 로컬 컴퓨터의 도메인 접미사(cswatcp.microsoft.com)가 추가되고 nslookup은 이 질문을 DNS 서버에게 보냅니다. 그 다음 단락은 nslookup이 DNS로부터 응답을 수신했고 이 질문에 대해 두 개의 응답 레코드가 있음을 나타냅니다. 질문은 두 개의 응답 레코드와 함께 응답에서 반복됩니다. 이 경우, 첫 번째 응답 레코드는 이름 rain-city.cswatcp.microsoft.com이 실제로는 호스트 이름 seattle.cswatcp.microsoft.com의 별칭(cname 또는 canonical name)이라는 것을 나타냅니다. 두 번째 응답 레코드는 해당 호스트의 IP 주소를 10.1.2.3으로 나열합니다.
Microsoft 네트워크 모니터
Microsoft 네트워크 모니터는 Microsoft사에서 개발한 도구로, 복잡한 네트워크 문제 해결 작업을 더욱 쉽고 경제적으로 수행할 수 있게 해줍니다. Microsoft 네트워크 모니터는 Microsoft Systems Management Server 제품 패키지에 함께 들어 있지만 독립 실행형 네트워크 모니터로도 사용될 수 있습니다. 또한 Windows NT 및 Windows 95에는 네트워크 모니터 에이전트 소프트웨어가 포함되어 있으며 Windows NT Server 및 Windows 2000에는 기능이 일부 제한된 네트워크 모니터 버전이 포함되어 있습니다. 네트워크 모니터를 실행하는 스테이션은 네트워크를 통하거나 전화 접속(원격 액세스)을 통해 에이전트 소프트웨어를 실행하는 스테이션에 연결하여 원격 네트워크 세그먼트를 모니터링하거나 추적할 수 있습니다. Microsoft 네트워크 모니터는 매우 유용한 문제 해결 도구입니다.
네트워크 모니터는 캡처를 수행하는 호스트의 NIC를 불규칙 모드로 설정하여 해당하는 모든 프레임을 추적 도구로 전달합니다. 단, Windows 2000 Server에 포함되어 있는 제한된 네트워크 모니터 버전에서는 컴퓨터가 주고 받는 소통을 추적하는 것만 가능합니다. 캡처 필터는 특정 프레임만 분석용으로 저장하도록 정의할 수 있습니다. 이 경우 원본 및 대상 NIC 주소, 원본 및 대상 프로토콜 주소, 그리고 패턴 일치에 따라 필터를 정의할 수 있습니다. 프레임을 캡처한 후에는 표시 필터를 사용하여 문제 범위를 더욱 좁힐 수 있습니다. 또한 그 필터링 내용을 사용해서 특정 프로토콜을 선택할 수도 있습니다.
Windows NT 기반 컴퓨터에서는 파일 및 인쇄 공유와 같은 다양한 기능들을 위해 서버 메시지 블록(SMB) 프로토콜을 사용합니다. Netmon 파서 디렉터리에 있는 smb.hlp 파일을 사용하면 SMB 프로토콜에 대해 알 수 있습니다.
요약 | |
추가 정보
Windows 2000 Server에 대한 최신 정보는 Microsoft 웹 사이트(http://www.microsoft.com/windows2000)와 Windows 2000/NT 포럼( http://computingcentral.msn.com/topics/windowsnt)을 참조하십시오.
부록 A: TCP/IP 구성 매개 변수 | |
Windows 2000에서 TCP/IP 프로토콜 제품군을 구현하기 위한 모든 구성 데이터는 레지스트리에서 가져옵니다. 이러한 구성 정보는 설치 프로그램이 레지스트리에 기록합니다. 또한 동적 호스트 구성 프로토콜(DHCP)을 사용 가능으로 설정한 경우에는 DHCP 클라이언트 서비스에서도 일부 구성 정보를 제공합니다. 부록 A에서는 표준 TCP/IP 네트워크 프로토콜을 구현하는 프로토콜 드라이버(Tcpip.sys)를 구성하는 데 사용되는 레지스트리 매개 변수를 정의합니다.
프로토콜 제품군 구현은 설치 프로그램과 DHCP에서 수집한 구성 정보만 사용하는 대부분의 환경에서 효율적이고 올바르게 실행되어야 합니다. 대부분의 환경에서 프로토콜을 구성하는 데 사용할 수 있는 기타 모든 구성 정보의 최적 기본값은 드라이버에 암호화되어 있습니다. 일부 사용자 정의 설치 과정에서는 특정 기본값을 변경해야 합니다. 이러한 경우에는 선택적 레지스트리 매개 변수를 만들어서 프로토콜 드라이버의 관련 부분에 대한 기본 동작을 수정할 수 있습니다.
참고 Windows NT TCP/IP 구현은 대부분 자체 조정됩니다. 레지스트리 매개 변수를 조정하면 시스템에 역효과를 줄 수 있습니다.
TCP/IP 매개 변수는 모두 레지스트리 키 아래에 위치하는 레지스트리 값입니다.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services:
\Tcpip
\Parameters
어댑터 고유의 값은 각 어댑터의 하위 키 아래에 나열됩니다. 매개변수는 시스템이나 어댑터가 DHCP 구성 시스템이거나 DHCP 구성 어댑터인지 또는 고정적인 덮어쓰기 값이 지정되어 있는지에 따라 DHCP 및 고정적으로 구성된 값을 모두 가질 수 있습니다. 레지스트리 편집기를 사용하여 이러한 매개 변수를 변경할 경우에는 보통 시스템을 다시 부팅해야 변경 사항이 적용됩니다. 네트워크 연결 인터페이스를 사용하여 값을 변경할 때 항상 시스템을 다시 부팅해야 하는 것은 아닙니다.
레지스트리 편집기를 사용하여 구성할 수 있는 매개 변수
다음과 같은 매개 변수들은 TCP/IP 구성 요소를 설치하는 과정에서 기본값을 받습니다. 이러한 값을 수정하는 데는 레지스트리 편집기(Regedt32.exe)를 사용합니다. 일부 매개 변수는 기본적으로 레지스트리에 있지만, TCP/IP 프로토콜 드라이버의 기본 동작을 수정하기 위해서는 대부분의 매개 변수는 작성해야 합니다. 사용자 인터페이스에서 구성할 수 있는 매개 변수들은 나중에 별도로 설명합니다.
AllowUserRawAccess
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 원시 소켓에 대한 액세스를 제어합니다. 이 매개 변수를 참으로 설정하면 관리자가 아닌 사용자들도 원시 소켓에 액세스할 수 있습니다. 기본적으로는 관리자만 원시 소켓에 액세스할 수 있습니다. 원시 소켓에 대한 자세한 내용은 Windows 소켓 사양(ftp://ftp.microsoft.com/bussys/winsock/winsock2)을 참조하십시오.
ArpAlwaysSourceRoute
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1, not present(거짓, 참, 없음)
기본값: not present
설명: 기본적으로 스택은 원본 라우팅을 하지 않은 상태로 ARP 쿼리를 전송한 후 응답이 없으면 활성화된 원본 라우팅을 사용하여 재시도합니다. 이 매개 변수를 0으로 설정하면 모든 IP 브로드캐스트가 원본 라우팅 없이 전송됩니다. 이 매개 변수를 1로 설정하면 TCP/IP가 토큰 링 네트워크에서 활성화된 원본 라우팅을 사용하여 모든 ARP 쿼리를 전송합니다. Windows NT 4.0 SP2부터 매개 변수에 대한 정의가 변경되었습니다.
ArpCacheLife
키: Tcpip\Parameters
값 종류: REG_DWORD—초
유효 범위: 0-0xFFFFFFFF
기본값: ArpCacheLife 매개 변수가 없는 경우, ARP 캐시 시간 제한의 기본값은 아직 사용되지 않은 항목에서는 2분이며 이미 사용된 항목에서는 10분입니다.
설명: ArpCacheMinReferencedLife를 참조하십시오.
ArpCacheMinReferencedLife
키: Tcpip\Parameters
값 종류: REG_DWORD—초
유효 범위: 0-0xFFFFFFFF
기본값: 600초(10분)
설명: ArpCacheMinReferencedLife는 참조된 ARP 캐시 항목이 만료될 때까지 걸리는 최소 시간을 제어합니다. 이 매개 변수는 다음과 같이 ArpCacheLife 매개 변수와 결합하여 사용할 수 있습니다.
- ArpCacheLife가 ArpCacheMinReferencedLife보다 크거나 같으면 참조된 ARP 캐시 항목과 참조되지 않은 ARP 캐시 항목 모두 ArpCacheLife초 만에 만료됩니다.
- ArpCacheLife가 ArpCacheMinReferencedLife보다 작으면 참조되지 않은 항목은 ArpCacheLife초 만에 만료되며 참조된 항목은 ArpCacheMinReferencedLife초 만에 만료됩니다.
아웃바운드 패킷을 ARP 캐시 항목에 있는 IP 주소로 보낼 때마다 ARP 캐시 항목을 참조합니다.
ArpRetryCount
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1-3
기본값: 3
설명: 이 매개 변수는 컴퓨터가 초기화 과정에서 자신의 IP 주소로 무상 ARP를 보내는 횟수를 제어합니다. 무상 ARP는 그 IP 주소를 사용하는 컴퓨터가 네트워크에 없다는 것을 확인하기 위해 보내집니다. 이 값은 재시도 횟수가 아닌 실제 전송되는 ARP 수를 제어합니다.
ArpTRSingleRoute
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1로 설정하면 원본이 라우팅되는 ARP 브로드캐스트(토큰 링)를 모든 경로 브로드캐스트가 아닌 단일 경로 브로드캐스트로 보냅니다.
ArpUseEtherSNAP
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1로 설정하면 TCP/IP가 802.3 SNAP 인코딩을 사용하여 이더넷 패킷을 전송합니다. 스택은 기본적으로 패킷을 DIX 이더넷 형식으로 전송하며, 항상 두 형식을 모두 수신합니다.
DatabasePath
키: Tcpip\Parameters
값 종류: REG_EXPAND_SZ—문자열
유효 범위: 올바른 Windows NT 파일 경로
기본값: %SystemRoot%\system32\drivers\etc
설명: 이 매개 변수는 표준 인터넷 데이터베이스 파일(HOSTS, LMHOSTS, NETWORKS, PROTOCOLS, SERVICES)에 대한 경로를 지정합니다. 이 매개 변수는 Windows 소켓 인터페이스에서 사용됩니다.
DefaultTTL
키: Tcpip\Parameters
값 종류: REG_DWORD—초/홉
유효 범위: 0-0xff(십진수 0-255)
기본값: 128
설명: 이 매개 변수는 송신 IP 패킷의 헤더에서 설정되는 기본 TTL(Time To Live)을 지정합니다. TTL은 IP 패킷이 그 대상에 도달하지 않은 상태에서 네트워크에 존재할 수 있는 최대 시간을 결정합니다. TTL은 IP 패킷이 취소되기 전에 통과할 라우터 개수를 효과적으로 제한합니다.
DisableDHCPMediaSense
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 DHCP 미디어 감지 동작을 제어합니다. 이 매개 변수를 1로 설정하면 DHCP 클라이언트는 인터페이스에서 발생하는 미디어 감지 이벤트를 무시합니다. 미디어 감지 이벤트를 사용하면 기본적으로 DHCP 클라이언트는 연결 이벤트가 발생할 때의 임대 받기 시도나 연결 끊기 이벤트가 발생할 때의 인터페이스 및 경로 무효화 등의 조치를 취합니다.
DisableIPSourceRouting
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1, 2
0 - 모든 패킷 전달
1 - 원본 라우팅된 패킷 전달하지 않음
2 - 들어오는 모든 원본 라우팅된 패킷 버림
기본값: 1(참)
설명: IP 원본 라우팅은 주로 데이터그램이 네트워크를 통해 거쳐야 하는 IP 경로를 tracert.exe 및 ping.exe 등의 도구를 사용하여 송신자가 결정하도록 하는 메커니즘입니다.
이 매개 변수는 Windows NT 4.0 서비스 팩 5에 추가되었습니다(Microsoft 기술 자료 Q217336<http://search.support.microsoft.com/kb/c.asp> 참조). Windows 2000에서는 기본적으로 IP 원본 라우팅을 사용 안함으로 설정합니다.
DisableMediaSenseEventLog
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 DHCP 미디어 감지 이벤트 로깅을 사용 안함으로 설정합니다. 문제 해결을 위해, 미디어 감지 이벤트(네트워크 연결/연결 끊기)는 기본적으로 이벤트 로그에 기록됩니다.
DisableTaskOffload
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 문제 해결 및 테스트를 위해, 이 매개 변수는 네트워크 카드에 대한 작업 오프로딩을 사용 안함으로 설정하도록 TCP/IP 스택에게 지시합니다.
DisableUserTOSSetting
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수를 사용하면 프로그램에서 송신 IP 패킷의 헤더에 있는 서비스 종류(TOS) 비트를 조작할 수 있습니다. Windows 2000에서 이 매개 변수는 참으로 기본 설정됩니다. TOS 비트를 조작하면 이 백서의 "서비스 품질(QoS) 및 리소스 예약 프로토콜(RSVP)" 부분에서 설명한 것과 같은 시스템 정책 메커니즘이 실패하기 때문에, 일반적으로 각각의 응용 프로그램에서는 TOS 비트를 조작할 수 없어야 합니다.
DontAddDefaultGateway
키: Tcpip\Parameters \Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0
설명: PPTP를 설치하면 각 LAN 어댑터에 대한 기본 경로가 설치됩니다. 이 값을 추가하여 1로 설정하면 어댑터들 중 하나에서 기본 경로를 사용 안함으로 설정할 수 있습니다. 그렇게 한 후에 기본 게이트웨이가 아닌 다른 라우터를 사용하여 도달하는 호스트에 대한 고정 경로를 구성해야 합니다.
EnableAddrMaskReply
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 컴퓨터가 ICMP 주소 마스크 요청에 응답할 것인지를 제어합니다.
EnableBcastArpReply
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수는 ARP에 있는 원본 이더넷 주소가 유니캐스트되지 않을 때 컴퓨터가 ARP 요청에 응답할 것인지를 제어합니다. 이 값을 0으로 설정하면 네트워크 로드 균형 조정 서비스(NLBS)가 제대로 작동하지 않습니다.
EnableDeadGWDetect
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수를 1로 설정한 경우 TCP는 작동하지 않는 게이트웨이를 검색할 수 있습니다. 이 기능이 사용 가능으로 설정된 경우 TCP는 연결을 여러 번 시도해도 제대로 설정되지 않을 때 백업 게이트웨이를 변경하도록 IP에게 요청합니다. 백업 게이트웨이는 네트워크 제어판에서 TCP/IP 구성 대화 상자의 고급 부분에서 정의할 수 있습니다. 자세한 내용은 이 백서의 "작동하지 않는 게이트웨이 검색" 부분을 참조하십시오.
EnableICMPRedirects
키: Tcpip\Parameters
값 종류: REG_DWORD—BOOLEAN
유효 범위: 0, 1(거짓, 참)
기본값: 베타 3의 경우 1(참). RC1에서는 1(참)로 변경할 예정입니다.
권장값: 0(거짓)
설명: 이 매개 변수는 Windows 2000이 라우터 등의 네트워크 장치에서 보내는 ICMP 리디렉션 메시지에 따라 경로 테이블을 변경할 것인지를 제어합니다.
EnableFastRouteLookup
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 플래그를 설정하면 고속 경로 찾기가 사용 가능해집니다. 이 경우 호출되지 않은 풀 메모리를 사용하면 경로를 더 빠르게 찾을 수 있습니다. 이 플래그는 컴퓨터가 Windows NT Server를 실행하며 MEDIUM 또는 LARGE 클래스(64MB 이상의 메모리를 갖는 클래스)에 해당할 경우에만 사용됩니다. 이 매개 변수는 라우팅 및 원격 액세스 서비스에서 만들어집니다.
EnableMulticastForwarding
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 라우팅 서비스는 이 매개 변수를 사용하여 IP 멀티캐스트의 전송 여부를 제어합니다. 이 매개 변수는 라우팅 및 원격 액세스 서비스에서 생성됩니다.
EnablePMTUBHDetect
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1(참)로 설정하면 경로 MTU 검색을 수행하는 동안 TCP가 블랙 홀 라우터 검색을 시도합니다. 블랙홀 라우터는 Don't Fragment 비트가 설정되어 있는 IP 데이터그램을 조각내야 할 경우에 ICMP Destination Unreachable 메시지를 반환하지 않습니다. TCP는 이 메시지를 수신한 경우에만 경로 MTU 검색을 수행합니다. 이 기능을 사용 가능으로 설정한 경우, 여러 개의 세그먼트 재전송이 승인되지 않으면 TCP가 Don't Fragment 비트를 설정하지 않은 상태로 세그먼트를 보내려고 시도합니다.11 결국 세그먼트가 승인되면 MSS가 감소하고 연결에 있는 다음 패킷부터는 Don't Fragment 비트가 설정됩니다. 블랙 홀 검색 기능을 사용 가능으로 설정하면 한 세그먼트의 최대 재전송 횟수가 증가합니다.
EnablePMTUDiscovery
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수를 1(참)로 설정하면 TCP가 원격 호스트에 이르는 경로에서 최대 전송 단위(MTU 또는 가장 큰 패킷 크기)를 찾습니다. TCP는 경로 MTU를 찾아 TCP 세그먼트를 그 크기로 제한함으로써 서로 다른 MTU를 사용하여 네트워크에 연결하는 경로 상의 라우터에서 조각들을 제거할 수 있습니다. 조각은 TCP 처리량과 네트워크 혼잡에 악영향을 미칩니다. 이 매개 변수를 0으로 설정하면 로컬 서브넷에서 호스트로 향하지 않는 모든 연결에 576바이트의 MTU가 사용됩니다.
FFPControlFlags
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수를 1로 설정하면 고속 전달 경로(FFP)가 사용됩니다. 이 매개 변수를 0으로 설정하면 TCP/IP가 이 컴퓨터에서 고속 전달을 수행하지 않도록 모든 FFP 가능 어댑터에게 지시합니다. 고속 전달 경로(FFP)가 가능한 네트워크 어댑터는 스택으로부터 라우팅 정보를 받을 수 있으며 이들을 스택까지 전달하지 않고서도 하드웨어에 있는 후속 패킷들을 전달할 수 있습니다. FFP 매개 변수는 TCP/IP 레지스트리 키에 들어 있지만 실제로는 라우팅 및 원격 액세스 서비스(RRAS)에서 이 매개 변수를 그곳에 넣어둔 것입니다. 자세한 내용은 RRAS 설명서를 참조하십시오.
FFPFastForwardingCacheSize
키: Tcpip\Parameters
값 종류: REG_DWORD—바이트
유효 범위: 0-0xFFFFFFFF
기본값: 100,000바이트
설명: 이 매개 변수는 고속 전달 경로(FFP)를 지원하는 드라이버가 시스템 메모리를 캐시에 사용할 경우 고속 전달용으로 할당할 수 있는 최대 메모리 크기입니다. 장치가 고속 전달 캐시에 사용할 자체 메모리를 가지고 있으면 이 값은 무시됩니다.
ForwardBufferMemory
키: Tcpip\Parameters
값 종류: REG_DWORD—바이트
유효 범위: 네트워크 MTU-0xFFFFFFFF보다 작은 적당한 값
기본값: 74240(1480바이트 패킷 50개에 해당하는 크기로, 256바이트의 배수가 되도록 올림함)
설명: 이 매개 변수는 IP가 초기에 패킷 데이터를 라우터 패킷 대기열에 저장하기 위해 할당하는 메모리 크기를 지정합니다. 이 버퍼 공간이 가득 차면 시스템은 메모리를 더 많이 할당하려고 시도합니다. 패킷 대기열 데이터 버퍼의 길이는 256바이트이므로 이 매개 변수의 값은 256의 배수가 되어야 합니다. 더 큰 패킷이 있을 경우에는 그에 맞게 여러 버퍼가 함께 결합됩니다. 패킷의 IP 헤더는 따로 저장됩니다. IP 라우팅 기능이 사용 가능으로 설정되지 않은 경우, 이 매개 변수는 무시되며 버퍼도 할당되지 않습니다. 이 기능에 할당될 수 있는 최대 메모리 크기는 MaxForwardBufferMemory에서 제어합니다.
GlobalMaxTcpWindowSize
키: Tcpip\Parameters
값 종류: REG_DWORD—바이트
유효 범위: 0-0x3FFFFFFF(십진수 1073741823). 단, RFC 1323 창 크기 조정을 지원하는 다른 시스템에 연결할 때는 64KB보다 큰 값만 사용할 수 있습니다. 창 크기 조정에 대한 내용은 이 백서의 TCP 부분을 참조하십시오. 또한 창 크기 조정은 Tcp1323Opts 레지스트리 매개 변수를 통해 사용 가능으로 설정해야 합니다.
기본값: 이 매개 변수는 기본적으로 존재하지 않습니다.
설명: TcpWindowSize 매개 변수는 각 인터페이스의 수신 창을 설정하는 데 사용됩니다. 이 매개 변수를 사용하면 시스템 전체에서 사용되는 TCP 창 크기를 한꺼번에 제한할 수 있습니다. 이 매개 변수는 Windows 2000에서 새롭게 추가된 것입니다.
IPAutoconfigurationAddress
키: Tcpip\Parameters\Interfaces\<인터페이스>
값 종류: REG_SZ—문자열
유효 범위: 올바른 IP 주소
기본값: 없음
설명: DHCP 클라이언트는 자동 구성에서 선택된 IP 주소를 여기에 저장합니다. 이 값은 변경할 수 없습니다.
IPAutoconfigurationEnabled
키: Tcpip\Parameters, Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수는 IP 자동 구성을 사용 가능 또는 사용 안함으로 설정합니다. 자세한 내용은 이 백서의 "자동 클라이언트 구성 및 미디어 감지" 부분을 참조하십시오. 이 매개 변수는 전체적으로 설정하거나 각 인터페이스별로 설정할 수 있습니다. 각 인터페이스 값은 그 인터페이스에 대한 글로벌 값보다 우선합니다.
IPAutoconfigurationMask
키: Tcpip\Parameters, Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—문자열
유효 범위: 올바른 IP 서브넷 마스크
기본값: 255.255.0.0
설명: 이 매개 변수는 자동 구성에서 클라이언트에게 할당하는 서브넷 마스크를 제어합니다. 자세한 내용은 이 백서의 "자동 클라이언트 구성 및 미디어 감지" 부분을 참조하십시오. 이 매개 변수는 전체적으로 설정하거나 각 인터페이스별로 설정할 수 있습니다. 각 인터페이스 값은 그 인터페이스에 대한 글로벌 값보다 우선합니다.
IPAutoconfigurationSeed
키: Tcpip\Parameters, Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFF
기본값: 0
설명: 이 매개 변수는 DHCP 클라이언트 내부적으로 사용되므로 변경하면 안됩니다.
IPAutoconfigurationSubnet
키: Tcpip\Parameters, Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—문자열
유효 범위: 올바른 IP 서브넷
기본값: 169.254.0.0
설명: 이 매개 변수는 자동 구성에서 클라이언트에 대한 IP 주소를 선택하는 데 사용되는 서브넷 주소를 제어합니다. 자세한 내용은 이 백서의 "자동 클라이언트 구성 및 미디어 감지" 부분을 참조하십시오. 이 매개 변수는 전체적으로 설정하거나 각 인터페이스별로 설정할 수 있습니다. 각 인터페이스 값은 그 인터페이스에 대한 글로벌 값보다 우선합니다.
IGMPLevel
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0,1,2
기본값: 2
설명: 이 매개 변수는 시스템이 IP 멀티캐스팅을 어느 정도 지원하고 인터넷 그룹 관리 프로토콜(IGMP)에 어느 정도 참여하는지를 지정합니다. 수준이 0이면 시스템이 멀티캐스트를 지원하지 않습니다. 수준이 1이면 시스템이 IP 멀티캐스트 패킷을 보낼 수는 있지만 받을 수는 없습니다. 수준이 2이면 시스템이 IP 멀티캐스트 패킷을 보낼 수 있으며 IGMP에 완전히 참가하여 멀티캐스트 패킷을 받을 수도 있습니다.
IPEnableRouter
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1(참)로 설정하면 시스템이 네트워크들 사이에서 현재 연결되어 있는 경로로 IP 패킷을 지정할 수 있습니다.
IPEnableRouterBackup
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 설치 프로그램은 이전의 IPEnableRouter 값을 이 키에 기록합니다. 이 값은 수동으로 조정하면 안됩니다.
KeepAliveInterval
키: Tcpip\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 1000(1초)
설명: 이 매개 변수는 응답을 수신할 때까지 연결 유지 메시지가 재전송되는 간격을 지정합니다. 응답이 수신된 후, KeepAliveTime 값은 그 다음 연결 유지 메시지가 재전송될 때까지 걸리는 지연 시간을 다시 제어합니다. TcpMaxDataRetransmissions에 지정된 횟수 만큼 재전송이 실행된 후에도 응답이 없으면 연결이 중단됩니다.
KeepAliveTime
키: Tcpip\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 7,200,000(2시간)
설명: 이 매개 변수는 TCP가 연결 유지 패킷을 보내어 유휴 연결이 그대로 유지되고 있음을 확인하는 시도 횟수를 제어합니다. 원격 시스템이 여전히 연결 가능하며 작동이 되고 있다면 연결 유지 전송을 승인합니다. 기본적으로 연결 유지 패킷은 보내지지 않습니다. 응용 프로그램에서 이 기능을 연결에 사용할 수 있도록 설정할 수도 있습니다.
MaxForwardBufferMemory
키: Tcpip\Parameters
값 종류: REG_DWORD—바이트
유효 범위: 네트워크 MTU-0xFFFFFFFF
기본값: 십진수 2097152(2MB)
설명: 이 매개 변수는 IP가 패킷 데이터를 라우터 패킷 대기열에 저장하기 위해 할당할 수 있는 총 메모리 크기를 제한합니다. 이 값은 ForwardBufferMemory 매개 변수의 값보다 크거나 같아야 합니다. 자세한 내용은 ForwardBufferMemory에 대한 설명을 참조하십시오.
MaxForwardPending
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—패킷 수
유효 범위: 1-0xFFFFFFFF
기본값: 0x1388(십진수 5000)
설명: 이 매개 변수는 IP 전달 엔진이 언제든 특정 네트워크 인터페이스로 전송할 수 있는 패킷 수를 제한합니다. 추가 패킷은 인터페이스의 주요 전송이 완료될 때까지 IP 대기열로 들어갑니다. 대부분의 네트워크 어댑터는 패킷을 매우 빨리 전송하므로 기본값만 사용해도 충분합니다. 그러나 단일 RAS 인터페이스는 많은 저속 직렬 회선을 멀티플렉싱합니다. 이러한 유형의 인터페이스에 대한 값을 더 크게 구성하면 성능이 향상됩니다. 송신 회선 수와 그 회선의 로드 특성에 따라 적당한 값이 결정됩니다.
MaxFreeTcbs
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFFFFFF
기본값: 다음과 같은 기본값이 사용됩니다. 19MB 미만의 RAM을 갖는 컴퓨터는 소형, 19-63MB 사이의 RAM을 갖는 컴퓨터는 중형, 64MB 이상의 RAM을 갖는 컴퓨터는 대형으로 정의됩니다. 이 코드가 여전히 존재하기는 하지만, 현재 거의 모든 컴퓨터는 대형입니다.
Windows 2000 Server
- 소형 시스템—500
- 중형 시스템—1000
- 대형 시스템—2000
Windows 2000 Professional
- 소형 시스템—250
- 중형 시스템—500
- 대형 시스템—1000
설명: 이 매개 변수는 캐시된 전송 제어 블록(TCB)의 사용 가능한 수를 제어합니다. 전송 제어 블록은 각각의 TCP 연결에 대해 일정하게 유지되는 데이터 구조입니다.
MaxFreeTWTcbs
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1-0xFFFFFFFF
기본값: 1000
설명: 이 매개 변수는 TIME-WAIT 상태 목록에서 허용되는 TIME-WAIT 상태의 전송 제어 블록(TCB) 수를 제어합니다. 이 값을 초과하면 목록에서 가장 오래된 TCB가 버려집니다. TIME-WAIT 상태의 연결을 60초 이상 유지하려면 컴퓨터에서 이 값을 >= (60 *(정상적인 연결 종료 속도)로 설정해야 합니다. 대부분의 경우 기본값을 그대로 사용할 수 있습니다.
MaxHashTableSize
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자(2의 제곱승)
유효 범위: 0x40-0x10000(십진수 64-65536)
기본값: 512
설명: 이 값은 512, 1024, 2048 등과 같이 2의 제곱승이어야 합니다. 이 값이 2의 제곱승이 아니면 시스템은 그 다음 2의 제곱승 값(예: 설정값이 513이면 1024로 올림)으로 해시 테이블을 구성합니다. 이 값은 시스템이 TCP 제어 블록을 찾는 속도를 제어하며 MaxFreeTcbs 값이 기본값보다 커지면 이 값도 같이 커져야 합니다.
MaxNormLookupMemory
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 모든 DWORD(0xFFFFFFFF는 메모리 제한이 없음을 나타냄)
기본값: 다음과 같은 기본값이 사용됩니다. 19MB 미만의 RAM을 갖는 컴퓨터는 소형, 19-63MB 사이의 RAM을 갖는 컴퓨터는 중형, 64MB 이상의 RAM을 갖는 컴퓨터는 대형으로 정의됩니다. 이 코드가 여전히 존재하기는 하지만, 현재 거의 모든 컴퓨터는 대형입니다.
Windows 2000 Server
- 소형 시스템—150,000바이트, 1,000개의 경로 허용
- 중형 시스템—1,500,000바이트, 10,000개의 경로 허용
- 대형 시스템—5,000,000바이트, 40,000개의 경로 허용
Windows 2000 Professional
- 150,000바이트, 1,000개의 경로 허용
설명: 이 매개 변수는 시스템이 경로 테이블 데이터와 경로 그 자체에 허용하는 최대 메모리 크기를 제어합니다. 이 매개 변수는 지나치게 많은 경로 추가로 인해 컴퓨터 메모리가 낭비되는 것을 방지하도록 설계되었습니다.
MaxNumForwardPackets
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1-0xFFFFFFFF
기본값: 0xFFFFFFFF
설명: 이 매개 변수는 라우터 패킷 대기열에 할당될 수 있는 IP 패킷 헤더의 총 개수를 제한합니다. 이 값은 NumForwardPackets 매개 변수의 값보다 크거나 같아야 합니다. 자세한 내용은 NumForwardPackets에 대한 설명을 참조하십시오.
MaxUserPort
키: Tcpip\Parameters
값 종류: REG_DWORD—최대 포트 번호
유효 범위: 5000-65534(십진수)
기본값: 0x1388(십진수 5000)
설명: 이 매개 변수는 응용 프로그램이 시스템의 사용 가능한 사용자 포트를 요청할 때 사용되는 최대 포트 수를 제어합니다. 1024에서 5000 사이의 값에는 일반적으로 임시(사용 기간이 짧은) 포트가 할당됩니다. 이 매개 변수를 올바르지 않은 범위 값으로 설정하면 가장 가까운 올바른 값(5000 또는 65534)이 사용됩니다.
MTU
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—숫자
유효 범위: 88—기본 네트워크의 MTU
기본값: 0xFFFFFFFF
설명: 이 매개 변수는 네트워크 인터페이스의 기본 최대 전송 단위(MTU)를 무시합니다. MTU는 기본 네트워크를 통해 전송되는 최대 패킷 크기(바이트 단위)입니다. 전송 헤더 크기도 그 크기에 포함됩니다. IP 데이터그램은 다중 패킷을 전송할 수 있습니다. 기본 네트워크의 기본값보다 큰 값을 사용하면 네트워크 기본값 MTU가 전송에 사용됩니다. 88보다 작은 값을 사용하면 전송에서 88 MTU를 사용합니다.
참고 Windows NT TCP/IP는 기본적으로 PMTU 검색을 사용하며 지원되는 로컬 MTU를 알아내기 위해 NIC 드라이버를 쿼리합니다. 일반적으로 MTU 매개 변수를 변경할 필요는 없으며 이 매개 변수를 변경하면 성능이 저하됩니다. 자세한 내용은 이 백서의 PMTU 검색 부분을 참조하십시오.
NumForwardPackets
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1—0xFFFFFFFF보다 작은 적당한 수
기본값: 0x32(십진수 50)
설명: 이 매개 변수는 라우터 패킷 대기열에 할당되는 IP 패킷 헤더의 수를 지정합니다. 모든 헤더가 사용 중이면 시스템은 MaxNumForwardPackets에 구성된 값까지 더 할당하려 시도합니다. 이 값은 적어도 ForwardBufferMemory 값을 라우터에 연결된 네트워크의 최대 IP 데이터 크기로 나눈 값 정도는 되야 합니다. 또한 이 값은 최소 256바이트의 전송 버퍼 메모리가 각 패킷에 사용되므로 256으로 ForwardBufferMemory 값을 나눈 값보다 더 크지는 않아야 합니다. ForwardBufferMemory 크기에 대한 최적의 전송 패킷 수는 네트워크에서 전달되는 트래픽 종류에 따라 결정되며 위의 두 값 사이의 값을 가집니다. 라우팅이 사용 가능으로 설정되지 않는 경우, 이 매개 변수는 무시되며 헤더가 할당되지 않습니다.
NumTcbTablePartitions
키: Tcpip\Parameters\
값 종류: REG_DWORD—TCB 테이블 파티션 수
유효 범위: 1-0xFFFF
기본값: 4
설명: 이 매개 변수는 TCB 테이블 파티션의 수를 제어합니다. TCB 테이블을 파티션으로 나누면 TCB 테이블의 충돌을 줄임으로써 멀티프로세스 시스템의 확장성을 개선할 수 있습니다. 성능에 미치는 영향을 세심하게 고려하지 않고 이 값을 변경하면 안됩니다. 최대 권장 값은 CPU 수에 2를 곱한 값입니다.
PerformRouterDiscovery
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD
유효 범위: 0, 1, 2
0(사용 안함)
1(사용)
2(DHCP가 라우터 검색 옵션을 보내는 경우에만 사용)
기본값: 2(DHCP가 제어하지만 기본적으로 해제됨)
설명: 이 매개 변수는 Windows 2000이 각 RFC 1256에 대해 인터페이스 단위로 라우터 검색을 수행할 것인지를 제어합니다. SolicitationAddressBcast를 참조하십시오.
PerformRouterDiscoveryBackup
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 없음
설명: 이 매개 변수는 PerformRouterDiscovery 값에 대한 백업 사본을 보관하기 위해 내부적으로 사용되므로 변경하면 안됩니다.
PPTPTcpMaxDataRetransmissions
키: Tcpip\Parameters
값 종류: REG_DWORD—PPTP 패킷 재전송 횟수
유효 범위: 0-0xFF
기본값: 5
설명: 이 매개 변수는 승인되지 않은 PPTP 패킷의 재전송 횟수를 제어합니다. 이는 일반 TCP 트래픽과는 별도로 PPTP 트래픽 재전송을 구성할 수 있도록 허용하기 위해 추가된 매개 변수입니다.
SackOpts
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수는 RFC 2018에 지정되어 있는 선택 승인(SACK) 지원을 사용 가능으로 설정할 것인지 여부를 제어합니다. 선택 승인(SACK)은 이 백서의 "전송 제어 프로토콜(TCP)" 부분에 자세히 설명되어 있습니다.
SolicitationAddressBcast
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORDBoolean
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 RFC 1256에 설명된 대로 라우터 검색 메시지를 멀티캐스트가 아닌 브로드캐스트로서 보내기 위해 Windows를 구성할 때 사용합니다. 기본적으로 라우터 검색 요청이 사용 가능으로 설정된 경우에는 라우터 검색 요청이 모든 라우터 멀티캐스터 그룹(224.0.0.2)으로 보내집니다. PerformRouterDiscovery를 참조하십시오.
SynAttackProtect
키: Tcpip\Parameters
값 종류: REG_DWORD
유효 범위: 0, 1, 2
0(synattack 보호 안함)
1(TcpMaxHalfOpen 및 TcpMaxHalfOpenRetried 설정이
충족되는 경우 재전송 시도 횟수 감소 및
경로 지정 캐시 항목(RCE) 작성 지연)
2(1의 기능에 Winsock에 대한 표시 지연 추가)
참고 시스템이 공격당하고 있는 경우에는 확장 가능한 창(RFC 1323) 및 각 어댑터별로 구성된 TCP 매개 변수(초기 RTT, 창 크기) 등과 같은 옵션들을 소켓에서 더 이상 사용 가능으로 설정하지 못할 수 있습니다. 그 이유는 보호 기능이 작동하고 있으면 SYN-ACK가 보내지기 전에는 경로 지정 캐시 항목이 쿼리되지 않으며 이러한 연결 단계에서는 Winsock 옵션을 사용할 수 없기 때문입니다.
기본값: 0(거짓)
권장값: 2
설명: synattack 보호에서는 SYN-ACKS 재전송 크기를 감소시켜 리소스가 할당된 상태로 유지되는 시간을 줄입니다. 경로 지정 캐시 항목 리소스의 할당은 연결이 만들어질 때까지 지연됩니다. synattackprotect = 2인 경우, AFD에 대한 연결 표시는 세 방향 핸드셰이크가 완료될 때까지 지연됩니다. 보호 메커니즘에서 취해지는 동작들은 TcpMaxHalfOpen 및 TcpMaxHalfOpenRetried 설정이 초과된 경우에만 발생합니다.
Tcp1323Opts
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자(플래그)
유효 범위: 0, 1, 2, 3
0(RFC 1323 옵션 사용 안함)
1(창 크기 조정 옵션만 사용)
2(타임스탬프 옵션만 사용)
3(두 옵션을 모두 사용)
기본값: 기본값 없음. 기본 동작은 요청되지 않는 한 옵션을 초기화하지 않는 것입니다.
설명: 이 매개 변수는 RFC 1323 타임스탬프와 창 크기 조정 옵션을 제어합니다. 타임스탬프와 창 크기 조정 옵션은 기본적으로 사용 가능으로 설정되지만 플래그 비트를 써서 조작이 가능합니다. 비트 0은 창 크기 조정을 제어하고 비트 1은 타임스탬프를 제어합니다.
TcpDelAckTicks
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—숫자
유효 범위: 0-6
기본값: 2(200밀리초)
설명: 이 매개 변수는 각 인터페이스에서 지연된 ACK 타이머에 사용할 간격을 100밀리초(1/1000초) 단위로 지정합니다. 기본적으로 지연된 ACK 타이머는 200밀리초입니다. 이 값을 0으로 설정하면 지연된 승인(ACK)이 사용 안함으로 설정되므로 컴퓨터는 패킷을 수신할 때마다 즉시 승인합니다. Microsoft사는 필요한 경우 사용 환경을 주의 깊게 살펴본 후에 이 값을 변경하되 가능한 한 기본값을 사용할 것을 권장합니다.
TcpInitialRTT
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFF
기본값: 3초
설명: 이 매개 변수는 인터페이스 단위의 TCP 연결 요청 및 초기 데이터 재전송에 사용할 초기 시간 제한을 제어합니다. 이 매개 변수를 사용해서 조정하면 급격한 후퇴(Exponential Backoff)가 사용되므로 주의하십시오. 이 값을 3보다 크게 설정하면 존재하지 않는 주소에 대한 시간 제한이 훨씬 길어지게 됩니다.
TcpMaxConnectResponseRetransmissions
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-255
기본값: 2
설명: 이 매개 변수는 SYN이 승인되지 않았을 경우 연결 요청에 대한 응답으로 SYN-ACK를 재전송하는 횟수를 제어합니다. 이 값이 2 이상이면 스택은 내부적으로 SYN-ATTACK 보호를 사용합니다. 이 값이 2보다 작으면 스택은 SYN-ATTACK 보호에 대한 레지스트리 값을 전혀 읽을 수 없습니다. SynAttackProtect, TCPMaxPortsExhausted, TCPMaxHalfOpen 및 TCPMaxHalfOpenRetried를 참조하십시오.
TcpMaxConnectRetransmissions
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-255(십진수)
기본값: 2
설명: 이 매개 변수는 TCP가 재전송 시도를 중단하기 전까지 연결 요청(SYN)을 재전송할 횟수를 지정합니다. 재전송 시간 제한은 해당 연결에서 재전송할 때마다 두 배로 증가합니다. 초기 시간 제한은 TcpInitialRtt 레지스트리 값으로 제어됩니다.
TcpMaxDataRetransmissions
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFFFFFF
기본값: 5
설명: 이 매개 변수는 연결이 중단되기 전까지 TCP가 각 데이터 세그먼트(연결 요청 세그먼트가 아님)를 재전송할 횟수를 제어합니다. 재전송 시간 제한은 연결에서 재전송할 때마다 두 배로 증가합니다. 응답이 다시 시작되면 이 매개 변수는 재설정됩니다. 재전송 시간 제한(RTO) 값은 각 연결에서 측정된 왕복 시간(고른 왕복 시간 또는 SRTT)에 따라 동적으로 결정됩니다. 새 연결의 시작 RTO는 TcpInitialRtt 레지스트리 값으로 제어됩니다.
TcpMaxDupAcks
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1-3
기본값: 2
설명: 이 매개 변수는 전송 과정에서 손실된 세그먼트를 재전송하기 위한 "고속 재전송"이 발생하기 전에 송신 데이터의 동일한 시퀀스 번호에 대해 수신되어야 하는 중복 ACK의 수를 지정합니다. 이 메커니즘은 이 백서의 "전송 제어 프로토콜(TCP)" 부분에 자세히 설명되어 있습니다.
TcpMaxHalfOpen
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 100-0xFFFF
기본값: 100(Professional, Server), 500(Advanced Server)
설명: 이 매개 변수는 SYN-ATTACK 보호가 작동하기 전에 허용되는 SYN-RCVD 상태의 연결 횟수를 제어합니다. SynAttackProtect 값을 1로 설정할 경우 이 값은 보호할 포트의 AFD 수신 대기 백로그보다 작아야 합니다(부록 C의 백로그 매개 변수 참조). 자세한 내용은 SynAttackProtect 매개 변수를 참조하십시오.
TcpMaxHalfOpenRetried
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 80-0xFFFF
기본값: 80(Professional, Server), 400(Advanced Server)
설명: 이 매개 변수는 보내진 SYN이 한 번 이상 재전송된 SYN-RCVD 상태에서 연결 횟수를 제어한 후 SYN-ATTACK 공격 보호를 시작합니다. 자세한 내용은 SynAttackProtect 매개 변수를 참조하십시오.
TcpMaxPortsExhausted
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFF
기본값: 5
설명: 이 매개 변수는 SYN-ATTACK 보호가 시작되는 시점을 제어합니다. 연결에 사용할 수 있는 백로그가 0에서 설정되기 때문에 SYN-ATTACK 보호는 TcpMaxPortsExhausted 연결 요청이 시스템에 의해 거부되었을 때 시작됩니다.
TcpMaxSendFree
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFF
기본값: 5000
설명: 이 매개 변수는 TCP 헤더 테이블의 크기 제한을 제어합니다. RAM 용량이 큰 컴퓨터에서 이 값을 늘리면 synattack 도중 응답 성능이 좋아질 수 있습니다.
TcpNumConnections
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFFFE
기본값: 0xFFFFFE
설명: 이 매개 변수는 TCP가 동시에 열 수 있는 최대 연결 횟수를 제한합니다.
TcpTimedWaitDelay
키: Tcpip\Parameters
값 종류: REG_DWORD—시간(초 단위)
유효 범위: 30-300(십진수)
기본값: 0xF0(십진수 240)
설명: 이 매개 변수는 연결을 닫을 때 TIME_WAIT 상태로 대기하는 시간을 지정합니다. 연결이 TIME_WAIT 상태에 있는 동안에는 소켓 쌍을 재사용할 수 없습니다. 네트워크 상에서 그 값이 최대 세그먼트 수명의 두 배가 되어야 하기 때문에 이러한 상태를 "2MSL" 상태라고도 합니다. 자세한 내용은 RFC 793을 참조하십시오.
TcpUseRFC1122UrgentPointer
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 TCP가 긴급 데이터에 대해 RFC 1122 사양을 사용할 것인지 아니면 BSD 표준 시스템에 사용되는 모드를 사용할 것인지를 결정합니다. 이들 두 가지 메커니즘은 TCP 헤더에 들어 있는 긴급 포인터와 긴급 데이터의 길이를 서로 다르게 해석합니다. 이 두 가지 메커니즘을 함께 사용할 수는 없습니다. Windows 2000에서는 기본적으로 BSD 모드를 사용합니다.
TcpWindowSize
키: Tcpip\Parameters, Tcpip\Parameters\Interface\인터페이스
값 종류: REG_DWORD—바이트
유효 범위: 0-0x3FFFFFFF(십진수 1073741823). 실제로 TCP/IP 스택은 최대 세그먼트 크기(MSS)의 가장 가까운 배수 값으로 숫자를 올림합니다. 64KB보다 큰 값은 이 백서의 "전송 제어 프로토콜(TCP)" 부분에 설명되어 있는 RFC 1323 창 크기 조정을 지원하는 다른 시스템에 연결할 때만 가능합니다.
기본값: 다음 값들 중에서 작은 값
- 0xFFFF
- GlobalMaxTcpWindowSize(다른 레지스트리 매개 변수)
- 네트워크의 최대 TCP 데이터 크기를 4배한 값들 중 큰 값
- 네트워크 TCP 데이터 크기의 짝수 배로 올림한 16384
기본값은 이더넷의 경우 17520에서 시작할 수 있지만 SACK 및 TIMESTAMPS 등의 확장 TCP 헤드 옵션을 지원하는 다른 컴퓨터에 대한 연결을 만들 때에는 약간 줄어들 수 있습니다. 그 이유는 이 옵션이 TCP 헤더를 일반적인 20바이트 이상으로 늘려서 데이터 공간이 약간 줄어들기 때문입니다.
설명: 이 매개 변수는 제공된 최대 TCP 수신 창 크기를 결정합니다. 수신 창은 승인을 받지 않고서도 송신자가 전송할 수 있는 바이트 수를 지정합니다. 일반적으로 수신 창이 클수록 네트워크 지연 시간이 커지고 대역폭이 높아져 성능이 향상됩니다. 최대 효율을 얻으려면 수신 창이 TCP 최대 세크먼트 크기(MSS)의 짝수 배가 되어야 합니다. 이 매개 변수는 레지스트리 키의 위치에 따라 인터페이스 매개 변수가 되거나 글로벌 매개 변수가 됩니다. 특정 인터페이스에 대한 값은 전체 시스템에 대한 값보다 우선합니다. GobalMaxTcpWindowSize를 참조하십시오.
TrFunctionalMcastAddress
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수는 RFC 1469에 설명되어 있는 토큰 링 멀티캐스트 주소를 사용하여 IP 멀티캐스트를 보낼 것인지 아니면 서브넷 브로드캐스트 주소를 사용하여 IP 멀티캐스트를 보낼 것인지를 결정합니다. 기본값 1을 그대로 사용하면 RFC1469 토큰 링 멀티캐스트 주소가 IP 멀티캐스트에 사용됩니다. 값을 0으로 설정하면 서브넷 브로드캐스트 주소가 IP 멀티캐스트에 사용됩니다.
TypeOfInterface
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD
유효 범위: 0, 1, 2, 3
기본값: 0(멀티캐스트 및 유니캐스트 허용)
설명: 이 매개 변수는 인터페이스가 유니캐스트, 멀티캐스트 또는 이러한 두 가지 트래픽 유형 모두에 대해 제공된 경로를 사용할 것인지 여부와 이러한 트래픽 유형들을 전달할 수 있는지 여부를 결정합니다. 값을 0으로 설정하면 유니캐스트와 멀티캐스트 트래픽이 모두 허용됩니다. 값을 1로 설정하면 유티캐스트 트래픽을 사용할 수 없게 됩니다. 값을 2로 설정하면 멀티캐스트 트래픽을 사용할 수 없게 됩니다. 이 값을 3으로 설정하면 유니캐스트와 멀티캐스트 트래픽을 모두 사용할 수 없게 됩니다. 이 매개 변수는 전달 및 경로에 영향을 미치기 때문에, 멀티캐스트에 사용할 수 있는 인터페이스가 컴퓨터에 없더라도 로컬 응용 프로그램이 여전히 인터페이스를 통해 멀티캐스트를 보낼 수 있으며 기본 경로가 존재합니다.
UseZeroBroadcast
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1(참)로 설정하면 IP는 1로 구성된 브로드캐스트(255.255.255.255)가 아닌 0으로 구성된 브로드캐스트(0.0.0.0)를 사용합니다. 대부분의 시스템에서는 1로 구성된 브로드캐스트를 사용하지만, 일부 BSD 구현 시스템에서는 0으로 구성된 브로드캐스트를 사용합니다. 서로 다른 브로드캐스트를 사용하는 시스템들은 동일한 네트워크에서 상호간에 제대로 운용되지 않습니다.
사용자 인터페이스로부터 구성할 수 있는 매개 변수
다음과 같은 매개 변수들은 사용자가 제공하는 정보의 결과에 따라 NCPA에 의해 자동으로 작성되고 수정됩니다. 이러한 매개 변수들은 레지스트리에서 직접 구성할 필요가 없습니다.
DefaultGateway
키:Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—점으로 분리된 십진수 IP 주소 목록
유효 범위: 올바른 IP 주소 집합
기본값: 없음
설명: 이 매개 변수는 컴퓨터가 직접 연결된 서브넷, 그리고 보다 확실한 경로가 없는 서브넷으로 향하지 않는 패킷을 라우팅하는 데 사용할 게이트웨이 목록을 지정합니다. 이 매개 변수가 올바른 값을 가진다면, DhcpDefaultGateway 매개 변수보다 우선합니다. 컴퓨터에 대한 기본 활성 게이트웨이는 항상 한 개만 존재하므로 중복성이 필요한 경우에만 복수의 주소를 사용합니다. 자세한 내용은 이 백서의 "작동하지 않는 게이트웨이 검색" 부분을 참조하십시오.
Domain
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—문자열
유효 범위: 올바른 DNS 도메인 이름
기본값: 없음
설명: 이 매개 변수는 인터페이스의 DNS 도메인 이름을 지정합니다. Windows 2000에서 이 매개 변수와 NameServer는 시스템 전체에 적용되는 것이 아니라 각각의 인터페이스별로 적용되는 매개 변수입니다. 이 매개 변수는 DHCP 클라이언트에서 지정하는 DhcpDomain 매개 변수보다 우선합니다.
EnableDhcp
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1(참)로 설정하면 DHCP 클라이언트 서비스가 DHCP를 사용하여 이 어댑터의 첫 번째 IP 인터페이스를 구성하려 시도합니다.
EnableSecurityFilters
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1(참)로 설정하면 IP 보안 필터가 사용 가능으로 설정됩니다. TcpAllowedPorts, UdpAllowedPorts 및 RawIPAllowedPorts를 참조하십시오. 이 값들을 구성하려면 시작 메뉴에서 설정을 선택합니다. 그런 다음 네트워크 및 전화 접속 연결을 누르고 로컬 영역 연결을 마우스 오른쪽 단추로 누른 후 등록 정보를 누릅니다. 인터넷 프로토콜(TCP/IP)을 선택하고 등록 정보를 누른 후 고급을 누릅니다. 옵션 탭을 누르고 TCP/IP 필터링을 선택한 후 등록 정보를 누릅니다.
Hostname
키: Tcpip\Parameters
값 종류: REG_SZ—문자열
유효 범위: 올바른 DNS 호스트 이름
기본값: 시스템의 컴퓨터 이름
설명: 이 매개 변수는 hostname 명령으로 반환되는 시스템의 DNS 호스트 이름을 지정합니다.
IPAddress
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—점으로 분리된 십진수 IP 주소 목록
유효 범위: 올바른 IP 주소 집합
기본값: 없음
설명: 이 매개 변수는 어댑터에 바인딩할 IP 인터페이스의 IP 주소를 지정합니다. 첫 번째 목록 주소가 0.0.0.0이면 어댑터의 기본 인터페이스는 DHCP로부터 구성됩니다. 하나의 어댑터에 대해 둘 이상의 IP 인터페이스가 있는 시스템은 논리적으로 다중홈 시스템입니다. 이 매개 변수에서 지정하는 각 IP 주소에 대한 올바른 서브넷 마스크 값이 SubnetMask 매개 변수에 들어 있어야 합니다. Regedt32.exe를 사용하여 매개 변수를 추가하려면 이 키를 선택한 후 각각의 IP 주소를 입력하고 Enter 키를 눌러 IP 주소 목록을 입력합니다. 그런 다음 SubnetMask 매개 변수에서 해당하는 서브넷 마스크 목록을 입력합니다.
NameServer
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—점으로 분리된 십진수 IP 주소 목록(각 목록은 공백으로 구분함)
유효 범위: 올바른 IP 주소 집합
기본값: 없음(비어 있음)
설명: 이 매개 변수는 Windows 소켓이 이름 확인을 위해 쿼리하는 DNS 이름 서버를 지정합니다. Windows 2000에서 이 매개 변수와 DomainName은 인터페이스별로 설정됩니다.
PPTPFiltering
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 어댑터별로 PPTP 필터링을 사용 가능으로 설정할 것인지 여부를 제어합니다. 이 값을 1로 설정하면 어댑터는 PPTP 연결만 수락합니다. 이렇게 하면 어댑터가 인터넷 등의 공용 네트워크에 연결되어 있는 경우에도 해킹을 당할 위험이 줄어듭니다.
RawIpAllowedProtocols
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—IP 프로토콜 번호 목록
유효 범위: 올바른 IP 프로토콜 번호 집합
기본값: 없음
설명: 이 매개 변수는 보안 필터링이 사용 가능으로 설정된 경우(EnableSecurityFilters = 1) IP 인터페이스에서 수신 데이터그램을 수락하는 IP 프로토콜 번호 목록을 지정합니다. 이 매개 변수는 원시 소켓을 제공하는 데 사용되는 원시 IP 전송이 IP 데이터그램을 수락할 것인지를 제어하며, TCP 등의 다른 트랜스포트로 전달되는 IP 데이터그램은 제어하지 않습니다. 비어 있는 목록은 아무런 값도 수락되지 않는다는 것을 나타냅니다. 값이 0 하나만 지정되면 모든 값이 수락된다는 것을 나타냅니다. 0과 0이 아닌 다른 값이 혼합된 목록의 동작은 정의되지 않습니다. 이 매개 변수가 인터페이스에 없으면 모든 값이 수락됩니다. 이 매개 변수는 특정 어댑터에 구성된 모든 IP 인터페이스에 적용됩니다.
SearchList
키: Tcpip\Parameters
값 종류: REG_SZ—DNS 도메인 이름 접미사 목록(각 목록은 공백으로 구분함)
유효 범위: 1-50
기본값: 없음
설명: 이 매개 변수는 원래 이름에 대한 확인이 실패할 경우 DNS를 통해 확인할 이름 끝에 붙일 도메인 이름 접미사의 목록을 지정합니다. 기본적으로 Domain 매개 변수의 값만 끝에 추가됩니다. 이 매개 변수는 Windows 소켓 인터페이스에서 사용됩니다. AllowUnqualifiedQuery 매개 변수를 참조하십시오.
SubnetMask
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—점으로 분리된 십진수 IP 주소 목록
유효 범위: 올바른 IP 주소 집합
기본값: 없음
설명: 이 매개 변수는 어댑터에 바인딩된 IP 인터페이스에 사용되는 서브넷 마스크를 지정합니다. 첫 번째 목록 마스크가 0.0.0.0이면 어댑터의 기본 인터페이스는 DHCP를 사용하여 구성됩니다. IPAddress 매개 변수에 지정된 각 IP 주소에 대한 올바른 서브넷 마스크 값이 이 매개 변수에 있어야 합니다.
TcpAllowedPorts
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—TCP 포트 번호 목록
유효 범위: 올바른 TCP 포트 번호 집합
기본값: 없음
설명: 이 매개 변수는 보안 필터링이 사용 가능으로 설정된 경우(EnableSecurityFilters = 1) IP 인터페이스에서 수신 SYN을 수락하는 TCP 포트 번호 목록을 지정합니다. 비어 있는 목록은 아무런 값도 수락되지 않는다는 것을 나타냅니다. 값이 0 하나만 지정되면 모든 값이 수락된다는 것을 나타냅니다. 0과 0이 아닌 다른 값이 혼합된 목록의 동작은 정의되지 않습니다. 이 매개 변수가 인터페이스에 없으면 모든 값이 수락됩니다. 이 매개 변수는 특정 어댑터에서 구성되는 모든 IP 인터페이스에 적용됩니다.
UdpAllowedPorts
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—UDP 포트 번호 목록
유효 범위: 올바른 UDP 포트 번호 집합
기본값: 없음
설명: 이 매개 변수는 보안 필터링이 사용 가능으로 설정된 경우(EnableSecurityFilters = 1) IP 인터페이스에서 수신 데이터그램을 수락하는 UDP 포트 번호 목록을 지정합니다. 비어 있는 목록은 아무런 값도 수락되지 않는다는 것을 나타냅니다. 값이 0 하나만 지정되면 모든 값이 수락된다는 것을 나타냅니다. 0과 0이 아닌 다른 값이 혼합된 목록의 작동은 정의되지 않습니다. 이 매개 변수가 인터페이스에 없으면 모든 값이 수락됩니다. 이 매개 변수는 특정 어댑터에서 구성되는 모든 IP 인터페이스에 적용됩니다.
route 명령을 사용하여 구성할 수 있는 매개 변수
route 명령을 사용하면 영구 IP 경로를 Tcpip\Parameters\PersistentRoutes 레지스트리 키 아래에 값으로 저장할 수 있습니다. 각 경로는 다음과 같이 쉼표로 구분된 형식의 목록으로 값 이름 문자열에 저장됩니다.
destination,subnet mask,gateway,metric
예를 들어, 다음과 같은 명령을 사용할 수 있습니다.
route add 10.99.100.0 MASK 255.255.255.0 10.99.99.1 METRIC 1 /p
위의 명령을 실행하면 다음과 같은 레지스트리 값이 생성됩니다.
10.99.100.0,255.255.255.0,10.99.99.1,1
값 형식은 REG_SZ이고, 값 데이터는 없습니다(빈 문자열). route 명령을 사용하면 이 값을 추가하거나 삭제할 수 있습니다. 직접 값을 구성할 필요는 없습니다.
구성할 수 없는 매개 변수
다음과 같은 매개 변수들은 TCP/IP 구성 요소가 내부적으로 만들어서 사용합니다. 레지스트리 편집기에서 이러한 매개 변수들을 변경하면 안됩니다. 여기서는 참조용으로만 나열합니다.
DhcpDefaultGateway
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—점으로 분리된 십진수 IP 주소 목록
유효 범위: 올바른 IP 주소 집합
기본값: 없음
설명: 이 매개 변수는 컴퓨터가 직접 연결된 서브넷, 그리고 보다 확실한 경로가 없는 서브넷으로 향하지 않는 패킷을 라우팅하는 데 사용할 게이트웨이 목록을 지정합니다. 이 매개 변수는 DHCP 클라이언트 서비스를 사용할 수 있을 경우 이 서비스에 의해 기록됩니다. 이 매개 변수는 올바른 DefaultGateway 매개 변수 값으로 대체됩니다. 이 매개 변수는 각 인터페이스 단위로 설정되지만 컴퓨터마다 사용할 수 있는 기본 게이트웨이는 하나 뿐입니다. 추가 항목은 첫 번째 기본 게이트웨이가 작동하지 않을 경우 사용됩니다.
DhcpIPAddress
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—점으로 분리된 십진수 IP 주소
유효 범위: 올바른 IP 주소
기본값: 없음
설명: 이 매개 변수는 DHCP가 구성한 IP 주소를 인터페이스에 지정합니다. IPAddress 매개 변수의 첫 번째 값이 0.0.0.0이 아닌 경우, 그 값은 이 매개 변수보다 우선합니다.
DhcpDomain
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—문자열
유효 범위: 올바른 DNS 도메인 이름
기본값: 없음(DHCP 서버에서 제공됨)
설명: 이 매개 변수는 인터페이스의 DNS 도메인 이름을 지정합니다. Windows 2000에서 이 매개 변수와 NameServer는 시스템 전체에 적용되는 매개 변수가 아니라 각 인터페이스별로 적용되는 매개 변수입니다. Domain 키가 있는 경우, 그 값은 DhcpDomain 값보다 우선합니다.
DhcpNameServer
키: Tcpip\Parameters
값 종류: REG_SZ—점으로 분리된 십진수 IP 주소 목록(각 목록은 공백 문자로 구분함)
유효 범위: 올바른 IP 주소 집합
기본값: 없음
설명: 이 매개 변수는 Windows 소켓이 이름 확인을 위해 쿼리하는 DNS 이름 서버를 지정하며, DHCP 클라이언트 서비스가 사용 가능으로 설정된 경우 이 서비스에 의해 기록됩니다. NameServer 매개 변수 값이 올바른 경우, 그 값은 이 매개 변수보다 우선합니다.
DhcpServer
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—점으로 분리된 십진수 IP 주소
유효 범위: 올바른 IP 주소
기본값: 없음
설명: 이 매개 변수는 DhcpIPAddress 매개 변수에 있는 IP 주소에 대해 임대를 부여한 DHCP 서버의 IP 주소를 지정합니다.
DhcpSubnetMask
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—점으로 분리된 십진수 IP 서브넷 마스크
유효 범위: 구성된 IP 주소에 대해 올바른 서브넷 마스크
기본값: 없음
설명: 이 매개 변수는 DhcpIPAddress 매개 변수에 지정된 주소에 대해 DHCP 구성 서브넷 마스크를 지정합니다.
DhcpSubnetMaskOpt
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_SZ—점으로 분리된 십진수 IP 서브넷 마스크
유효 범위: 구성된 IP 주소에 대해 올바른 서브넷 마스크
기본값: 없음
설명: 이 매개 변수는 DHCP 클라이언트 서비스에서 기록하며 스택이 실제로 사용하는 DhcpSubnetMask 매개 변수를 만드는 데 사용됩니다. 그 값이 DhcpSubnetMask 매개 변수에 삽입되기 전에 유효성 검사가 수행됩니다.
Lease
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—시간(초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 없음
설명: DHCP 클라이언트 서비스는 이 매개 변수를 사용하여 이 어댑터의 IP 주소에 대한 임대 유효 시간을 초 단위로 저장합니다.
LeaseObtainedTime
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—1970년 1월 1일 자정부터 계산한 절대 시간(초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 없음
설명: DHCP 클라이언트 서비스는 이 매개 변수를 사용하여 이 어댑터의 IP 주소에 대해 임대를 받은 시간을 저장합니다.
LeaseTerminatesTime
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—1970년 1월 1일 자정부터 계산한 절대 시간(초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 없음
설명: DHCP 클라이언트 서비스는 이 매개 변수를 사용하여 이 어댑터의 IP 주소에 대한 임대 만료 시간을 저장합니다.
LLInterface
키: Tcpip\Parameters\Adapters\인터페이스
값 종류: REG_SZ—Windows 2000 장치 이름
유효 범위: 올바른 Windows 2000 장치 이름
기본값: 빈 문자열(공백)
설명: 이 매개 변수는 기본 제공 ARP 모듈이 아닌 다른 링크 계층 프로토콜로 바인드하도록 IP에게 지시하는 데 사용됩니다. 이 매개 변수의 값은 IP가 바인드해야 하는 Windows 2000 장치의 이름입니다. 예를 들어, 이 매개 변수는 RAS 구성 요소와 함께 사용됩니다. RAS는 LAN 이외의 ARP 모듈이 IP에 바인드할 경우에만 사용됩니다.
NTEContextList
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—번호
유효 범위: 0-0xFFFF
기본값: 없음
설명: 이 매개 변수는 인터페이스에 연결된 IP 주소의 컨텍스트를 식별합니다. 인터페이스에 연결된 각 IP 주소에는 자체 컨텍스트 번호가 있습니다. 이 값은 IP 주소를 식별하기 위해 내부적으로 사용되므로 변경하면 안됩니다.
T1
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—1970년 1월 1일 자정부터 계산한 절대 시간(초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 없음
설명: DHCP 클라이언트 서비스는 이 매개 변수를 사용하여 임대를 부여한 서버에 연결함으로써 서비스가 어댑터의 IP 주소에 대한 임대 갱신을 처음 시도할 시간을 저장합니다.
T2
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—1970년 1월 1일 자정부터 계산한 절대 시간(초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 없음
설명: DHCP 클라이언트 서비스는 이 매개 변수를 사용하여 갱신 요청을 브로드캐스트함으로써 서비스가 어댑터의 IP 주소에 대한 임대 갱신을 시도할 시간을 저장합니다. 서비스가 몇 가지 이유로 인해 원래 서버에서 임대를 갱신할 수 없는 경우에만 T2 시간에 도달합니다.
ATM ARP 클라이언트 매개 변수
ATM ARP 클라이언트 매개 변수는 각 인터페이스에 대한 TCP/IP 매개 변수와 함께 AtmArpC 하위 키 아래에 있습니다. 다음은 ATM 어댑터에 사용되는 하나의 TCP/IP 인터페이스에 대한 레지스트리의 예입니다.
HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parame
ters\Interfaces\{A24B73BE-D2CD-11D1-BE08-8FF4D413E1BE}\AtmArpC
SapSelector = REG_DWORD 0x00000001
AddressResolutionTimeout = REG_DWORD 0x00000003
ARPEntryAgingTimeout = REG_DWORD 0x00000384
InARPWaitTimeout = REG_DWORD 0x00000005
MaxResolutionAttempts = REG_DWORD 0x00000004
MinWaitAfterNak = REG_DWORD 0x0000000a
ServerConnectInterval = REG_DWORD 0x00000005
ServerRefreshTimeout = REG_DWORD 0x00000384
ServerRegistrationTimeout = REG_DWORD 0x00000003
DefaultVcAgingTimeout = REG_DWORD 0x0000003c
MARSConnectInterval = REG_DWORD 0x00000005
MARSRegistrationTimeout = REG_DWORD 0x00000003
JoinTimeout = REG_DWORD 0x0000000a
LeaveTimeout = REG_DWORD 0x0000000a
MaxJoinLeaveAttempts = REG_DWORD 0x00000005
MaxDelayBetweenMULTIs = REG_DWORD 0x0000000a
ARPServerList = REG_MULTI_SZ "4700790001020000000000000000A03E00000200"
MARServerList = REG_MULTI_SZ "4700790001020000000000000000A03E00000200"
MTU = REG_DWORD 0x000023dc
PVCOnly = REG_DWORD 0x00000000
다음은 위의 각 매개 변수에 대한 설명입니다.
SapSelector
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—숫자
유효 범위: 1-255
기본값: 1
설명: ATMARP 클라이언트에서 사용하는 선택자 바이트 값을 ATM 주소의 20번째 바이트로 지정합니다. 계산된 주소는 ATMARP 서버와 멀티캐스트 주소 확인 서버(MARS)에 등록하는 데 사용됩니다.
AddressResolutionTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-60
기본값: 3
설명: ATMARP 클라이언트가 유니캐스트 IP 주소에 대한 ARP 요청이나 멀티캐스트/브로드캐스트 IP 주소에 대한 MARS 요청을 보낸 후 그 응답을 기다리는 시간을 지정합니다. 이 시간이 경과하면 ATMARP 클라이언트가 최대 횟수(MaxResolutionAttempts - 1)만큼 요청을 다시 전송합니다.
ARPEntryAgingTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 90-1800
기본값: 900초(15분)
설명: ATMARP 클라이언트가 유니캐스트 IP 주소에 대한 주소 확인 정보가 무효화될 때까지 그 정보를 보관하는 시간을 지정합니다. 이 시간이 만료되면 ATMARP 클라이언트가 다음 중 한 가지 작업을 수행합니다.
- IP 주소에 연결된 가상 회로(VC)가 없으면 이 IP 주소에 대한 ARP 항목을 삭제합니다.
- IP 주소에 연결된 영구 가상 회로(PVC)가 하나라도 있으면 PVC에서 역 ARP를 사용하여 ARP 항목을 다시 유효화합니다.
- IP 주소에 연결된 SVC가 하나라도 있으면 ARP 요청을 ARP 서버로 전송하여 ARP 항목을 다시 유효화합니다.
InARPWaitTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-60
기본값: 5
설명: 이 매개 변수는 ATMARP 클라이언트가 유니캐스트 IP 주소 대 ATM 주소 매핑 즉, ARP 항목을 다시 유효화하기 위한 역 주소 확인 프로토콜(InARP) 요청을 전송한 후 응답을 대기하는 시간을 지정합니다. 이 시간이 만료되면 ATMARP 클라이언트는 IP 주소가 포함된 ARP 테이블 항목을 삭제합니다.
MaxResolutionAttempts
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—숫자
유효 범위: 1-255
기본값: 4
설명: 이 매개 변수는 ATMARP 클라이언트가 유니캐스트, 멀티캐스트 또는 브로드캐스트 IP 주소 대 ATM 주소(들) 확인을 수행하기 위해 시도하는 최대 횟수를 지정합니다.
MinWaitAfterNak
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-60
기본값: 10
설명: 이 매개 변수는 ATMARP 클라이언트가 ARP 서버나 MARS로부터 실패(ARP NAK) 응답을 받은 후 대기하는 시간을 지정합니다. 이 값을 지정하면 ATMARP 클라이언트가 존재하지 않거나 알 수 없는 IP 주소에 대한 쿼리를 서버에 전송하지 못하게 막습니다.
ServerConnectInterval
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-60
기본값: 5
설명: ARP 서버에 대한 연결 시도가 실패한 후 ATMARP 클라이언트가 그 연결을 다시 시도할 때까지 대기하는 시간을 지정합니다.
ServerRefreshTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 90-1800
기본값: 900초(15분)
설명: ATMARP 클라이언트가 ATMARP 서버의 캐시를 새로 고치기 위해 자신의 IP/ATM 주소 정보를 사용하여 ARP 요청을 전송하는 간격을 지정합니다.
ServerRegistrationTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-60
기본값: 3
설명: ATMARP 클라이언트가 자신의 IP/ATM 정보를 ATMARP 서버에 등록하기 위해 보낸 ARP 요청 패킷에 대한 응답으로 ARP 응답 패킷을 대기하는 시간을 지정합니다. 이 시간이 만료되면 ATMARP 클라이언트가 ARP 요청 패킷을 다시 전송합니다.
DefaultVcAgingTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 10-1800
기본값: 60
설명: ATMARP 클라이언트가 실행한 모든 VC에 대한 비활성 초과 시간을 지정합니다. 이 값은 PVC에 적용되지 않습니다. 비활성 상태는 양방향 모두 아무런 데이터 동작이 없는 상태로 정의됩니다. 이 시간이 만료되면 ATMARP 클라이언트가 VC 연결을 끊습니다.
MARSConnectInterval
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-30
기본값: 5
설명: 이 매개 변수는 ATMARP 클라이언트가 MARS에 대한 연결이 실패한 후 그 연결을 다시 시도할 때까지 대기하는 시간을 지정합니다.
MARSRegistrationTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 1-60
기본값: 3
설명: 이 매개 변수는 ATMARP 클라이언트가 ATM 주소를 MARS에 등록하기 위해 MARS 가입 패킷을 보낸 후 그에 대한 응답으로 MARS 가입 패킷을 기다리는 시간을 지정합니다. 이 시간이 만료되면 ATMARP 클라이언트가 MARS 가입 패킷을 다시 전송합니다.
JoinTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 5-60
기본값: 10
설명: 이 매개 변수는 ATMARP 클라이언트가 구성원 가입을 위한 MARS 가입 패킷을 IP 멀티캐스팅 그룹이나 IP 브로드캐스트 주소에게 보낸 후 그에 대한 응답으로 MARS 가입 패킷을 기다리는 시간을 지정합니다. 이 시간이 만료되면 ATMARP 클라이언트가 MARS 가입 패킷을 최대 MaxJoinLeaveAttempts 값만큼 다시 전송합니다.
LeaveTimeout
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 5-60
기본값: 10
설명: 이 매개 변수는 ATMARP 클라이언트가 IP 멀티캐스트 그룹이나 IP 브로드캐스트 주소으로부터 구성원 자격을 종료하기 위해 MARS 탈퇴 패킷을 전송한 후 그에 대한 응답으로 MARS 탈퇴 패킷을 기다리는 시간을 지정합니다. 이 시간이 만료되면 ATMARP 클라이언트가 MARS 탈퇴 패킷을 최대 MaxJoinLeaveAttempts 값만큼 다시 전송합니다.
MaxJoinLeaveAttempts
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—숫자
유효 범위: 1-10
기본값: 5
설명: 이 매개 변수는 ATMARP 클라이언트가 IP 멀티캐스트나 브로드캐스트 그룹에 가입하거나 탈퇴하기 위해 시도하는 최대 횟수를 지정합니다.
MaxDelayBetweenMULTIs
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—초
유효 범위: 2-60
기본값: 5
설명: 이 매개 변수는 하나의 MARS 요청에 대응하는 연속적인 MARS MULTI 패킷들 사이의 최대 지연 예상 시간(ATMARP 클라이언트가 예상하는 시간)을 지정합니다.
ARPServerList
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_MULTI_SZ
유효 범위: ATM 주소를 포함하는 문자열 목록
기본값: 4700790001020000000000000000A03E00000200
설명: 이것은 ARP 클라이언트가 등록할 수 있는 ARP 서버의 목록으로, 장애 조치 방식으로 사용됩니다. 즉, ARP 클라이언트는 성공할 때까지 각 주소를 순서대로 사용하여 등록을 시도합니다.
MARServerList
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_MULTI_SZ—문자열 목록
유효 범위: ATM 주소를 포함하는 문자열 목록
기본값: 4700790001020000000000000000A03E00000200
설명: 이것은 ARP 클라이언트가 등록할 수 있는 MARS 서버의 목록으로, 장애 조치 방식으로 사용됩니다. 즉, ARP 클라이언트는 성공할 때까지 각 주소를 순서대로 사용하여 등록을 시도합니다.
MTU
키: Tcpip\Parameters\Interfaces\인터페이스\AtmArpC
값 종류: REG_DWORD—바이트
유효 범위: 9180-65527
기본값: 9180
설명: 이 매개 변수는 이 인터페이스에 대해 IP 계층에 보고되는 최대 전송 단위를 지정합니다.
부록 B: TCP를 통한 NetBIOS 구성 매개 변수 | |
모든 NetBT 매개 변수는 HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services의 두 하위 키들 중 하나의 아래에 있는 레지스트리 값입니다.
- NetBT\Parameters
- NetBT\Adapters\Interfaces\인터페이스. 여기서 interface는 NetBT가 바인드된 네트워크 인터페이스의 하위 키를 나타냅니다.
두 번째 키 아래의 값들은 각 인터페이스와 관련된 값입니다. DHCP를 사용하여 구성된 시스템인 경우에는 명령 프롬프트에서 ipconfig /renew 명령을 실행할 때 매개 변수의 변경 내용이 적용됩니다. 그렇지 않으면 시스템을 다시 시작해야 이 매개 변수의 변경 내용이 적용됩니다.
레지스트리 편집기를 사용하여 구성할 수 있는 매개 변수
다음과 같은 매개 변수들은 TCP/IP 구성 요소를 설치하는 과정에서 NCPA가 기본값을 사용하여 설치합니다. 이 기본값은 레지스트리 편집기(Regedt32.exe)를 사용해서 수정할 수 있습니다. 일부 매개 변수는 기본적으로 레지스트리에 있지만, NetBT 드라이버의 기본 동작을 수정하기 위해서는 대부분의 매개 변수를 작성해야 합니다.
BacklogIncrement
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 3-0x14(십진수 1-20)
기본값: 3
설명: 이 매개 변수는 인터넷 SYN-ATTACK 문제에 대한 대책으로 추가되었습니다. NetBIOS TCP 포트(139)에 대한 연결이 시도될 때, 빈 연결 블록의 수가 2개 미만이면 새 연결 블록이 BackLogIncrement 수만큼 시스템에서 만들어집니다. 각 연결 블록은 78바이트의 메모리를 사용합니다. 허용되는 총 연결 블록 수에 대한 제한은 MaxConnBackLog 매개 변수에서 설정할 수 있습니다. 각각의 NetBT 연결마다 하나의 연결 블록이 필요합니다.
BcastNameQueryCount
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1-0xFFFF
기본값: 3
설명: 이 값은 NetBT가 응답을 수신하지 않은 상태에서 특정 이름에 대한 쿼리를 브로드캐스트하는 횟수를 결정합니다.
BcastQueryTimeout
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 100-0xFFFFFFFF
기본값: 0x2ee(십진수 750)
설명: 이 값은 동일한 이름에 대해 연속되는 브로드캐스트 이름 쿼리들 사이의 시간 간격을 결정합니다.
BroadcastAddress
키: Netbt\Parameters
값 종류: REG_DWORD—리틀엔디언으로 인코딩된 4바이트의 IP 주소
유효 범위: 0-0xFFFFFFFF
기본값: 각 네트워크에 대해 1로 구성된 브로드캐스트 주소
설명: 이 매개 변수를 사용하면 NetBT가 모든 브로드캐스트 이름 관련 패킷에 특정 주소를 사용해야 합니다. 기본적으로 NetBT는 각 네트워크에 적합한 1로 구성된 브로드캐스트 주소를 사용합니다. 즉, 서브넷 마스크가 255.255.0.0인 네트워크 10.101.0.0의 경우에는 서브넷 브로드캐스트 주소가 10.101.255.255입니다. 예를 들어, 0으로 구성된 브로드캐스트 주소가 네트워크에서 사용되는 경우 이 매개 변수는 UseZeroBroadcast TCP/IP 매개 변수를 사용해서 설정됩니다. 위의 예에 맞는 서브넷 브로드캐스트 주소는 10.101.0.0입니다. 그런 다음 이 매개 변수는 0x0b650000으로 설정됩니다. 이 매개 변수는 글로벌 매개 변수이므로 NetBT가 바인드된 모든 서브넷에서 사용됩니다.
CachePerAdapterEnabled
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 값은 NetBIOS 원격 이름 캐싱을 어댑터별로 수행할 것인지를 결정합니다. 각각의 어댑터 이름 캐시를 볼 수 있도록 nbtstat -c 명령이 개선되었습니다.
CacheTimeout
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 0xEA60-0xFFFFFFFF
기본값: 0x927c0(600000밀리초 = 10분)
설명: 이 값은 이름이 원격 이름 테이블에서 캐시되는 시간 간격을 결정합니다. nbtstat -c 명령을 사용하면 캐시에 있는 각각의 이름에 대해 남아 있는 시간을 볼 수 있습니다.
ConnectOnRequestedInterfaceOnly
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 값을 사용하면 요청된 어댑터에서만 NetBT 연결을 허용할 수 있습니다. 다중홈 컴퓨터의 리디렉터가 다른 컴퓨터 이름을 호출할 때, 리디렉터는 자신이 바인드된 모든 NetBT 트랜스포트(프로토콜/어댑터 조합)를 호출합니다. 각각의 트랜스포트는 각자 대상 이름에 도달하려고 시도합니다. 이 매개 변수를 설정하면 각각의 트랜스포트가 자신의 어댑터를 통해 도달할 수 있는 다른 컴퓨터에 연결할 때 제한을 받기 때문에 크로스오버 트래픽이 방지됩니다. 자세한 내용은 이 백서의 "다중홈 컴퓨터의 NetBIOS 이름 등록 및 확인" 부분을 참조하십시오.
이 매개 변수는 더 이상 사용되지 않습니다.
EnableDns
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 값을 1(참)로 설정하면 NetBT가 DNS 서버를 쿼리하여 WINS, 브로드캐스트 또는 Lmhosts 파일이 확인할 수 없는 이름이 있는지를 찾습니다.
EnableProxyRegCheck
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 1(참)로 설정하면 프록시 이름 서버는 그 이름이 이미 WINS에 등록되어 있거나 다른 IP 주소를 갖는 프록시의 로컬 이름 캐시에 있는 경우 브로드캐스트 이름 등록에 대한 부정적인 응답을 전송합니다. 이 기능을 사용하면 WINS가 이름에 대한 매핑을 가지고 있는 한 그 IP 주소를 시스템이 변경하지 못합니다. 따라서 이 기능은 기본적으로 사용 안함으로 설정됩니다.
InitialRefreshT.O.
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 960000-0xFFFFFFF
기본값: 960000(16분)
설명: 이 매개 변수는 NetBT가 이름 등록 과정에서 사용하는 초기 새로 고침 시간 제한을 지정합니다. 이름을 처음으로 등록할 때, NetBT는 이 시간 간격의 1/8에 해당하는 시점에서 WINS 서버에 대한 연결을 시도합니다. 성공적인 등록 응답을 수신했을 때, 그 응답에는 새로 사용할 새로 고침 간격이 들어 있습니다.
LmhostsTimeout
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 1000-0xFFFFFFFF
기본값: 6000(6초)
설명: 이 매개 변수는 NetBT가 제출하는 LMHOSTS 및 DNS 이름 쿼리에 대한 시간 제한 값을 지정합니다. 타이머에도 시간 제한이 있기 때문에 실제 시간 제한은 이 값의 두 배가 될 수 있습니다.
MaxConnBackLog
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 2-0x9c40(십진수 1-40,000)
기본값: 1000
설명: 이 값은 NetBT가 할당하는 연결 블록의 최대 개수를 결정합니다. 자세한 내용은 BackLogIncrement 매개 변수를 참조하십시오.
MaxPreloadEntries
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0x3E8-0x7D0(십진수 1000-2000)
기본값: 십진수 1000
설명: 이 값은 LMHOSTS 파일로부터 미리 로드되는 항목의 최대 개수를 지정합니다. 캐시로 미리 로드되는 항목은 #PRE 태그가 붙은 상태로 LMHOSTS 파일에 플래그됩니다.
MaxDgramBuffering
키: Netbt\Parameters
값 종류: REG_DWORD—바이트
유효 범위: 0x20000-0xFFFFFFFF
기본값: 0x20000(128K)
설명: 이 매개 변수는 NetBT가 아직 전송되지 않은 모든 미해결 데이터그램에 대해 동적으로 할당하는 최대 메모리 크기를 지정합니다. 이 매개 변수에서 지정한 값에 도달하면 충분한 리소스가 없기 때문에 더 이상 데이터그램을 보낼 수 없습니다.
MinimumRefreshSleepTime
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 21600000-4294967295
기본값: 21600000밀리초(6시간)
설명: 이 매개 변수는 컴퓨터가 휴면 모드 또는 최대 절전 모드로 사용될 때 TTL의 ½이 6시간보다 작은 경우 WakeupTimer의 TTL을 재설정하는 데 사용됩니다.
MinimumFreeLowerConnections
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 20-500
기본값: 50
설명: 이 매개 변수는 시스템이 부팅할 때 수신 연결을 수락하기 위해 가지는 사용 가능한 핸들 수를 할당하는 데 사용됩니다. 이러한 핸들은 서비스되고 있는 활성 상태의 연결 개수에 추가하여 할당됩니다. 시스템이 일정한 상태를 유지하게 되면 사용 가능한 핸들 수가 사용된 핸들 수의 ½까지 늘어납니다. 사용 가능한 핸들 수는 레지스트리에 별도로 지정되지 않는 한 50개 이상이어야 합니다.
NameServerPort
키: Netbt\Parameters
값 종류: REG_DWORD—UDP 포트 번호
유효 범위: 0-0xFFFF
기본값: 0x89
설명: 이 매개 변수는 NetBT가 이름 쿼리 및 이름 등록 등과 같이 WINS에 대한 이름 서비스 관련 패킷을 전송하는 대상 포트 번호를 지정합니다. Microsoft WINS Server는 포트 0x89(십진수 138)에서 수신 대기합니다. 다른 공급업체에서 제공하는 NetBIOS 이름 서버는 다른 포트에서 수신 대기합니다.
NameSrvQueryCount
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 0-0xFFFF
기본값: 3
설명: 이 값은 NetBT가 응답을 수신하지 않은 상태에서 지정된 이름에 대한 쿼리를 WINS 서버에게 전송하는 횟수를 지정합니다.
NameSrvQueryTimeout
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 100-0xFFFFFFFF
기본값: 1500(1.5초)
설명: 이 값은 지정된 이름에 대해 사용되는 WINS에 대한 연속적인 이름 쿼리들 사이의 시간 간격을 지정합니다.
NodeType
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1, 2, 4, 8(B 노드, P 노드, M 노드, H 노드)
기본값: 1 또는 8(WINS 서버 구성에 따라 결정됨)
설명: 이 매개 변수는 NetBT가 이름을 등록하고 확인하는 방법을 결정합니다. B 노드 시스템은 브로드캐스트를 사용합니다. P 노드 시스템은 이름 서버(WINS)에 대해 지점간 이름 쿼리만 사용합니다. M 노드 시스템은 먼저 브로드캐스트한 후 이름 서버를 쿼리합니다. H 노드는 먼저 이름 서버를 쿼리한 후 브로드캐스트합니다. 사용 가능으로 설정된 경우, LMHOSTS 및 DNS를 통한 확인이 이러한 방법을 따릅니다. 이 키는 DhcpNodeType 키보다 우선합니다. 이 키가 없는 경우, 클라이언트에 대해 구성된 WINS 서버가 없으면 B 노드가 기본적으로 사용됩니다. WINS 서버가 최소한 하나라도 구성되어 있으면 H 노드가 기본적으로 사용됩니다.
NoNameReleaseOnDemand
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 컴퓨터가 네트워크로부터 이름 해제 요청을 수신할 때 자신의 NetBIOS를 해제할 것인지를 지정합니다. 이 매개 변수는 관리자가 해커의 이름 해제 공격으로부터 컴퓨터를 보호하는 것을 돕기 위해 추가되었습니다.
RandomAdapter
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 다중홈 호스트에만 적용됩니다. 이 매개 변수를 1(참)로 설정하면 NetBT는 IP 주소를 임의로 선택한 후 바인드된 모든 인터페이스로부터 수신되는 이름 쿼리 응답에 이 주소를 넣습니다. 일반적으로 응답에는 쿼리가 도달한 인터페이스의 주소가 포함되어 있습니다. 이 기능은 동일한 네트워크에서 두 개의 인터페이스를 갖는 서버가 로드 균형을 조정하는 데 사용합니다.
RefreshOpCode
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 8, 9
기본값: 8
설명: 이 매개 변수는 NetBT가 특정 opcode 필드를 이름 새로 고침 패킷에 사용하도록 강제로 지정합니다. 이 영역에 대한 NetBT 프로토콜 사양은 다소 분명치 않습니다. Microsoft 구현에서 기본적으로 사용되는 값 8이 적절한 것처럼 나타나더라도, Ungermann-Bass 구현 등의 일부 다른 구현에서는 값 9를 사용합니다. 두 개의 구현에서는 상호 운용을 위해 동일한 opcode 필드를 사용해야 합니다.
ScopeId
키: Netbt\Parameters
값 종류: REG_SZ—문자열
유효 범위: 점으로 분리된 두 부분이나 하나의 별표(*)로 구성되는 올바른 DNS 도메인 이름
기본값: 없음
설명: 이 매개 변수는 노드에 사용할 NetBIOS 이름 범위를 지정합니다. 이 값은 점으로 시작해서는 안됩니다. 이 매개 변수에 있는 올바른 값은 동일한 이름을 가진 DHCP 매개 변수보다 우선합니다. 빈 값(빈 문자열)은 무시됩니다. 이 매개 변수를 "*" 값으로 설정하면 널 범위가 지정되며 DHCP 매개 변수가 무시됩니다.
SessionKeepAlive
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 60,000-0xFFFFFFFF
기본값: 3,600,000(1시간)
설명: 이 값은 하나의 세션에서 발생하는 연결 유지 메시지 전송들 사이의 시간 간격을 지정합니다. 이 값을 0xFFFFFFF로 설정하면 연결 유지 메시지를 사용할 수 없게 됩니다.
SingleResponse
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 다중홈 호스트에만 적용됩니다. 이 매개 변수를 1(참)로 설정하면 NetBT는 이름 쿼리 응답에서 바운드 인터페이스들 중 하나의 IP 주소만 제공합니다. 기본적으로 모든 바운드 인터페이스의 주소가 포함됩니다.
Size/Small/Medium/Large
키: Netbt\Parameters
값 종류: REG_DWORD
유효 범위: 1(소), 2(중), 3(대)
기본값: 1(소)
설명: 이 값은 로컬 및 원격 이름을 저장하는 데 사용될 이름 테이블의 크기를 지정합니다. 일반적으로 1(소)로 설정하는 것이 좋습니다. 시스템이 프록시 이름 서버로 작동하는 경우, 이 값은 3(대)으로 자동 설정되어 이름 캐시 해시 테이블의 크기를 증가시킵니다. 해시 테이블 버킷의 크기는 다음과 같습니다.
- 소: 16
- 중: 128
- 대: 256
SMBDeviceEnabled
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: Windows 2000에서는 SMB 장치라는 새로운 네트워크 트랜스포트를 지원합니다. 이 트랜스포트는 기본적으로 사용 가능으로 설정됩니다. 문제 해결을 위해 이 매개 변수를 사용해서 SMB 장치를 사용 안함으로 설정할 수 있습니다. 자세한 내용은 이 백서의 "NetBT 인터넷/DNS의 개선 및 SMB 장치" 부분을 참조하십시오.
TryAllNameServers
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 하나의 IP 주소에 대한 NetBIOS 세션 설정 요청이 실패할 때 클라이언트가 구성된 서버 목록에서 추가 이름 서버를 계속 쿼리할 것인지를 제어합니다. 이 매개 변수가 사용 가능으로 설정된 경우, 목록에 있는 모든 WINS 서버에 대한 쿼리를 시도하며 사용자에 대한 요청이 실패하기 전에 제공된 모든 IP 주소에 대한 연결을 시도합니다.
TryAllIPAddrs
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: WINS 서버가 이름 쿼리에 대한 응답으로 IP 주소 목록을 반환할 때, 그 주소 목록은 주소들이 클라이언트에 속한 인터페이스와 동일한 서브넷에 있는지의 여부에 따라 원하는 순서대로 정렬됩니다. 이 매개 변수는 클라이언트가 목록에 있는 IP 주소들을 핑(ping)하여 그에 응답하는 첫 번째 주소에 대한 연결을 시도할 것인지 아니면 클라이언트가 정렬된 목록에 있는 첫 번째 IP 주소에 대한 연결을 시도하여 이 연결이 실패하면 연결을 시도하지 않을 것인지를 제어합니다. 기본적으로 클라이언트는 목록에 있는 각 주소를 핑(ping)하여 그에 처음 응답하는 주소에 대한 연결을 시도합니다.
UseDnsOnlyForNameResolutions
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 사용하면 모든 NetBIOS 이름 쿼리를 사용 안함으로 설정할 수 있습니다. NetBIOS 이름 등록 및 새로 고침은 여전히 사용할 수 있으며 NetBIOS 세션도 계속 허용됩니다. 인터페이스의 NetBIOS를 사용 안함으로 설정하려면 NetbiosOptions 매개 변수를 참조하십시오.
WinsDownTimeout
키: Netbt\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 1000-0xFFFFFFFF
기본값: 15,000(15초)
설명: 이 매개 변수는 NetBT가 WINS 서버 연결에 실패한 후 WINS를 다시 사용하려고 시도할 때까지 기다리는 시간을 지정합니다. 이 기능을 사용하면 기본적으로 랩톱 컴퓨터와 같이 일시적으로 네트워크 연결이 끊긴 컴퓨터에서 각 WINS 이름 등록이나 쿼리가 개별적으로 시간 제한될 때까지 기다리지 않고서도 부팅 과정을 계속 진행할 수 있습니다.
연결 UI에서 구성할 수 있는 매개 변수
다음과 같은 매개 변수들은 네트워크 제어판 도구(NCPA)에서 설정할 수 있습니다. 매개 변수를 직접 구성할 필요는 없습니다.
EnableLmhosts
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 값을 1(참)로 설정하면 NetBT가 LMHOSTS 파일을 검색하여 WINS 또는 브로드캐스트가 확인할 수 없는 이름이 있는지를 찾습니다. 기본적으로 Tcpip\Parameters\DatabasePath에서 지정된 LMHOSTS 파일 데이터베이스 디렉터리가 없으므로 아무런 동작도 취해지지 않습니다. 이 값은 NCPA의 고급 TCP/IP 구성 대화 상자에서 기록됩니다.
EnableProxy
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 값을 1(참)로 설정하면 시스템은 NetBT가 바인드되는 네트워크에 대한 프록시 이름 서버로 작동합니다. 프록시 이름 서버는 WINS를 통해 확인한 이름에 대한 브로드캐스트 쿼리에 응답합니다. 프록시 이름 서버를 사용하면 B 노드 구현 네트워크가 WINS에 등록된 다른 서브넷에 있는 서버에 연결할 수 있습니다.
NameServerList
키: Netbt\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—공백으로 구분하는 점으로 분리된 십진수 IP 주소(예: 10.101.1.200)
유효 범위: 올바른 WINS 서버 IP 주소 목록
기본값: 없음(주소 없음)
설명: 이 매개 변수는 컴퓨터에 대해 구성된 WINS 서버 목록의 IP 주소를 지정합니다. 이 매개 변수에 들어 있는 올바른 값은 동일한 이름을 가진 DHCP 매개 변수보다 우선합니다. 이 매개 변수는 더 이상 사용되지 않는 Windows NT 4.0 매개 변수 NameServer 및 NameServerBackup를 대체합니다.
NetbiosOptions
키: Netbt\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—숫자
유효 범위: 1, 2
기본값: 1
설명: 이 매개 변수는 각 인터페이스별로 NetBIOS를 사용 가능으로 설정할 것인지를 제어합니다. 시작 메뉴에서 설정을 선택한 후 네트워크 및 전화 접속 연결을 누릅니다. 로컬 영역 연결을 마우스 오른쪽 단추를 누른 후 등록 정보를 누릅니다. 인터넷 프로토콜(TCP\IP)을 선택하고 등록 정보를 누른 후 고급을 누릅니다. WINS 탭을 누릅니다. NetBIOS 옵션은 TCP/IP에서 NetBIOS 사용, TCP/IP에서 NetBIOS 사용 안함 또는 DHCP 서버의 NetBIOS 설정 사용(기본값)입니다. 사용 안함으로 설정된 경우 이 값은 1이고, 사용 가능으로 설정된 경우에는 2입니다. 이 키가 없으면 DHCPNetbiosOptions 키를 읽습니다. 이 키가 있으면 DHCPNetbiosOptions은 무시됩니다.
구성할 수 없는 매개 변수
다음과 같은 매개 변수들은 NetBT 구성 요소에 의해 만들어진 후 내부적으로 사용됩니다. 레지스트리 편집기에서 이러한 매개 변수들을 변경하면 구성 요소가 불안정해지므로 참조용으로만 사용하십시오.
DHCPNameServerList
키: Netbt\Parameters\Interfaces\인터페이스
값 종류: REG_MULTI_SZ—공백으로 구분하는 점으로 분리된 십진수 IP 주소(예: 10.101.1.200)
유효 범위: 올바른 WINS 서버 IP 주소 목록
기본값: 없음(주소 없음)
설명: 이 매개 변수는 DHCP 서비스에서 제공하는 WINS 서버 목록의 IP 주소를 지정합니다. 이 매개 변수는 더 이상 사용되지 않는 Windows NT 4.0 매개 변수인 DHCPNameServer 및 DHCPNameServerBackup을 대체합니다. 이 매개 변수보다 우선하는 NameServerList를 참조하십시오.
DHCPNetbiosOptions
키: Netbt\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—숫자
유효 범위: 1, 2
기본값: 1
설명: 이 매개 변수는 DHCP 클라이언트 서비스에 의해 기록됩니다. 자세한 내용은 NetbiosOptions 매개 변수를 참조하십시오.
DhcpNodeType
키: Netbt\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 1-8
기본값: 1
설명: 이 매개 변수는 NetBT 노드 유형을 지정합니다. 이 매개 변수는 DHCP 클라이언트 서비스에 의해 기록됩니다. 올바른 NodeType 값은 이 매개 변수보다 우선합니다. 자세한 내용은 NodeType를 참조하십시오.
DhcpScopeId
키: Netbt\Parameters
값 종류: REG_SZ—문자열
유효 범위: microsoft.com과 같이 점으로 분리된 이름 문자열
기본값: 없음
설명: 이 매개 변수는 노드에 대한 NetBIOS 이름 범위를 지정합니다. 이 매개 변수는 DHCP 클라이언트 서비스에 의해 기록됩니다. 이 값은 점으로 시작되지 않아야 합니다. 자세한 내용은 ScopeId를 참조하십시오.
NbProvider
키: Netbt\Parameters
값 종류: REG_SZ—문자열
유효 범위: _tcp
기본값: _tcp
설명: 이 매개 변수는 RPC 구성 요소에서 내부적으로 사용됩니다. 기본값을 변경해서는 안됩니다.
TransportBindName
키: Netbt\Parameters
값 종류: REG_SZ—문자열
유효 범위: 해당 없음
기본값: \Device\
설명: 이 매개 변수는 제품 개발 과정에서 내부적으로 사용됩니다. 기본값을 변경해서는 안됩니다.
부록 C: Windows 소켓 및 DNS 레지스트리 매개 변수 | |
AFD 레지스트리 매개 변수
Windows 소켓 응용 프로그램을 지원하는 데 사용하는 Afd.sys는 커널 모드 드라이버입니다. 기본값이 세 개인 경우 다음과 같이 시스템에서 검색한 메모리 크기에 따라 기본값이 계산됩니다.
- 첫 번째 값은 소형 컴퓨터(19MB 이하)의 기본값입니다.
- 두 번째 값은 중형 컴퓨터(Windows 2000 Professional의 경우 32MB 이하, Windows 2000 Server의 경우 64MB 이하)의 기본값입니다.
- 세 번째 값은 대형 컴퓨터(Windows 2000 Professional의 경우 32MB 이상, Windows 2000 Server의 경우 64MB 이상)의 기본값입니다.
예를 들어, 기본값이 0/2/10이고 시스템의 RAM이 12.5-20MB이면 기본값은 2입니다.
아래에 나오는 값들은 다음과 같이 설정될 수 있습니다.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\Afd
\Parameters:
DefaultReceiveWindow
값 종류: REG_DWORD
기본값: 4096/8192/8192
설명: 흐름 제어를 하기 전에 AFD가 연결에서 버퍼링할 수신 바이트의 수. 일부 응용 프로그램의 경우, 더 큰 값을 지정하면 리소스 사용이 증가하면서 성능이 약간 더 향상됩니다. 응용 프로그램에서는 SO_RCVBUF 소켓 옵션을 사용하여 각 소켓별로 이 값을 수정할 수 있습니다.
DefaultSendWindow
값 종류: REG_DWORD
기본값: 4096/8192/8192
설명: 이 매개 변수는 DefaultReceiveWindow와 유사하지만 송신자 측에 적용됩니다.
DisableAddressSharing
값 종류: REG_DWORD
기본값: 0
범위: 0, 1
설명: 이 매개 변수는 하나의 프로세스가 소켓을 열 때 다른 프로세스가 이 소켓으로부터 데이터를 훔칠 수 없도록 프로세스들 사이의 주소 공유(SO_REUSEADDR)를 방지하는 데 사용할 수 있습니다. 응용 프로그램에서 새로운 소켓 옵션 SO_EXCLUSIVEADDRUSE를 사용하면 비슷한 결과를 얻을 수 있습니다. 관리자는 이 설정값을 사용해서 이 옵션을 인식하지 못하는 구형 응용 프로그램을 보호할 수 있습니다.
DisableRawSecurity
값 종류: REG_DWORD
기본값: 0
범위: 0, 1
설명: 원시 소켓을 열려고 시도할 때 수행되는 관리자 권한 검사를 사용 안함으로 설정합니다. 이 매개 변수는 TDI_SERVICE_FORCE_ACCESS_CHECK가 설정된 Windows 2000 트랜스포트(예: 원시 소켓에 대한 자체 보안을 관리하는 TCP/IP)에는 사용되지 않습니다. TCP/IP AllowUserRawAccess 레지스트리 매개 변수를 참조하십시오.
DynamicBacklogGrowthDelta
값 종류: REG_DWORD
유효 범위: 0-0xFFFFFFFF
기본값: 0
설명: 추가 연결이 필요할 때 새로 만들 빈 연결의 수를 제어합니다. 이 값이 아주 크면 빈 연결 할당 개수가 아주 커지므로 주의해서 사용해야 합니다. Windows 2000에서 이 매개 변수가 여전히 존재할 수 있지만 SYN-ATTACK 문제에 대처하도록 TCP 스택 자체를 이미 처리했으므로 이러한 AFD 기능은 사용할 필요가 없습니다.
FastCopyReceiveThreshold
값 종류: REG_DWORD
기본값: 1024
설명: 응용 프로그램이 Winsock에서 버퍼되고 있는 현재 패킷보다 작은 버퍼를 갖는 수신물을 게시할 때, AFD는 추가 패킷 사본을 만든 후 데이터를 응용 프로그램 버퍼에 직접 복사하거나 응용 프로그램 버퍼를 잠그고 매핑한 후 데이터를 복사할 수 있습니다. 직접 복사의 경우, 잠겨져 있는 응용 프로그램 버퍼에 직접 액세스할 수 없기 때문에 두 단계에 걸쳐 복사합니다. 이 값은 데이터 복사를 위한 추가 코드 실행과 I/O 하위 시스템 및 메모리 관리자에서의 추가 코드 실행 사이의 중간을 나타냅니다. 테스트 결과, 전반적으로 성능을 향상시키는 최상의 값은 기본값이라고 밝혀졌습니다. 일반적으로 이 값은 변경하지 않는 것이 좋습니다.
FastSendDatagramThreshold
값 종류: REG_DWORD
기본값: 1024
설명: 이 매개 변수의 값보다 작은 데이터그램은 고속 I/O 경로를 통과하거나 송신할 때 버퍼링됩니다. 이 매개 변수의 값보다 큰 데이터그램은 데이터그램이 실제로 송신될 때까지 보류됩니다. 테스트 결과, 전반적으로 성능을 향상시키는 최상의 값은 기본값이라고 밝혀졌습니다. 고속 I/O는 메모리를 매핑하고 I/O 하위 시스템을 통과하는 것이 아니라 데이터를 복사하고 I/O 하위 시스템을 무시한다는 것을 의미합니다. 고속 I/O는 데이터 양이 작을 경우에 유용합니다. 일반적으로 이 값은 변경하지 않는 것이 좋습니다.
IgnorePushBitOnReceives
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 일반적으로 Windows 2000에서는 다음 중 하나가 발생하면 Windows 소켓 수신이 완료됩니다.
- 푸시 비트가 설정된 상태로 데이터가 수신되는 경우
- 사용자 recv 버퍼가 가득 찬 경우
- 데이터가 수신된 후 0.5초가 경과한 경우
이 매개 변수를 1로 설정하면 Afd.sys는 푸시 비트가 설정되어 있더라도 모든 수신 패킷을 처리합니다. 이 매개 변수는 데이터를 제대로 보내지 못하는 클라이언트 TCP/IP 구현 문제를 해결하는 데 필요한 경우에만 1로 설정해야 합니다.
IrpStackSize
값 종류: REG_DWORD
유효 범위: 1-255
기본값: 4
설명: IRP 스택 위치 계산은 기본적으로 AFD에 사용됩니다. 이 값은 변경하지 않는 것이 좋습니다.
LargeBufferSize
값 종류: REG_DWORD
기본값: PAGE_SIZE(i386의 경우 4096바이트, Alpha의 경우 8192바이트)
설명: AFD에서 사용되는 큰 버퍼의 크기(바이트 단위). 값이 작을수록 사용되는 메모리가 줄어들고 값이 클수록 성능이 향상될 수 있습니다.
LargeBufferListDepth
값 종류: REG_DWORD
기본값: 0/2/10
설명: 큰 버퍼 보기 목록의 깊이
MaxActiveTransmitFileCount
값 종류: REG_DWORD
유효 범위: 0-0xffff(서버), 2(워크스테이션)
기본값: 0(서버), 2(워크스테이션)
설명: 이 매개 변수는 동시에 미해결 상태로 둘 수 있는 최대 TransmitFile 요청 개수를 지정합니다. 값 0은 시스템 리소스를 제외한 다른 아무런 제한이 없음을 나타냅니다. Windows 2000 Professional에서는 이 값을 변경할 수 없습니다.
MaxFastTransmit
값 종류: REG_DWORD
유효 범위: 0-0xffffffff
기본값: 64 KB
설명: 이 매개 변수는 고속 경로에서 TransmitFile 요청과 함께 전송되는 데이터의 최대 크기를 제어합니다. 고속 I/O는 메모리를 매핑하고 I/O 하위 시스템을 통과하는 것이 아니라 항상 데이터를 복사하고 I/O 하위 시스템을 무시합니다. 이것은 데이터 양이 작을 경우에 유용합니다. 일반적으로 이 값은 변경하지 않는 것이 좋습니다.
MaxFastCopyTransmit
값 종류: REG_DWORD
유효 범위: 0-0xFFFFFFFF
기본값: 128
설명: 이 매개 변수는 캐시된 메모리가 아닌 데이터 사본을 고속 경로에서 사용하는 데이터의 최대 크기를 제어합니다. 고속 I/O는 메모리를 매핑하고 I/O 하위 시스템을 통과하는 것이 아니라 항상 데이터를 복사하고 I/O 하위 시스템을 무시합니다. 이것은 데이터 양이 작을 경우에 유용합니다. 일반적으로 이 값은 변경하지 않는 것이 좋습니다.
MediumBufferSize
값 종류: REG_DWORD
기본값: 1504
설명: AFD에서 사용되는 중간 버퍼의 크기(바이트 단위)
MediumBufferListDepth
값 종류: REG_DWORD
기본값: 4/8/24
설명: 중간 버퍼 보기 목록의 깊이
OverheadChargeGranularity
값 종류: REG_DWORD
기본값: 1페이지
유효 범위: 2의 제곱승
설명: 이 매개 변수는 실제 어느 정도의 오버헤드가 발생하는지를 결정합니다. 오버헤드를 적당한 수준으로 유지하기 위해 기본값은 1페이지로 지정되는데, 이렇게 값이 지정되는 이유는 적은 메모리로 시스템을 실행하려고 하는 공격자 응용 프로그램을 저지하기 위한 것입니다.
PriorityBoost
값 종류: REG_DWORD
기본값: 2
유효 범위: 0-16
설명: AFD가 스레드에 대한 I/O를 완료할 때 그 스레드에 대해 부여하는 우선 순위의 상향 조정. 멀티스레드 응용 프로그램에서 일부 스레드가 부족한 경우, 이 매개 변수 값을 줄이면 문제를 해결할 수 있습니다.
SmallBufferListDepth
값 종류: REG_DWORD
기본값: 8/16/32
설명: 작은 버퍼 보기 목록의 깊이
SmallBufferSize
값 종류: REG_DWORD
기본값: 128
설명: AFD에서 사용되는 작은 버퍼의 크기(바이트 단위)
StandardAddressLength
값 종류: REG_DWORD
기본값: 22
설명: 일반적으로 컴퓨터에 사용되는 TDI 주소의 길이. TP4와 같이 아주 긴 주소를 사용하는 대체 전송 프로토콜을 사용할 때, 이 값을 높이면 성능이 어느 정도 향상됩니다.
TransmitIoLength
값 종류: REG_DWORD
기본값: PAGE_SIZE/PAGE_SIZE*2/65536
설명: TransmitFile()에서 수행되는 입출력(읽기 및 보내기) 기본 크기. Windows 2000 Professional에서는 기본 입출력 크기가 정확히 1페이지입니다.
TransmitWorker
값 종류: REG_DWORD
기본값: 0x10
유효 범위: 0x10, 0x20
설명: 이 매개 변수는 Afd.sys에서 시스템 스레드를 사용하는 방법을 제어합니다. 이 값을 0x10으로 설정하면 AFD가 시스템 스레드를 사용하여 데이터의 SendPacketLength 값보다 2배 긴 TransmitFile() 요청으로 인해 발생하는 입출력을 수행합니다. 이 값을 0x20으로 설정하면 AFD가 커널 모드 AFD를 입출력에 사용하며 동일한 스레드의 컨텍스트에 있는 모든 내용을 수행합니다. 이 매개 변수는 새로운 Windows 2000 매개 변수로서, 긴 TransmitFile() 요청에서 컨텍스트 스위치 개수를 줄이면 성능을 향상시킬 수 있습니다.
동적 DNS 등록 매개 변수
다음과 같은 매개 변수들은 동적 DNS 등록 클라이언트의 동작을 제어합니다. 매개 변수가 없는 경우에는 기본값이 그대로 사용됩니다.
DNSQueryTimeouts
키: Tcpip\Parameters
값 종류: REG_MULTI_SZ—0으로 종료되는 시간 제한 목록
유효 범위: 올바른 숫자 목록
기본값: 1 2 2 4 8 0(참고: 각 숫자를 입력한 후 Enter 키를 누르고 0으로 목록을 종료하십시오.)
설명: 이 매개 변수를 사용하면 DNS 클라이언트가 사용하는 DNS 쿼리 시간 제한을 변경할 수 있습니다. 제어되는 비 인터넷 환경 또는 느린 지연 환경에서 이 매개 변수를 사용하면 쿼리 실패 시간을 줄일 수 있습니다.
DefaultRegistrationTTL
키: Tcpip\Parameters
값 종류: REG_DWORD—초
기본값: 0x4B0(십진수 1200 또는 20분)
유효 범위: 0-0xFFFFFFFF
설명: 이 매개 변수를 사용하면 동적 DNS 등록에서 전송되는 TTL 값을 제어할 수 있습니다.
EnableAdapterDomainNameRegistration
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 사용하면 특정 어댑터의 도메인 이름 정보에 대한 DNS 동적 업데이트 등록을 사용 안함으로 설정할 수 있습니다. 이 설정은 어댑터의 도메인 이름을 사용해서 어댑터 주소 등록을 해야 할 때 유용합니다. 이 키를 참으로 설정하고 DisableDynamicUpdate를 0(거짓)으로 설정한 경우, 해당 어댑터의 주소를 등록하는 데 특정 어댑터의 도메인 이름과 시스템의 주 도메인 이름이 사용됩니다.
DisableDynamicUpdate
키: Tcpip\Parameters, Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓, 동적 DNS 사용)
설명: 이 매개 변수를 사용하면 DNS 동적 업데이트 등록을 완전히 사용 안함으로 설정할 수 있습니다. 이 매개 변수는 레지스트리 키의 위치에 따라 인터페이스 매개 변수가 되거나 글로벌 매개 변수가 될 수 있습니다. Tcpip\Parameters 레벨의 값을 1로 설정하면 전체 시스템에서 동적 업데이트를 사용할 수 없게 됩니다. Tcpip\Parameters 레벨의 값을 0으로 설정하면 각 어댑터별로 동적 업데이트를 사용할 수 없게 만들 수 있습니다.
DisableReplaceAddressesInConflicts
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수를 사용하면 최종 작성자가 우선시되는 주소 등록 충돌 규칙을 해제할 수 있습니다. 기본적으로 컴퓨터는 자신이 소유한 것으로 나타나지 않는 DNS 서버의 현재 레코드는 교체하지 않습니다.
DisableReverseAddressRegistrations
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓, PTR 레코드 등록 사용)
설명: 이 매개 변수를 사용하면 DNS 동적 업데이트 역 주소(PTR) 레코드 등록을 해제할 수 있습니다. 이 컴퓨터를 구성하는 DHCP 서버가 Windows 2000 Server인 경우에는 DNS 동적 업데이트 프로토콜을 사용하여 PTR 레코드를 등록할 수 있습니다. 그러나 DHCP 서버가 DNS 동적 업데이트 PTR 등록을 수행할 수 없는 경우에는 DNS 동적 업데이트 프로토콜을 사용하여 PTR 레코드를 등록할 수 없으므로 이 매개 변수를 1로 설정해야 합니다.
UpdateSecurityLevel
키: Tcpip\Parameters
값 종류: REG_DWORD—플래그
기본값: 0
유효 범위: 0,0x00000010, 0x00000020, 0x00000100
설명: 이 매개 변수를 사용하면 DNS 동적 업데이트에 사용되는 보안을 제어할 수 있습니다. 이 매개 변수의 기본값은 0입니다. 이 기본값을 사용하면 비보안 업데이트를 시도하며 만약 거부될 경우 Windows 2000 보안 동적 업데이트를 보냅니다. 올바른 값 목록은 다음과 같습니다.
- 0x00000000—기본값, 비보안 업데이트
- 0x00000010—보안 해제
- 0x00000100—보안만 설정
DNS 확인자 캐시 서비스 레지스트리 매개 변수
Windows 2000에는 DNS 확인자 캐시 서비스가 포함되어 있습니다. 이 서비스는 DNR 응답 캐싱 기능을 수행하므로 동일한 정보에 대해 DNS 서버를 반복적으로 쿼리할 필요가 없습니다. 이 서비스는 서비스 제어 관리자 MMC 스냅인을 사용하여 중지될 수 있습니다. 이 서비스에 대한 레지스트리 매개 변수는 \System\CurrentControlSet\Services\Dnscache\Parameters 키 아래에 있습니다.
AdapterTimeoutCacheTime
값 종류: REG_DWORD—초
유효 범위: 0-0xFFFFFFFF
기본값: 300(5분)
설명: 어댑터의 모든 DNS 서버에 대한 DNS 쿼리 시도가 실패(시간 제한)할 때, 다중홈 컴퓨터의 특정 어댑터를 사용할 수 없는 시간. 예를 들어, 두 개의 어댑터가 있고 하나의 네트워크에 있는 DNS 서버에 도달할 수 없는 경우에는 어댑터가 이 시간 동안 사용할 수 없는 것으로 표시됩니다. PnP 이벤트나 캐시 시간 제한은 이 인터페이스를 재시도하고 필요한 경우 사용할 수 없는 것으로 표시하도록 확인자에게 지시합니다.
CacheHashTableSize
값 종류: REG_DWORD—숫자
기본값: 0xD3(십진수 211)
유효 범위: 0보다 큰 소수
설명: 이 매개 변수를 사용하면 DNS 확인자 캐시 서비스에서 사용되는 해시 테이블의 최대 열 수를 제어할 수 있습니다. 이 매개 변수는 조정할 필요가 없습니다.
CacheHashTableBucketSize
값 종류: REG_DWORD—숫자
기본값: 0xa(십진수 10)
범위: 0-0x32(십진수 50)
설명: 이 매개 변수를 사용하면 DNS 확인자 캐시 서비스에서 사용되는 해시 테이블의 최대 행 수를 제어할 수 있습니다. 이 매개 변수는 조정할 필요가 없습니다.
DefaultRegistrationRefreshInterval
값 종류: REG_DWORD—시간(초 단위)
기본값: 0x15180(십진수 86400 또는 24시간)
범위: 0-0xFFFFFFFF
설명: 이 매개 변수를 사용하면 동적 DNS 등록의 새로 고침 간격을 제어할 수 있습니다.
MaxCacheEntryTtlLimit
값 종류: REG_DWORD—시간(초 단위)
기본값: 0x15180(십진수 86400)
유효 범위: 0-0xFFFFFFFF(부실 레코드를 방지하기 위해 1일보다 작은 값이 권장됩니다)
설명: 이 매개 변수를 사용하면 최대 캐시 항목 TTL(Time-To-Live) 값을 제어할 수 있습니다. 이 값은 더 큰 특정 레코드에서 설정된 값보다 우선합니다.
MaxSOACacheEntryTtlLimit
값 종류: REG_DWORD—시간(초 단위)
유효 범위: 0-0xFFFFFFFF
기본값: 120(2분)
설명: 확인자 캐시가 SOA 레코드를 캐시하는 최대 시간(초) 크기. 이 값은 DNS 쿼리로부터 반환되는 특정 SOA 레코드의 TTL 값보다 큰 TTL 값에 우선합니다. SOA 레코드는 동적 업데이트에 필수적인 요소이므로 오랫동안 캐시되지 않습니다. 따라서 최신 레코드 데이터를 DNS SOA(Start of Authority)에 사용할 수 있습니다.
NegativeCacheTime
값 종류: REG_DWORD—시간(초 단위)
기본값: 0x12c(십진수 300 또는 5분)
유효 범위: 0-0xFFFFFFFF(부실 레코드를 방지하기 위해 1일보다 작은 값이 권장됩니다)
설명: 이 매개 변수를 사용하면 네커티브 레코드의 캐시 시간을 제어할 수 있습니다.
NegativeSOACacheTime
값 종류: REG_DWORD—시간(초 단위)
기본값: 0x78(십진수 120 또는 2분)
유효 범위: 0-0xFFFFFFFF(5분 미만의 값이 권장됩니다)
설명: 이 매개 변수를 사용하면 네거티브 SOA(Start of Authority) 레코드에 대한 캐시 시간을 제어할 수 있습니다. DNS 등록이 실패하면 5분과 10분이 경과한 시점에서 다시 시도됩니다. 따라서 이 값을 5분 이상으로 설정하여 재시도하면 서버가 아닌 캐시로부터 부정적인 응답이 수신됩니다.
NetFailureErrorPopupLimit
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
설명: 이 매개 변수는 DNS 확인자가 쿼리를 반복적으로 여러 번 시도하더라도 구성된 DNS 서버에 쿼리(도달)할 수 없었음을 알려주는 UI 팝업 창을 사용 가능으로 설정합니다.
NetFailureCacheTime
값 종류: REG_DWORD—시간(초 단위)
기본값: 0x1e(십진수 30)
유효 범위: 0-0xFFFFFFFF(5분 미만의 값이 권장됩니다)
설명: 이 매개 변수를 사용하면 일반 네트워크 오류에 대한 캐시 시간을 제어할 수 있습니다. 이 매개 변수는 알려진 모든 DNS 서버 쿼리에 대한 시간 제한 오류가 발생하고 있음이 감지되는 시간 동안 확인자가 쿼리를 수행하지 못하게 막습니다. 이로 인해 네트워크가 응답하지 않을 때 시간 제한으로 인해 속도가 느려지는 현상이 방지됩니다.
이름 확인 매개 변수
다음과 같은 매개 변수들은 도메인 이름 확인자 서비스에서 사용됩니다.
AllowUnqualifiedQuery
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0
설명: 이 매개 변수는 도메인 이름 확인자가 정식이 아닌 쿼리, 즉 뒤에 점(.)만을 가지는 호스트 이름을 사용하여 도메인 이름 서버를 쿼리할 것인지 여부를 제어합니다. 예를 들어, 컴퓨터가 mydomain.com에 있고 target을 핑(ping)하는 경우, 기본적으로 target.mydomain.com에 대한 DNS만 쿼리됩니다. 이 매개 변수를 1로 설정하면 target도 쿼리됩니다.
DisjointNameSpace
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1
설명: 이 매개 변수는 각 인터페이스를 해체된 이름 공간으로 사용하도록 DNR에게 지시합니다. 다중홈 컴퓨터에서 DNS 서버에 대한 쿼리를 하나의 인터페이스용으로 구성하면 이름 오류가 발생할 수 있습니다. 이 매개 변수는 쿼리 결과가 반환되기 전에 다른 인터페이스용으로 구성된 DNS 서버에 대한 쿼리를 시도하도록 확인자에게 지시합니다.
PrioritizeRecordData
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1
설명: 이 매개 변수는 도메인 이름 확인자가 다중홈 호스트에 대한 쿼리로부터 반환되는 주소를 정렬할 것인지 여부를 제어합니다. DNR은 기본적으로 쿼리하는 컴퓨터에 있는 인터페이스들 중 하나가 목록의 맨 위에 표시되도록 동일한 서브넷 상의 주소들을 정렬합니다. 그 이유는 라우팅되지 않은 공용 서브넷 IP 주소에 우선권을 주기 위해서입니다.
QueryIpMatching
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0
설명: 이 매개 변수는 쿼리되는 DNS 서버의 IP 주소가 DNS 응답을 보내는 서버의 IP 주소와 일치할 것인지 여부를 제어합니다. 이 매개 변수는 확인자가 원래 의도한 DNS 서버가 아닌 다른 컴퓨터로부터 발생하는 무작위 쿼리 응답에 속지 않도록 방지하는 기본 보안 기능으로 사용될 수 있습니다.
UseDomainNameDevolution
키: Tcpip\Parameters
값 종류: REG_DWORD—이진수
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
설명: 이 매개 변수를 사용하면 정식이 아닌 DNS 쿼리에 대한 도메인 이름 단계적 추이를 사용 안함으로 설정할 수 있습니다. 단계적 추이 클라이언트의 도메인 접미사를 호스트 이름 뒤에 추가한 후 완전한 문자열을 쿼리하여 DNS에서 호스트를 찾으려고 시도하는 프로세스입니다. 이 쿼리에 실패하면 레이블이 한 번에 하나씩 제거된 후 쿼리가 다시 제출됩니다. 예를 들어, mycomputer.support.microsoft.com 컴퓨터에 있는 사용자나 응용 프로그램이 target이라는 호스트에 도달하려고 시도하는 경우, DNR은 기본적으로 AllowUnqualifiedQuery 매개 변수 값에 따라 target.support.microsoft.com, target.microsoft.com 및 target을 시도합니다.
부록 D: 공격에 대한 TCP/IP 응답 조정 | |
TCP/IP 보안 설정
위에 나열된 설정들 뿐만 아니라 다음과 같은 키들을 함께 변경하면 더욱 효과적으로 공격에 대처할 수 있습니다. 이러한 권장 사항들은 공격으로 인한 시스템 손상을 방지하고 공격에 대한 TCP/IP 스택 응답을 조정하는 데만 중점을 두고 있습니다. 이러한 키들을 설정한다고 해서 시스템 공격에 사용될 수 있는 다른 많은 시스템 구성 요소들이 해결되는 것은 아닙니다. 레지스트리를 변경하는 관리자는 이러한 변경 사항들이 시스템의 기본 기능에 어떠한 영향을 미치는지와 이러한 변경 사항들이 해당 환경에 적절한지 여부를 완벽하게 이해해야 합니다.
SynAttackProtect
키: Tcpip\Parameters
값 종류: REG_DWORD
유효 범위: 0, 1, 2
0(synattack 보호 안함)
1(TcpMaxHalfOpen 및 TcpMaxHalfOpenRetried 설정이 충족되는 경우 재전송 시도 횟수 감소 및 경로 지정 캐시 항목(RCE) 작성 지연)
2(1의 기능에 Winsock에 대한 표시 지연 추가)
참고 시스템 공격이 감지되면 확장 가능한 창(RFC 1323) 및 어댑터별로 구성되는 TCP 매개 변수(초기 RTT, 창 크기) 등의 소켓 옵션들을 더 이상 사용할 수 없습니다. 그 이유는 보호 기능이 작동하고 있을 때, SYN-ACK가 보내질 때까지 경로 지정 캐시 항목이 쿼리되지 않으며 이러한 연결 단계에서는 Winsock 옵션들을 사용할 수 없기 때문입니다.
기본값: 0(거짓)
권장값: 2
설명: synattack 보호에는 리소스 할당 상태가 유지되는 시간을 줄여주는 SYN-ACKS 재전송량 감소가 포함됩니다. 경로 지정 캐시 항목 리소스의 할당은 연결이 만들어질 때까지 지연됩니다. synattackprotect = 2인 경우, AFD에 대한 연결 표시는 세 방향 핸드셰이크가 완료될 때까지 지연됩니다. 또한 보호 메커니즘 동작들은 TcpMaxHalfOpen 및 TcpMaxHalfOpenRetried 설정이 초과되는 경우에만 발생합니다.
TcpMaxHalfOpen
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 100-0xFFFF
기본값: 100(Professional, Server), 500(Advanced Server)
설명: 이 매개 변수는 SYN-ATTACK 보호 기능이 작동하기 전에 허용되는 SYN-RCVD 상태의 연결 개수를 제어합니다. SynAttackProtect가 1로 설정되어 있으면 이 값은 보호할 포트의 AFD 수신 대기 백로그보다 작아야 합니다(부록 C의 백로그 매개 변수 참조). 자세한 내용은 SynAttackProtect 매개 변수를 참조하십시오.
TcpMaxHalfOpenRetried
키: Tcpip\Parameters
값 종류: REG_DWORD—숫자
유효 범위: 80-0xFFFF
기본값: 80(Professional, Server), 400(Advanced Server)
설명: 이 매개 변수는 SYN-ATTACK 공격 보호 기능이 작동하기 전에 하나 이상의 SYM 재전송이 보내진 SYN-RCVD 상태의 연결 개수를 제어합니다. 자세한 내용은 SynAttackProtect 매개 변수를 참조하십시오.
EnablePMTUDiscovery
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
권장값: 0
설명: 이 매개 변수를 1(참)로 설정하면 TCP는 원격 호스트로 향하는 경로를 통과하는 최대 전송 단위(MTU) 또는 최대 패킷 크기를 찾으려고 시도합니다. TCP는 경로 MTU를 찾은 후 TCP 세그먼트를 이 크기로 제한함으로써 다른 MTU를 갖는 네트워크에 연결하는 경로를 따라 존재하는 라우터로부터 조각을 제거할 수 있습니다. 조각은 TCP 처리량 및 네트워크 혼잡에 악영향을 미칩니다. 이 매개 변수를 0으로 설정하면 576바이트의 MTU가 로컬 서브넷 상의 호스트에 대한 연결을 제외한 모든 연결에서 사용됩니다.
NoNameReleaseOnDemand
키: Netbt\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 0(거짓)
권장값: 1
설명: 이 매개 변수는 컴퓨터가 네트워크로부터 이름 해제 요청을 수신할 때 자신의 NetBIOS 이름을 해제할 것인지를 지정합니다. 이 매개 변수는 관리자가 악의적인 이름 해제 공격으로부터 컴퓨터를 보호하게 할 목적으로 추가되었습니다.
EnableDeadGWDetect
키: Tcpip\Parameters
값 종류: REG_DWORD—부울
유효 범위: 0, 1(거짓, 참)
기본값: 1(참)
권장값: 0
설명: 이 매개 변수를 1로 설정하면 TCP가 작동하지 않는 게이트웨이 검색을 수행할 수 있습니다. 이 기능이 사용 가능한 상태에서, TCP는 많은 연결에서 문제가 발생하는 경우 백업 게이트웨이로 변경하도록 IP에게 지시합니다. 백업 게이트웨이는 네트워크 제어판의 TCP/IP 구성 대화 상자에 있는 고급 부분에 정의되어 있습니다. 자세한 내용은 이 백서의 "작동하지 않는 게이트웨이 검색" 부분을 참조하십시오.
KeepAliveTime
키: Tcpip\Parameters
값 종류: REG_DWORD—시간(밀리초 단위)
유효 범위: 1-0xFFFFFFFF
기본값: 7,200,000(2시간)
권장값: 300,000
설명: 이 매개 변수는 TCP가 연결 유지 패킷을 보내 유휴 연결이 그대로 유지되는지를 확인하려고 시도하는 빈도를 제어합니다. 여전히 도달 가능하고 제 기능을 수행하고 있는 원격 시스템은 연결 유지 패킷 전송을 승인합니다. 연결 유지 패킷은 기본적으로 전송되지 않습니다. 응용 프로그램에 의한 연결에서 이 기능을 사용 가능으로 설정할 수 있습니다.
PerformRouterDiscovery
키: Tcpip\Parameters\Interfaces\인터페이스
값 종류: REG_DWORD
유효 범위: 0, 1, 2
0(사용 안함)
1(사용)
2(DHCP가 라우터 검색 옵션을 보내는 경우에만 사용)
기본값: 2(DHCP가 제어하지만 기본적으로 사용 안함)
권장값: 0
설명: 이 매개 변수는 Windows 2000이 각 인터페이스에서 RFC 1256별로 라우터 검색을 수행하려고 시도할 것인지를 제어합니다. SolicitationAddressBcast를 참조하십시오.
© 2000 Microsoft Corporation. All rights reserved.
이 문서에 포함된 정보는 문서를 발행할 때 논의된 문제들에 대한 Microsoft Corporation의 당시 관점을 나타냅니다. Microsoft는 변화하는 시장 환경에 대처해야 하므로 이를 Microsoft측의 책임으로 해석해서는 안되며 출판일 이후에 제공되는 정보의 정확성에 대한 보장을 하지 않습니다.
이 백서는 정보 제공 목적으로만 제공됩니다. MICROSOFT는 본 문서에서 명시적 또는 암시적인 어떠한 보증도 하지 않습니다.
Microsoft, Windows 및 Windows NT는 미국, 대한민국, 및/또는 그 외의 국가에서 Microsoft Corporation의 상표이거나 등록 상표입니다.
본 문서에서 언급한 실제 회사 이름과 제품 이름은 해당 소유자의 상표일 수 있습니다.
02/00
1 사양 및 프로그래밍 정보는 Windows NT DDK(장치 드라이버 키트)에 들어 있으며, 일부 정보는 Microsoft 인터넷 사이트에서도 구할 수 있습니다.
2 대부분의 NIC는 미디어에 나타나는 프레임에 대해 어떠한 주소 필터링도 수행하지 않는 모드에 놓일 수 있는 기능을 가집니다. 그 대신, NIC는 순환 중복 검사(CRC)를 통과하도록 모든 프레임을 위쪽으로 전달합니다. 이러한 기능은 Microsoft 네트워크 모니터 등의 일부 프로토콜 분석 소프트웨어에서 사용됩니다.
3 DiffServ에서 정의한 6비트는 이전에는 TOS 비트였습니다. DiffServ에서는 이전의 TOS를 사용하지 않습니다. 따라서 Winsock을 통한 TOS 비트 설정은 지원되지 않습니다. IP TOS에 대한 모든 요청은 DisableUserTOSSetting 레지스트리 매개 변수(부록 A)를 수정하지 않는 한 GQoS API를 통해 만들어져야 합니다.
4 [1]을 TcpMaxDataRetransmissions 또는 TcpMaxConnectRetransmissions 레지스트리 매개 변수에 추가하면 전체 재전송 시간 제한이 두 배 정도 증가합니다. 시간 제한을 길게 구성하려면 아주 천천히 이 매개 변수를 늘려야 합니다.
5 Windows NT/Windows 2000 TCP는 시작할 때 하나의 TCP 세그먼트를 보내는 것이 아니라 두 개의 TCP 세그먼트를 보냅니다. 따라서 대상 컴퓨터에 처음 보내진 세그먼트가 만료될 때까지 지연된 ACK 타이머가 기다리지 않아도 되기 때문에 일부 응용 프로그램의 경우 성능이 향상됩니다.
6 리디렉터 레지스트리 매개 변수에 대한 자세한 내용은 Microsoft Windows NT/Windows 2000 리소스 키트 또는 Microsoft 기술 자료를 참조하십시오.
7 Stevens, Richard. TCP/IP Illustrated, Volume 1: The Protocols.Reading, MA:Addison-Wesley Publishing Co., 1993.
8 두 사양 모두 Microsoft 인터넷 사이트(www.microsoft.com 및 ftp.microsoft.com)에서 구할 수 있습니다.
9 IP 자동 구성은 IPAutoconfigurationEnabled 레지스트리 키에서 사용 안함으로 설정할 수 있습니다. 사용되는 서브넷과 서브넷 마스크는 IPAutoconfigurationSubnet 및 IPAutoconfigurationMask 레지스트리 키에서 제어할 수 있습니다. 위의 레지스트리 키는 부록 A를 참조하십시오.
10 "draft-ietf-dhc-dhcp-dns-*.txt"를 참조하십시오.
최종 수정일 : 2000.5.23
'Development > 네트워크 프로그래밍' 카테고리의 다른 글
shutdown 함수 (0) | 2011.08.13 |
---|---|
setsockopt의 SO_LINGER 옵션 (0) | 2011.08.13 |
IP String -> DWORD 로 변환 (0) | 2011.08.13 |
IOCP 예제 코드 (0) | 2011.08.13 |
Graceful shutdown (0) | 2011.08.13 |