Chapter 1. Introduction to TCP/IP Basics
- 개 요
- TCP/IP를 기반으로 하여 물리적 구성, 라우팅, Application의 상호연관성을 이해
- TCP/IP Features
- 특정 하드웨어나 운용체제에 의존하지 않는 Open Protocol
- 물리적 네트워크에 독립적
- 전세계에 유일한 주소체계를 사용
- 표준화되어 있으며, 널리 사용됨
- TCP/IP Protocol Architecture
Application Layer |
|
|
| |||||||||
|
↕ ↕ | |||||||||||
Transport Layer |
|
| ||||||||||
|
↕ ↕ | |||||||||||
Internet Layer |
| |||||||||||
|
↕ ↕ ↕ | |||||||||||
Datalink Layer |
|
- TCP/IP Protocol Suite 특징
- TCP(Transmission Control Protocol)
* 연결지향 프로토콜
* 사용자프로세스에 신회성있는 Full-duples,Byte stream service를 지원
* 대부분의 인터넷 응용들은 TCP를 사용
- UDP(User Data Protocol)
* 비연결 프로토콜
* UDP datagram의 목적지 도달을 보장 못함
- ICMP(Internet Control Message Protocol)
* 호스트와 게이트웨이간의 에러 및 제어정보를 제어
- IP(Internet Protocol)
* TCP,UDP 및 ICMP를 위한 패킷 전달 서비스를 제공
* 경로 설정
- ARP(Address Resolution Protocol)
* IP주소를 Hardware 주소로 매핑
- RARP(Reverse ARP)
* Hardware주소를 IP주소로 매핑
- Network - 컴퓨터의 연결에 단일의 전송기술을 이용한 시스템.
- Internet - network에 연결된 컴퓨터들 사이의 traffic전달, router를 통해 연결된 일련의 network들.
- Internet의 역사
- Arpanet
- 1969년 군사용으로 시작
- ETHERNET 표준(1985년, IEEE 802.3발표)
- TCP/IP기반의 internetworking 활성화
Chapter 2. Link Layer
- TCP/IP layering
- OSI 7-layer 모델과 TCP/IP layer모델의 비교OSI model TCP/IP model What to Cover?
Application
Application
SMTP
FTP
TFTP
DNS
HTTP
.......
BOOTP
Presentation Session Transport Transport TCP
UDP
Network Internet IGMP
ICMP
IP
Routing Protocol
ARP
RARP
Data Link
(SDLC,HDLC,PPP,
Frame-relay,etcs)Network Interface IEEE 802.2
Ethernet
FDDI
IEEE 802.5
IEEE 802.3
Physical
(RS-232C,V.35,
HSSI,etcs)Physical
- OSI Model Layer 기능
- OSI 7 Layer 개념도
- Physical Layer : 물리적 매체를 통해 비트 흐름을 데이터 링크층으로 전송
* 물리적인 매체의 형태는 트위스트페어 케이블,동축케이블,광섬유,무선통신등
- Data Link Layer : 정보의 비트를 그룹으로 전송
* 전송되거나 전송받는 비트는 프레임이라는 논리적 단위로 모아진다.
* LAN상의 프레임 : 토큰링,이더넷 프레임,FDDI 프레임 등
* WAN상의 프레임 : SLIP,PPP,X.25 또는 ATM 셀 프레임이나 또다른 WAN유형(예,CISCO HDLC) 등
* 전송 오류를 최초 처리계층이며, 오류제어 필드는 오류탐지에 사용되는 하드웨어 생성 Checksum임.
LAN에서는 32bit CRC checksum사용,WAN에서는 16bit CRC checksum 사용(전송부담감소)
- Network layer : 노드간 스위치와 라우터 정보 전송
* 라우터는 일률적인 네트워크 주소지정 메카니즘을 포함하고 있는 네트워크계층 헤더를 검토.
* 라우터는 스위치 역할을 하는 장치이며 패킷을 발송할 다음 목적지를 결정.
- Transport Layer : 말단 장치간 데이터 무결성,오류복구 마지막 계층
* 3개의 하위계층은 서브넷을 구성하며, 3개의 상위 계층은 노드의 네트워킹 소프트웨어에서 구현
* 운반서비스 접속점(TSAP=Transport Services Access Point)를 통해 논리적 연결을 책임진다.
즉,TCP/IP의 포트번호 역할과 유사하다.
- Session Layer : 검사점 설정,활동관리
* 네트워크를 통해 호스토에 로그인하는 사용자 또는 파일을 전송할 목적으로 설정
- Presentation Layer : 데이터 표시를 제공
* ASCII,EBCDIC등 숫자를 통한 데이터 표시방법을 제공
- Application Layer : 응용프로그램별 서비스(API)
* 열기,닫기,읽기,쓰기,파일 공유 등 원격 파일 서비스를 제공하기 위한 프로토콜
* API : 응용프로그램 사용자가 네트워크 응용프로그램을 작성하는데 사용할 수 있는 프로그래밍 라이브러리.
- OSI Model횡단(peer-to-peer)
- 데이터가 로컬의 세션층에서 각 계층의 프로토콜 제어정보(헤더/트레일러)를 달고 내려와 remote의 상위층으로
횡단되며 프로토콜 제어정보(헤더/트레일러)는 각 Layer를 지날 때마다 제거된다.
- 실제 운용에서는 이러한 절차를 볼 수 없으나 대체로 물리층과 데이터링크층 프로토콜엔티티는 하드웨어로 구성
되고 네트워크계층 이상의 프로토콜엔티티는 소프트웨어와 하드웨어의 혼합인 Firmware를 사용하여 구현한다.
- OSI모델은 이해하기 쉬운 통신의 개념적 광경을 제공할 뿐 실무에서는 잘 정의되어 있지 않다.
- Internetworking 구성장비
- Internetworking : 네트워크 구성이 로컬 연결로만 구성되어 있는 경우는 거의 없으며, remote의 독립된 network
가 서로 연결되어 구성된 복합네트워크를 internetwork이라고 하며,이를 구성하는 장비,기술,
비용을 총칭하여 internetworking이라고 함.
- Cable/Connector사용 Media
Connector
Segment길이
속도(bps)
Application
비고
Fiber Optic
MIC
2km
100M
FDDI
연결장비를 통해 100km까지 구성가능
UTP Cable
RJ-45
100m
10M
100M10BASE-T
100BASE-TX
IEEE 802.3u,Category5STP Cable
RJ-45
100m
16M
Token-Ring
RJ-11은 전화기용
Thick Ethernet
AUI
500m
10M
10Base-5
각 장비는 2.5m마다 설치 가능
Thin Ethernet
BNC
200m
10M
10Base-2
보통 TV,Video에 사용
- Terminator : 선로의 data를 되돌리지 않고 끝에서 폐기처리(10Base-5에서 사용) 하기위해 종단에 50Ω의 저항
을 부착, 이때 선로 중간저항은 25Ω
- Tranceiver(MAU:Multistation Access Unit) : 노드와 선로, 허브를 연결하는 기능/10Base-5
- Repeater : 신호의 증폭 및 재생
* Noise도 증폭되므로 연속사용하는데 한계를 가지고 있기 때문에 거의 사용하지 않으며 HUB가 기능수행
- HUB : Repeater의 기본기능 보강,접속을 집중시키는 기능(Repeater + Concentrater)
* Dummy Hub : 말 그대로 멍청한 허브,트래픽을 선별하지 못하고 모든 포트로 전송함. 들어오는데로 보내기
때문에 Collision이 많이 발생한다.
* Intelligent Hub : 기능은 Dummy와 유사하나, IP address를 가질 수 있으며 SNMP(Simple Network Managemt
Protocol)기능을 가지고 있음.
* Switching Hub
Switch기능 즉, Traffic 선별기능을 가지고 있다. Ethernet protocol 특성상 가장 문제가 되는 것은 collision 현상
이다. 충돌이 발생하는 이유는 Ethernet에서 ARP/RARP기능을 수행하며 모든 Client로 Frame을 보내고 해당되
는 Client는 응답을하고 나머지 Client는 폐기하기 때문이다.
그러나 스위칭허브는 각 포트별로 접속되어 있는 client의 MAC address table을 가지고 있으므로 A라는 주소가
들어오면 정해진 포트로만 전송하므로 collision은 거의 발생하지 않는다.
- Bridge
* 두 개의 network만을 연결,패킷을 전송한다. Routing기능 없음.
* 제한적인 프로토콜 : Filtering, Forwarding, Buffering
* 물리계층, 링크계층 기능 수행
- Router
* 여러개의 독립된 network를 연결, 패킷 전송
* 투명성(Transparency) 프로토콜 : Routing
* 물리,링크,네트워크 계층 기능 수행.- Fast Ethernet Switch
* 일반 허브는 10Mbps 속도로 여러포트를 공유하지만 Fast Switch는 한port당 100M제공(Dedicated Bandwidth)
* VLAN(IEEE 802.10) 구성이 가능
- Cisco Switching Hub(Catalyst 5000기준)
* Catalyst5000은 command방식이며 Router의 IOS와는 약간 다름/Catalyst 2920XL은 Router Command와유사)
* Auto sensing기능이므로 별도 설정없이 사용이 가능하고 VLAN설정시 Configration이용 Routing등을 설정.
* 라우터의 show ip route와 같은 show cam이 있으며 CAM table에 MAC address를 기록.
CAM(Content Addressable Table)
- MAC(Media Access Control) : 초기에는 Xerox가 할당했지만 지금은 IEEE에서 $5,000에 할당
- 구조
* NIC(Network Interface Card)의 ROM에 구워져 있다.
24bit
24bit
Vendor code
Serial Number
AB . CD . EF
12 . 34 . 56
I/G
U/L
22bit
* Vendor Code를 OUI(Organizationally Unique Identifier)라고도 한다.
-I/G = Individual(0) / Group address(1) - U/L = Universally(0) / Locally address (1)
- Data Encapsulation
Application Layer
Data
Data구조: -TCP: stream -UDP: message
Transport Layer
TCP Header
20bytesData
Data구조: -TCP:segment -UDP:packet
Internet Layer
IP Header
20bytesData
Data구조: -IP Datagram
Network Access Layer
Ethernet Header
14bytesData(46~1500bytes)
Ethernet Trailer
4bytesData구조 : Ethernet Frame
- IEEE802.3과 Ethernet의 계층 비교
- RFC규정
* Ethernet : RFC894
* IEEE802.3 : RFC1024
- Suite비교상위 계층 프로토콜
LLC - IEEE 802.2
MACMAC
IEEE802.3
DIX 2.0 Ethernet
- Ethernet Encapsulation (RFC 894) : CISCO Router Ethernet Port의 Ethernet port type은 ARPA
|
|
|
type |
|
| ||
|
|
|
|
|
| ||
|
|
| |||||
|
|
|
|
|
| ||
|
|
|
|
|
| ||
| |||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 10Mbps에서 6.4㎲의 지속시간을 갖는데 수신스테이션의 동기화와 프레임 수신을 준비
* 비트 동기를 위한 것인데 수신되는 비트열로부터 송신측과 동일한 수신클럭을 추출할 수 있도록 1과 0이 반복
되는 비트열로 구성된다.
- DA, SA: MAC address 즉, 하드웨어 주소이다.
* DA영역의 첫byte의 최하위 bit 값이 1이면 특정그룹 수신측에게 동시에 전달되는 multicast 주소이다
- frame type을 Ether type이라고도 하며 상위계층 프로토콜의 종류를 표시.
* 802.3에서는 length field로 사용, 두종류의 frame을 호환성있게 한 시스템에서 처리하기위해 EtherType은
0x0600 이상의 값을 사용한다. 즉, 0600미만이면 802.3의 length feild이고 이상이면 Ethernet의 Ethertype
* frame type 예 (RFC 1700)
|
|
Ethertype code |
Protocol |
0000 - 05dc |
IEEE 802.3 길이영역 |
0600 |
XNS PLP |
0800 |
internet IP version 4 |
0805 |
CCITT X.25 |
0806 |
ARP |
8137 |
Netware IPX |
8035 |
RARP |
6559 |
Frame Relay |
- IEEE 802.2/802.3 Encapsulation (RFC 1042) : CISCO Router Ethernet Port의 Ethernet port type은 SNAP
- Ethernet과 IEEE 802.2/802.3은 서로 호환성이 있다.
- length가 0과 1500(0x05DC) 사이이면 IEEE802.x의 data의 길이이고, 그 이상이면 ethernet의 frame type이다.
- length가 0과 1500(0x05DC) 사이이고 802.2 LLC의 DSAP, SSAP, Cntl이 각각 AA, AA, 03이면 반드시 이어서 802.2 SNAP이 따라온다. 반면에 AA, AA, 03이 아니면 바로 data가 온다.
- IPX의 역다중화방법(Encapsulation 호환성의 예 :Novell의 IPX 경우)
- Ethernet frame type DA SA Ethertype
8137IPX (up to 1500)
- IEEE802.2 frame type(802.2 LLC의 경우)DA SA length
fieldDSAP
(e0)SSAP
(e0)control
(0x03)IPX data * Netrware 전용 Dsap인 0xe0를 사용한 것으로 Newware v4.0에서 기본적으로 사용
- IEEE802.2 frame type(802.2 SNAP의 경우)DA SA length
fieldDSAP
(aa)SSAP
(aa)control
(03)SNAP
(0,0,0,81,37)IPX data *주로 AppleT!alk를 지원하기 위해 사용한다
- IEEE802.3 frame type(Novell의 IPX의 경우)DA SA length
fieldIPX with 0xffff header field * Netware 4.0이 나오기 전까지 사용하던 방식으로 LLC의 SAP을 구분할 필요가 없다는 관점에서 IPX header의 첫번째
2byte를 0xFFFF로 설정한 IPX frame을 사용한 것임. 이값은 LLC의 DSAP과 SSAP영역이 각각 0xFF인 것으로 해석
* DSAP=0xFF라는 의미는 global DSAP으로 특정 상위계층을 지정하지 않을 때 사용토록 규정하고 있다.
- Netware frame format
|
|
|
Data |
FCS | |||||||||
|
SFD |
|
|
|
|
|
|
|
type |
|
| ||
|
1 |
|
|
|
|
|
|
|
|
|
| ||
|
|||||||||||||
|
|
|
|
|
| ||||||||
|
|
|
|
|
| ||||||||
| |||||||||||||
|
|
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
| ||||||
| |||||||||||||
|
|
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
|
- Preamble : bit동기와 frame 경계 기능을 수행하는 7byte [1010 1010 1010 1010 1010 1010 1010]
* 10Mbps에서 5.6㎲의 지속시간을 갖는데 수신스테이션의 동기화와 프레임 수신을 준비
- SFD(Start Frame Delimiter(구분자)): [1010 1011]
* IEEE 802.3 preamble + SFD = Ethernet Preamble
* SFD이후부터 바이트 단위로 조합되어 있음을 수신측에 알리는 바이트 단위의 동기를 위한 것일 뿐 아니라
SFD다음 바이트 열이 프레임의 시작임을 알리는 프레임 단위의 동기화를 위한 것이다.
- Preamble과 SFD는 모두 MAC controller chip에서 만들어 지며, Preamble 및 SFD 전송중에 충돌이 발생하면
이영역의 송신을 완료한 다음 32bit의 jam신호를 송신하고 전송을 중지한다.
- Length : LLC의 byte수
- DSAP(Destination Subnet Access Point): 개별 또는 그룹 필드를 나타냄. IP의 경우 16진 코드 AA로 예약
* I/G + 7bit I/G = Individual / Group Destination SAP
(0) (1)
- SSAP(Source Subnet Access Point) : 범용/지역 필드.즉, 주소가 전체용인지 지역용인지 구분. 16진 AA예약.
* C/R + 7bit C/R = Command / Response Source SAP
(0) (1)
- 규정된 SAP의 예
SAP |
Protocol |
SAP |
Protocol |
06 |
IP |
aa |
IEEE SNAP |
42 |
BDPU |
e0 |
Netware IPX |
7e |
X.25PLP |
f0 |
NetBIOS |
80 |
XNS |
ff |
Global SAP |
- LLC: Logical Link Control
* 어느 특정한 MAC에 제한받지 않기 때문에 IP같은 상위 layer protocol이 LAN media에 관계없이 동작
- SNAP: Sub-Network Access Protocol
* DSAP과 SSAp의 값이 모두 0xAA인 경우 SNAP의 5byte 길이의 추가정보가 사용되어 상위 계층 프로토콜의
종류를 표시하는 Ethertype의 기능을 수행 (5byte인 이유는 LLC헤더의 전체 길이를 4의 배수로 맞추어 CPU가
처리하기 용이하도록 한것임)
- OUI: Organizationally Unique Identifier, 장비생산업체의 고유번호. MAC address의 앞 3 bytes
- Control : X.25의 HDLC frame에서 control과 유사
- DA가 모두 1이면 broadcast
_ FCS(Frame Check Sequence)
* address,유형 및 데이터 필드에 대한 32bit 주기적 반복 책섬(CRC) 수행/전송오류 탐지
- CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 방식
- 각 노드는 선로에 트래픽의 흐름(Carrier)이 있는지를 탐지(Sense)하다가
- 트래픽이 없는 경우 누구라도(Multiple) 데이터를 전송하기 위하여 선로을 이용(Access)할 수 있으며,
- 만일 두 대 이상의 노드가 동시에 데이터를 전송하면 충돌(Collision)이 일어나며,
- 이렇게 충돌된 데이터는 폐기되고 전송한 노드는 나머지 노드에게 충돌 사실을 통지(Detection)하여
- random한 시간이 지난 후에 전송을 다시 시작하는 방식
- 동작방법
* 선로는 하나의 노드만이 사용가능(여러노드가 동시에 사용불가)
* a,b,c,d노드가 있을 때 a에서 d로 data를 보낼 경우 a는 선로에 broadcating 하며 b와 c는 data의 MAC주소를
보고 폐기처분하며 d는 data를 수신한다.
* 한편 a가 선로의 상태가 free로 판단하여 d에게 data를 보낼 때 이와 동시에 d도 선로를 free하다고 판단하여
data를 보내면 어느 중간지점에서 충돌이 발생하며, 이때 a와 d는 선로에 JAM신호를 전송한다.
* JAM신호를 수신한 노드(a,d포함)는 임의의 대기시간(Backoff algorithm)을 수행후 전송을 재개한다.
- SLIP (Seial Line IP)
- serial line상에서 IP를 지원하기 위한 기술
- RS-232를 이용
- SLIP의 frame생성 규칙
* IP datagram을 0xc0라는 특정문자로 시작하고 끝낸다.
* IP datagram전송중 0xc0를 만나면 0xdb, 0xdc로 바꾼다.
* IP datagram정송중 0xdb를 만나면 0xdb, 0xdd로 바꾼다.
- 상대방의 IP address를 반드시 알아야 한다.
- IP외에는 다른 protocol사용 불가.
- checksum이 없다.
- PPP (Point-to-Point Protocol)
- SLIP의 문제점 보완
* 다양한 protocol지원(IP, IPX, ...)
* checksum으로 CRC
- PPP절차
* 최초 LCP(link control protocol)로서 link에서 사용될 선택항목을 설정
* NCP(network control protocol)로 network layer protocol 선택 및 구성
* data전송
- PPP frame formatflag
7Eaddr
FFcontrol
03protocol information CRC flag
7E1 byte 1 byte 1 byte 2 bytes 0 ~ 1500 bytes 2 bytes 1 byte 0021 IP datagram C021 link control data 8021 network control data
- MTU (Maximum Transmission Unit)
- physical frame으로 전송되는 datagram크기의 상한값
- MTU보다 큰 datagram을 쪼개진다(fragmentation)
- max frame size는 preamble을 뺀 크기
- IEEE 802.3의 MTU- 1518(max frame size) - 18(link layer header + CRC) - 8(LLC + SNAP) = 1,492 bytes
network종류 MTU(bytes) 비 고
ATM 9,180
hyperchannel 65,535
16Mbps token ring(IBM) 17,914
실제 크기는 토큰보유시간에 좌우(4,440~17,940까지)
4Mbps token ring(IEEE 802.5) 4,464
FDDI 4,352
ethernet 1,500
IEEE 802.3/802.2 1,492
IEEE 802.4
8,166
X.25 576
DDN 표준 X.25를 통한 ARPANET MTU 1,007
공공 데이터망의 경우 조정에의해 증가시킬 수 있다.PPP 1,500
Chapter 3. IP (Internet Protocol)
- 관련표준
- IP : RFC791(1981) - IP Packet Format
- 개요 및 특징
- TCP/IP의 가장 기본적인 프로토콜로서 TCP,UDP,ICMP,IGMP등의 데이터들이 IP를 이용해 전송.
- Internet에 연결된 모든 컴퓨터는 독립적인 주소를 가짐.
- address format은 dotted decimal notation
각각의 host는 4 바이트(32-bit) 정수 주소와 각각의 숫자 사이는 dot(.)로 구분
- Network number는 NIC(Network Infomation Center)에서 관리/부여한다.
- Best effort(Connection-less)
Hop by Hop으로 이동. 즉, 전체경로를 아는 것이 아니라 다음 이동 노드만 안다.
- 서로 다른 특성을 가진(MTU Size등) network의 연결
- IP의 역할 : network간 routing / network내 addressing
- 주요 기능
- addressing
- segmentation
- packet timeout
- ToS(Type of Service)
- Address Class
- Class A : 첫 byte는 0 ~ 127 (1.0.0.1 ~ 126.255.255.254)
- Class B : 첫 byte는 128 ~ 191 (128.0.0.1 ~ 191.255.255.254)
- Class C : 첫 byte는 192 - 223 (192.0.0.1 ~ 223.255.255.254)
- Class D : 첫 byte는 224 - 239 (224.0.0.1 ~ 239.255.255.254)
1110 + multicast address (class D는 multicast backbone(M-bone)에서 사용)
* Class D의 고정IP 주소주 소
내 용
224.0.0.1
all systems on this subnet
224.0.0.2
all routers on this subnet
224.0.1.1
NTP
224.0.0.9
RIP-2
224.0.1.2
SGI dogfight appication
224.0.0.4
all DVMRP(Distance Vector Routing Protocol) router
- Class E : 첫바이트는 240 -255 (240.0.0.1 ~ 255.255.255.254)
11110 + reversed for future use
- Addressing rules
- internet address의 network부분을 정의하기 위해 사용되는 bit가 모두 '0'으로 setting되어서는 안됨. 모두 '0'
으로 setting된 경우 자신이 속해있는 네트워크로 해석한다. 즉, host id가 모두 0이면 host가 포함된 망을 표시
- internet address의 Host부분을 정의하기 위해 사용되는 Bit가 모두 '1'로 setting되어서는 안됨. 모두 '1'로
setting된 Address는 그 Network상의 모든 Host를 의미하기 때문이다. ( 예를 들어 164.124.255.255는
164.124Networkt상의 모든 Host를 의미:IP address가 모두 1이면 broadcast)
- Special IP address (RFC 1700)
net ID host ID 주소 type 목 적 all - 0s all - 0s this computer
host가 망의 IP를 모를 경우
network all - 0s network
하나의 network를 지정
network all - 1s directed broadcast
특정 network에 broadcast
all - 1s all - 1s limited broadcast
local network에 broadcast
127 any loopback
testing
- LoopBack IP주소를 이용한 TCP/IP 소프트웨어 설치 확인방법
- Class A의 127은 Loopback 기능을 위해 부여된 것으로 이것은 High Level Protocol에 의해 Network 127
Address로 보내진 Datagram은 송신프로세스-송신버퍼-수신버퍼-수신프로세스로 Loopback된다.
실제 Ethernet을 통해 송신되는 것이 아니라 시스템의 IP입력 Queue에 저장시켜 IP수신 처리부에서 처리되도록
되어 있으며 수신주소가 같은 시스템주소도 마찬가지이다. 수신주소가 Broadcast나 Multicast인 경우에도 역시
동일 시스템의 IP입력 Queue에 저장된다.
PING명령을 통한 특수목적 IP 기능을 이용하여 TCP/IP 소프트웨어가 제대로 설치되어 있는지 확인할 수 있다.
- Telnet과 FTP서버의 사용권한 검사
telnet 127.0.0.1
ftp 127.0.0.1
- Subnet Mask 개요
- Subnet이란 하나의 큰 네트워크를 작은 네트워크로 분리하는데 사용
- Subnet은 host number를 이용하여 구성(즉, 해당 네트워크에 속할 수 있는 Host의 최대수는 감소)
- Subnet은 local에서만 적용
- 모든 IP Address에는 필연적으로 Mask가 뒤따른다.
- Mask는 보통 Network와 Host를 구분하는데 사용
- Mask의 등록은 Network bit와 subnet bit는 모두 1, Host bit는 모두 0
- Subnet에 대한 차이점
- Subnetting을 안하면 보통 IP Address에 대한 이용율이 극히 저조해진다.
- Subnetting을 하면 Network을 다양하게 설계할 수 있다.
- Subnet의 구조
- C class를 전부 사용할 경우: 202.218.126.0 255.255.255.0
- C class를 64개씩 나누었을 경우 202.218.126.0 255.255.255.192
- C Class host address를 subnet했을 때 network수와 host수
Host Address 8bit |
Subnet값 |
Network수 |
Host수 | |||||||
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
128 |
2 |
128 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
192 |
4 |
64 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
224 |
8 |
32 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
240 |
16 |
16 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
248 |
32 |
8 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
252 |
64 |
4 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
254 |
128 |
2 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
255 |
158 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
| ||
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
- Notation for Prefix Length(mask에 대한 새로운 표현방법)
-Class Aprefix length = 8
host
표시예) 10.0.0.0/8 -> 10.0.0.0 255.0.0.0
-Class B
prefix length = 16
host
표시예) 172.16.0.0/16 -> 172.16.0.0 255.255.0.0
- Class C
prefix length = 24
host
표시예) 192.168.10.0/24 -> 192.168.10.0 255.255.255.0
- Subnet Mask에 대한 표현
* 10.1.0.0/16 -> 10.1.0.0 255.255.0.0
* 172.16.10.0/24 -> 172.16.10.0 255.255.255.0
* 192.168.10.96/26 -> 192.168.10.96 255.255.255.192
- Subnet을 하기위해 prefix가 늘어나는 방향은 오른쪽이며 class의 기본 prefix는 /8, /16, /24 - Route Summaruzation & CIDR (Classless Inter-Domain Routing)
- 라우팅 정보의 경감
- Route aggregation or Supernetting이라고 불리기도 한다.
- 연속적인 IP Address block을 한 개의 route로 집약함
- Route Summaruzation : OSPF, EIGRP,RIP2에서 적용가능
- CIDR : BGP4사용
- Supernetting 사전지식
- 최대 연속적인 하나의 IP address block은 0~255까지 256개의 짝수개로 구성됨.
- 중간 block을 suppernetting 수행할 때 block의 첫 IP address의 바로 전 IP address가
짝수개로 분류 되었는지 확인
- 2의 n승(乘) 형태로 Supernetting 수행
- 방법
- Supernetting 수행은 prefix가 줄어드는 왼쪽방향
prefix host
← prefix length ←
- Supernetting 예
172 .
16 .
168 .
0
10101
000
172 .
16 .
169 .
0
10101
001
172 .
16 .
170 .
0
10101
010
172 .
16 .
171 .
0
10101
011
172 .
16 .
172 .
0
10101
100
172 .
16 .
173 .
0
10101
101
172 .
16 .
174 .
0
10101
110
172.
16 .
175 .
0
10101
111
- IP address 172.16. 10101 0000.0
- Netmask 255.255. 11111 000.0
- Supernetting 172.16.168.0/21
- VLSM(Variable Length Subnet Mask)
- IP address를 효과적으로 이용. 즉, IP address 1개를 가지고 subnet을 다양하게 구성
- 라우팅 프로토콜 종류에 따라 제한이 있음 : OSPF,EIGRP,RIP2에서는 적용 가능.
- 예) C class 1개로 subnetting시 mask를 128(1) 64(2)로 할당하는 경우를 말한다.
즉,126개의 host수용용 네트워크 1개와 62개의 Host를 수용하는 네트워크 2개를 만들 수 있다.
- IP header format
0
4
8
16 31
W
o
r
d
s1
version
4-bitheader length
4-bitTOS(type of service)
8-bittotal length in bytes
16-bit2
identification
16-bitflags
3-bitfragment offset
13-bit3
TTL(time to live)
8-bitprotocol
8-bitheader checksum
16-bit4
source IP address
32-bit5
destinaiton IP address
32-bit6
options data been hear
- header length: 32-bit word의 개수. 일반적으로 5
- TOS(Time Of Service): 서비스의 특성(신뢰,긴급,지연등)에 대해 언급한 필드로 거의 사용하지 않음- 3 bits: precedence field(요즘은 무시)
- 4 bits: type of service
1 _ _ _ : minimize delay
_ 1 _ _ : maximize throughput
_ _ 1 _ : maximize reliabilty
_ _ _ 1 : minimize monetary - 1 bit: unused field, must be 0
- 최근 TCP/IP 관련 장비들은 TOS를 지원하지 않는다.
○ IP header + data
- identification: datagram에 unique번호를 지정, 호스트에서 보내는 데이터그램 각각을 식별하기 위해서
데이터그램마다 유일한 값을 설정하는데 보통 데이터그램이 전송될 때마다 하나씩 증가한다.
- flags: packet분할시 사용되는 flag
* bit 0: resrved, must be zero
* bit 1: (DF) 0 = may fragment, 1 = don't fragment
* bit 2: (MF) 0 = last fragment, 1 = more fragment
* 010 don't fragment (Dbit)
* 001 more fragment (Mbit)
- TTL: datagram이 network상에서 얼마동안 존재할 수 있는가를 나타낸다.
* router가 datagram의 header를 처리할 때마다 1씩 감소
* 0이 되면 source로 error message전송
* datagram은 network상에서 영원히 떠돌 수 없다.- protocol 예
- 0 : reserved 1 : ICMP 6 : TCP
8 : EGP 9 : IGRP 14 : telnet
17 : UDP 88 : EIGRP 89 : OSPF
- IP Header를 sniffer로 분석한 화면
- Direct Delivery
- 같은 network상에서 packet 전달, router를 통한 연결을 포함하지 않는다.
- Indirect Delivery
- router로 연결된 network 사이의 전송
- router는 destination network를 향해 datagram 전송
- Default Router
- routing table에 없는 destination은 이 router로 보낸다.
- Host Forwarding
- 특별한 destination에 특정 router를 지정
- 제어와 보안이 목적 - Header checksum
- IP 헤더에 대해서만 checksum 계산을 하는데 헤더에 연결되는 데이터 부분에 대해서는 계산하지 않는다.
이는 상의계층의 ICMP,IGMP,TCP,UTP 모두가 자신의 헤더에 checksum을 갖고 있으며, 이 checksum이
각각의 헤더와 데이터 부분을 포함하여 계산하기 때문이다
Chapter 4 ARP(Address Resolution Protocol)
- 관련 표준
- RFC 826 - 물리적 네트워크에서 두 개의 노드는 서로 physical address를 알아야만 통신이 가능하다. Ethernet address 48bits는 제조업체에서 지정되어 생산되며 중복되지 않는다.
- 자료를 전송하려 하는 상대방의 IP address는 알고 MAC address는 모를 경우 이 protocol을 이용한다.
- 두 개의 operation이 존재
- Request: Hardware address를 요청(모든 노드로 전송되지만 router에 의해서는 전송되지 않는 recall)
- Reply: Destination이 hardware address를 전송
- ARP packet format
|
|
|
- ARP packet format 설명
- Ethernet DA(destination address) : MAC address, 모두 1이면 broadcast
- Ethernet SA(source address) : MAC address
- Frame type : 연속되는 data의 type을 지정
ARP request/reply = 0x0806
RARP request/reply = 0x8035
- Hardware type : hardware address의 type, (Ethernet=1, IEEE802.3=6, Localtalk=11, Frame-relay=15)
- Protocol type : mappin g되는 protocol address의 type
IP addr = 0x0800
- Hardware addr size :hardware address의 byte size를 기술 (ethernet=6)
- Protocol addr size :protocol address의 byte size를 기술 (ethernet=4)
- Operation : ARP request=1, ARP request=2, RARP request=3, RARP request=4
- Senser Ethernet/IP address : 송신측 hardware/IP주소. ARP reply packet의 경우, 질의했던 통신국의 IP주소
- Target Ethernet/IP address : 수신측 hardware/IP주소. ARP request frame의 경우, Target IP주소 영역에 질의
할 통신국의 IP주소가 수록되며, Target Ethernet영역은 비어 있다.
- ARP request packet을 sniffer로 분석한 화면
- ARP reply packet을 snniffer로 분석한 화면
- ARP Features
- 통신비용을 절감하기 위해 ARP를 사용하는 HOST는 최근 처리된 Internet-to-Ethetnet Mapping을 cache에
보관하여 ARP를 반복하여 사죵하지 않도록한다. 이때 점검 커지는 cache를 유지하기 위해 일정기간 사용되지
않는 entry를 제거한다.
- 부가적인 Network traffic은 packet내에 Internet-to-Ethernet binding을 포함한 ARP Request의 initiator를
갖음으로 해서 피할 수 있고, 따라서 Recipient는 이 mapping을 cache에 추가할 수 있다. 초기 ARP를 받고
sender의 Internet-to-Ethernet mapping을 알아내 cache에 저장한다.
- 새 Host가 Neteork에 나타나거나 기존 Host의 OS가 Reboot될 수 있다. 모든 device는 새 노드가 첫 번째 ARP
request를 broadcast할 때 그 Internet-to-Ethernet을 빨리 인식하여 cache에 저장한다. 새 노드의 mapping은
모든 device의 cache에 저장된다.
- ARP의 기능은 logical internet address를 대응되는 physical hardware address로 변환.
- ARP는 broadcase(all=1)로 모든 host를 call하는 request 후 send host의 IP address와 그에 대응되는 hardware address를 보내는 reply로 구성.
- ARP cache
- ARP의 효과적인 운영을 위해 host는 ARP cache를 유지, 운영.
- 이 cache는 최군에 mapping된 IP와 hardware address를 관리.
- 일정시간(15분을 기본값으로 사용)이 지나면 cache내의 내용 소멸.
- ARP cache table
- ARP 실행 예
- ARP cache가 비어있음을 확인하고, pweb.dacom.net서버에 접속한 다음 끊어 보았다.
- Sender Ethernet address와 IP영역에 바로 문의 했던 그 IP주소가 실려있다. Target Ethernet과 IP주소 영역은
의미가 없음을 알 수 있다.
- proxy ARP
Subnet을 인식하지 못하는 호스트와 subnet을 인식하는 다른 호스트가 공존할 수 있도록 하기위해 broadcast
전송 네트워크에 사용된다.
proxy ARP는 router가 한쪽 편에 있는 host request에 대해 다른 편의 host를 대신하여 응답.
ARP를 요청한 host의 destination의 host와 같은 segment에 없으면 일단 router가 자신의 MAC address를
대신 전송한다.
- gratuitous ARP
어떤 host가 자기 자신의 IP address에 대해 ARP request를 송신. 여기에 대한 답이 오면 자기 자신과 같은 IP
address를 누군가 쓰고 있는 것이므로 IP address의 중복사용을 막는다.
- ARP 요청이 수신되었을 때 Packet 처리절차
①나는 ARP request packet의 hardware종류를 알고 있는가? Yes면 다음으로 No이면 삭제.
②ARP request packet의 하드웨어길이(HLen)을 검사한다.(생략할 수도 있다)
③나는 ARP request packet의 프로토콜을 처리할 수 있는가? Yes면 다음으로 No이면 삭제.
④ARP request packet의 프로토콜길이(PLen)을 검사한다.(생략할 수도 있다)
⑤ARP처리를 제어하기 위해 Merge_flag를 false로 설정한다.
⑥ARP cache에 (프로토콜종류,송신자 프로토콜 주소)가 있는가? 이미 있으면 항목의 송신자 하드웨어 주소
필드를 패킷의 새 정보로 갱신하고 Merge_flag를 true로 설정한다. 아니면 다음으로 단계로 넘어간다.
⑦나의 주소가 대상 IP주소 필드의 것과 같은가? Yes면 다음으로 No이면 삭제.
⑧Merge_flag가 false인지 확인한다. Merge_flag가 false이면 (프로토콜 종류,송신자 프로토콜 주소,송신자
하드웨어 주소)를 변환테이블에 추가한다..
⑨작동(operation code) 필드에 ARP요청으로 나타나는가? Yes면 다음으로 No이면 삭제.
⑩하드웨어 필드와 프로토콜 필드를 맞바꾸어 지역 하드웨어와 프로토콜 주소를 송신자 필드에 넣는다
작동 필드를 ARP reply(응답)으로 설정한다. 패킷 요청을 수신한 것과 같은 하드웨어의 (새)대상 하드웨어
주소에 보낸다.
* 순서는 1)ARP packet의 출발지 주소와 대상주소필드를 맞바꾼다.
2)작동필드를 ARP응답으로 설정한다
3)ARP packet을 다시 송신자에게 보낸다.
- IP주소와 MAC address의 관계
----------|---------
--------|----------
pc2 B E1 Router E0 A pc1
- address예시구 분
pc1
Router E0
Router E1
pc2
MAC address
M1
M2
M3
M4
IP address
T1
T2
T3
T4
- pc1에서 pc2로 패킷을 보낸 경우 A에서 본 패킷 구조
Destination MAC
Source MAC
Destination IP
Source IP
Data
M2
M1
T4
T1
111000111000
- pc1에서 pc2로 패킷을 보낸 경우 B에서 본 패킷 구조
Destination MAC
Source MAC
Destination IP
Source IP
Data
M4
M3
T4
T1
111000111000
프토코콜 종류(IP) |
프로토콜주소 (IP주소) |
하드웨어주소 |
인터페이스번호 |
타임 스템프 |
|
|
|
|
|
- ARP관련 오류 및 Broadcast storm
- 단말의 IP주소가 중복된 경우
(그림 A)
Host Server IP 211.32.55.66
(cache 211.32.55.70=PC1)
ARP request①②
ARP reply
PC1 IP 211.32.55.70 PC2 IP 211.32.55.70
(cache 211.32.55.66=Host)
1) PC1번과 Host간 연결 설정후 상태에서 Host Server의 ARP cache에는 PC1번의 정보인 IP 211.32.55.70=PC1
이 기록되어 있고 단말의 ARP cache는 Host server IP인 211.32.55.66=Host의 정보가 기억되어 있다.
* 그림A 의 ①②의 과정이 수행된 상태
2) 또 다른 단말인 PC2가 동일한 IP 주소인 211.32.55.70을 사용하는 경우 PC1의 연결이 끊어질 수 있다.
즉, PC1에서 Host server와 데이터 전송중, 동일 IP주소인 PC2의 ARP request packet에 의해 Host의 cache
내용이 211.32.55.70=PC2로 변경되어 버린다.
* 그림B 의 ③④의 과정이 수행된 상태
3) 이를 모르는 PC1 이 Host에 TCP 데이터를 송신하면, Host는 이에대한 TCP응답을 PC2로 보내면 PC2는 데이터
를 폐기하게 된다.
4) PC1은 ACK time시간내에 TCP ACK가 도착하지 않아 연결을 종료하고 다시 ARP request를 보내게 되면 이같은
현상은 계속 반복되게 되게 된다.
(그림 B)
Host Server IP 211.32.55.66
(cache 211.32.55.70=PC2)
ARP reply④③ARP request
PC1 IP 211.32.55.70 PC2 IP 211.32.55.70
(cache 211.32.55.66=Host) (cache 211.32.55.66=Host)
- 단말과 서버의 IP주소가 같은 경우
(그림 C)
Host Server IP 211.32.55.66
ARP request
ARP request
PC1 IP 211.32.55.70 PC2 IP 211.32.55.66
* 단말 PC1 이 Host server와의 접속을 위해 ARP request를 송신할 때, 엉뚱하게 다른 단말 PC2의 주소를
응답받을 수 있기 때문에 이 경우 연결시도가 실패한다.
(물론 서버로부터 정상응답을 받을 수도 있는데. 이때는 정상적인 연결이 됨)
* PC2의 전원이 꺼지면 PC1은 항상 서버와의 연결에 성공한다.
* 이처럼 연결이 되다가, 안 되다가 하는 문제는 대부분 기존장비의 IP주소를 불법으로 도용해서 사용하기 때문에
발생하는 경우가 많다.
- ARP Broadcast storm
* 브릿지로 연결된 망에서 전체적인 정전이 발생한 다음, 시스템이 다시 활성화되는 경우에는 모든 시스템의 ARP
cache가 비게되므로 ARP 트래픽의 발생이 급증한다.(ARP packet은 Bridge를 모두 통과하기 때문).
* 이처럼 전체 망에 ARP packet이 증가하여 망의 성능을 일시적으로 저하시키는 현상을 Broadcast storm이라 함.
*
Chapter 5 RARP(Reverse Address Resolution Protocol)
- 관련표준
- RFC 903 - 자료를 전송하려 하는 상대방 혹은, 자신의 MAC address는 알고 IP address는 모를 경우 이 protocol을 이용한다.
- Disk가 없는 경우 host는 tcp/ip를 사용, 자신의 IP주소를 찾기 위해 서버와 접속해서 IP address를 얻어온다.
- Host가 자신의 IP address를 알게 되면, 메모리에 저장한다.
- RARP는 반드시 하나 이상의 서버가 있어야 하며, 같은 segment내에 있어야 한다.
- Router를 통새 다른 network로 forwarding되지 않는다.(밖으로 나가지 않는다.)
- RARP packet format (Arp와 동일하다)
ethernet DA
6ethernet SA
6frame type
2ethernet header hardware type
2protocol type
2hard size
1protocol size
1operation
code
2sender ethernet address 6 sender IP
address
4target ethernet address 6 target IP address
428 bytes ARP request/reply crc
4FCS
operation: RARP request = 3, reply = 4
- RARP operation
디스크가 없는 노드가 서버로부터 Internet adress를 받기위해 사용하는 protocol을 RARP라고 하였다.
이 protocol은 ARP protocol을 번역하여 만든 것으로 ARP와 동일한 message format을 사용하며 ARP message
처럼 RARP message는 Ethernet frame의 data부분에 encapsulate되어 한 노드에서 다른 노드로 전송된다. - RARP storm
하드웨어 링크 결함 때문에 또는 RARP 서버가 종료되어 RArp 서버를 사용할 수 없으면 RARP client는 boot할 수
없게 된다. 이때 RARP client는 RARP broadcast request를 계속 보내게 된다. 동시에 RARP broadcast request
client가 많으면, 네트워크 통신량의 부하가 커지면 생기는 현상이다.
Chapter 6 ICMP(Internet Control Message Protocol)
- 관련 RFCs
- RFC792 : 인터넷 제어 메시지 프로토콜
- RFC950 : 인터넷 표준 서브넷화 절차
- RFC1812 : IPv4 라우터 요구사항 :유형 13,14,15에 수록
- RFC1122 : 인터넷 호스트요구사항-통신계층
- RFC1256 : ICMP 라우터 발견 발견 메시지
- RFC1191 : 경로 MTU발견
- Router가 경로설정을 할 수 없는 경우나 data를 전달할 수 없는 경우가 발생됐을 때, router는 network상의 문제를 피하거나 복구하도록 source host에 ICMP를 이용해 통보한다.
- Router와 host간의 제어 또는 오류정보를 서로 통신하는 방식을 설명한다.
- ICMP서비스 종류
- 반향 : IP노드의 진단도구
- 목적지 미도달 : 목적지 IP 노드에 도달하지 않았다는 것을 나타내기위해 사용
- 출발지 억제 : 출발지 집중문제를 나타내기 위해 사용
- 재지정 : 대체 경로를 알리기 위해 라우터에 사용
- 시간 초과 : IP header TTL field 값의 만료를 나타내기 위해 사용
- 매개변수 문제 : IP datagram문제를 나타내기 위해 사용
- 타임 스템프 : 인터넷에서 시간을 재기 위해 사용
-주소 마스크 : 네트워크의 서브넷 마스크 정보를 입수하기 위해 사용
- Type code
Type
ICMP message
Type
ICMP message
0
반향 응답
13
타임스템프 요청
3
목적지 미도달
14
타임스탬프 응답
4
출발지 억제
15
정보 요청
5
재지정
16
정보 응답
8
반향 응답
17
주소마스크 요청
11
시간 초과
18
주소마스크 응답
12
비지능적 매개변수(IP)
- ICMP format
|
| |||
|
|
|
| |
|
- ICMP format 설명
- type : message를 구별
- code : message유형에 대한 추가정보
- hecksum : ICMP message에 대한 checksum
- message : type과 code에 연관된 내용
- iCMP echo frame을 sniffer로 본 화면
- ICMP echo reply를 sniffer로 본 화면
- 정상적으로 echo reply가 이루어 졌을 때 win98 명령어창에서 확인되는 화면
- 정상인 경우
- 비정상인 경우 : 장애발생 - Destination Unreachable Message
|
|
|
| ||
|
- - type
- 3
- 0 = network unreachable
* IP 목적지 주소에 지정된 네트워크가 없을 때(라우터에서만 생성,경로설정 실패)
1 = host unreachable
* 데이터그램이 라우터에서는 성공적으로 전달되었지만 마지막 라우터가 호스트와 통신 불가
* 발생이유 : 호스트종료,구성오류,IP설정오류,(목적지네트워크에 직접 연결하는 라우터에서 생성)
2 = protocol unreachable
* 데이터그램이 목적지 호스트에 도착했지만 IP데이터그램이 운반하고 IP헤더의 프로토콜 필드로
식별된 상위 프로토콜을 사용할 수 없다는 뜻
* TCP/IP 호스트에서 구현되는 공통의 상위 프로토콜은 TCP,UDP,OSPF임.
* IP header의 프로토콜 ID를 이용해 사용가능여부를 확인하여 문제를 해결할 수 있다.
3 = port unreachable
* 지정된 운반계층 프로토콜(TCP,UDP)이 데이터그램을 개별화할 수 없고 송신자에게 알릴 수 있는
다른 프로토콜 메커니즘을 가지고 있지 않을 경우 생성(ex: 서버의 데몬등)
4 = fragmentation needed but DF bit set
* 네트워크 인터페이스의 MTU size가 datagram의 크기보다 작기 때문에 datagram을 발생해야 하는
라우터가 생성.그러나 datagram IP header에 DF flag가 1로 설정되면 라우터는 datagram DF할수 없다
* DF flag는 TFTP 파일전송을 수행하는 디스크없는 WS이 시스템 부트 메시지 다운로드를 위해 1로 설정
5 = source router failed
* IP출발지 경로 옵션을 사용하는 IP datagram에 대해 라우터에서 생성, 라우터는 datagram삭제
6 = destination network unknown
* 라우터가 경로 설정표에서 목적지 네트워크를 알 수 없다는 것을 탐지 했을 때 생성.
7 = destination host unknown
* 라우터가 네트워크 인터페이스에 있는 데이터링크층 소프트웨어를 통해 목적지 호스트가 없다는 것을
탐지 했을 때 라우터에서 생성
8 = source host isolated(not used)
* 라우터가 나머지 네트워크에서 호스트가 격리된 것을 탐지하면 생성, RFC1812에서 사용못하도록 함.
9 = destination network administratively prohibited
* 목적지 네트워크와의 통신이 관리상 금지됨.
10 = destination host administratively prohibited
* 목적지 호스트와의 통신이 관리상 금지됨
11 = network unreachable for TOS
* 라우터에서 경로 설정테이블의 경로가 요청한 ToS값 또는 기본 ToS와 일치할 수 없기 때문에
datagram을 발송할 수 없을 경우 생성
12 = host unreachable for TOS
* 목적지 호스트에 도달할 수 없을 경우(code 11과 유사)
13 = communication administratively prohibited by filtering
* 통신 방화벽 때문에 관리상 금지됨.
14 = host precedence violation
* 호스트 우선권 위반(송신자 호스트에 대한 첫 번째 홉 라우터가 생성)
15 = precedence cutoff in effect
* 우선권 효력이 차단됨(라우터에서 우선권을 낮게 보낸 datagram을 삭제하고 송신자에게 보낸 MSG)
- Time Exceeded Message
|
|
|
| ||
|
- - type
- 11
- 0 = time to live(TTL) equals 0 during transit
1 = time to live(TTL) equals 0 during reassembly
- Source Quench Message
중간에 있는 router의 buffer가 꽉 차서 더이상 자료를 받을 수 없을 때 자료를 보내는 source host에 보내는 message.
|
|
|
| ||
|
- - type
- 4
- 0
|
|
|
| ||
|
- - type
- 5
- 0 = redirect for networks
1 = redirect for host
2 = redirect for type of service and network
3 = redirect for type of service and host
|
|
|
|
| |
|
- - type
- 0 = echo reply (ping reply)
8 = echo request (ping request)
- 0
Chapter 7 ping & traceroute
- ping
- Chapter 6의 Echo Request and Echo Reply Message를 참조.
- 다른 host와의 접속여부 시험.
- ICMP echo request message(8)를 host에 보내고
- ICMP echo reply(0)로 응답.
- Round-trip Time(RTT)을 측정.
- ping message
|
|
|
|
| |
|
- identifier field set함으로써 응답시 보낸 것에 대한 올바른 답인지 확인.
- sequence number는 0부터 시작하여 증가. 응답되는 packet에 복사된다.
- 일반적으로 ping이 되지 않으면 telnet, ftp 불가능. 즉, telnet은 되지 않아도 ping은 가능하다.
- PING 명령을 이용한 장애진단방법
PING 유틸리티를 이용하여 네트웍에 이는 다른 디바이스에게 문의하여 IP 디바이스가 작동중인지 패킷이 그 디바
이스에 도달하는데 얼마나 걸리는지를 결정할 수 있다. 이 유틸리티는 IP 디바이스간에 연결이 제대로 이루어지지
않음으로써 문제가 발생할 경우 첫단계로 사용할 수 있는 유틸리티이다. PING 유틸리티는 네트웍에서 테스트를
수행하기 위하여 Internet Control Message Protocol(ICMP) 에코 패킷을 사용한다.
- PING 유틸리티를 올리기 위하여 다음과 같은 구문을 사용한다:
PING [-t] [-a] [-n count] [-l size] [-f] [-I TTL] [-v TOS] [-r count] [-s count] [[-j host-list]
[-k host-list]] [-w timeout] destination-list
-파라미터에 대한 설명은 다음과 같다:
- ping명령어를 이용한 장애분석 사례
- 정상인 경우
- 비정상인 경우(회선/network장애) - traceroute
경로상에 있는 각 라우터에 ICMP echo 메시지를 보내어 이에대한 응답을 확인함으로써, 경로상의 라우터의 존재
및 지연시간을 검사해보는 것이다.
- host에서 다른 host로의 datagram의 흐름(route)을 표시.
- ICMP와 IP header내의 TTL(time to live)를 이용.
- traceroute에 사용되는 ICMP는 type 11의 Time Exceeded Message, type 3의 Port Unreachable Message.1. traceroute가 IP datagram을 destination에 전송할 때
- - TTL = 1
- UDP port number를 30,000이상으로 지정- - TTL = 1이므로, datagram을 폐기
- ICMP는 Time Exceeded Message를 source로 전송- - ICMP를 응답한 router를 알아낸 후
- TTL = 2로 바꾸어 destination으로 재전송
- 이런 식으로 계속 진행- - ICMP는 UDP port number로 Port Unreachable을 전송
- - destination router IP도 전송받음
- - 매번 IP datagram을 같은 TTL로 3회 전송, 이에 대응되는 RTT를 보여준다.
- RTT는 5초가 지나면 *(asterisk)로 보여준다.
-t : 이 파라미터는 호스트를 연속적으로 핑할 경우 사용한다. (네트웍에 과부하가 걸지지 않도록 주의한다.)
이 테스트를 멈추려면
-a : 이 파라미터를 이용하여 주소를 호스트 이름으로 풀어낸다.
-ncount : 이 파라미터는 에코 요구를 몇 개 보낼지 결정하기 위하여 사용한다.
-lsize : 이 파라미터는 핑 패킷의 크기를 결정하기 위하여 사용한다.
-f : 이 파라미터는 패킷에 Don’t Fragment flag를 설정하기 위하여 사용한다. 이 플래그는 패킷이 목적 디바이스에
완전히 전달되도록 보장한다. 만일 이 플래그가 설정되어 있다면 라우터는 더 작은 패킷을 지언하는 매체를
통과하기 위하여 조각으로 나뉠 수 없다. 만일 라우터에 그러한 매체가 포함되어 있다면 라우터는 그 패킷을
버리고 송신자에게 ICMP 목적지에 도달할 수 없음을 통보한다.
-iTTL : 이 파라미터는 Time To Live(TTL) 플래그를 설정하기 위하여 사용하며, 이는 패킷이 통과할 수 있는 라우터
(홉)의 개수를 나타낸다. 돌아다니는 ICMP 에코 패팃의 거리를 제한하려면 TTL에 작은 값을 주어야 한다.
-vTOS : 이 파라미터는 Type Of Service(TOS) 플래그를 설정하기 위하여 사용한다. 만일 네트웍이 TOS를 지원
하도록 구성되어 있다면 그러한 연결을 테스트하기 위하여 PING 유틸리티가 특정 유형의 서비스를 사용
하도록 할 수 있다.
-rcount : 이 파라미터는 목적 IP 디바이스에 이르는 홉 개수를 기록하기 위하여 사용한다.
-scount : 이 파라미터는 홉에 시간도장을 찍기 위하여 사용한다.
-jhost-list : 이 파라미터는 호스트 목록을 따라 소스 경로를 테스트하기 위하여 사용한다. 이 테스트는 패밋이
목적지에 도달하기 위하여 반드시 거쳐야 하는 특정 디바이스를 지정한다. 이 테스트는 정확한 경로를
지정하지는 않으며 다른 디바이스가 포함될 수도 있다.
-khost-list : 이 파라미터는 호스트-목록에 따라 정확한 소스 경로를 테스트하기 위하여 사용한다. 이 테스트는
패킷이 목적지에 도달하기 위하여 반드시 거쳐야 하는 모든 디바이스를 지정한다. 패킷은 다른
디바이스를 통과할 수 없다.
-wtimeout : 이 파라미터는 타임아웃을 밀리초(milliseconds)로 설정하기 위하여 사용한다. 타임아웃은 IP 디바
이스가 응답을 얼마나 오래 기다릴 것인지 결정한다.
* 만일 디바이스가 네트웍 통신에 문제가 있다면 DOS 프롬프트에서 다음의 명령을 입력한다: PING 127.0.0.1
127.0.0.1이란 주소는 loopback 주소이다. 이 명령이 입력되면 디바이스는 자신의 TCP/IP 스택을 핑한다.
만일 디바이스가 자신의 TCP/IP 스택을 볼 수 없다면, 그 디바이스는 네트웍에서 통신할 수 없다.
Chapter 8 IP Routing - Static Routing
- Routing mechanism (IP가 routing table을 찾는 순서)
1. 일치하는 host address
2. 일치하는 network address
3. default route 경로
- Routing policy
- 최상의 경로를 어떻게 선택하여 routing table에 적느냐를 결정하는 규칙
- Direct route
- destination IP address + link layer/Hardware MAC address
- Indirect route
- destination IP address + router MAC address
- destinaiton이 해당 network segment에 없을 때.
- Building Routing Table
- Routing table에 정보를 써 넣는 방법에 따라
- manual entry: initialization file
- dynamically: 작동중인 interface를 통해 - Routing table정보산출 방법에 따라
- static routing: booting 시 결정. 아주 단순하지만 network topology변화에 융통성이 부족하다.
- dynamic routing: 프로그램에 의해 자동으로 update. 부가적인 protocol을 요구하지만, network변화 및 고장에도 작업이 가능.
- Routing table에 정보를 써 넣는 방법에 따라
- Routing table의 내용
- destination host IP address or network address(net ID)
- router IP
- default router
- subnet mask
- router의 상태(up/down)
- destinaiton까지의 거리(hop 수)
- direct/indirect route여부
- 경로로 보내지는 packet 수
- redirect여부
- 사용되는 protocol 표시(ex. ethernet, fddi...)
- 최근 update후 변경한 시간(aging term)
- ICMP Redirect Error Message
- host는 IP datagram을 R1(host의 default router)으로 송신
- R1은 이 IP datagram이 R2를 거치면 자신을 거쳐 가는 것보다 목적지까지 더 빨리 갈 수 있다고 판단하여 R1은 IP datagram을 R2로 보내고, host에 ICMP Redirect Error Message를 송신한다.
- host의 routing table을 변경한다.
- 이후의 IP datagram은 R1대신에 R2로 송신된다.
Chapter 9 IP Routing - Dynamic Routing
- Dynamic Routing
- 인접한 router들간에 자신이 연결된 network상태에 대한 정보교환
- Routing policy 추가- 1) multiple경로, 보다 나은 경로를 선택
* static routing은 multiple경로가 되지 않는다.
2) 최상의 경로가 down시 즉시 다른 경로를 선택
- Autonomous System
- internet은 AS(Autonomous System)의 모임으로 구성
- 한 조직이 다른 AS와 통신하기 위해서는 유일한 AS번호를 InterNIC으로부터 할당받아야 한다.
- AS들간의 network(EGP; Exterior Gateway Protocol): GGP, EGP, BGP
- AS내의 network(IGP; Interior Gateway Protocol): HELLO, RIP, OSPF, IGRP, EIGRP, IS-IS
- Routing Metrics
1) Vector-Distance Protocol- - 구현이 용이
- 경로설정을 위해 end-to-end hop count사용
- 개선된 기능은 weighted hop counts설정으로 지원- high-speed lan의 weight = 1
low-speed lan의 weight = 10
- Vector-Distance Algorithm- 1) metrics값을 기초로 전체적인 경로 결정
2) 각각의 router로부터 next hop routing table과 거리등에 대한 정보 수신
3) router들은 주기적으로 topology정보를 broadcast
4) 다른 router들은 이들 정보를 기초로 routing table을 update* 주기적으로 정보가 교환되므로 router가 많은 network에서는 회선에 부하를 줄 수 있어 좋지 않다.
* RIP는 60초마다, IGRP는 90초마다 자기와 연결된 network정보를 인접한 router에게 전달한다.
- - 구현이 복잡
- 전체 cost는 시작점부터 각path에 대한 link의 합, 이를 토대로 traffic을 전달하는데 최상의 path선택.
- 주기적으로 정보교환하는 것이 아니라 router의 추가, 삭제 등 topology가 변화됐을 때만 정보교환한다. 모든 path에 대해 재계산(dynamic route)
- OSPF와 IS-IS 등이 대표적인 protocol
- Link-State Algorithm- Shortest Path First(SPF)와 같은 개념.
한 node에서 다른 node로 가는 가장 짧은 길을 계산.
Djikstra's algorithm 적용: 단일 source로부터 모든 목적지에 대한 최단경로를 계산
- RIP (Routing Information Protocol)
- simple distance vector routing algorithm
- total metrics = hop cost의 합, 제일 작은 값 선택
- 간단하고 사용하기 편하다. 간단한 topology로 구성된 network에 적합
- RIP message는 UDP datagram을 통해 전달, UDP port 520 사용
IP header 20 bytes UDP header 8 bytes RIP message UDP datagram (RIP message size; UDP header 포함, 512 bytes) IP datagram command(1-6) 1 byte version(1) 1 byte (must be zero) 2 bytes 20 bytes address family(2) 2 bytes (must be zero) 2 bytes 32-bit IP address 4 bytes (must be zero) 4 bytes (must be zero) 4 bytes metric(1 - 16) 4 bytes ~ 20 * 24 bytes 위의 20 bytes와 똑같은 format으로 24개 더 경로를 지정가능 - 1 = request
2 = reply
3 = trace on(not used)
4 = trace off(not used)
5 = reserved
6 = reserved- 1, (RIP2 = 2)
- IP address = 2
* maximum metric = 15, 16은 접속불가
* LAN의 속도를 고려하지 않아 무조건 한 hop의 cost = 1. 즉, FDDI가 dial-up보다 훨씬 빠름에도 불구하고 모두
cost = 1
* 30초마다 정보가 교환되므로 network붕괴 후 복구에 많은 시간 소요.
* traffic의 load balancing불가
* routing table경로 변경 후 특정 경로의 down으로 loop되는 현상이 생길 수 있다.
*subnet mask를 지원하지 않는다.- 더이상 경로를 사용할 수 없는 경우
* 목적지로 가기 위해 경유되는 router가 사용될 수 없음을 통지, 즉 hop count = 16
* 목적지 경로상의 router로부터 3분 동안 추가정보를 받지 못하는 경우, 경유되는 router의 hop count = 16으로
mark. 2분 내에 복구되지 않으면 routing table에서 삭제.- RIP의 문제점 해결
*triggered update : router가 경로값(metric)의 변경시마다 즉시 통보
* hold down : 일정시간 동안 metric=16 (unreachable destination)에 대해서는 새로운 경로로 update하지 않음.
* split horizon : router A에서 router D를 거쳐 Network N으로 가는 경로에서 D와 N사이에 link down이 발생했을
때 loop가 발생할 수 있다. 이를 해결하기 위해 D가 A에게 보낸 link down에 관한 정보를 A가 다시 D에게 보내지
않는다.
* poisoned reverse : 위와 같은 경우가 발생했을 때 router A는 next hop에 있는 router D에게 router D 이후의
경로(N)에 대해 metric = 16으로 정보를 보낸다.
- RIP2
- RIP의 문제점 보완
- subnet mask 지원
- IGRP (Internet Gateway Routing Protocol)
- CISCO 장비의 protocol
- Vector-Distance Protocol의 하나
- 각 경로마다 많은 인수를 취해 공식을 이용해 경로 계산(metrics값 계산)
* Delay
. 단위는 10 microsecond
. network상에서 load가 없을 때 1bit가 목적지에 도달하는 데 걸리는 시간
* Bandwidth : path상의 가장 작은 bandwidth(kbit/sec)
* Load : path의 bandwidth에서 현재 사용되고 있는 비율(0 - 255), 255=100%
* Reliability : 손상되지 않고 도착한 datagram의 비율(0 - 255), 255=100%
* MTU
. path상의 모든 link를 통해 전달될 수 있는 가장 큰 MTU. 다른 AS번호 사이의 routing도 지원
. Layer 3의 IP datagram을 통해 전달(protocol type = 09)
. RIP과 마친가지로 주기적으로 broadcasting
. subnet mask 지원 않음
- EIGRP (Enhanced Gateway Routing Protocol)
- CISCO 장비의 protocol
- subnet mask지원
- IGRP와 같은 metrics공식 이용
- Layer 3의 IP datagram을 통해 전달(protocol type = 88)
- OSPF (Open Shortest Path First)
- link-state path와 distance metric이용
* map을 제작하고
* 이 map으로부터 path를 만들고
* path마다 값을 지정
* 최적의 path를 선택- multicast사용
- subnet mask, supernet mask 지원
- Area Routing- router는 자기가 속해있는 area에 관해서만 topology와 metric에 대한 자세한 정보를 파악
- 한 area 안에 있는 모든 OSPF router는 동일한 routing database를 유지
- backbone과 각 area는 border router로 연결
- 다른 backbone의 area와 연결하는 router는 boundary router
- EGP (Exterior Gateway Protocol)
- AS가 사용하는 간단한 protocol
- AS로 이웃해있는 EGP router는 접근할 수 있는 network정보를 교환
- Layer 3의 IP datagram을 통해 전달(protocol type = 8)
- BGP (Border Gateway Protocol)
- EGP를 대체해 가장 널리 사용
- TCP well-known port 179사용
- TCP connection을 유지하면서 필요시 router update정보 교환
- 주기적으로 30초마다 상대방이 살아있는지 Keep-alive message교환
- Internal BGP connectoin: AS 안에서의 연결
- External BGP connection: 다른 AS간의 연결
IP Routing별 비교
|
|
| |||||||
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Chapter 10 UDP (User Datagram Protocol)
- transport layer protocol
- no reliability
- datagram을 보내고 끝. transmission control하지 않는다.
- retransmit에 의한 duplication발생. duplication data처리는 application에서 진행
- simple query and response - TFTP,DNS,NFS,SNMP,RIP,WHOD(UNIX서버의 데몬조회)등
- UDP datagram
IP header
20 bytesUDP hader
8 bytesUDP data UDP datagram IP datagram - UDP header
source port
2 bytesdestinaiton ports
2 byteslength
2 byteschecksum
2 bytes
- length: UDP header + data, minimum = 8 bytes
- well-known port
- 0 ~ 1023
- testing, debuggin 용으로 정의된 port- 예를 들어,
- echo = 7: user datagram을 sender에게 재전송
- discard = 9: user datagram을 폐기
- daytime = 13: 접속한 host의 현재 날짜와 시간을 ascii format으로 제공
- quote = 17: quote of the day를 제공(fortune, wisdom, 명언 등)
- name server = 53: domain name server
- BOOTPs = 67: bootstrap 구성을 위한 server port
- BOOTPs = 68: bootstrap 구성을 위한 client port
- TFTP = 69
- HTTP = 80
- socket interface
- socket 생성- sockmain = socket(pf, type, protocol)
- pf: protocol family
PF_UNIX : UNIX system internal protocols
PF_INET : ARPA Internet protocols - type
SOCK_STREAM : TCP
SOCK_DGRAM : UDP
- pf: protocol family
- sockmain = socket(pf, type, protocol)
Chapter 11. BOOTP (BOOTstrap Protocol)
- RARP: IP address를 알기 원하는 diskless system이 boot시 IP address를 알기 원하는 방법
- RARP의 문제점
- IP address만을 전송
- link layer protocol
- router에 의해 forwarding되지 않으므로 모든 physical network마다 RARP serverk가 필요, 즉 같은 segment 안에서만 가능
- diskless system이 boot시 IP를 포함한 system configuration을 설정하는 방법
- UDP와 TFTP를 이용
- BOOTP packet format
IP header
20 bytesUDP header
8 bytesBOOTP request/reply
300 bytesUDP datagram IP datagram
300 bytes Opcode
1 byteharware type
1bytehardware address length
1 bytehop count
1 bytetransaction ID
4 bytesnumber of seconds
2 bytesunused
2 bytesclient IP address
4 bytesyour IP address
4 bytesserver IP address
4 bytesgateway IP address
4 bytesclient hardware address
16 bytesserver hostname
64 bytesboot filename
128 bytesvendor specific information
64 bytes- Opcode: 1=request, 2=reply
- hardware type: 1=ethernet
- hardware address length: 6=ethernet
- hop count: client에서 0으로 set(최초 = 0)
- transaction ID: random unique number. client set, server return. client는 request=response확인
- number of second: client가 bootstrap을 시도한 시간을 set(최초=0)
- client IP address: client가 자기자신의 IP address 를 알면 set, 모르면 0.0.0.0로 set
- your IP address: client IP address가 0이면 server가 IP address를 채운다.
- server IP address: server에 의해 채워진다.
- gateway IP address: proxy server를 사용할 경우 proxy server의 router IP address를 지정
- client hardware address: client는 반드시 set. ethernet header의 MAC address와 동일
- boot filename: client는 일반적인 boot filename 기술. server는 reply시 boot file의 실제경로 제공
- vendor specific information: 추가적인 information
- 최초 client가 server로 request시
- link layer broadcast
- IP header내의 source IP address = 0.0.0.0, destination IP address = 255.255.255.255로 set
- BOOTP port number
- client port는 67에서 server port 68로 자료를 요청한다.
- client에 필요한 subnet mask, default router, DNS 등은 server port 69번으로 TFTP를 통해 client로 download
Chapter 12. DHCP (Dynamic Host Configuration Protocol)
- DHCP Protocol구성요소
- IP주소 및 다른 TCP/IP 매개변수를 할당하기 위한 mechanism
- Host전용 정보를 조정하고 송신하기 위한 protocol - DHCP 주소할당 방법
- 수동할당 : DHCP client의 IP주소를 DHCP서버의 네트워크 관리자가 수동으로 설정
- 자동할당 : 처음 DHCP서버에 접속할 때 IP주소를 할당, 이방법을 이용하여 할당한 IP주소는 영구적으로
DHCP client에 할당되며 또 다른 DHCP client에는 재활용할 수 없다.
- 동적할당 : IP주소를 일시적으로 DHCP client에 할당,IP주소 자동 재활용 - DHCP동적할당시 장점
- 사용자가 TCP/IP 설정을 따로 해주지 않아도 되어서, 관리가 용이.
- 한 정보가 모든 클라이언트에 적용되므로, 네트워크 문제 발생시 추적하기가 보다 쉽다.
- DHCP 기능을 다른 서브넷상에도 적용할려면 라우터가 반드시 DHCP Relay Agent 역할을 수행.
- 관리하는 호스트 수가 많아지게 된다면 서버의 과부하 발생.
- BOOTP의 능력을 확장한 bootstrap protocol
- DHCP packet format (BOOTP와 아주 유사)
IP header
20 bytesUDP header
8 bytesDHCP message
548 bytesUDP datagram IP datagram
548 bytes Opcode
1=request, 2=reply
1 byteharware type
1=ethernet
1bytehardware address length
6=ethernet
1 bytehop count 1 byte
transaction ID
4 bytesnumber of seconds
2 bytesflags
2 bytesclient IP address
4 bytesyour IP address
4 bytesserver IP address
4 bytesgateway IP address
4 bytesclient hardware address
16 bytesserver hostname
64 bytesboot filename
128 bytesoptions
312 bytes - DHCP server는 BOOTP request에 대해 reply하도록 program
- DHCP동작원리
DHCP ClientIP Lease Request
IP Lease Offer
IP Lease SelectionIP Lease
Acknowledgment
DHCP Server- IP Lease Request
클라이언트에서 시스템 시작시 서버에서 할당받지 못하는 TCP/IP 부분을 초기화한다. 아직 IP 주소가 설정된 것이 아니고 , DHCP 서버와 통신할 수 있게 Null IP 주소를 할당하게 되는 것이다. 다음에 DHCP 서버의 위치와 IP 주소 정보에 대한 요청을 브로드캐스트한다. 브로드캐스트하는 이유는 자신의 IP 주소가 없고 또 DHCP 서버의 주소도 모르기 때문이다..
이 Lease Request를 DHCPDISCOVER 메시지 형태로 보낸다. 메시지의 패킷의 원본, 목적지 주소를 살펴 보면 원본 주소는 0.0.0.0을 사용하고 목적지 주소는 255.255.255.255를 사용한다. 그 정보와 함께 자신의 MAC 주소와 호스트 이름을 포함해서 보낸다.
- DHCPDISCOVER 메시지 사용
* TCP/IP가 DHCP 클라이언트로부터 처음 초기화된 경우
* 클라이언트에서 특정 IP 주소를 요청했으나 해당 DHCP 서버가 리스를 놓쳤기 때문에 거부된 경우
* 클라이언트에서 이전에 IP주소를 리스했으나, 해당 리스를 Release하고 새 리스가 필요한 경우
- IP Lease Offer
이제 Request 메시지를 받은 DHCP 서버는 (만약 복수개의 서버가 있다면 모든 서버가 메시지를 받게 된다.) DHCPDISCOVER에 대한 응답을 DHCPOFFER 메시지로 응답해 주게 된다.
- 메시지 주용내용은
* 클라이언트의 하드웨어 주소
* 자신의 IP Pool 범위 내에서 제공할 IP 주소
* 서브넷 마스크
* Lease 기간
* 서버 식별자(DHCP 서버 IP주소)
이 메시지 역시 브로드 캐스트를 사용하는데, 이유는 앞서와 마찬가지로 아직 클라이언트에 IP 주소가 할당되지 않았기 때문이며, DHCP 클라이언트는 서버들로부터 받은 DHCPOFFER 메시지 중에서 가장 처음으로 도착한 메시지를 선택하게 된다.
만약, DHCP 클라이언트가 DHCPOFFER 메시지를 받지 못했다면 DHCPDISCOVER 메시지를 세번(각각 9초 , 13초,16초의 간격으로 0부터 1,000msec까지 중 임의로 시간을 더할 수 있음) 다시 브로드캐스트한다. 네번째 요청 이후에도 제안을 받지 못했을 때는 클라이언트는 5분마다 다시 시도하게 된다.
- IP Lease Selection
클라이언트가 받은 여러 개의 DHCPOFFER 메시지 중에서, 가장 처음 도착한 메시지를 채택. 서버에게 DHCPREQUEST로 응답하게 되는데, 이때도 브로드캐스트 방식을 사용한다. 그 이유는 모든 DHCP 서버에게 알려야, IP가 중복 할당되는 점을 방지할 수 있기 때문이다. DHCPREQUEST 메시지에는 서버의 서버 식별자(IP주소)가 들어 있고, 클라이언트가 쓰게 될 IP 주소가 적혀 있다
- IP Lease Acknowledgment
DHCPREQUEST 메시지를 받은 DHCP서버는 클라이언트에게 DHCPACK 메시지 형식으로 긍정 응답을 브로드캐스트한다. 아직 클라이언트에 IP주소가 할당된 것이 아니기 때문에 브로드캐스트 방식을 쓰는 것이며, 이제 DHCP 클라이언트에서 긍정 응답을 받을 때, TCP/IP가 초기화되고 바인딩된 DHCP 클라이언트로서 간주된다. 바인딩후 TCP/IP를 이용하여 통신할 수 있다.
클라이언트에 IP 주소와 서브넷 마스크, 기타 IP 주소 정보가 기록되는 레지스트리 위치는 다음 위치에 존재한다.
HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\adapter\Parameters\Tcpip
만약, 이 응답이 성공되지 않는다면 DHCPNACK이 브로드캐스팅 되든데, 다음과 같은 경우에 부정 응답이 발송된다.
- 클라이언트가 이전에 리스했던 IP주소를 리스하려 했으나 이미 사용중이어서 더 이상 사용할 수 없을 경우
- 클라이언트가 성공되지 않은 긍정 응답을 받을 때는, IP Lease Request 과정부터 다시 시작한다.
- IP 대여기간 갱신
이렇게 DHCP를 이용 TCP/IP 설정이 초기화되면, 대여 기간까지 설정이 유지 하지만, 그동안 이 대여기간을 갱신하기 위한 시도가 이루어 진다.
-처음 갱신 시도시
처음으로 갱신을 시도하는 때는 대여 기간의 50%가 남았을 때다. 해당 클라이언트는 주소를 할당받은 서버에게 DHCPREQUEST 메시지를 직접 보낸다. 서버가 이 메시지를 성공적으로 수신한다면 클라이언트에게 성공의 긍정 응답(DHCPACK)에 새로운 대여 기간과 갱신된 구성 파라미터를 함께 보낸다. 이 메시지를 받은 클라이언트는 이제 자신의 구성을 갱신하게 되는 것이다.
만약, 클라이언트가 DHCPREQUEST를 보냈지만, 서버가 꺼져 있다거나, 어떤 문제가 발생해서 서버가 이를 수신하지 않았다면, 해당 클라이언트는 요청이 갱신되지 않았다는 메시지를 받게 된다. 그래도 50%의 기간이 남았기 때문에 TCP/IP설정을 유지하는 것입니다.
- 연속으로 갱신 시도
이렇게 처음으로 갱신을 시도했으나 실패했을 경우, 나머지 기간의 50%, 즉 총 대여기간의 87.5%가 만료될 때 사용할 수 있는 DHCP 서버와 연결하여 갱신을 시도하게 된다. 클라이언트는 DHCPREQUEST 메시지를 브로드캐스트하고, DHCP 서버에서 DHCPACK 메시지나 DHCPNACK 메시지로 응답할 수 있다.
대여기간이 만료되거나 DHCPNACK 메시지를 받은 경우에는 DHCP 클라이언트는 즉시 IP 주소 사용을 중단해야 하고, 다시 IP 주소를 얻기 위해 처음부터 4단계의 과정을 거쳐야 한다.
- 클라이언트 재시작시
DHCP 클라이언트가 재시작할 경우를 보면, 이때는 해당 클라이언트가 원래 DHCP 서버에게 자신이 사용하고 있던 IP 주소를 갱신하려 한다. DHCPREQUEST 메시지에 자신이 사용하던 IP 주소를 적어서 보내고, 서버에서 이에 응답하면 그 주소를 계속 사용할 수 있게 되는 것이다. 만약 갱신을 못한다면 마찬가지로 대여 기간동안 만큼만 IP를 사용하게 된다
- IP Lease Request
Chapter 13. TFTP (Trivial File Transfer Protocol)
- workstation or X-terminal 등 diskless system에서 사용
- UDP datagram을 통해 전송, server port 69 사용
- 512 byte단위로 data block을 전송
- 마지막 block < 523 bytes
- 만약 마지막 block = 512이면 다음 datagram은 header(4-octat)만 전송 - TFTP format
IP header
20 bytesUDP header
8 bytesTFTP message
<= 516 bytesUDP datagram IP datagram - read request(RRQ)
opcode = 1
2 bytesfilename
n bytes(string)0
1 bytemode
n bytes(string)0
1 byte- write request(WRQ)
opcode = 2
2 bytesfilename
n bytes(string)0
1 bytemode
n bytes(string)0
1 byte- data(DATA)
opcode = 3
2 bytesblock number
2 bytesdata
<= 512 bytes- acknowledgement(ACK)
opcode = 4
2 bytesblock number
2 bytes- error(ERROR)
opcode = 5
2 byteserror code
2 byteserror message
n bytes(string)0
1 bytes
- client read request
- reader: port 선택, RRQ를 port 69에 전송
- responder: port 선택, block 1전송
- reader: ACK + block number 1 전송
- responder: block 2전송
- reader: ACK + block number 2 전송
. . . . . .
- responder: 마지막 block 전송
- reader: ACK + block number # 전송
(위의 마지막 block = 512 bytes면 server, client는 각각 opcode, block number만 교환)
- client write request
- writer: client는 WRQ를 server의 port 69를 통해 전송, filename과 mode 확정
- server: port준비 후 ACK + block number = 0 전송
- writer: 최초 512 bytes 전송, block number = 1.
(이후는 RRQ와 같다.)
Chapter 14. TCP (Transmission Control Protocol)
- 관련RFCs
- RFC 792(STD 7) : Transmission Control Protocol - 특징
- 기본 데이터 전송 : 연속적인 옥텟의 흐름을 각 방향으로 전송
- 신뢰성 : PAR(적극적 수신 통지 재전송)체계 사용,TCP packet header checksum field를 통해 손상복구
- 흐름 제어 : TCP sliding windows을 이용한 흐름제어
* sliding window mechanism : 채널을 데이터로 가득 채우고 receive Ack를 기다리다가 경험하는 지연시간을
최소한으로 줄이는 것
* window size 1일 때 * window size 3일때
- 다중화 : 한 라우터의 많은 프로세스가 TCP 서비스를 동시에 사용할 수 있다.
- 연결 : establishing a connection & closing a connection 참조
- 우선권과 보안
- connection-oriented protocol
- transport layer protocol(layer 4)
- WWW, telnet, ftp, mail 등.
- full duplex,byte stream 서비스 지원
- application ports(UDP와 같다)
- well-known port: 0 ~ 1023
- discard = 9: discard user datagram
- FTP-data = 20: FTP data 전송 port
- FTP = 21: FTP dialog port
- telnet = 23
- SMTP = 25: Simple Mail Transfer Protocol port
- HTTP = 80
- POP3 = 110: PC mail 검색 서비스 port
- NNTP = 119: Network News access port
- TCP segment
IP header
20 bytesTCP header
20 bytesTCP data TCP segment IP datagram
- TCP header format
TCP header source port
2 bytesdestination port
2 bytessequence number
4 bytesacknowledgement number
4 bytesheader length(4-bit) reserved(6-bit) flags(6-bit) widow size
2 bytesTCP checksum
2 bytesurgent point
2 bytesoptions (if any) data (if any) - flags(URG, ACK, PSH, RST, SYN, FIN)
- URG = 1: if urgent data(break or interrupt)
- ACK = 1: all segment, but initial SYN segment 일 때는 0
- PSH = 1: immediately delivery
- RST = 1: error 감지, session abort할 경우
- SYN = 1: connection setup
- FIN = 1: 정상적인 close 진행
- establishing a connection
- data transfer example
- client: SYN, seq_no=1000
- server: SYN, ACK, seq_no=3000, ack_no=1001
- client: ACK, seq_no=1001, ack_no=3001 (connection established)- client: PSH, seq_no=1001, ack_no=3001, len=100
- server: ACK, seq_no=3001, ack_no=1101 (simplex)- server: PSH, seq_no=3001, ack_no=1101, len=100
- client: PSH, ACK, seq_no=1101, ack_no=3101, len=100
- server: ACK, seq_no=3101, ack_no=1201 (full duplex)
- closing a connection
Chapter 15. TELNET
- 다양한 형태의 terminal type을 emulate(Unix, VAX/VMS, IBM mainframe)
- port 23 사용
- NVT (Network Virtual Terminal)
- telnet의 표준 interface
- 양단의 가상 device를 연결, 이 NVT 상에서 실제 사용할 terminal 계획
- client가 먼저 terminal type을 계획하고, 다음에 server가 지원하는 형태 - NVT code
- data
- 7-bit USASCII
- high-order bit = 0
- printable code 95개(letter, number, symbol, etc)
- ASCII control character 33개(BS, LF, FF, CR, etc) - command
- control function (interrupt process;Ctrl-C, synchronize, etc)
- synch signal: data mark command를 urgent data로 전송하며, holding된 경우 모든 data를 제거
- control command (control function과 synch signal로 구현)- IAC(Interrupt as Command; 255), IP(244), GA(249)
- data
Chapter 16. FTP
- file 전송에 관한 internet 표준
- server에 logon 할 수 있는 계정 혹은 anonymous 계정 필요
- 서로 다른 종류의 host, OS, file structure, character set 상황에서도 실행가능
- control connection
- port 21 사용
- IP의 TOS는 minimize delay로 설정
- data connection
- port 20 사용
- client-server간에 매번 file이 전송될 때마다 설정
- IP의 TOS는 maximize throughput으로 설정
Chapter 17. APPLICATION FLOW
Chapter 18. IP version 6
- IP v4의 등장 이후 network system 규모의 변화
- address 공간 부족으로 새로운 version 출현
- address size = 128-bit(16 bytes)
- header format은 전반적으로 새롭고 호환성 없다.
- extension header: 새로운 networking 기능 제공
- audio and video지원: flow labels and QoS 지원
- IPv6 header format
version
4-bitpriority
4-bitflow label
3 bytespayload length
2 bytesnext header
1 bytehop limit
1 bytesource address
16 bytesdestination address
16 bytes
- IPv6 address 표기법
- dotted hexadecinal notation or colon hex- 104.230.140.100.0.0.0.0.0.0.0.5.150.10.255.255
68E6:8C64:0:0:0:5:96A:FFFF- 68E6:8C64::5:96A:FFFF
- 68E6:8C64:0:0:0:5:150.10.255.255