1. TCP/IP의 계층
TCP/IP의 계층은 4계층으로 분류할 수 있습니다. OSI 7 layer층에는 다음 그림과 같이 적용시킬 수 있습니다.
|
TCP/IP의 4계층의 구조도는 다음과 같고, 각각 다음의 기능들을 합니다.
- 네트워크 인터페이스(Network Interface Layer) 계층
이 층은 상위 층에서 내려온 패킷(packet)에 프레임헤더와 CRC 체크를 위한 트레일러(trailer)를 붙여서 프레임(frame)을 만듭니다. 이 패킷을 일련의 비트 스트림(bit stream)으로 바꿔, 물리적인 회선에 전송할 수 있게끔 변환합니다.
- 인터넷 계층(Internet Layer)
이 층은 상위 트랜스포트 계층(transport layer)에서 받은 세그먼트(segment)에 라우팅(routing)을 위한 IP헤더를 포함시킵니다. 여기에는 소스 경로, 목적지 경로 등이 포함이 됩니다. 이 과정을 패킷을 캡슐화한다고 합니다. 이 계층에 속하는 네가지 프로토콜은 다음과 같습니다.- IP(internet protocol)
- ARP(address protocol)
- ICMP(internet control message protocol)
- IGMP(internet group management protocol)
- 트랜스포트 계층(Transport Layer)
상위 계층에서 내려온 데이터를 적절한 세그먼트(segment)로 크기를 분할합니다. 그리고, 트랜스포트 프로토콜에서는 각 통신간의 세션(session)을 제공합니다. 이는 각 통신간의 연결을 시작하고, 유지하고, 종료하는 역할을 한다는 것입니다. 여기서 쓰이는 두가지 프로토콜은 TCP와 UDP를 들 수 있습니다.
- TCP(Transmission Control Protocol)
연결지향(connection orienteded)의 통신을 제공합니다. 일반적으로 많은 양의 데이터 전송시 그리고 데이터의 수신 여부를 확인할 응용프로그램에 대한 통신을 제공합니다.
- UDP(User Datagram Protocol)
비연결지향(connectionless)의 통신을 제공합니다. 이는 TCP에 비교할 때 에러 정정 기능을 가지고 있지 않다는 말인데, 위 계층인 애플리케이션 계층에서 보장하게 될 사항입니다. 주로 소량의 데이터 전송시에 사용합니다.
- TCP(Transmission Control Protocol)
- 응용프로그램 계층 (Application Layer)
이 계층은 응용프로그램들이 네트워크 서비스(FTP,Telnet등)를 할 수 있도록 표준적인 인터페이스를 제공합니다. 그 두 가지는 Winsock과 NetBIOS인데, 먼저 Winsock은 TCP/IP와 IPX 등의 여러 트랜스포트 프로토콜에 Microsoft Windows에서 사용할 표준 응용 프로그램 프로그래밍 인터페이스(API)를 제공합니다.
NetBIOS는 TCP/IP와 NetBEUI 등 NetBIOS 이름 서비스와 메시지 서비스(SMB)를 제공하는 프로토콜에 표준 인터페이스를 제공합니다.
2. 네트워크 인터페이스 기술
IP는 NDIS(Network Driver Interface Specification)을 사용하여 네트워크 인터페이스 계층으로 프레임을 전달하게 됩니다. 이 NDIS는 네트워크 계층과 인터넷 계층 사이에 위치하는데, Microsoft에서 사용하는 네트워크 표준 인터페이스라고 생각하시면 됩니다. 이 NDIS를 통한 IP통신들은 LAN 환경과 WAN 환경으로 나눌 수가 있습니다.
- LAN 기반의 IP 기술(IP over LAN Technologies)
- FDDI(fiber Distributed Data Interface)와 같은 Metropolitan Area Network(MAN)
- Ethernet(Ethernet II와 802.3)
- Token Ring
- ArcNet
- WAN 기반의 IP 기술(IP over WAN Technologies)
- PSTN(Public Switched Telephon Network)
직렬회선(Serial lines) 흔히 말하는 SLIP이나 PPP를 사용한 직렬회선 사이의 전송을 말합니다. - Digital Line
ISDN,T1,T3 등이 해당됩니다. - Packet Switching
ATM,X.25,Frame Relay 등이 있습니다.
- PSTN(Public Switched Telephon Network)
3. ARP(Address Resolution protocol)
ARP는 브로드캐스트 기반 네트워크에서 TCP/IP 호스트의 하드웨어 주소를 알아 내는 프로토콜입니다. 논리적인 IP 주소와 유일한 하드웨어 주소를 매칭시켜주는 역할을 합니다. 주소 분해과정은 ARP 요청(request) 과 ARP 응답(Reply) 메시지를 서로 교환하며 이루어 집니다.
우선 Local IP 주소를 분석하는 방법에 대해 알아 보겠습니다.
- Local IP 주소 분석
1. ARP 요청을 하기 전에 자신의 시스템에 있는 ARP 캐시에 목적지 IP주소에 대응하는 하드웨어 주소가 있는지 확인합니다.
2. 캐시에 해당 값이 없다면, ARP 요청 메시지를 보내는데, 그 메시지에는 소스 IP주소와 하드웨어 주소, 목적지의 IP주소가 기재되어 있습니다. 목적지의 하드웨어 주소 비트는 모두 1로 채워 집니다.(목적지 하드웨어 주소를 모르기 때문입니다.)
3. 로컬 서브넷 상의 모든 호스트가 메시지를 받고, 메시지의 목적지 IP주소와 자신의 IP 주소가 일치하는지 확인합니다. 만약 자신의 값과 다르다면 해당 요청을 무시합니다.
4. 목적지 IP와 자신의 IP가 일치하는 호스트는 ARP 요청 메시지를 수정하여(자신의 하드웨어 주소를 기재), ARP 응답 메시지를 보냅니다. 그리고, 소스 호스트의 IP 주소와 하드웨어 주소가 매핑되는 ARP 캐시를 갱신합니다.
다음은 원격 IP에 대한 주소 분석 방법입니다.
- Remote IP 주소 분석
목적지 호스트의 IP 주소가 자신의 서브넷상에 존재하지 않는다면, 목적지 호스트의 네트워크로 데이터그램을 전달하는 라우터에 대한 ARP 브로드캐스트를 하게 됩니다.
1. 서브넷 마스크의 비트 연산을 통해 목적지 호스트의 IP 주소가 원격에 존재한다고 판단되면, 소스 호스트는 목적지 호스트나 네트워크로의 경로에 대한 로컬 라우팅 테이블을 점검합니다. 만약 매핑 내용이 없다면, 메시지를 기본 게이트웨이(Default Gateway)로 보내야 하는데, 이 기본 게이트웨이 대한 하드웨어 주소를 알아야 합니다. 먼저 ARP 캐시에 기본 게이트웨이의 하드웨어 주소가 매핑되어 있는지를 확인하고, 아니라면 기본 게이트웨이에 대한 ARP 요청 메시지를 보냅니다.
2. 이 ARP 요청 메시지를 받은 라우터(기본 게이트웨이에 해당합니다.)는 자신의 하드웨어 주소를 기재하고 ARP 응답 메시지를 보냅니다. 그러면 소스 호스트 쪽에서는 이 게이트웨이로 메시지를 전달하게 되고, 이 메시지를 받은 라우터는 자신의 알고리즘에 의해서, 목적지 IP주소가 속해있는 네트워크로 메시지를 전달하게 됩니다. 만약 라우터 자신이 직접 속한 다른 네트워크 상에 목적지 IP가 존재한다면 ARP 요청을 이용해 하드웨어 주소를 알아내고, 또다른 네트워크 상에 속한다면 라우터 자신의 라우팅 테이블에 의해서 해당 메시지를 다른 라우터에게 전달하게 됩니다.
3. 목적지 호스트가 이 ARP 요청 메시지를 받게 되면, ICMP Echo 응답을 구성합니다. 이제 소스 호스트로 이 메시지를 보내는데, 소스 호스트가 원격에 존재하므로 기본 게이트웨이로 보냅니다.
4. 이제 이 메시지를 받은 라우터는 2번에서 행한 동일한 과정을 거치는데, 자신의 라우팅 테이블에 의해 메시지를 소스 IP로 전달하게 됩니다.
4. ARP Cache
TCP/IP를 사용하는 모든 호스트는 자체적으로 ARP 캐시 테이블을 작성하고, 갱신합니다.
캐시에는 동적 항목과 정적 항목이 있는데, 동적 항목은 자동으로 추가되고 삭제되며, 정적 항목은 컴퓨터를 다시 시작할 때까지 캐시에 남게 되는 항목입니다. 각 ARP 캐시 항목은 잠재적으로 약 10분 동안 남아 있게 됩니다. 각 항목이 ARP 캐시에 추가될 때, 시간이 기록되는데, 2분 동안 사용하지 않은 상태로 두면 해당 항목은 삭제되고, 그 외의 경우는 10분 후에 삭제됩니다. 또 캐시는 최대 50개까지의 항목을 저장할 수 있고, 그 이상 추가되는 상황이 발생하면 가장 오래된 항목부터 자동으로 삭제합니다.
- 정적(영구)항목을 추가하면, 자주 액세스하는 호스트에 대한 ARP 요청을 줄일 수 있습니다. 수동으로 입력한 값은 다음의 경우에만 갱신이 됩니다.
1.시스템을 재시작합니다.
2.arp -d 명령으로 해당 항목을 삭제합니다.
3.다른 하드웨어 주소를 나타내는 ARP 브로드캐스트가 접수됩니다. 이 경우, 해당 항목은 정적 상태에서 동적 상태로 바뀌고 새로받은 하드웨어 주소가 현재 하드웨어 주소로 대체됩니다.