2020. 7. 2.

[Network] p01 패킷의 이해


*TCP/IP 개요

TCP/IP 네트워크 구조

FTP 
NFS 
Telnet SMT Xwin Rexec Domain TFTP RPC 
SNMP 
TCP 
01 
UDP 
IF), ICMP 
ARP, RARP 
Proxy ARP 
IEEE 802 01441, DDCMP, LAPB/D/M/X, SDLC, Aloha, TDMA S 
IEEE 802 011341, EIA-232, X.21, X.21bis, V.24, V.28, ISDN 
(a) TCP/IP 
781 a 
cd101E-æa 
(b) OSI

*Link Layer 구조

네트워크 인터페이스 계층

Preamble 
(8 byte)l 
DA 
(6 byte) 
(6 byte) 
Type 
FCS 
Data 
(2 byte ) 
(4 byte)
  • 이더넷(Ethernet) 프레임의 구조
• Preamble(프리앰블) : 동기화에 사용되는 64비트 필드로서 0 1로 구성되고, 네트워크 장치가 패킷을 받아서 이더넷 프레임의 시작 부분을 결정하고 동기화할 때 사용
• DA(Destination Address): 목적지 시스템의 이더넷 주소
• SA(Source Address):패킷을 전송하는 호스트의 이더넷 주소
• Type : 이더넷 프레임 상단의 데이터의 종류
• DATA : 상위 레이어의 프로토콜에 의해 사용되는 정보가 포함됨
• FCS : 에러 검출을 위해 사용되는 필드로, 수신측이나 송신측 호스트 시스템에 의해 프레임에 포함되는 내용을 계산한 값. 값이 다르면 해당 프레임은 무시됨. // FCS 문제가 생기면 폐기됨

// 받는쪽이 유일하게 앞으로 나온다.

네트워크 인터페이스 계층(계속)
  • 이더넷(Ethernet)

Destination MAC Address (6 byte) 
Source MAC Address (6 gyte) 
Type (2 Byte) 
Data — 1500 Byte) 
Frame check sequence byte)
// Data에는 IP라면 데이터그램이 들어있을것이다.

*Link Layer 구조

네트워크 인터페이스 계층 (계속)
  • Type의 대표적인 값들 (0x600 이상의 값 만이 가능함)
0800 : IP
86DD : IPv6
• 8191 : NetBIOS
• 0600 : Xerox XNS IDP
• 0805 : X.25
• 0806 : ARP
• 0835 : RARP
• 6003 : DEC DECnet Phase
• 8137 : Novell Netware IPX
• 8847 : MPLS
• 8863 : PPPoE Discovery Stage
• 8864 : PPPoE PPP Session Stage

*Network Layer 구조 - IP

인터넷 계층
  • IP(Internet protocol)
    • 가장 대표적인 네트워크 계층의 프로토콜로, 하위 계층의 서비스를 이용하여 두 노드간의 데이터 전송 경로를 확립해 주는 역할을 한다.
  • IP 주소 체계
비트 수 
A 클래스 
비트 수 
B 클래스 
비트 수 
C 클래스 
네 주소 
호수트 주소 
네트워크 주소 
호 스 트 = 소 
네 나무」 그 주소 
호 스 트 ~ 소

IP 헤더
091) 
(μρει) 
91)

// version : IP버전
// Header Length : 헤더의 크기(20~60)
// Type of Service : 거의 안쓴다.
// Total Length : 전체 크기
// Identification : 데이터의 ID, 쪼개진 패킷들은 같은 번호를 가지고 있다.
// Flag : 두번째 비트가 1이면 not flagment 세번째 비트가 1이면 more flagment 뒤에 나랑 같은 identification 넘버가 같은애가 없단 이야기이다. 모두 0이라면 쪼개진 데이터가 아니라는
// Fragment offset : 데이터의 순서
// TTL : 거쳐가는 라우터 개수, TTL 0 되면 폐기(전달 안되고 무한순환중일확률높음) - 중간에 라우터가 IP 헤더를 수정하기 때문이다.
// Protocol Type : ICMP(1), IP(8), TCP(5), UDP(17) 인지 확인한다.
// Header Checksum : IP 헤더가 깨졌는지 확인하는 용도 - 게이트웨이 지날때마다 바뀐다.
// source IP : 송신쪽
// destination ip : 수신쪽
// 버퍼링 문제 - sequence number 똑같다.

IP 헤더 (계속)
  • Version : 인터넷 프로토콜 버전으로 IPv4 4, IPv6 6
  • Header length: IP 프로토콜 헤더의 길이 (word 단위)
  • Type Of Service :
    • 교환하는 데이터의 종류에 따라 지연 통신효율, 신뢰성의 우선순위를 지정할 수 있음,
    • 데이터그램에 기대되는 QoS(Quality of Service)를 지시하는 8비트 코드
    • 구조
  • Precedence(선행)필드 : 3bit
    • 현재는 무시됨

IP 헤더 (계속)
  • Type Of Service (계속)
    • TOS(Type-Of-Service) 필드 : 4bit
    • 각 비트는 최소지연, 최대처리율, 최대 신뢰성, 최소비용을 의미
    • 전부 0으로 설정된 경우 표준 서비스를 의미한다.
    • 현재 대부분의 NOS를 포함한 OS에서 지원되지 않지만 일부 BSD 계열과 OSPF등의 라우팅 프로토콜은 이를 기반으로 경로 선택이 가능하다.
    • 여러 응용 프로그램에 대한 TOS의 권고 값.
syac 
syac 
syac

  • Total Length : IP의 프로토콜 헤더에 계속되는 데이터도 포함한 IP 패킷의전체길이, 전체 데이터그램의길이 (Byte 단위)
  • Identification : 호스트가 연속적으로 전송하는 각 데이터그램을 식별하기 위한 번호
  • Flags : IP데이터그램이분할(Fragment)에 관한 정보를 나타냄
첫번째비트 : 사용안함
두 번째 비트 : Do not fragment
세 번째 비트 : More fragment
  • Fragment Offset : 각 프래그먼트의 원 데이터에 있어서의 위치를 바이트 단위로 나타냄
  • TTL : Time To Live의 약자로 통과가능한 라우터의남은 수, 라우터를 경유할 때마다 이 값이 하나씩 줄어든다.
각 라우터에의해 감소된다. (값이 0이 되면 데이터그램은 폐기)
라우팅 과정에서 무한 루프에 빠지는것을 방지한다.(hop count와 무관)
  • Protocol Type : 데이터에 포함되는 상위 프로토콜의 종류
• 1 = ICMP
• 6 = TCP
• 17 = UDP
  • Header Checksum : IP 프로토콜 헤더 자체의 내용이 바르게 교환되고 있는가를 점검
  • Source Destination IP Address : 발신지 및 수신지의 IP Address
IP
12 
bit) 
tit) 
12 
u bi•.l

*Network Layer 구조 - ARP

ARP
  • Address Resolution Protocol 32bit IP 48bit 이더넷 주소간에 변환을 담당한다.
  • 이들 변환은 동적으로 이뤄진다.
# ftp 192.168.10.99

FTP Clien} 
TCP 
Etherneti 
ARP 
ARP 
. Ethernet i


  • Address Resolution Protocol 32bit IP 48bit 이더넷 주소간에 변환을 담당한다.
  • 이들 변환은 동적으로 이뤄진다.
# ftp 192.168.10.99
1. ftp client TCP에 접속을 의뢰한다.
2. TCP는 연결요구 segment IP에 전달한다.
3. IP는 접속지의 IP와 자신의 netmask를 근거로 동일 네트워크 주소 여부를 확인하고 목적지를 선정한다.
4. 목적지의 IP를 이용 ARP broadcast device를 이용 전송한다.
5. 목적지의 host는 수신한 datagram에 대해서 ARP 웅답 패킷을 요청자에게 unicast한다.
6. 수신된 ARP 응답를 이용 ARP cache 목록에 해당 호스트의 MAC주소를 저장하고 이후 통신과정을 계속한다.
  • ARP cache 목록을 조회하거나 목록을 추가 삭제한다.
옵션
-a : cache 전체 목록을 검색한다.
-s : 목록을 추가한다.
-d : 목록을 삭제한다.

r00tßcentos:- 
Croot@centos arp -a 
st07 (132. at [ether] on etho 
router (192.188.10. ) at OO.EO.4C.F7.CE.13 [ethe on ethO 
[root@centos arp -d 192 168.10.1 
(root@centos arp -a 
st07 (1B2. 68.10.7) at [ether] on ethO 
router (192.168.10.1) at <incomplete> on etho 
Croot@centos arp -s 192 168.10.1 
[root@centos arp -a 
st07 (lg2. 68.10.7) at [ether] on ethO 
router (192.168.10. l) at 4C'FTCE' 13 [ether] PERM on ethO 
(root@centos I

ARP 헤더

ΜΙΗ

ARP 헤더 (계속)
  • H/W Type (하드웨어 타입) : 하드웨어 주소(Network 유형)
• Ethernet : 1
  • Protocol Type
어떠한 유형의 프로토콜(IPv4,IPv6,ATM)을 사용하는가 정의
• IPv4 : 0x0800
  • H/W Length : H/W type에서 사용하는 주소의 길이
• Ethernet : 6byte
  • Protocol Length : Protocol Type에서 사용하는 주소의 길이
• IPv4 : 4byte
  • OP : ARP RARP를 구별하기 위해 사용
• 1 : ARP요구, 2 : ARP응답
• 3 : RARP 요구, 4 : RARP 응답
  • SA, Sender IP : Sender MAC IP
  • DA, Target IP : Destination MAC IP

RARP
  • 데이터 링크 계층의 주소로부터 네트워크 계층의 주소를 얻어오는 프로토콜
  • 디스크를 가지지 않은 호스트가 자신의 IP 주소를 서버로부터 얻어내려면 RARP라는 TCP/IP 인터넷 프로토콜을 사용해야 하며 일반적으로 자체의 디스크 기억 장치가 없는 워크스테이션이나 지능형 터미널에 의해 이용된다.
  • RARP 패킷은 ARP 패킷과 동일한 형식을 갖는다.

*Network Layer 구조 - ICMP

ICMP
  • Internet Control Message Protocol은 송신측의 상황과 목적지 노드의 상황을 진단한다.
IkJSPOO s 丄 
, ) 山 n , 8q0 
edessen d 八 0 丨 
we.'deæp 
, 吼 )ed 矼

ICMP 구조
  • Type : ICMP 메시지 종류
  • Code : Type에 대한 코드 값
  • Checksum : ICMP 메시지 자체(헤더 + 데이터)에 대한 오류를 검사하는 필드
0 
0

ICMP Ping

囵 。 0

  • Identifier : Ping 프로세스의 프로세스 ID
여러 개의 ping이 동일 호스트에서 실행되는 경우 응답을 식별할때 쓰인다.
  • Sequence number
요구 패킷의 순서, 0부터 시작한다

(2

Type of Service : 라우터가 쓸수잇지만 거의 쓰지 않는다.
Identification : 단편화되었을때 같은 번호인것을 확인할 넘버
flag :
첫번째 비트는 안쓴다.
두번째 비트가 1 경우는 뒤에 identification number 같은애가 없고 현재 패킷이 마지막이라는 것이다.
마지막이 1이면 identification number 올것이니 조합하지말고 기다리라는 뜻이다.
버퍼가 필요하다는 - 버퍼오버플로우, 리쿼시브 (함수 부르기)
TTL (8bit) : 16진수 2글자, 0이되었다는건 네트워크 코어에서 계속해서 순환하고 있다고 판단하고 없애버린다.
Protocol Type : ICMP 1

ICMP redirect 이해

A

ICMP redirect 과정
호스트가 인터넷으로 패킷를 보낼때 디폴트 라우터로 라우터 A가 정해져 있다면 호스트는 일단 패킷을 라우터 A로 보낸다.
라우터A는 라우팅 테이블을 검색해서 직접 데이터를 처리하는것 보다 라우터 B가 처리하는것이 효과적이라면 패킷을 라우터 B로 전송한다.
라우터 A는 동일 목적지로 보내는 패킷이 라우터 B로 전송되도록 호스트에게 ICMP 리다이렉트 패킷을 보낸다.
호스트는 라우팅 테이블에 현재 전송중인 패킷에 대한 정보를 저장하고동일 목적지로 전송하는 패킷은 라우터 B로 보낸다.

ICMP 재지정 시에 반드시 확인해야 하는 세가지 IP
  • Redirect 원인이 되는 IP
  • Redirect 패킷을 보낸 라우터 IP
  • 앞으로 이용하게될 IP

ICMP redirect 패킷의 구조

Tyo• code 0-3 ㄧ 
rmd• 02 b • ㄧ 
Sl(md•r byte) 
0 , 伯 b ㄧ

*Transport Layer

TCP(Transmission Control Protocol) 기능
  • IP는 이때 데이터 패킷을 한 장소에서 다른 장소로 옮기는 역할을 한다면 TCP는 데이터의 흐름을 관리하고, 데이터가 정확한지 확인하는 역할을 한다.
높은 신뢰성
가상회선 연결 방식
연결의 설정과 해제
데이터 체크섬
시간 초과와 재전송
데이터 흐름 제어

*TCP connection 관리

Recall: TCP sender receiver connection을 초기화한 다음 data segment을 전송한다.

TCP 초기화 변수
  • Seq#, buffer, flow control 정보들
ex) RcvWindow
client : connection initiator
server : client의 접속을 승인

Three way handshake:

step 1: client server에게 TCP SYN segment를 전송
  • 초기 seq# 설정
  • data는 없다.
step 2: server SYN를 수신하고 SYNACK를 전송
  • server : 변수및 buffer 할당
  • server의 초기 seq# 설정
step 3: client SYNACK수신 ACK전송 (data를 추가해도 된다.)
  • client : 변수및 buffer 할당

Closing a connection:

Step 1: client connection 을 종료하기위해 FIN bit 1로 설정된 TCP segment server에게 전달
Step 2: server FIN을 수신하면 ACK를 응답하고 connection을 종료한다는 FIN client에게 전송한다.

closed

Step 3: client FIN을 수신하면 ACK를 응답하고 일정시간을 기다린후 (time wait) connection 종료한다.
Step 4: server ACK를 수신하면 connection을 종료한다.
Note : with small modification can handle simultaneous FINs.


*TCP/IP 구조

TCP 패킷

dl

TCP 헤더

(4 bit) 
(6 bit) 
(2 byte) 
Port (2 
20 byte 
ACK (4 byt.) 
nole

TCP 헤더
  • Source/Destination Port # : 각 호스트에 있는 응용 프로그램의 포트 번호
  • Sequence # : Segment Stream의 첫번째 Byte 번호
• 0에서 232-1까지의 번호를 이용하고 어떤 번호를 이용해도 무관하다.
  • ACK # : 다음에수신할 stream의 첫번째 Byte 번호
• NACK가 없다. 누적 ACK를 이용한다.
성공적으로 수신한 마지막 byte 번호 + 1이다.
  • 헤더 길이 : TCP 헤더의 길이
옵션부분이 가변이므로 헤더의 길이가 바뀔수 있다.
보통 크기는 20이다.
  • 예약 : 사용하지 않는 필드
  • Window size : 흐름제어를 위한 윈도우 사이즈
  • 플래그
L&URG 
AACK 
R5T 
EFIN 
q EZ Pointn» .R 
TCPE App.-e 
ACK*" 
TCP 
Aplc.« 
TCP 
- open 
TCP

*TCP/IP 구조

TCP
Destination MAC Address (6 byte) 
(4 bit) 
Source 
Type (2 Byte) 
Header Length 
Type of Service (8 
(4 bit) 
Identif ication (2 byte) 
MAC Address (6 Byte) 
bit) 
Flag 
(3 bit) 
Total Length (2 byte) 
Fragment Offset 
(13 bit) 
Header Checksum (Z byte) 
(B bit) 
Source Port 
Protocol Type 
(8 bit) 
Source IP Address (d byte) 
Destination IP Address (4 byte) 
Header Length 
(4 bit) 
(6 bit) 
Checksum 
* (2 byte) 
(2 byte) 
Sequence (4 byte) 
(4 byte) 
Data 
Destination Port # (2 byte) 
Windows Size (2 byte) 
Llrgent Point (2 byte)

UDP(User Datagram Protocol)
  • UDP TCP와는 달리 비연결 프로토콜로서 상대방이 보낸 응답을 확인하지 않으며, 송신 시스템이 전송하는 데이터에 대한 목적지 시스템의 확인 절차가 생략되므로 네트워크에 부하를 걸지 않는 장점이 있다.
  • 데이터 자체의 신뢰성이 없으므로 수신된 데이터의 무결성을 보장받지 못한다.
  • UDP의 특징
비연결 지향형
네트워크 부하 감소
비신뢰성
전송된 데이터의 일부 손실 가능

don

UDP 헤더

  • Source/Destination Port #
각 호스트에 있는 응용 프로그램의 포트 번호
  • UDP Datagram Length
헤더와 데이터를 합한 사용자 데이터그램의 전체 길이로 0~65,535의 범위를 갖는다.
  • Checksum

Dest inat ion MAC Address (6 byte) 
Version 
(4 bit) 
Source 
Type (2 Byte) 
Header Length 
Type of Service (8 
(4 bit) 
Identification (2 byte) 
MAC Address (6 Byte) 
bit) 
(3 bit) 
Total Length (2 byte) 
Fragment Of fset 
(13 bit) 
Header Checksum (2 byte) 
(8 bit) 
Protocol Type 
(8 bit) 
Source IP Address (4 byte) 
Destination IP Address (4 byte) 
Source Port # (2 byte) 
LDP datagram Langth (2 byte) 
Data 
Destination Port # (2 byte) 
Checksum (2 byte)




댓글 없음:

댓글 쓰기