ARP ( Address Resolution Protocol )
http://en.wikipedia.org/wiki/Address_Resolution_Protocol
- RFC 826
- 장비들이 같은 네트워크에 있는 다른 IP 호스트들의 이더넷 하드웨어 주소를 파악하는 데 유용한 방식.
- IP주소를 이용해서 MAC 주소를 알아내는 것.
- 네트워크 통신은 IP 주소로 통신하는 것처럼 보이지만 실제로는 하드웨어(MAC)주소를 이용해 통신한다.
Host A 에서 Host B 와 통신하려고 할 때 상대방의 물리주소 ( MAC Address ) 를 모르므로 ARP를 통해 이를 알아내는 과정입니다.
1. ARP Request 를 네트워크로 뿌림 ( 패킷 안에는 상대방의 IP 주소가 있음 )
2. 네트워크 내의 모든 장비는 ARP 메세지를 받음.
3. 1번 순서에서 목적지 IP를 명시했으므로 다른 장비들은 ARP Request를 무시하고.
Host B는 자신의 IP를 확인하고 자신의 MAC Address를 담은 ARP Reply를 보냄.
4. 상대방의 MAC Address를 알고 나서는 ARP 없이 Host B와 데이터 전송
5. 일정 시간이 지나 ARP Cache 에서 삭제되면 다시 ARP를 통해 MAC Address를 얻어야함.
아래는 위와 비슷한 환경에서의 ARP 구동
네트워크가 다른경우.
A ( 10.10.10.1 ) 에서 B ( 20.20.20.2 ) 의 MAC 주소를 알고자 한다면
1. ARP Cache 확인.
2. 같은 네트워크인지 비교. -> 같으면 ARP Request
3. D/G (Default Gateway)를 참조하기 위해 ARP Cache Check
4. D/G의 네트워크 주소 비교
5. ARP Request를 뿌림.
6. D/G의 MAC 주소 획득
7. D/G로 패킷 전송
8. 라우팅
1,2 의 순서는 목적지가 같은 네트워크 대역에 있는 지 확인하여 같은 네트워크 대역이라면 바로 ARP Request를 뿌리려 하는 것이고.
3,4,5,6의 순서는 같은 네트워크 대역이 아니라면 Default Gateway로 패킷을 전달해야 하므로 Default Gateway의 MAC Address를 알기 위해 ARP 를 이용한다.
3-way handshaking의 sequence number에 대한 그림
syn 을 1000이라고 하면 서버측에서는 이에 대한 ack를 1001을 보내게 되고 이와 함께 2000 이라는 sequence number를 보내면 송신측은 ack = 2001, seq는 1002로 하여 데이터를 보내게 된다.
TCP ( Transmission Control Protocol ) 는 위와 같이 연결/종료를 통해서만 데이터가 전송됩니다.
- 연결 지향적 ( Connection-oriented )
- 신뢰성
- 전이중 (Full-duplex)
UDP ( User Datagram Protocol ) 는 연결을 통한 전송이 아니라 단지 데이터를 보내기만 하고 이에 대한 확인도 필요없다.
- 비연결성 통신 ( Connection-less )
- 신뢰성 없음
- 빠른 요청과 응답을 위한 프로토콜
Subnetting
서브넷팅을 하는 이유에 대해서 먼저 설명을 하자면...
어느 회사에서 200.100.100.0 / 24 의 아이피를 배정받았는데
건물이 총 4층으로 이루어져 있다.
모든 네트워크를 하나로 관리해도 사용에는 문제가 없지만
불필요한 트래픽(브로드캐스트와 같은)이 증가하게 되면 문제가 발생하기도 쉽고 네트워크가 통으로 되어 있으므로 관리가 어렵다.
그래서 이를 각각의 네트워크로 나누어 주는것인데 ( 브로드캐스트 도메인을 나눈다고 한다 )
총 4개의 네트워크로 분배하므로
200.100.100.0 ~ 200.100.100.63 / 255.255.255.192
200.100.100.64 ~ 200.100.100.127 / 26
200.100.100.128 ~ 200.100.100.191 / 26
200.100.100.192 ~ 200.100.100.255 / 26
이런식으로 사용하게 되고 각 서브넷의 제일 첫 주소는 Network 주소 / 제일 마지막 주소는 Broadcast 주소로 사용하기 때문에 사용하지 못한다.
위의 부분은 매우 주의하여야 한다. 1층에서 필요한 IP의 수가 63대라고 가정하면...
200.100.100.0 ~ 200.100.100.63 / 255.255.255.192
위 주소의 IP의 수는 64개이지만 실제적으로 2개가 제외되므로 62개가 사용가능한 IP가 되어 잘못 나눈 경우가 된다.
그렇기 때문에 총 IP의 수와 사용가능한 IP의 수는 잘 계산하여야 한다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ문제ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
한회사에 192.168.1.0 C Class를 배정하였다.
인사부에는 10개의 host를 만족하는 Subnet
마케팅부에는 30개의 host를 만족하는 Subnet
영업부서에는 120개의 host를 만족하는 Subnet을 하고자 한다.
이 조건을 만족하는 VLSM Subnetting을 하시오.
| Host ID |
00000000 ~ 11111111 --> 0 ~ 255, 256Host, 1Network
>> 영업부 (120개 Host)
N Host N Host
0 0000000 ~ 0 1111111 --> 0 ~ 127
1 0000000 ~ 1 1111111 --> 128 ~ 255
11111111.1111111.1111111.10000000 ==> 255.255.255.128
1. Subnetmask=> 255.255.255.128
2. 첫번째 Subnet Address=> 192.168.1.0
3. 첫번째 Subnet의 사용할 수 있는 IP 범위=> 192.168.1.1 ~ 192.168.1.127
4. 첫번째 Subnet의 Broadcast Address=> 192.168.1.127
>> 마케팅부 (30개 Host)
N H N H
100 00000 ~ 100 11111 --> 128 ~ 159
101 00000 ~ 101 11111 --> 160 ~ 191
110 00000 ~ 110 11111 --> 192 ~ 223
111 00000 ~ 111 11111 --> 224 ~ 255
11111111.1111111.1111111.11100000 ==> 255.255.255.224
1. Subnetmask=> 255.255.255.224
2. 첫번째 Subnet Address=> 192.168.1.128
3. 첫번째 Subnet의 사용할 수 있는 IP 범위=> 192.168.1.129 ~ 192.168.1.158
4. 첫번째 Subnet의 Broadcast Address=> 192.168.1.159
>> 인사부 (10개 Host)
1010 0000 ~ 1010 1111 --> 160 ~ 175
1011 0000 ~ 1011 1111 --> 176 ~ 191
11111111.1111111.1111111.11110000 ==> 255.255.255.240
1. Subnetmask=> 255.255.255.240
2. 첫번째 Subnet Address=> 192.168.1.160
3. 첫번째 Subnet의 사용할 수 있는 IP 범위=> 192.168.1.161 ~ 192.168.1.174
4. 첫번째 Subnet의 Broadcast Address=> 192.168.1.175
Routing
- 네트워크에서 패킷이 올바른 경로로 (혹은 최적의 경로로) 찾아가기 위해서 다양한 방법을 통해 길을 찾아주는 것.
- Static Routing Protocol
- 말그대로 정적으로 라우팅 경로를 지정해 주는 것
- 구성이 매우 간단하고 엔지니어가 원하는 경로로 패킷을 보낼 수 있다.
- 만약 토폴로지에 문제가 있을 경우 해결할때까지 라우팅이 불가능하다.
- 주로 Stub network에 적용한다.
- Stub Network란 네트워크로 들어가는 길과 나가는 길이 하나인 것을 말하며,
네트워크로 들어갈때는 네트워크 안의 주소로 Static Routing,
네트워크에서 밖으로 빠져나갈때는 Default Static Routing(0.0.0.0/0)을 사용한다. - Static routing의 명령어 형식
- #ip route A.B.C.D [mask] [address or interface] {수동AD값} {permanent}
- #ip route 0.0.0.0 0.0.0.0 [add or int] {AD} {permanent}
- permanent는 상대방 인터페이스가 다운되었을 때도 유지해준다. (미확인)
- Dynamic Routing Protocol
- 동적으로 라우팅 경로를 할당할 수 있게 해주는 프로토콜
- 기본적으로 라우팅 프로토콜을 올리면 알아서 경로를 선택할 수 있도록 해준다.
- RIP,EIGRP,OSPF 와 같은 프로토콜을 말한다. [ EIGRP는 Distance Vector 와 Link State가 합쳐진 Hybrid Routing Protocol ]
- Distance Vecter
- 말 그대로 Distance(거리) Vecter(방향) -> 거리와 방향을 사용하는 방식으로 라우터 자신에게서 목적지로 어느 방향이 어느정도 거리인지를 안다고 생각하면 쉽다.
- 주기적으로 라우팅 테이블을 교환한다.
- 라우터간 Full-Routing table을 교환한다.
- 자신과 주변만을 참고 하기 때문에 Looping에 빠질 수 있다.
- Link-State
- 말 그대로 Link(링크) State(상태) -> 링크의 상태를 보는 라우팅 프로토콜로 앞의 DV와는 달리 링크의 Bandwidth나 Delay와 같은 링크의 세부정보를 따져서 라우팅을 결정한다.
- 전체적인 Topology를 참고하여 라우팅을 한다. 이 말은 DV는 나침반이라고 볼수 있고, LS는 네비게이션과 같다고 할 수 있다.
- 라우팅 테이블을 교환할 때는 어떠한 토폴로지에 변화가 있을 때 교환한다. 이를 Event-Triggered 방식이라 한다.
- 전체적인 토폴로지를 보고 결정하기 때문에 DV 보다 계산이 많기 때문에 부하가 크다.
Distance Vector = RIP(v1,v2) / IGRP / BGP
Link-State = OSPF,IS-IS