|
|
|
|
|
What to Cover? |
||||||||||||||||||||
|
|
| ||||||||||||||||||||
| ||||||||||||||||||||||
| ||||||||||||||||||||||
|
|
| ||||||||||||||||||||
|
|
|
|
|
| |||||||||||||||||
|
|
|
| ||||||||||||||||||||
|
|
| ||||||||||||||||||||
|
| |||||||||||||||||||||
2. Physical Layer와 Link Layer간 인터페이스
3. MAC(Media Access Control)
|
24bit |
24bit | ||
|
Vendor code |
Serial Number | ||
|
AB . CD . EF |
12 . 34 . 56 | ||
|
I/G |
U/L |
22bit |
|
4. hdlc frame 구조

4-1. control field

5. mac frame 구조

5.1 ethernet과 802.3 frame 구조

5.2 ethernet encapsulation
|
|
|
|
type |
|
| ||
|
|
|
|
|
|
| ||
|
|
|
| |||||
|
|
|
|
|
|
| ||
|
|
|
|
|
|
| ||
|
| |||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type field
0800 : IP datagram
0806 : ARP Request / Reply
0835 : RARP Request / Reply
5.3 IEEE 802.2/802.3 Encapsulation (RFC 1042)
|
|
|
|
Data |
FCS | |||||||||
|
|
SFD |
|
|
|
|
|
|
|
|
|
| ||
|
|
1 |
|
|
|
|
|
|
|
|
|
| ||
|
|
|||||||||||||
|
|
|
|
|
|
| ||||||||
|
|
|
|
|
|
| ||||||||
|
| |||||||||||||
|
|
|
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
|
| ||||||
|
| |||||||||||||
|
|
|
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
|
| ||||||
5.3.1 802.3 encapsulation
HARDWARE TYPE
type of hardware address; 1 for Ethernet
PROTOCOL TYPE
type of protocol address being mapped; 0x0800 for IP address
HLEN
size of the hardware address (in bytes); 6 for Ethernet
PLEN
szie of the protocol address (in bytes); 4 for IP address
OPERATION
ARP request (1), ARP reply (2), RARP request (3), RARP reply (4)
SENDER HA & SENDER IP
sender’s hardware address and IP address
TARGET HA & TARGET IP
target machine’s hardware address and IP address
7. IPv4 datagram 형식
VERS
IP protocol version (현재는 4)
HLEN
datagram header의 크기 (32-bit 워드 단위)
TOTAL LENGTH
전체 IP datagram (header+data) 의 크기 (octets 단위)
IDENTIFICATION
IP datagram을 유일하게 지정하는 번호 (정수임)
일반적으로, 하나의 datagram이 전송될때 1 씩 증가함
TIME TO LIVE (TTL)
datagram의 생존 시간 (lifetime)
datagram이 경유하게 되는 라우터의 개수에 대한 상한값(an upper limits)
라우터를 경유시마다 1씩 감소, TTL=0가 되면 datagram은 제거됨.
PROTOCOL
datagram내 data 필드를 생성하는데 사용된 상위 계층의 프로토콜
예를 들어 : TCP=6, UDP=17, ICMP=1, OSPF=89, …
SOURCE IP ADDRESS
datagram을 전송하는 호스트의 IP 어드레스
DESTINATION ADDRESS
목적지 호스트의 IP 어드레스
IP OPTIONS
.모든 데이터그램에 요구되지는 않음
.인터넷을 감시하고 제어하기 위한 용도로 사용됨
.option의 종류에 따라 가변 길이를 갖음
라우팅 정보를 기록하거나 지정하기 위하여 사용
datagram이 인터넷을 경유함에 따른 timestamp들을 구하기 위하여 사용
기타 등등
PADDING
IP datagram header를 32-비트 워드길이에 정렬 시키기 위하여 삽입
Service Type / Fragmentation
뒤에서 설명
FLAG field의 형식 (3-비트)
Frag=0 : not-fragmented packet, Frag=1: fragmented packet
More=0: last fragment, More=1: more fragment
FRAGMENT OFFSET field
fragment되어 전달되는 데이터의 원래 datagram과의 offset (octet 단위)
8. Icmp protocol 형식
1) Type code
|
Type |
ICMP message |
Type |
ICMP message |
|
0 |
반향 응답 |
13 |
타임스템프 요청 |
|
3 |
목적지 미도달 |
14 |
타임스탬프 응답 |
|
4 |
출발지 억제 |
15 |
정보 요청 |
|
5 |
재지정 |
16 |
정보 응답 |
|
8 |
반향 응답 |
17 |
주소마스크 요청 |
|
11 |
시간 초과 |
18 |
주소마스크 응답 |
|
12 |
비지능적 매개변수(IP) |
|
|
2) Echo Request and Echo Reply Message format
ping명령어에 사용한다
|
|
|
|
|
|
| |
|
| ||
IDENTIFIER is used by the sender to match replies to the request(여러군데 보낼때 돌아오는팻킷의 소속확인)
sequence is (여러번 보낼때..순서확인 )
9. UDP 세그먼트 형식

Source Port
(Optional) 보내는 프로세스들의 포트와 응답 하기 위해서 어드레스된 포트를 지적한다. 만일 전달하는 호스트가 source 포트를 제공하지 않는 다면, 이 필드는 ‘0’ 값을 가진다.
Destination
destination 장비의 프로세스들 사이에서 데이터그램을 demultiplex한다.
Length
UDP 헤더와 데이터의 합쳐진 길이를 octet로 표현 한다.
Checksum
(Optional) 만일 checksum이 계산되지 않았다면 제로 값을 갖는다. IP는 데이터그램의 데이터 부분을 위하여 checksum을 계산하지 않기 때문에 (IP 체크섬은 단지 IP 헤더 부분만 담당) UDP 체크섬은 데이터가 에러없이 도착했는지를 결정 하는 수단을 제공한다
10. TCP 세그먼트 형식

단말과 단말 사이에 데이터를 전송할 때 쓰이는 TCP의 기본 단위를 세그먼트라고 하고 이때 TCP의 통신 패킷(데이터) 형식을 TCP 세그먼트 형식이라고 합니다. UDP에서는 UDP 메시지 형식이라고 하지요. UDP와 마찬가지로 TCP 패킷의 구조 또한 데이터와 데이터를 제외한 나머지 부분인 헤더로 구성되어 있습니다.
① 송신측 포트 번호(Source Port)
16비트의 길이로서 송신측 포트 번호를 나타냅니다.
② 목적지 포트 번호(Destination Port)
16비트의 길이로서 목적지 포트 번호를 나타냅니다.
③ 송신용 순서 번호(Sequence Number)
32비트의 길이로서 송신측이 송신하는 데이터의 단위를 나타내는 순서 번호를 나타냅니다.
④ 응답 확인 번호(Acknowledgement Number)
32비트의 길이로서 송신측 순서 번호를 가지고 있어 송신되는 패킷에 대한 재전송의 요구이나 흐름 제어 등에 사용됩니다. 예를 들어 송신측이 송신한 데이터의 순서번호와 응답 확인에서 돌아오는 응답 확인 번호가 같으면 정상적으로 통신할 수 있는 것입니다. 만약에 송신한 데이터의 순서 번호보다 낮은 응답 번호가 돌아온다면 송신측은 이를 재전송 요구를 해석하고 이 응답 확인 번호에 기재된 번호로 재전송 처리를 하게 됩니다. 또한 창 필드에 나타난 수치를 보고, 수신측이 다음 수신시 응답 확인 번호 중 앞부분부터 얼마만큼의 데이터를 받을 수 있는지를 판단하게 됩니다.
⑤ 헤더 길이(Header Length)
4바이트의 단위로서 TCP 헤더의 길이를 나타냅니다. 특별한 경우를 제외하고는 보통 ''''5''''로 지정되어 있습니다. 4바이트가 한 단위이므로 ''''5''''가 지정되어 있으면 20바이트(옥텟)까지가 TCP 헤더이고 그 나머지 부분이 데이터에 해당되는 것입니다.
⑥ 예약(Reserve)
6바이트의 길이로서 추후 확장하기 위해 준비해둔 필드를 나타냅니다. 보통은 사용되지 않으므로 ''''0''''으로 해 두어야 합니다.
⑦ 코드 비트(Code Bit)
6바이트 길이로서 왼쪽부터 각 비트에는 UGR, ACK, PSH, RST, SYN, FIN의 값이 규정되어 있습니다. 각 비트에 ''''1''''이 지정되면 다음과 같은 의미를 가지게 됩니다. 이들을 제어 플래그(Control Flag) 또는 제어 비트라고도 합니다.
▶ UGR(Urgent Flag: 긴급 플레그)
이 비트에 ''''1''''이 지정되면 긴급 처리를 요구하는 데이터가 들어 있다는 뜻입니다.
▶ ACK(Acknowledgement Flag: 응답 확인 플래그)
이 비트에 ''''1''''이 지정되면 응답 확인 번호를 사용한다는 뜻이고, ''''0''''이 지정되면 응답 확인을 하지 않는다는 뜻입니다.
▶ PSH(Push Flag: 푸시 플레그)
이 비트에 ''''1''''이 지정되면 TCP가 받은 데이터를 바로 윗층의 애플리케이션에 보내지고 ''''0''''이 지정되면 받은 데이터를 상위 어느 층의 애플리케이션에 보낼 것인지를 TCP의 판단에 의존하게 됩니다.
▶ RST(Reset Flag: 초기화 플래그)
재전송을 해도 통신이 회복되지 않는 경우, 즉 가상 회로를 유지할 수 없는 경우, 일방적으로 TCP의 가상 회로를 끊는 것을 초기화라고 하는데, 이 비트에 ''''1''''이 지정되면 어떤 원인에 의해 통신 장애가 발생하여 제어 할 수 없는 것으로 판단하고 TCP의 가상 회로를 강제로 끊게 됩니다.
▶ SYN(Synchronize Flag: 동기화 플래그)
이 비트에 ''''1''''이 지정되면 순서 번호를 TCP 헤더에 나타난 송신용 순서 번호로 초기화하여 가상 회로를 확립하게 됩니다.
▶ FIN(Fin Flag: 종료 플레그)
이 비트에 ''''1''''이 지정되면 송신측이 보낸 데이터가 종료되었다는 것을 나타냅니다. 그러나 수신은 계속해서 가능하게 됩니다. 예를 들어 정상 종료를 하게 될 경우 종료를 요청하는 쪽에서 먼저 FIN을 지정하고 TCP 헤더에 실어 종료 요청을 보내게 됩니다. 이 요청을 받은 쪽에서는 종료 처리를 하고 필요한 데이터를 보낸 후, 송신할 데이터가 없어졌을 때, FIN을 지정한 TCP 헤더를 되돌려 주어 모든 처리를 종료하게 되는 것입니다.
⑧ 창(Window)
16비트의 길이로서 같은 TCP 헤더에 포함된 응답 확인 번호로 나타난 위치로부터 어느 정도의 데이터를 수신할 수 있는지를 알리기 위한 것으로 여기에 나타난 데이터 양을 초과하여 통신하는 것을 허용하지 않게 됩니다.
⑨ 첵섬(Checksum)
TCP의 첵섬도 UDP에 사용되는 첵섬과 거의 같습니다. UDP와 마찬가지로 허위 헤더를 사용하여 계산을 하게 됩니다. 첵섬을 계산할 때, TCP 헤더와 사용자 데이터 앞에 통신과 직접 관계가 없는 허위 헤더를 추가하고, 끝에 ''''0''''만으로 구성된 바이트(옥텟)을 패팅(자리 채우기)하여 전체가 16비트의 배수가 되게 합니다. 이 때 TCP 헤더의 첵섬 필드는 ''''0''''으로 패딩하게 됩니다.
이 때 이용되는 허위 헤더에는 아래 그림과 같이 목적지의 IP 주소와 송신측의 IP 주소, IP 헤더로 사용되는 TCP의 프로토콜 유형 번호(6), TCP 헤더 및 사용자 데이터의 길이를 더한 값이 들어 있게 됩니다.
송신측은 이 TCP 허위 헤더를 작성하고 첵섬을 계산한 후, 결과를 TCP 헤더에 넣어 TCP 헤더와 사용자 데이터만을 보내게 됩니다.
수신측은 TCP 헤더와 사용자 데이터를 수신한 후 IP 헤더로부터 송신쪽과 목적지 IP 주소를 추출하고 허위 헤더를 작성한 후 첵섬을 다시 계산하여 확인하게 됩니다.
이 첵섬의 계산에 기술되어 있는 수치와 계산 결과가 다르지 않으면, 그 TCP 헤더와 데이터는 통신을 해치지 않고 도착한다는 것을 보증할 수 있게 되는 것입니다.
⑩ 긴급 포인터(Urgent Pointer)
16비트 길이로서 앞에서 설명한 코드 비트(Code Bit)의 URG에 ''''1''''이 지정되어 있을 때 한하여 쓰여지게 됩니다. 여기에 나타난 수치는 긴급 처리를 해야하는 데이터가 들어 있는 데이터 필드를 가르키는 포인터로 사용됩니다. 즉, TCP 헤더 뒤에 추가된 데이터의 앞부분(송신용 순서 번호를 나타내는 장소)으로부터 이 긴급 포인터에 나타난 수치만큼의 바이트(옥텟)가 데이터로 처리가 되는 것입니다.
⑪ 옵션(Option)
옵션은 통신의 세부 사항을 조정하기 위해 사용됩니다. 일반적으로는 거의 사용되지 않으며, 옵션이므로 지정하지 않아도 통신을 할 수 있습니다. 이 옵션의 지정 여부는 사용자가 선택하며, 필드 크기는 임의로 되어 있지만, 옵션 필드는 전체가 32비트의 배수가 되도록 지정해야만 합니다.

Marker
인증(authentication)을 위한 내용을 포함
OPEN 메시지나 인증을 사용하지 않을 경우에는 모두 1로 설정
Length
헤더와 데이터를 모두 포함한 길이 (바이트 수)
Type
BGP 메시지 타입 :
Open(1), Update(2), Notification(3), Keep-alive(4)
Data
Message 종류
OPEN message
peer들간에 BGP 통신 세션을 열기 위하여 사용
transport-protocol(TCP) connection 가 설정된 후에 전달되는 최초의 메시지
UPDATE Message
다른 BGP 시스템에게 도달 가능 정보의 변경을 알리기 위하여 사용
어느 목적지가 도달 불가능하게 되어 이전의 advertisement를 취소
새로 도달 가능한 목적지의 존재
NOTIFICATION Message
오류 상황이 검출 되었을때, 이를 알리기 위하여 사용
오류 검출시, active session을 종료하고 다른 라우터들에게 session 종료의 이유를 알림
KEEP-ALIVE message
네트워크 연결을 검사하고, 두 peer들간의 기능을 유지토록 하기 위하여 인접한 BGP 시스템들간에 주기적으로 교환하는 메세지