시스템 관리 및 실습 #11
1. TCP/IP 기본 개념 정리
(1) IPv4
Internet protocol version 4의 약어.현재의 표준적인 인터넷 프로토콜로 TCP/IP에 있어서의 IP 어드레스를 부여하는 체계의일종.어두레스로서 32비트의 수치를 할당한다.

(2) IPv6
Internet protocol version 6의 약어 TCP/IP에 있어서의 IP 어드레스 부여 체계의 차세대 버전. IP어드레스로서 128비트를 할당하구 있으며 현행의 IPv4에 비해 어드레스 부족의 해소,시큐리티 향상,고속,대용량 전송의 대응,실시간 통신과 멀티캐스트 통신으로의 기능 강화가 도모되어 있다.

(3) Broadcast/Multicast/Anycast
- Multicast ; 멀티캐스트
Multicast 전송방식은 하나 이상의 송신자들이 특정한 하나 이상의 수신자들에게 Data를 전송하는 방식으로 Internet 화상 회의 등의 응용에서 사용한다.
반면, Multicast 전송이 지원되면 송신자는 여러 수신자에게 한 번에 Message가 전송되도록 하여, Data의 중복전송으로 인한 Network 자원의 낭비를 최소화할 수 있게 된다.
Multicast 전송이 일반적인 Unicast Internet 응용 분야와 다른 점은 우선 그 전송 Packet에 있다. 일반적으로 TCP/IP 상의 Internet 응용 Program은 Data의 송신자가 이를 수신할 수신자의 Internet Address를 전송 Packet의 Header에 표시해 Packet을 전송한다. 그러나 Multicast 전송을 위해서는 Header에 수신자의 주소 대신 수신자들이 참여하고 있는 Group Address를 표시하여 Packet을 전송한다.
Multicast 전송을 위한 Group Address는 D-Class IP Address (224.0.0.0∼239.255.255.255)로 전세계 개개의 Internet Host를 나타내는 A, B, C-Class IP Address 와는 달리 실제의 Host를 나타내는 Address가 아니며, Group Address를 갖는 Multicast Packet을 전송받은 수신자는 자신이 Packet의 Group에 속해있는 가를 판단해 Packet의 수용 여부를 결정하게 된다.
그러나 현재 Internet 상의 Router 들이 대부분 Unicast 만을 지원하기 때문에 Multicast Packet을 전송하기 위하여서는 Multicast Router 사이에 Tunneling이라는 개념을 사용하여 Encapsulation된 Packet을 전송한다. 즉, Multicast Address를 가진 Data Packet Header 앞에 Multicast Router 간에 설정된 Turnnel의 양 끝단의 IP Address를 덧붙여 Routing을 함으로써 Multicast를 지원하지 않는 일반 Router들을 거칠 때 기존의 Unicast Packet 과 같은 방법으로 Routing 되어 최종적으로 Turnel의 종착지로 전송될 수 있게 하는 것이다.

- Broadcast ; 브로드캐스트
일반적으로, 동사의 의미로 사용되는 Broadcast는 무엇인가를 동시에 모든 방향으로 던지는 것을 의미한다. 명사로 사용되는 Broadcast, 즉 Radio나 TV "방송"은, 신호 Channel을 바르게 맞추어 놓은 수신자라면 누구라도 수신할 수 있도록 공중파를 통해 전송되는 Program이다.
이 용어는 때로 특정한 회원들이 아니라, 부서나 회사 전체 등과 같이 Group의 모든 회원들에게 보내어지는 전자우편이나, Message 배포 등을 가리키는 데에도 사용된다.
Broadcast를, 특정 수신자 (대부분의 전자우편이 그렇다)에게만 전송하는 Unicast나, 다중 수신자 (전자우편 Mailing List 또는 MBone Network을 통한 Web Transfer 등) 들에게 전송하는 Multicast, 그리고 Router들의 Group에서 가장 가까이 있는 것들에게 전송하는 Anycast 등과 혼동하면 안된다.

-Unicast ; 유니캐스트
Unicast 전송 방식은 하나의 송신자가 다른 하나의 수신자로 데이터를 전송하는 방식으로 일반적인 Internet Application이 모두 Unicast 방식을 사용하고 있습니다.
Group Communication을 위하여 다중 수신자들에게 동일한 Data를 전송하고자 할 경우 Unicast 전송방식을 이용한다면 전송하고자 하는 Data Packet을 다수의 수신자에게 각각 여러 번 전송해야 하며, 이러한 동일한 Packet의 중복전송으로 인해 Network 효율이 저하된다. 또한 수신자 수가 증가할 경우 이러한 문제점은 더 커지게 된다.

(4) IP Address
IP address란 인터넷에 연결된 컴퓨터의 주소를 네 자리로 구분된 10진수 숫자로 표현한 것이다. 따라서 자신에 컴퓨터에 지정된 (공인)IP는 세상에서 유일무이한 것이 된다. 나중에 설명하겠지만 사설 IP라는 것도 있는데 이건 유일한 것이 아니고 서로 겹칠 수도 있다.
세상에서 유일무이한 것이기 때문에 한 곳에서 중앙집중적으로 IP를 관리할 필요가 있다. 그렇지 않으면 서로 동일한 IP를 사용하게 되어 결과적으로 큰 혼란을 겪을 수도 있기 때문이다. 그러한 역할을 하는 곳이 바로 ICANN(The Internet Corporation for Assigned Names and Numbers, www.icann.org)이다. 그 하위에 대륙별 NIC가 존재하고 그 하위에 국가별 NIC가 있다.
우리나라의 경우에는 KRNIC('케이알닉'이라고 읽는다)이 있다. KRNIC에서 국내 ISP나 기업에게 IP address를 할당해 주고, ISP는 다시 자신의 고객(회사, 학교, 개인)에게 이를 할당하는 것이다.
요컨대, ICANN → 대륙별 NIC(ex. APNIC:아시아/태평양, ARIN:북미) → 국가별 NIC(ex. KRNIC) → ISP(ex. Kornet) → 회사나 학교(ex. Kyung Hee Univ)이런 식이다.

(5) Routing
간단히 말해서 라우팅이란 네트워크 간에 데이터를 이동시키는 것이다. 보통의 근거리 통신망(LAN)에서는 모든 네트워크 장비가 동일한 네트워크 세그먼트에 속하기 때문에 라우팅이 필요하지 않다. 즉 한대의 장비가 다른 장비와 통신을 원한다면 목적지 장비의 MAC주소를 포함한 데이터 패킷을 네트워크 매체에 뿌리면 네트워크에 연결되어 있는 모든 장비들은 그 패킷을 받게 되고 오직 같은 MAC주소를 보유하고 있는 장비를 제외하고는 모두들 받은 패킷을 버리게 되는 것이다. LAN의 규모가 커지고 또 다른 LAN 세그먼트와 연결되면서 광역망(WAN)을 형성하면 할수록 이러한 디자인은 점점 비효율적이 된다는 사실을 쉽게 예측할 수 있다. 따라서 네트워크를 관리하기 용이한 작은 규모의 네트워크로 쪼개야하며 이러한 네트워크 세그먼트 사이의 여러 경로 중 최적의 경로를 찾아서 데이터 패킷을 목적지까지 전달하여야 하는데 이러한 패킷 전달 방법을 라우팅이라고 부른다.
2. 다음 파일들의 용도 조사 및 정리
(2) /etc/hosts
자신의 시스템에 IP주소와 컴퓨터 이름(hostname)을 설정하는 파일

(3) /etc/services
TCP/UDP 포트번호 목록

(4) /etc/protocols
프로토콜 번호 목록

(5) /etc/resolv.conf
사용할 DNS 서버 주소를 설정하는 파일

(6) /etc/nsswitch.conf
name서버를 설정하는 파일

(7) /etc/rc.d/init.d/network
서버의 통신을 가능하도록 하기 위하여 관련 파일에 설정되어 있는대로 네트워크 설정을 하거나 중단하는 스크립트
3. 다음 명령들의 용도 및 사용법 정리
(1) ifconfig
* 목적
TCP/IP를 사용하는 네트워크에 대한 네트워크 인터페이스 매개변수를 구성설정하거나 표시합니다.

* 구문
ifconfig Interface [ AddressFamily [ Address [ DestinationAddress ] ] [ Parameters... ] ]
ifconfigInterface [ ProtocolFamily ] InterfaceProtocolFamily
ifconfig -a [ -l ] [ -d ] [ -u ] [ ProtocolFamily ]
ifconfig Interface [ tcp_low_rto rto | -tcp_low_rto ]

* 설명
ifconfig 명령을 사용하여 네트워크 인터페이스에 주소를 지정하고 현재 네트워크 인터페이스 구성설정 정보를 구성설정하거나 표시할 수 있습니다. 기계에 있는 각 인터페이스의 네트워크 주소를 정의하려면, 시스템 시작 시 ifconfig 명령을 사용해야 합니다. 시스템 시작 후, 인터페이스 주소 및 기타 운영 매개변수의 재정의에 사용될 수도 있습니다. 네트워크 인터페이스 구성설정은 실행 중인 시스템에 보유되어 시스템 재시작 시마다 재설정되어야 합니다. ifconfig 명령은 IFF_MULTICAST 플래그를 해석하여 그 값(설정된 경우)을 인쇄합니다.
인터페이스는 별도의 이름 지정 체계를 필요로 할 수도 있는 서로 다른 프로토콜로 전송을 수신할 수 있습니다. 이를 위해서는 AddressFamily 매개변수를 지정해야 하는데, 이는 나머지 매개변수의 해석을 변경할 수도 있습니다. 현재 지원되는 주소 계열은 inet 및 inet6입니다.
DARPA 인터넷 제품군인 inet의 경우, 주소는 호스트 이름 데이터베이스인 /etc/hosts 파일에 존재하는 호스트 이름 또는 인터넷 표준 점분리 10진수 표기법으로 표현되는 DARPA 인터넷 주소입니다.
모든 사용자가 네트워크 인터페이스의 상태를 조회할 수 있으나, 관리 권한을 갖는 사용자만이 인터페이스의 구성설정을 수정할 수 있습니다.
ifconfig 기능은 선택적 매개변수를 제공하지 않은 경우에 네트워크 인터페이스에 대한 현재 구성설정을 표시합니다.
프로토콜 제품군을 지정할 경우, ifconfig는 해당 프로토콜 제품군에 대한 상세사항만을 보고합니다.
수퍼 사용자만 네트워크 인터페이스의 구성설정을 수정할 수 있습니다.
무료 ARP는 이더넷, 토큰링 및 FDDI 인터페이스에 대해 지원됩니다. 즉, IP 주소가 지정되면, 호스트는 자신의 주소(새 주소)에 대한 ARP 요청을 전송하여 다른 기계들이 ARP 항목을 즉시 갱신할 수 있도록 다른 기계에 주소를 알려줍니다. 호스트가 복제 IP 주소를 발견할 수 있게 합니다. ARP 요청에 대한 응답을 가져오면, /var/adm/ras/errlog에 오류가 로그인되며, errpt 명령을 사용하여(또는 SMIT 인터페이스를 사용) 오류 ID AIXIF_ARP_DUP_ADDR를 열람할 수 있습니다.

* 플래그
-a 선택적으로, -a 플래그를 인터페이스 이름 대신 사용할 수도 있습니다. 이 플래그는 ifconfig가 시스템의 모든 인터페이스에 대한 정보를 표시하도록 지시합니다.
-d -d 플래그는 작동 중지된 인터페이스를 표시합니다. -l 이 플래그는 어떠한 추가 정보도 없이, 시스템의 사용 가능한 모든 인터페이스를 나열하는 데 사용할 수 있습니다. 이 플래그는 -d 및 -u를 제외하고는 기타 모든 플래그 및 명령과 함께 사용할 수 없습니다.
-u -u 플래그는 작동된 인터페이스를 표시합니다.
ProtocolFamily 이 플래그는 tcp, udp, tcp6, udp6, icmp, icmp6과 같은 프로토콜을 지정합니다.

* 매개변수
Address : 네트워크 인터페이스에 대한 네트워크 주소를 지정합니다. inet 제품군의 경우, Addess 매개변수는 호스트 이름이거나 표준 점분리 10진수 표기법으로 되어 있는 인터넷 주소입니다.
AddressFamily : 변경할 네트워크 주소 제품군을 지정합니다. 현재 inet 및 inet6 주소 계열이 지원됩니다. 이 매개변수의 디폴트는 inet 주소 제품군입니다.
DestinationAddress : 지점간 링크의 원격 끝에 있는 대응 주소를 지정합니다.
Interface 표시 또는 변경할 네트워크 인터페이스 구성설정 값을 지정합니다. ifconfig 명령을 사용할 때 Interface 매개변수로 인터페이스를 지정해야 합니다. 인터페이스에 대한 약어는 다음과 같습니다.
ATM(Asynchronous Transfer Mode)의 경우 at
표준 이더넷의 경우 en(inet)
IEEE 802.3 이더넷의 경우 et(inet)
일반 라우팅 캡슐화 터널 의사 인터페이스(ine)의 경우 gre
토큰 링의 경우 tr(inet)
X.25의 경우 xt(inet)
직렬 라인 IP의 경우 sl(inet)
루프백의 경우 lo(inet)
직렬의 경우 op(inet)
가상 IP 주소의 경우 vi(inet)
특정 인터페이스를 식별하려면 약어 다음에 숫자를 포함시키십시오(예: tr0).
Interface가 아직 로드되지 않았으면 ifconfigInterface가 해당 인터페이스를 로드하고 netstat -in이 인터페이스를 나열합니다. Interface에 대한 상태 조회를 처리할 때 해당 인터페이스가 로드되어 (아직 로드되지 않았을 때) 조회 처리를 완료합니다.
Parameter 다음의 매개변수 값을 사용할 수 있습니다.
alias
인터페이스에 대한 추가 네트워크 주소를 설정합니다. 네트워크 번호를 변경할 때, 이전 인터페이스로 주소가 지정된 패킷을 승인하는 데 이 매개변수가 유용합니다.
allcast
네트워크상의 모든 링에 브로드캐스트하도록 토큰 링 인터페이스를 설정합니다.
-allcast
국지 링에만 브로드캐스트하도록 토큰 링 인터페이스를 제한합니다.
arp
ifconfig 명령이 네트워크 레벨 주소와 링크 레벨 주소 사이의 맵핑에 주소 해석 프로토콜을 사용할 수 있게 합니다. arp 값이 디폴트입니다.
-arp
주소 해석 프로토콜의 사용을 불가능하게 합니다.
authority
앞으로의 사용을 위해 예약됩니다.
bridge
앞으로의 사용을 위해 예약됩니다.
-bridge
앞으로의 사용을 위해 예약됩니다.
broadcastAddress
(inet 전용) 네트워크에 브로드캐스트하는 데 사용할 주소를 지정합니다. 디폴트 브로드캐스트 주소의 호스트 부분은 모두 1입니다.
checksum_offload
전송 TCP 체크섬을 어댑터로 오프로드해야 함을 나타내는 플래그를 사용 가능하게 합니다. 이 명령은 또한 TCP에서 체크섬 계산 오프로드를 동적으로 사용 가능하게 할지 아니면 사용 불가능하게 해야 할지 여부를 결정하는 인터페이스별 계수기도 재설정합니다.
-checksum_offload
전송 TCP 체크섬 오프로드를 사용 불가능하게 합니다. -dad
(inet6 전용) 중복되는 IPv6 주소 검출은 수행하지 않습니다.
-debug
드라이버 종속 디버그 코드를 사용 불가능하게 합니다.
delete
지정된 네트워크 주소를 제거합니다. 이것은 별명이 틀리게 지정되거나 더 이상 필요없을 때 사용됩니다. ns 주소를 틀리게 설정하면, 네트워크 주소의 호스트 부분을 지정하는 부작용이 발생합니다. ns 주소를 모두 제거하면 호스트 부분을 다시 지정할 수 있습니다.
device dev_name
이 매개변수는 ATM 네트워크 인터페이스에만 적용되는 것으로, 이 인터페이스가 연관되는 장치 이름을 지정합니다. 토큰 링 또는 이더넷과는 달리, ATM의 경우에는 인터페이스와 장치 사이에 일 대 일 대응이 없습니다. ATM의 경우, 모든 장치에 대해 하나 이상의 인터페이스가 있을 수 있습니다.
detach
네트워크 인터페이스 리스트에서 인터페이스를 제거합니다. 최종 인터페이스가 접속 해제되면, 네트워크 인터페이스 드라이버 코드가 로드 해제됩니다. 접속된 인터페이스의 인터페이스 라우트가 변경되도록 하려면, 해당 인터페이스의 접속을 해제하고 ifconfig를 사용하여 해당 인터페이스를 다시 추가해야 합니다.
down
인터페이스를 비활성(down)으로 표시하는데 가능한 경우, ifconfig 명령 또한 메시지 수신이 불가능하도록 인터페이스를 재설정합니다. 그러나, 인터페이스를 사용하는 라우트가 자동으로 사용 불가능하게 되지는 않습니다.
eui64
(inet6 전용) 실제 IPv6 주소는 제공된 주소의 마지막 64바이트를 인터페이스 식별자로 대체하여 계산됩니다.
first
바인드 해제된 소켓에 대한 소스로 이를 선택하기 위해 인터페이스의 첫 번째 위치에 IPv6 주소를 배치합니다. 이 매개변수를 사용하기 위한 구문은 다음과 같습니다.
ex)ifconfig interface inet6 first address
firstalias
(inet6 전용) alias와 같지만, 바인드 해제된 소켓에 대한 소스로 이를 선택하기 위해 인터페이스 주소 리스트 앞에 주소를 설정합니다.
groupID
인터페이스에 대한 그룹 ID 리스트에 그룹 ID를 추가합니다. 이 리스트는 인터페이스에 도달한 패킷을 이송할 때 사용할 라우트 판별 시 사용됩니다.
-groupID
인터페이스에 대한 그룹 ID 리스트에서 그룹 ID를 제거합니다. 이 리스트는 인터페이스에 도달한 패킷을 이송할 때 사용할 라우트 판별 시 사용됩니다.
hwloop
하드웨어 루프백을 작동 가능하게 합니다. 하드웨어 루프백은 인터페이스에 의해 처리된 국지적으로 주소 지정된 패킷이 연관된 어댑터를 사용하여 송신되어야 함을 지정합니다.
-hwloop
하드웨어 루프백이 사용 불가능합니다. 하드웨어 루프백은 인터페이스가 처리한 국지적으로 주소 지정된 패킷들이 관련된 어댑터를 사용하여 전송되도록 지정합니다.
ipdst
원격 네트워크에 대해 바인드된 ns 패킷을 캡슐화하는 IP 패킷을 수신할 인터넷 호스트를 지정합니다. 명백한 지점간 링크가 구축되고, 지정된 주소가 대상의 ns 주소 및 네트워크가 됩니다.
ipv6dst
터널을 통해 IPv6 또는 IPv4를 캡슐화하는 IPv6 패킷을 수신할 IPv6 노드를 지정하는 데 사용됩니다. 터널 인터페이스를 지시하기 위한 위치의 명백한 대상은 패킷의 실제 대상이 아닐 수도 있습니다. 터널 종료에서, 캡슐화가 취소된 패킷은 해당된 최종 대상으로 이송될 수도 있습니다.
largesend
대형 데이터를 단일 패킷에서 다른 LPAR로 전송하기 위해 한 개의 LPAR를 사용 가능하게 합니다. 이것은 TCP 단편화가 완료되지 않은 경우를 제외하고 실제 어댑터를 통한 largesend와 유사하게 작동합니다. VIOS의 SEA에서 largesend를 지원하는 경우 SEA의 실제 어댑터에 의해 단편화되는 대형 데이터를 LPAR에서 전송할 수 있습니다. chdev 명령을 사용하여 SEA에서 largesend 속성을 사용 가능하게 하십시오.
-largesend
가상 이더넷을 통해 largesend를 사용 불가능하게 합니다. 이것이 디폴트입니다.
link [0-2]
인터페이스 링크 레벨의 특수 처리가 가능하도록 합니다. 이 세가지 옵션은 인터페이스에 따라 고유합니다. 하지만, 실제 효과에서 일반적으로 특수 모드의 조작을 선택하기 위해 사용됩니다. 예를 들면, SLIP 압축 사용 가능화 또는 일부 이더넷 카드의 커넥터 유형을 선택하는 것입니다. 자세한 정보는 특정 드라이버에 대한 man 페이지를 참조하십시오.
-link [0-2]
지정된 인터페이스에 대해 링크 레벨에서 특수 처리를 작동 불가능하게 합니다.
metric Number
인터페이스의 라우팅 메트릭을 Number 변수가 지정하는 값으로 설정합니다. 디폴트는 0(제로)입니다. 라우팅 메트릭은 라우팅 프로토콜(routed 디먼)에 의해 사용됩니다. 메트릭이 높을수록 라우트가 덜 유리합니다. 메트릭은 대상 네트워크 또는 호스트에 대한 추가 홉으로서 계산됩니다.
monitor
기본 어댑터에서 인터페이스 계층에 링크 상태 변경을 통지할 수 있도록 합니다. 어댑터는 링크 상태 콜백 통지를 지원해야 합니다. 다중 경로 라우팅을 사용하는 경우 링크 작동이 중지되면 대체 라우트가 선택됩니다.
-monitor
어댑터 링크 상태 모니터링을 사용 불가능하게 합니다.
mtuValue
이 시스템에 대한 최대 IP 패킷 크기를 설정합니다. Value 변수는 60에서 65535 사이의 모든 수가 될 수 있지만, 미디어에 종속됩니다. 인터페이스별 최대 전송 단위(MTU) 값은 Networks and communication management의 Automatic configuration of network interfaces를 참조하십시오.
netmask Mask
네트워크를 서브네트워크로 분할하기 위해 예약할 주소의 양을 지정합니다. 이 매개변수는 inet의 주소 계열에서만 사용될 수 있습니다.
Mask 변수는 국지 주소의 네트워크 부분과 주소의 호스트 필드로부터 취한 서브넷 부분 둘 다를 포함합니다. 마스크는 표준 인터넷 점분리 10진수 표기법에서 0x로 시작하거나, /etc/networks 파일에 나열되는 이름 또는 별명으로 시작하는 단일 16진수 숫자로서 지정될 수 있습니다.
32비트 주소에서, 마스크는 네트워크 및 서브넷 부분으로 예약된 비트 위치에는 1을 포함하고, 호스트를 지정하는 비트 부분에 0을 포함합니다. 마스크는 최소한 표준 네트워크 부분을 포함해야 하며, 서브넷 세그먼트는 네트워크 세그먼트와 연속적이어야 합니다.
pvc
이 매개변수는 ATM 네트워크 인터페이스에만 적용됩니다. 이 인터페이스가 가상 연결의 PVC(Permanent Virtual Circuit) 유형만 지원하도록 지정합니다.
pktchain
이 플래그는 인터페이스가 출력 경로에서 함께 묶인 여러 개의 패킷을 처리할 수 있다는 것을 표시합니다.
-pktchain
이 플래그는 인터페이스가 출력 경로에서 함께 묶인 여러 개의 패킷을 처리할 수 있다는 것을 표시합니다.
svc_c server_addr
이 매개변수는 ATM 네트워크 인터페이스에만 적용되는 것으로, 이 인터페이스가 가상 연결의 SVC(Switched Virtual Circuit) 유형과 PVC 유형 둘 다를 지원하도록 지정합니다. 또한, 이 인터페이스가 ARP 클라이언트일 것을 추가로 지정합니다. server_addr은 이 클라이언트가 사용할 ARP 서버의 20바이트 ATM 주소 리스트입니다. 주소는 xx.xx....xx의 양식으로 지정됩니다. 첫 번째 항목은 1차 ARP 서버로, 나머지는 2차 ARP 서버로 간주됩니다. 20바이트 ARP 서버 주소 리스트는 쉼표로 분리해야 합니다.
site6
IPv6 사이트 번호를 설정합니다(디폴트는 0임). 이것은 다중 사이트 노드에서 사이트 국지 주소와 함께 사용해야 합니다.
svc_s
이 매개변수는 ATM 네트워크 인터페이스에만 적용되는 것으로, 이 인터페이스가 가상 연결의 SVC 유형과 PVC 유형 둘 다를 지원하도록 지정합니다. 또한, 이 인터페이스가 이 논리적 IP 서브네트워크(LIS)에 대한 ARP 서버임을 지정합니다.
security
없음.
snap
없음.
-snap
없음.
tcp_low_rto
기가비트 이더넷, 10기가비트 이더넷과 같이 대기 시간이 적은 고속 네트워크의 TCP 연결에 대해 낮은 재전송 시간종료(RTO)를 사용할 수 있도록 합니다. 네트워크에서 패킷 삭제가 발생하면 각 TCP 연결에서는 RTO에 대해 rto 값을 사용합니다. rto 값 범위는 0-3000ms입니다. if_isno 플래그 필드에 이 실행시간 옵션을 설정해야 합니다. 이 플래그를 적용하려면 use_isno 옵션도 설정해야 합니다.
tcp_nocksum
인터페이스에 접속된 서브넷으로의 국지 통신량에 대해 TCP 데이터의 체크섬(ckecksum) 검증을 사용 불가능하게 합니다. TCP, UDP 및 IP 헤더의 체크섬 검증은 계속됩니다. 이 인터페이스로부터 원격 네트워크와의 사이에서 읽어지거나 기록되는 TCP 데이터의 체크섬 검증도 계속됩니다.
-tcp_nocksum
인터페이스에 접속된 서브넷으로의 국지 통신량에 대해 TCP 데이터의 체크섬 검증을 사용 가능하게 합니다. 이것은 디폴트입니다.
thread
(inet 전용) 인터페이스의 전용 커널 스레드를 구성합니다. 이 매개변수는 여러 개의 CPU가 있는 SMP 기계에서만 사용되어야 합니다. 이 매개변수는 장치 드라이버와 입력 demuxer에 의한 처리 후에 입력 패킷이 커널 스레드에 대기행렬화하도록 만듭니다. 입력 패킷은 인터럽트 레벨에서 직접 처리되는 대신 스레드별로 IP 및 TCP 또는 UDP에서 처리됩니다. 이 매개변수를 설정하면 입력 패킷들의 허용에 의한 인터럽트 처리 중 고속 어댑터가 하나의 CPU에서 병목현상을 일으킬 때 커널 스레드를 실행하는 다른 CPU에서 처리될 수 있도록 하여 처리량을 개선할 수 있습니다. 일부 작업부하의 경우, 이 매개변수는 스레드 스케줄링 오버헤드로 인해 패킷당 오버헤드를 증가시켜, CPU의 사용은 더 높아지면서 처리량은 낮은 결과를 초래합니다. 이 매개변수는 AIX 4.3.3 이상에서만 적용됩니다.
-thread
(inet 전용) thread 매개변수로 구성된 커널 스레드 지원을 사용할 수 없습니다. 이 매개변수는 AIX 4.3.3 이상에서만 적용됩니다.
up
인터페이스를 활동 중(up)으로 표시합니다. 이 매개변수는 인터페이스에 대한 최초 주소를 설정할 때 자동으로 사용됩니다. 또한, ifconfig down 명령 후에 인터페이스를 작동가능하게 하는 데 사용될 수도 있습니다.
vipa_iflist
이 vipa를 송신 패킷의 소스 주소로 사용할 인터페이스 리스트에 해당 인터페이스를 추가합니다.
-vipa_iflist
이 vipa를 송신 패킷의 소스 주소로 사용하도록 구성되는 인터페이스 리스트에서 해당 인터페이스를 제거합니다.
rto 재전송 시간종료를 밀리초로 지정합니다. 이 값의 범위는 0-3000입니다.
AIX 4.3.3 이상의 버전에서는 보통 ISNO(Interface Specific Network Options)로 알려진 다음의 네트워크 옵션들이 인터페이스당 기준으로 구성할 수 있습니다.
rfc1323 [0 | 1]
RFC 1323, 고성능 TCP 확장자에 의해 지정된 TCP 확장을 사용하거나 사용할 수 없게 합니다. 값을 1로 설정하면, 이 인터페이스를 사용하는 모든 TCP 연결이 RFC 확장을 조정하도록 지정합니다. 값을 0으로 설정하면, 이 인터페이스를 사용하는 모든 연결에 대해 rfc1323을 사용할 수 없게 합니다. SOCKETS 응용프로그램은 이 ISNO와 개별 TCP 연결에 대한 전역 상태를 setsockopt 서브루틴으로 겹쳐쓸 수 있습니다.
-rfc1323
이 네트워크에 대한 rfc1323의 ISNO의 사용을 제거합니다. SOCKETS 응용프로그램은 setsockopt 서브루틴을 사용하여 개별 TCP 연결에 대한 전역 상태를 겹쳐쓸 수 있습니다.
tcp_mssdflt Number
원격 네트워크와 통신하는 데 사용되는 디폴트 최대 세그먼트 크기를 설정합니다. 이 인터페이스로 통신하면 소켓은 디폴트 최대 세그먼트 크기의 값으로 Number를 사용합니다.
-tcp_mssdflt
tcp_mssdflt에 대한 ISNO 사용을 제거합니다. /usr/sbin/no로 조작된 전역값이 대신 사용됩니다.
tcp_recvspace Size
데이터를 받는 인터페이스 소켓에 대한 디폴트 소켓 버퍼 크기를 지정합니다. 버퍼 크기는 TCP가 사용하는 윈도우 크기에 영향을 줍니다. (자세한 정보는 no 명령을 참조하십시오.)
-tcp_recvspace
tcp_recvspace에 대한 ISNO 사용을 제거합니다. 대신 전역 값이 사용됩니다.
tcp_sendspace Size
데이터를 보내는 인터페이스 소켓에 대한 디폴트 소켓 버퍼 크기를 지정합니다. 버퍼 크기는 TCP가 사용하는 윈도우 크기에 영향을 줍니다. (자세한 정보는 no 명령을 참조하십시오.)
-tcp_sendspace
tcp_sendspace에 대한 ISNO 사용을 제거합니다. 대신 전역 값이 사용됩니다.
tcp_nodelay [0 | 1]
이 인터페이스를 통해 TCP를 사용하는 소켓이 데이터를 송신할 때 Nagle 알고리즘을 따르도록 지정합니다. 기본적으로 TCP는 Nagle 알고리즘을 따릅니다.
-tcp_nodelay
tcp_nodelay에 대한 ISNO 사용을 제거합니다.

(2) ping
외부 네트워크와 연결이 정상적으로 이루어졌는지 확인하는 명령
ping 명령어 구문
# ping [option] destination
option설명
-b : broadcast주소에 ping을 사용할 수 있다.
-c count : count 회수만큼 packet을 전송한다.
-i interval : interval 만큼의 시간에 한번씩 packet을 전송한다.
-n : 숫자로만 출력한다.
-s packetsize : packet 크기를 정의하여 전송한다.
-t ttl : IP time to live 를 결정한다.
-V : ping version 정보를 출력한다.

[root@ls ]# ping -b 192.168.1.255
브로드케스트에 packet을 전송한다.
[root@ls ]# ping -c 3 192.168.0.1
192.168.0.1 호스트에 packet을 3번 전송한다.
브로드케스트에 packet을 전송한다.
[root@ls ]# ping -i 2 192.168.10.12
192.168.10.12 호스트에 packet을 전송하되 간격은 2초에 한번씩으로 설정한다.

(3) traceroute
자신의 컴퓨터가 인터넷을 통해 목적지를 찾아가면서 거치는 구간의 정보를 기록하는 유틸리티.
IP 주소나 URL로서 목적지를 입력하면 각 구간마다 지나는 게이트웨이 컴퓨터의 이름이나 주소, 걸리는 시간 등을 표시해 줌으로써 인터넷 경로상의 문제점이 있는 네트워크를 파악할 수 있게 한다.

traceroute 명령어 구문
traceroute [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -v ] [ -w WaitTime ] Host [ PacketSize ]
* option설명
-m Max_ttl 송신 탐색 패킷에서 사용되는 최대 지속 시간(최대 홉의 수)을 설정. 디폴트는 30 홉(TCP 연결에서 사용된 것과 같은 디폴트임)
-n 홉 주소를 기호 및 수치가 아닌 수치로 인쇄. 이 플래그는 경로에서 발견되는 각 게이트웨이에 대한 네임 서버 주소와 이름 찾기(address-to-name lookup)를 저장.
-p Port 탐색에 사용된 기본 UDP 포트를 설정. 디폴트는 33434입니다. traceroute 명령은 목적지 호스트에서 base로부터 base + nhops - 1 까지의 포트 범위에 따라 달라짐. UDP 포트를 사용할 수 없는 경우, 이 옵션은 사용하지 않는 포트 범위를 선택하는 데 사용될 수 있음.
-q Nqueries : traceroute 명령이 각 Max_ttl 설정에서 전송하는 탐색의 수를 지정. 디폴트 값은 3회 탐색.
-r 정상 라우팅 표를 생략하고, 연결된 네트워크의 호스트로 직접 탐색 패킷을 송신. 지정된 호스트가 직접 네트워크에 연결되어 있지 않은 경우, 오류가 리턴됨. 이 옵션은 routed 디먼의 라우팅 표에 등록되지 않은 인터페이스를 통해 국지(local) 호스트로 ping 명령을 발행하는데 사용.
-s SRC_Addr 수치 양식의 다음 IP 주소를 송신 탐색 패킷의 소스 주소로 사용. 둘 이상의 IP 주소가 있는 호스트에서 -s 플래그는 소스 주소가 탐색 패킷이 송신된 인터페이스의 IP 주소가 아닌 주소가 되도록 강요하는 데 사용됨. 다음 IP 주소가 기계의 인터페이스 주소 중 하나가 아닌 경우, 오류가 리턴되며 아무 것도 송신되지 않음.
-t TypeOfService 탐색 패킷의 TypeOfService 변수를 0 - 255 사이의 십진수로 설정. 디폴트는 0, 이 플래그는 다른 경로에서 다른 서비스 유형이 발생되는지 조사하기 위해 사용됨. 유용한 값은 -t 16(적은 지연의 경우)과 -t 8(많은 처리량의 경우)
-v TIME_EXCEEDED 및 PORT_UNREACHABLE(상세한 출력) 이외의 패킷을 수신.
-w WaitTime 탐색에 대한 응답을 기다리는 시간(초 단위)을 설정. 디폴트는 3초.

* 동작원리
1.1.1.1에서 목적지 10.10.10.10에 대해 TTL=1인 ICMP echo request를 생성/전달
첫번째 IP네트웍장비가 TTL을 1을 감소시키고 TTL=0이 되므로 TTL이 모자라 더 이상 packet을 전달할 수 없다는 ICMP time exceed를 1.1.1.1에게 전달
1.1.1.1에서는 이 ICMP time exceed를 보고 목적지까지 가는 경로상의 첫번째 장비 ip address와 delay를 알아냄.
1.1.1.1에서 TTL=2인 ICMP echo request를 던짐. 목적지까지 가는 경로상의 두번째 장비가 ICMP time exceed를 발생시키고 1.1.1.1에서는 이것으로 두번째 장비까지의 delay를 알아냄. 이것이 목적지까지 계속됨

(4) netstat
* 목적
네트워크 상태를 보여 줍니다.

* 구문
각 프로토콜이나 라우팅 표 정보에 대한 활동 중인 소켓을 표시하는 경우
/bin/netstat [ -n ] [ { -A -a } | { -r -i -I Interface } ] [ -f AddressFamily ] [ -p Protocol ] [ Interval ] [ System ]
네트워크 데이타 구조의 내용을 표시하는 경우
/bin/netstat [ -m | -s | -ss | -u | -v ] [ -f AddressFamily ] [ -p Protocol ] [ Interval ] [ System ]
통신 서브시스템을 통해 패킷 계수를 표시하는 경우
/bin/netstat -D
] 네트워크 버퍼 캐시 통계를 표시할 경우
/bin/netstat -c
데이타 링크 제공자 인터페이스 통계를 표시할 경우
/bin/netstat -P
관련된 통계를 지우려면
/bin/netstat [ -Zc | -Zi | -Zm | -Zs ]

* 설명
netstat 명령은 활성화된 연결에 대한 여러 네트워크 관련 데이타 구조의 내용을 상징적으로 표시합니다. Interval 매개변수는 초로 지정되며, 구성설정된 네트워크 인터페이스에서의 패킷량에 관한 정보를 계속 표시합니다. Interval 매개변수는 플래그를 사용하지 않습니다. System 매개변수에는 현재 커널에서 사용하는 메모리를 지정합니다. 덤프 파일의 경우를 제외하고, System 매개변수는 /unix입니다.

* 플래그
-A 소켓과 연관된 모든 프로토콜 제어 블록의 주소를 보여 줍니다. 이 플래그는 디폴트 표시장치로 이용되며 디버깅 목적에 사용됩니다.
-a 모든 소켓의 상태를 표시합니다. 이 플래그가 없으면, 서버 프로세스에 의해 사용된 소켓은 표시되지 않습니다.
-c 네트워크 버퍼 캐시의 통계를 표시합니다.
네트워크 버퍼 캐시는 네트워크로 전송될 수 있는 데이타 오브젝트를 포함하는 네트워크 버퍼의 리스트입니다. 네트워크 버퍼 캐시는 데이타 오브젝트가 추가 또는 제거되면서 동적으로 커집니다. 네트워크 버퍼 캐시는 네트워크 I/O의 성능 향상을 위해 일부 네트워크 커널 인터페이스에서 사용됩니다.

(5) nslookup
네임서버를 운영하고 관리하는데 있어 문제를 발견하고 해결하기 위해 Resolver의 입장으로 네임서버를 시험해볼 필요가 있다. 대부분의 시스템에 기본 설치되어 있는 nslookup은 dig와 함께 가장 널리 사용되는 네임서버 질의 도구로써, 도메인 메니저의 기본 무기중 하나이다.
  $ nslookup
  Default Server:  ns.nobreak.com
  Address:  210.105.79.2
  
> exitnslookup은 실행후 대화형 프롬프트 '>'를 표시하고 /etc/resolv.conf에 정의된 첫 번째 네임서버를 기본 질의 서버로 설정한다. nslookup은 BIND와 달리 하나의 서버만을 질의에 사용하기 때문에 'Default NS -> Timeout -> Error'와 같이 동작한다.
- 도메인 네임 검색 nslookup은 기본적으로 입력된 도메인에 대해 A 레코드를 검색하고, IP 주소(in-addr.arpa)에 대해서는 PTR 레코드를 검색한다. set type=RR 설정으로 A 레코드 이외의 레코드 또한 검색할 수 있으며, RR(Resource Record)에는 A, ANY, CNAME, HINFO, MX, NS, PTR, SOA, TXT 등이 올 수 있다. 이중 ANY는 관련된 레코드들을 모두 출력하라는 약속 기호이다.
  > www.kr.freebsd.org.                 # IP 검색
  Name:    www.kr.freebsd.org
  Address:  150.183.110.39

  > ftp.kr.freebsd.org.
  Name:    www.kr.freebsd.org           # ftp는 www의 CNAME
  Address:  150.183.110.39
  Aliases:  ftp.kr.freebsd.org

  > 150.183.110.39                      # 도메인 검색
  Name:    www.kr.freebsd.org
  Address:  150.183.110.39

  > set type=MX                         # MX 레코드 검색
  > kr.freebsd.org.
  kr.freebsd.org  preference = 10, mail exchanger = mail.kr.freebsd.org

  > set type=NS                         # NS 레코드 검색
  > kr.freebsd.org.                     # 도메인 위임 확인
  kr.freebsd.org     nameserver = ns.kr.freebsd.org
  kr.freebsd.org     nameserver = ns2.kr.freebsd.org
  ns.kr.freebsd.org  internet address = 150.183.110.2
  ns2.kr.freebsd.org internet address = 150.183.110.3

  > 46.102.39.in-addr.arpa.             # 인버스 도메인 위임 확인
  kr.freebsd.org     nameserver = ns.kr.freebsd.org
  kr.freebsd.org     nameserver = ns2.kr.freebsd.org
  ns.kr.freebsd.org  internet address = 150.183.110.2
  ns2.kr.freebsd.org internet address = 150.183.110.38.1.2. 기본 쿼리 서버 변경
  
nslookup은 기본적으로 recurse 모드로 동작하기 때문에, 때론 해당 도메인의 Authority를 갖는 특정 네임서버에 직접 질의를 하여 Authoritative 응답(네임서버의 캐쉬에서가 아닌)을 확인 할 필요가 있다. server, lserver 명령으로 기본 질의 서버를 변경 할 수 있다. 두 명령은 주어진 네임서버의 주소(쿼리가 아닌)를 찾을 때 사용할 질의 서버의 차이인데, server 는 현재의 기본 서버를 통하고, lserver 는 시스템 기본 서버(nslookup 구동시 초기 설정되는)를 사용함이 다르다. lserver 명령은 타 네임서버로 스위칭 한 후, 다시 다른 네임서버로 스위칭하려 하는데, 현재의 네임서버가 동작하지 않아 해당 네임서버의 주소를 검색하지 못할 때 사용한다. 다음을 보자.

$ nslookup
Default Server: ns.nobreak.com
Address: 210.105.79.2 nslookup 구동시의 기본 서버 ns.nobreak.com 이 lserver 명령에서 주어진 NS의 주소를 찾기위한 질의 서버가 된다.
  > server ns.jp.freebsd.org.        # 기본 서버 변경
  Default Server:  ns.jp.freebsd.org
  Address:  199.100.7.25
  
> server ns.nobreak.com.
*** Can't find address for server ns.nobreak.com: Non-existent host/domainns.jp.freebsd.org를 통해 ns.nobreak.com을 찾을 수가 없다. 이때에는 lserver 명령으로 시스템 기본 서버를 통해 ns.nobreak.com 의 주소를 검색한다.

> lserver ns.nobreak.com.
Default Server: ns.nobreak.com
Address: 210.105.79.2루트 네임서버를 질의 서버로 하고자 할 때는, 간단히 root 명령을 사용할 수 있다.

> root
Default Server: a.root-servers.net
Address: 198.41.0.48.1.3. 네임 서버처럼 질의하기
네임서버는 Resolver의 요청을 처리하기 위해, 네임스페이스를 검색하며, 여러 네임서버와 통신을 하는데, nslookup으로 동일한 과정을 밟아보도록 하자. 네임서버가 인터넷상에서 어떻게 동작하며, 네임서버들 간에는 어떤 사건들이 발생하고, 여러분을 위해 무엇을 하는지, 구체적인 느낌을 받을 수 있을 것이다.
  (1)
  > set norecurse     # Iterative 모드로 전환
  > www.kr.freebsd.org.
  Server:  ns.nobreak.com
  Address:  210.105.79.2

  Name:    www.kr.freebsd.org
  Served by:
  - H.ROOT-SERVERS.NET
            128.63.2.53
            ORG
  - B.ROOT-SERVERS.NET
            128.9.0.107
            ORG
  ...ORG. 가 관리되는 루트 서버들의 목록을 레퍼런싱 해준다.

  (2)
  > server h.root-servers.net.
  > www.kr.freebsd.org.
  Server:  h.root-servers.net
  Address:  128.63.2.53

  Name:    www.kr.freebsd.org
  Served by:
  - WHO.CDROM.COM
            204.216.27.3
            FREEBSD.ORG
  - NS1.CRL.COM
            165.113.1.36
            FREEBSD.ORG
  - NS2.CRL.COM
            165.113.61.37
            FREEBSD.ORG

  (3)
  > server who.cdrom.com.
  > www.kr.freebsd.org.
  Server:  who.cdrom.com
  Address:  204.216.27.3

  Name:    www.kr.freebsd.org
  Served by:
  - ns.kr.freebsd.org
            150.183.110.2
            kr.freebsd.org
  - ns2.kr.freebsd.org
            150.183.110.3
            kr.freebsd.org

  (4)
  > server ns.kr.freebsd.org.
  > www.kr.freebsd.org.
  Server:  ns.kr.freebsd.org
  Address:  150.183.110.2

  Name:    www.kr.freebsd.org
  Address:  150.183.110.398.1.4. Zone Transfer
  
해당 도메인의 Zone에 대한 복사본을 얻기위해, Primary로부터 Zone 데이터베이스를 끌어오는 작업을 Zone Transfer라 한다. 이 작업은 주로 Secondary NS 측에서 이루어지며, 때때로 얼마나 많은 수의 호스트가 등록되어 있는지 혹은 Zone의 문법적 오류를 검사하기 위해 관리자가 수동으로 조작하기도 한다. Zone Transfer는 Authority를 갖는 네임서버에 직접 질의하여야 하므로, nslookup 상에서 해당 NS로 질의 서버를 변경한후, ls 명령을 사용한다.
  > server ns.kr.freebsd.org.
  > ls -t A kr.freebsd.org.      # A 레코드 출력
   kr.freebsd.org.                server = ns.kr.freebsd.org
   kr.freebsd.org.                server = ns2.kr.freebsd.org
   mail                           150.183.110.32
   mqueue                         150.183.110.33
   www                            150.183.110.39
   www2                           150.183.110.40

  > ls -d kr.freebsd.org.        # 모든 레코드 출력
   kr.freebsd.org.                SOA   ns.nobreak.com hostmaster.kr.freebsd.org.
                                  (1999031501 21600 1800 1209600 86400)
   kr.freebsd.org.                NS    ns.nobreak.com
   kr.freebsd.org.                NS    ns2.nobreak.com
   kr.freebsd.org.                MX    10   mail.kr.freebsd.org
   kr.freebsd.org.                MX    20   mqueue.kr.freebsd.org
   cvsup                          CNAME www.kr.freebsd.org
   mail                           A     150.183.110.32
   mqueue                         A     150.183.110.33
   ftp                            CNAME www.kr.freebsd.org
   ftp2                           CNAME www2.kr.freebsd.org
   ftp3                           CNAME ftp.free.nobreak.com
   www                            A     150.183.110.39
   www                            HINFO Pentium-200  FreeBSD 2.2.8
   www                            TXT  "Korea FreeBSD Users Group"
   www2                           A     150.183.110.40
   www2                           HINFO Pentium-133MHz  FreeBSD 2.2.8
   www2                           TXT  "Korea FreeBSD Users Group"
  
> ls -t MX kr.freebsd.org > MX-kr.freebsd.org # 파일로 저장
> view MX-kr.freebsd.org # 파일 내용 확인BIND의 경우 named-xfer라는 외부 프로그램을 사용해
Zone Transfer를 수행한다. 네임서버의 입장에서 부트 파일에 Secondary 설정이 있을 경우의 처리과정을 살펴보자.
secondary       kr.freebsd.org  210.105.79.2
sec-kr.freebsd.orgBIND는 secondary 명령을 만나면 내부적으로 다음과 같이 동작한다.

loop(Interval == TTL) {
  named-xfer -z kr.freebsd.org -f /var/named/sec-kr.freebsd.org -s Current_Serial 210.105.79.2
    switch ( $? ) {      // named-xfer 는 환경 변수 '$?'에 결과를 복귀함
      case 0 : OK; // 시리얼이 같음, Zone Transfer가 필요치 않음
      case 1 : OK; // 시리얼이 증가했음, Zone Transfer가 성공적으로 수행됨
      case 2 : ERROR; // 네임서버를 찾을 수 없음
      // 혹은 네임서버가 도메인의 Authority를 갖지 않음
      case 3 : ERROR: // 시리얼이 감소했음, 기존의 백업카피 유지
    }
    primary  kr.freebsd.org  sec-kr.freebsd.org
}
보안의 이유로 허락된 곳(예: Secondary NS's IP)에서만 Zone Transfer를 허용하고자 한다면, Primary NS의 부트파일에 다음과 같은 옵션을 준다. (Zone Transfer만을 제한하는 것이기 때문에, 호스트에 대한 개별 쿼리는 허용된다)

xfrnets 210.105.79.3&255.255.255.255 210.105.80.128&255.255.255.128이것은 BIND-4의 설정예인데, IP 210.105.79.3과 210.105.80.129-254 에서만 Zone Transfer를 허용하라는 의미이다. BIND-4에서는 개별 IP와 서브넷으로 나누어진 블럭에 대해 "IP&Mask"의 형식으로 목록을 작성하며, 클래스 전체를 허용하고자 할 경우엔 210.105.79.0 과 같이 마스크를 생략하여도 된다.
  options {
          allow-transfer { localnets; 210.105.79.3; };
  };
BIND-8의 경우에 해당 서버가 속한 네트워크와, 210.105.79.3만을 허용한 예이다. localnets는 예약어이며 다른 예약어로는 any, none, localhost 가 있다.

(5) 초기화 파일 .nslookuprc
nslookup은 실행시 ~/.nslookuprc 파일이 존재하면, 내용을 읽어 옵션을 조정한다. 매번 설정하는 옵션이 있다면, 본 파일을 통해 간편화할 수 있겠다.
* .nslookuprc 파일 예
set type=NS
set nosearch
set debug

(6)dig
dig를 이용하여 도메인을 검색하기 위해서 어떤 과정을 거쳐서 도메인의 정보를 네임서버로 부터 얻어내는지 알수가있습니다.
그것은 dig명령어의 +trace 옵션을 이용하는 방법입니다.
명령을 내리는 방법은 다음과 같다.
dig @ns.cninet.co.kr manpage.co.kr +trace (([옵션] 옵션에는 NS,MX,A등이 올수 있다.))
다음은 실제로 명령을 사용해서 나온 결과를 가지고 분석을 해보도록 한다.
  [root@manpage root]# dig @ns5.cninet.co.kr manpage.co.kr +trace

  ; <<>> DiG 9.2.1 <<>> @ns5.cninet.co.kr manpage.co.kr +trace
  ;; global options:  printcmd
  .                       167449  IN      NS      D.ROOT-SERVERS.NET.
  .                       167449  IN      NS      A.ROOT-SERVERS.NET.
  .                       167449  IN      NS      H.ROOT-SERVERS.NET.
  .                       167449  IN      NS      C.ROOT-SERVERS.NET.
  .                       167449  IN      NS      G.ROOT-SERVERS.NET.
  .                       167449  IN      NS      F.ROOT-SERVERS.NET.
  .                       167449  IN      NS      B.ROOT-SERVERS.NET.
  .                       167449  IN      NS      J.ROOT-SERVERS.NET.
  .                       167449  IN      NS      K.ROOT-SERVERS.NET.
  .                       167449  IN      NS      L.ROOT-SERVERS.NET.
  .                       167449  IN      NS      M.ROOT-SERVERS.NET.
  .                       167449  IN      NS      I.ROOT-SERVERS.NET.
  .                       167449  IN      NS      E.ROOT-SERVERS.NET.

  ;; Received 436 bytes from 211.239.150.9#53(ns5.cninet.co.kr) in 2 ms

  --> ns5.cninet.co.kr에게 질의를 해서 도메인을 검색하기 위해 가장 빠른 루트 서버를
  찾는데 까지 걸리는 시간을 나타낸다.

  kr.                     172800  IN      NS      NS.KRNIC.NET.
  kr.                     172800  IN      NS      NS.KREONET.RE.kr.
  kr.                     172800  IN      NS      USNS.DACOM.co.kr.
  kr.                     172800  IN      NS      KR2LD.DACOM.co.kr.
  kr.                     172800  IN      NS      KR2ND.HITEL.NET.
  kr.                     172800  IN      NS      KR2ND.KORNET.NET.

  ;; Received 279 bytes from 128.8.10.90#53(D.ROOT-SERVERS.NET) in 230 ms
  
--> kr 도메인을 관장하고 있는 곳에 대한 질의를 루트 서버중 가장 응답 속도가 빠른 D.ROOT-SERVERS.NET 에게 질의를 해서 응답을 받기까지 걸린시간이다.
  manpage.co.kr.          86400   IN      NS      ns5.cninet.co.kr.
  manpage.co.kr.          86400   IN      NS      ns6.cninet.co.kr.
  ;; Received 106 bytes from 202.30.50.50#53(NS.KRNIC.NET) in 3 ms
  
--> "manpage.co.kr은 어디있느냐" 라고 KR도메인을 관장하는 서버중에서 응답속도가 가장 빠른 ns.krnic.net에 질의하여 ns5, ns6에 세팅 되어있다고 응답을 들을때까지의 시간. 이때 1차와 2차가 모두 설정되어있으면 1,2차 모두나오며, 1차만 설정되어있을 경우 1차 dns정보만 나온다.
  manpage.co.kr.          28800   IN      A       211.239.151.21
  manpage.co.kr.          28800   IN      NS      ns5.cninet.co.kr.
  manpage.co.kr.          28800   IN      NS      ns6.cninet.co.kr.
  ;; Received 122 bytes from 211.239.150.9#53(ns5.cninet.co.kr) in 1 ms
  
--> manpage.co.kr에 대한 질의 결과를 ns5.cninet.co.kr로 부터 얻는데 걸린 시간.
이 결과로서 도메인 요청을 시도하면 어떤 루트 서버를 통해서 어떤 네임서버를 거쳐 응답을 하게 되는지 알수가 있다.
그리고 요청에 응답을 받기까지 걸리는 시간도 알수가 있으므로 도메인에 대한 검색 결과가 느릴때 사용해 보면 도움이 될것이다.
네임서버를 1차는 제대로 잡고, 2차는 아무 네임서버나 잡을 경우 몇번의 테스트를 해보면 아래와 같이 질의에 대한 결과를 얻지 못할수도 있다.
  manpage.co.kr.          28800   IN      NS      ns5.cninet.co.kr.
  ;; Received 106 bytes from 202.30.50.50#53(NS.KRNIC.NET) in 3 ms

  dig: Couldn't find server 'ns5.cninet.co.kr': Name or service not known
  
또 한가지를 참고로 말을 하면 위에서 Root서버나 KR을 관장하는 서버로 질의를 했을때 가장 응답 속도가 빨랐던 네임서버가 응답을 해주는것을 보았다.
즉 1차와 2차로 네임서버를 구성했을때 2차는 1차의 backup이 아니라, 사용자가 도메인에 대해 질의를 요청했을때 네트웍에서 응답속도가 빠른 네임서버가 응답을 해주게 되는것이다.
간혹 도메인의 네임서버를 1차는 직접 운영하는 네임서버를 잡아놓고, 2차는 아무 네임서버로나 잡아두는 경우가 있다.
이때에는 어느곳에서는 도메인을 찾을수 있으나, 어느 네트웍대에서는 도메인을 찾을수 없는 일이 발생하게 된다.
그 이유가 바로, 도메인 요청을 시도한 네트웍대에서 응답속도가 빨랐던 네임서버로 질의를 하게 되어서 생기는 문제이다.
(2차 네임서버가 1차보다 응답속도가 빠르다면 2차로 잡힌 네임서버가 응답을 하게되고, 2차 네임서버에는 요청한 도메인 정보가 들어있지 않으므로 도메인을 찾을수 없다는 메세지가 나오게 된다.)
그러므로 2차 네임서버를 구축하지 않았을 경우에는 그냥 1차만 도메인의 네임서버로 잡아놓는것이 올바르고 빠른 질의를 하는데 도움이 된다.

(7)arp
ARP 는 Address Resolution Protocol 이라고 합니다.
ARP는 라우터 뿐만 아니라 호스트에서도 사용됩니다. 인터넷에서 모든 노드(라우터,호스트)들은 각각 인터넷주소(IP주소)를 가지고 있습니다. 그래서 인터넷 여기저기로 패킷이 오갈 수 있는 것이지요. 그런데, 노드는 이 인터넷 주소 말고, 지역적으로 사용할 수 있는 Link Layer Address(L2)를 가지고 있습니다. 보통, 이것은 Physical adddess, MAC주소, Ethernet 주소와 동일하게 됩니다. 기본적으로 패킷전달은 이 L2주소로 지역내에서 전달됩니다. 같은 네트워크 내에서 호스트와 호스트, 호스트와 라우터 간에는 L2주소를 가지고 패킷이 전달됩니다.

그럼.. 다시 처음으로 돌아와서 패킷을 전송하는 절차의 예에 대해 설명하겠습니다.
0. 호스트 A에서 호스트 B로 IP 패킷을 보내려 합니다.
1. 현재 호스트A는 호스트B의 IP주소는 알고 있습니다, 그러나 L2주소(이더넷주소)는 모르고 있습니다.
2. 호스트 A는 호스트B의 L2주소를 알기 위해서 ARP Request 패킷을 뿌립니다. 뿌려진 ARP Request는 같은 네트워크 내의 모든 노드에게 전달됩니다.
3. 호스트 C는 ARP Request 를 받았지만, 자기 IP주소를 이야기하고 있지 않으므로 그냥 무시합니다.
4. 호스트 B는 ARP Request를 받아보니, "호스트A라는 놈이 자기(호스트B)의 IP주소를 가지고 L2주소(MAC주소,Ethernet주소)를 알고 싶어하는 구나"라는 것을 인지하고, 호스트A에게 자기의 L2 주소를 ARP Response를 주어 응답해줍니다.
5. 호스트 A는 호스트 B로부터 온 ARP Response 를 받고, "오호, 호스트B의 L2주소가 xx:xx:xx:xx:xx:xx 로구나"하고 알게 됩니다.
6. 이제 호스트 A는 호스트 B로 L2주소를 써서 직접 IP패킷을 전송합니다.
7. 몇 초뒤 호스트 A는 호스트 B에게 IP패킷을 보내려 합니다. 호스트 A에게는 ARP캐쉬가 있어서 최근에 사용한 ARP Table을 가지고 있습니다. 그래서 앞의 1~5단계를 생략하고 바로 호스트 B의 L2주소를 이용하여 IP패킷을 직접 전송합니다.
8. 호스트 A의 ARP Cache (ARP Table)은 한참 사용하지 않으면 없어집니다.

일반적으로 TCP/IP패킷은 다음과 같이 생겼습니다.
[MAC 헤더] + [IP 헤더] + [TCP헤더] + [TCP 데이터그램]
PC에서 arp -a 명령을 내리면 ARP cache가 출력되는 것입니다. Dynamic 이라고 한 것은 자동으로 ARP패킷을 전송해서 얻은 것으로, 한참 사용하지 않을 경우 없어집니다. arp -s 명령을 써서 강제로 해당 IP의 L2주소를 세팅할 수 있는데 이때는 static 으로 표시되고, 직접 지우기 전에는 안 없어집니다. arp -d 를 하면 ARP cache를 모두 지울수 있습니다.
 
맨위로
1.TCP/IP 기본 개념
2./etc/hosts,
/etc/services...
3.ifconfig,ping,
traceroute...
 
맨아래로
이동