1. 패킷(Packet)


패킷이란 원래 우체국에서 취급하는 소포(packet)를 말하며, 화물을 적당한 크기로 분할해서 행선지 표시 꼬리표를 붙인 형태이다. 데이터 통신망에서 말하는 패킷이란, 데이터와 호 제어 신호가 포함된 2 진수, 즉 비트의 그룹을 말하는데, 특히 패킷교환 방식에서 데이터를 전송할 때에는 패킷이라는 기본 전송 단위로 데이터를 분해하여 전송한 후, 다시 원래의 데이터로 재조립하여 처리한다.


2. 네트워크의 구조(OSI 7 Layer)


현재의 네트워크 구조는 1970년대 말 IOS(International Oraganization for Standardization)에 의하여 OSI(Open System Interconnection) Layer로 만들어졌다. OSI Layer는 7개의 Layer로 구성되어 있으며, 정의 목적은 장비를 제조하는 업체와는 상관없이 네트워크 장비끼리 서로 표준적인 연결이 가능하도록하기 위한 틀을 제공하기 위한 것이다. 이렇게 범용적으로 받아들여질 수 있는 표준을 설정함으로써 개방형 시스템 환경에서 어떤 장비끼리라도 상호 정보리가 가능하도록 되었다.


각 Layer가 하는 역할


1. Physical: 인접 장치간의 비트 단위의 전기적 전송


2. Data Link : 인접장치간의 프레임 단위의 전송


3. Network : 하나 또는 2개 이상의 망을 통한 데이터 전송(네트워크 엑세스 계층, 망 연동 계층)


4. Transport : 종점 시스템(End -to-end)간의 데이터 전송 


5. Session : 응용 프로토콜간의 대화 제어


6.  Presentation: 두 사용자 시스템간의 데이터 표현 차이 해소


7.  Application : 파일, 메일 전송 등의 사용자 서비스 제공


ㄱ. Application Layer

: 사용자와 컴퓨터가 통신을 하는 곳으로, 통신하고자 하는 상대를 식별하고 그 상대와의 통신을 확보하는 역할을 한다. 또한 통신을 위한 충분한 자원을 보유하고 있는지를 판단한다.

<ex> FTP, E-mail, etc.


ㄴ. Presentation Layer

: 어플리케이션 계층으로 데이터를 제공하며, 코딩 및 변환 기능을 제공한다. 전송에 앞서서 데이터를 표준 포맷으로 교환함으로써 정확히 데이터를 전송하는 기술이다.

<ex> JPEG, MIDI, MPEG, etc.


ㄷ. Session Layer

: 데이터의 절단(tearing down)을 담당하며, 노드 사이의 다이얼 로그 제어를 제공한다. 이것은 통신을 하기 위한 세가지의 다른 방식(simplex,half-duplex 및 full-duplex)을 제공함으로써 시스템 사이의 통신을 조정한다. 일반적으로 서로 다른 어플리케이션의 데이터가 섞이지 않도록 한다.

<ex> NFS, SQL, RPC, etc.


ㅁ. Transport Layer

: 상위 레이어 어플리케이션에서 데이터를 분리하고 조합하여 다시 하나의 데이터스트림(datastream)으로 마무리 한다. 이러한 서비스는 인터네트워킹에서 end to end 간의 데이터 전송을 제공, 송신지의 호스트와 수신지 호스트 사이에 논리적 연결을 수행한다.

<ex> TCP, UDP


ㅂ. Network Layer

: 인터네트워크 내에서 라우팅과 네트워크 어드레싱을 담당한다. 라우터 혹은 다른 Layer-3 장비들은 네트워크 레이어에서 규정되어 있다. 기능으로는 경로설정(path determination), 스위칭(switching), 호 설정(callsetup)이다.

<ex> IP, ICMP


ㅅ. Data Link Layer

: 메시지가 적절한 수신 장비로 전달되는 것을 보증하며, 네트워크 레이어로부터의 메시지를 비트로 변환하여, 물리 레이어가 전송할 수 있도록 한다. 또한 메시지를 데이터 프레임의 포맷으로 만들고, 수신지와 발신지 하드웨어 어드레스를 포함하는 헤더를 추가한다.


o. Physical Layer

: 전송 비트와 수신 비트의 2부분으로 구분되며, 비트들은 수치값을 가진 모스 부호로서 0 또는 1로 표시된다. 물리적 레이어는 실제 통신 미디어의 다양한 형식과 직접 통신한다. 매체가 다르면 비트값 표현 방법이 다르므로 각 타입의 매체 각각에 사용해야 할 적절한 비트 패턴, 데이터를 매체의 신호로 부호화하는 방법, 여러 가지 물리적 매체의 접속 인터페이스의 품질 등을 정하는 전기적, 기계적, 절차적, 기능적 프로토콜을 규정한다.


3. TCP(Transmission Control Protocol)


TCP는 OSI 7계층 중에서 Transport 계층에 속하는 것으로서, point-to-point, connection-oriented, flow controll과 같은 역할을 수행한다. 아래의 그림은 TCP의 구조체이며, 일반적으로 10byte의 헤더를 가지고 있다. (필요에 따라서 별도의 옵션을 추가할 수 있다.) RFC(Requests for comments) 793, 1122, 1323, 2018, 2581에 정의되어 있다.


ㄱ. 발신지 포트(source port) : 데이터를 전송하는 호스트의 포트 번호

ㄴ. 수신지 포트(destination port) : 수신지 호스트 상에서 요청된 어플리케이션의 포트 번호

ㄷ. 시퀀스 번호(sequence number) : 데이터를 순서대로 다시 조립하거나, 누락 혹은 손상된 데이터를 재전송하는 순서배열 과정을 위한 번호

ㄹ. 확인 응답 번호(acknowledgement number) : 다음에 올 TCP 옥텍(octet)을 정의한다.

ㅁ. 헤더 길이(Header length) : 헤더의 길이를 나타내며, 이는 헤더의 32비트 워드의 수를 정의

ㅂ. 예비 필드(Not Used) : 항상 ‘0’으로 설정된다.

ㅅ. 코드 비트(Code bits) : 세션을 설정하고 종료하는 등의 제어 기능을 수행

※ URG : 긴급 포인터

ACK : 승인

PSH : 푸쉬 기능

RST : 접속의 리셋

SYN : 동기화 일련번호

FIN : 송신자로부터 더 이상의 데이터 없음

ㅇ. 수신자 윈도우(Receiver Window) : 송신자가 수용하는 윈도우의 크기(otet)

ㅈ. 체크섬(Checksum) : CRC로서, TCP는 하위 레이어를 신뢰하지 않고 모든것을 점검한다.

ㅊ. 긴급 포인터(Urgent pointer) : 긴급 데이터가 있다면 그 곳의 위치를 포인팅한다.

ㅋ. 데이터(Data) : 상위 레이어에서 전달되는 데이터


TCP를 통해서 데이터를 전송하기 위해서는 Handshake라는 연결 설정 과정을 거쳐야 하며, 이를 설정하는 과정은 다음과 같다. 우선 클라이언트측에서 접속을 요구하는 SYN 패킷을 임의의 sequence 넘버를 random하게 생성하여 서버측에게 보내게 된다. 서버는 서비스 데몬(Daemon)과 같은 어플리케이션이 대기(Listne)하고 있다가 클라이언트에서 보내온 SYN 패킷의 sequence 넘버에 1을 더한 ACK와 서버측에서 random하게 생성한 sequence 넘버의 SYN을 가지고 있는 패킷을 클라이언트에게 전송하게 된다. 마지막으로 클라이언트는 서버측에서 보내온 sequence 넘버에 1을 더한 ACK를 송신하게 되고 Connection이 설정된다. 데이터 전송간에는 ACK만을 서로 교환하게 되며, 접속을 종료시에는 클라이언트측에서 먼저 종료를 나타내는 FIN 패킷을 전송하게 되고 이를 받은 서버측은 ACK를 전송한다. 그리고 접속을 closing 하고 FIN을 클라이언트에게 전송한다. 클라이언트는 FIN을 수신후 ACK를 전송하게 되며 time 카운터를 시작한다.(서버측으로 전송한 ACK가 분실할 것을 대비하여 일정시간동안 기다린다. 만약 ACK가 분실된다면 서버는 다시 FIN을 발송하게 되며, 타이머 시간동안 기다리던 클라이언트는 다시 한번 ACK를 전송하게 된다.) 서버는 ACK를 받게 되면 접속은 완전히 종료(close)하게 된다. 아래의 그림은 클라이언트 측에서의 TCP상태 천이와 서버측에서의 상태 천이를 각각 표현한 것이다. 이러한 상태 천이는 'netstat -at'와 같은 명령으로 확인 가능하며, 일반적으로 LISTEN,ESTABLISHED, TIME_WAIT만을 볼 수 있다.


4. UDP(User Datagram Protocol)


UDP는 규모를줄인 경제적 모델으로서 TCP의 모든 기능을 제공하지는 않지만 신뢰성을 요하지 않는 정보 전송 작업에 많이 활용된다. 비연결형이기 때문에 지연이 적고, TCP와 같은 handshake 과정이 없기 때문에 간단하고 패킷 구조가 간단하다. DNS, SNMP와 같은 프로토콜이 UDP를 활용하고 있다. RFC 768에 정의되어 있다.


ㄱ. 발신지 포트(source port) : 데이터를 전송하는 호스트의 포트 넘버

ㄴ. 수신지 포트(destination port) : 수신지 호스트상에서 요청된 어플리케이션의 포트 번호

ㄷ. 세그먼트의 길이(length of segment) : UDP 데이터와 UDP 헤더의 길이

ㄹ. 체크섬(Checksum) : CRC로서 UDP 데이터 필드와 UDP 헤더의 체크섬

ㅁ. 데이터(Data) : 상위 레이어의 데이터


5. IP(Internet Porotocol)


Network Layer에 존재하는 프로토콜로서 TCP와 함께 현재의 인터넷 구조에서 가장 많은 활용도를 가지고 있다. 패킷의 구조는 아래와 같으며, 상위 레이어 (Transport Layer)의 데이터를 데이터그램으로 분해하여 수신측으로 전송한다. 데이터그램을 수신하는 각 라우터는 패킷의 IP 어드레스를 근간으로 라우팅을 결정한다. 관련 RFC는 791이며, 차세대 표준인 IPv6에 대해서 알고 싶다면 RFC 2373, RFC 2460을 참고하길 바란다.


ㄱ. 버전(Version) : IP의 버전 번호(현재는 IPv4이다.)

ㄴ. 헤더 길이(Header Length) : 헤더의 길이

ㄷ. 우선 순위(Type of service) : 데이터그램을 어떻게 처리해야 하는지를 결정하며, 처음 3비트는 우선 순위를 나타내는 비트이다.

ㄹ. 전체 길이(Total Length) : 헤더와 데이터를 포함한 패킷의 길이

ㅁ. 식별 번호(Identification) : 유일한 IP-packet 값

ㅂ. 플래그(Flags) : Fragmentation 발생 여부를 지정

ㅅ. 플래그 옵셋(Frag offset) : 패킷이 커서 한 프레임에 들어가지 못할 경우 Fragmentation 및 재결합에 대한 정보를 가지고 있다.

ㅇ. TTL(Time to Live) : 최초 패킷 생성시 설정되며, 설정된 시간 동안만 패킷이 살아 있다. 패킷이 인터넷을 무한정 떠도는 것을 방지한다.

ㅈ. 프로토콜(Protocol) : 상위 레이어 프로토콜의 포트 번호 (TCP : 6, UDP : 17)

ㅊ. 체크섬(Internet Checksum) : 헤더의 CRC

ㅋ. 발신지 IP 주소(Source IP address) : 발신지의 32비트 IP 주소

ㅍ. 수신지 IP 주소(Destination IP address) : 패킷을 보내려고 하는 수신자의 32비트 IP 주소

IP 주소는 32비트로의 정보로 구성되며, Dot(.)을 구분자로 이용해서 Octet으로구분된 4부분으로 나뉘어 진다. 이중 일부(high order bits)는 Network를 나타내고 다른 부분(low order bits)는 호스트(host)를 나타내며, 다음과 같이 4개의Class로 구분된다.현재의 IP 주소 구조는 낭비가 심하기 때문에 Subnet이란 구조를 통해서 하부 Network을 분류한다. Subnet이란 하나의 큰 네트워크를 작은 네트워크로 분리하는 데 사용하는 것을 말하며, local network에서만 적용된다. 모든 IP 주소는 Network과 Host를 구분하는 Mask를 가지고 있다.IP 주소를 분류하는 방법으로 CIDR(Classess InterDomain Routing)를 이용할수 있다. a.b.c.d/x와 같은 표현 방식으로 주소를 표현되며 x는 bit의 수를 나타낸다.


6. ICMP(Internet Control Message Protocol)


인터넷 제어 메시지 프로토콜로서 네트워크 레이어에서 작동하며 다른 많은 서비스를 제공하기 위해 IP를 사용한다. IP와 같은 Layer에 있으면서 데이터를 전송하기 위해서 IP에 포함되어 전송된다. 일반적으로 Error Reporting이나 ping에 사용된다.(관련 RFC 792) ICMP message는 type, code와 함께 에러를 발생시킨 IP 데이터그램(datagram)한 첫 8 bytes를 포함하고 있다.


7. Fragmentation


하나의 패킷이 너무 커서 하나의 Entity로서 전송되어질 수 없을때, 네트워크를 통해 보내어질 수 있는 두 개 이상의 더 작은 패킷조각으로 분리되어 진다. 이때 각 패킷 각각의 조각을 Fragment라고 하며 시스템 및 네트워크 장비에서 이러한 패킷을 조각내는 작업을 Fragmentation이라고 한다.

'IT > CISCO' 카테고리의 다른 글

리눅스  (0) 2017.02.14
패킷필터링(IPTABLES)  (0) 2017.02.12
RIP (Routing Information Protocol)  (0) 2017.02.11
QoS(Quality of Service)  (0) 2017.02.11
Qos Measure Element(3)  (0) 2017.02.10

+ Recent posts