[네트워크] OSI 7계층

1. OSI 7 계층이란

네트워크 통신의 흐름을 계층적으로 표현한 것이다. 각 계층마다 맡은 역할이 있으며, 따라서 통신장애가 일어났을 시 어느 계층에서 발생한 것인지 확인하고 대응할 수 있다. 응용-표현-세션-전송-네트워크-데이터링크-물리 계층으로 나뉜다.

2. 응용 계층 (Application Layer)

사용자와 가장 밀접한 계층으로, 직접적으로 서비스를 제공한다. 즉, 사용자가 이용하는 응용 프로그램이라고 할 수 있다.

대표적인 프로토콜로는 HTTP, FTP, SMTP, DNS 등이 있다.

Service Protocol Port
FTP (데이터 전송) TCP 20
FTP (연결) TCP 21
SSH TCP 22
Telnet TCP 23
SMTP TCP 25
DNS UDP/TCP 53
DHCP UDP 67, 68
HTTP TCP 80
POP3 TCP 110
IMAP TCP 143
SNMP UDP 161
HTTPS TCP 443

3. 표현 계층 (Presentation Layer)

데이터의 인코딩, 디코딩, 암호화, 복호화가 일어나며 데이터의 포맷을 결정한다.

4. 세션 계층 (Session Layer)

네트워크 상에서 양쪽 호스트 간에 최초 연결이 되게 하고 끊어지지 않도록 세션을 유지시키는 역할을 한다.

5. 전송 계층 (Transport Layer)

전송계층의 PDU는 세그먼트 (Segment)이다. 데이터를 전송하기 위해 세그먼트 단위로 분할 및 재조립하고, 흐름 및 에러 제어를 한다. 데이터가 어느 프로세스로 가야 하는지 다중화와 역다중화를 위해 포트번호를 헤더에 붙인다.

대표적으로 TCP와 UDP 가 사용된다.

1) 다중화 / 역다중화 (Multiplexing / Demultiplexing)

다중화 : 전송자, 응용계층에서 내려온 데이터에 전송계층의 헤더를 붙인다.

역다중화 : 수신자, 데이터의 헤더를 보고 어느 프로세스로 보낼지 결정한다.

UDP의 경우 dst IP와 dst Port가 같으면 같은 소켓이 처리한다.

TCP의 경우 src IP, dst IP, src Port, dst Port가 같으면 같은 소켓이 처리한다.

2) UDP

비연결 지향형 프로토콜이여서 handshaking 과정이고, 따라서 peer-to-peer 뿐만 아니라 multicast, broadcast에도 사용될 수 있다.

best effort 서비스로 작동한다. 즉, 데이터를 보내는 것에만 최선을 다할 뿐 다른 제어 기능이 없다. 패킷이 loss되거나 순서가 뒤죽박죽이여도 상관 없이 전송한다. 따라서, 패킷 손실이나 순서보다 실시간으로 빠르게 전송해야 하는 서비스에 사용된다.

UDP 헤더

별 기능이 없기 때문에 헤더의 구조 또한 단순하다.

image

3) TCP

연결 지향형 프로토콜이서 handshaking 과정이 있으며, 따라서 peer-to-peer 연결만 가능하다.

TCP는 reliable 하다. 혼잡 제어 및 흐름 제어의 기능이 있으며, 패킷의 순서를 맞춰준다.

TCP 헤더

image

Sequence Number

전송되는 전체 데이터 중에서 현재 패킷에 담긴 데이터가 시작하는 바이트 위치이다. 패킷 송신이 지연되어 순서가 어긋나게 도착할 때 Sequence Number를 통해 순서를 올바르게 재배열할 수 있다.

Acknowledgement Number

수신자가 송신자에게 기대하는 다음 Sequence Number이다. ACK를 통해 송신자는 수신자가 어디까지 제대로 받았는지 확인하고 재전송할 수 있다.

TCP Flags

6비트로 각 Flag를 표현한다.

URG : Urgent Pointer 필드값이 유효한지 나타낸다. Flag가 1이라면 Urgent Pointer가 가리키는 세그먼트 바이트까지 긴급한 데이터가 포함되어 있다는 것을 의미하게 되며, 다른 패킷보다 우선적으로 처리된다.

ACK : Acknowledgment Number 필드값이 유효한지 나타낸다.

PSH : 수신측에게 데이터를 빠르게 응용계층에게 전해달라는 플래그이다.

RST : 상대방과의 연결을 즉시 끊을 때 사용된다.

SYN : 초기 연결할 때 상대방과의 시퀀스 번호를 동기화하기 위한 플래그이다.

FIN : 상대방과의 연결 종료를 요청할 때 사용된다.

이외에도 Reserved 필드를 사용하여 NS, CWR, ECE 플래그도 사용된다.

Window Size

현재 가용 수신 버퍼의 사이즈를 바이트 단위로 나타내며, rwnd 라고 한다. 이를 보고 송신자는 흐름 제어를 한다.

3-Way HandShake

데이터를 전송하기 전에 상대방과의 세션을 수립하는 과정이다.

image

STEP 1 : CLI->SERV

클라이언트는 서버에게 연결을 요청하는 SYN 패킷을 보낸다. 클라이언트는 서버로부터 SYN/ACK 패킷을 기다리는 SYN_SENT가 된다.

STEP 2 : SERV->CLI

SYN 패킷을 받은 서버는 요청을 수락한다는 SYN/ACK 패킷을 보낸다. 서버는 SYN_RCVD 상태가 된다.

STEP 3 : CLI->SERV

SYN/ACK를 받은 클라이언트는 서버가 살아있음을 확인하고 ACK를 보낸다. 이제 서버와 클라이언트는 ESTABLISHED 상태가 되어 데이터 통신을 진행한다.

4-Way HandShake

서버와 클라이언트가 세션을 끊는 과정이다.

image

STEP 1 : CLI->SERV

클라이언트는 서버에게 연결을 끊겠다는 FIN 패킷을 보내고 FIN_WAIT 상태가 된다. 클라이언트는 데이터를 받을 수는 있지만 더이상 보내지는 못한다.

STEP 2 : SERV->CLI

서버는 클라이언트에게 알겠다는 ACK 패킷을 보내고 CLOSE_WAIT 상태가 된다. 서버는 아직 보내야 하는 데이터가 남아있을 수 있기 때문에 여전히 데이터를 전송할 수 있다.

STEP 3 : SERV->CLI

서버는 데이터를 모두 전송한 뒤 클라이언트에게 다 끝났다는 FIN 패킷을 보내고 LAST_ACK 상태가 된다. 서버는 자신의 역할을 다 했으니 CLOSED 상태가 된다.

STEP 4 : CLI->SERV

클라이언트는 서버에게 ACK 패킷을 보내고 TIME_WAIT 상태가 된다. 지연된 패킷이 올 수 있기 때문에 즉시 세션을 끊지 않고 일정 시간동안 대기한 후 CLOSED 상태가 된다.

6. 네트워크 계층 (Network Layer)

네트워크 계층의 PDU는 패킷 (packet) 혹은 UDP 데이터그램 (datagram) 이다. 네트워크 계층은 connectionless, best effort 서비스여서 unreliable하다. 전송계층으로부터 세그먼트를 받으면 connection하는 과정 없이 헤더만 붙여서 데이터링크 계층에게 전송한다. 데이터링크 계층으로부터 프레임을 받으면 패킷의 순서, 손실을 신경쓰지 않고 전송계층에게 올려준다.

네트워크 계층의 가장 주요한 역할은 포워딩 (forwarding)과 라우팅 (routing)이다.

1) IP (Internet Protocol)

IP란? IPv4 주소관리

2) 포워딩 (forwarding)

input port로 들어온 데이터를 적절한 out port 로 보내는 것이다.

포워딩 테이블 (Forwarding Table)

이러한 정보는 포워딩 테이블 (forwarding table)에 저장되어 있다.

image

라우팅 알고리즘이 다음 라우터를 결정해주고 포워딩 테이블에서 어느 포트로 보낼지 결정한다. 포워딩 테이블에는 host의 전체 IP가 저장되어 있는 것이 아니라 host가 속해있는 네트워크 주소가 적혀있다.

Longest Prefix Matching

패킷의 목적지 IP와 포워딩 테이블이 가장 길게 매칭되는 인터페이스로 보낸다.

image

예를 들어, 포워딩 테이블이 위와 같을 때 목적지 IP가 11001000 00010111 00010110 10100001 인 패킷은 0번 인터페이스로 나가며 11001000 00010111 00011000 10101010 인 패킷은 1번 인터페이스로 나간다.

3) 라우팅 (Routing)

패킷을 효율적으로 목적지로 보내기 위해 어느 라우터를 거쳐 보내야 하는지 결정하는 것이다.

라우팅

4) 분할/재조립 (Fragmentation/Ressembly)

각 회선은 MTU (Maximum Transmission Unit)이 있다. 라우터는 자신이 받은 패킷이 보내야할 회선의 MTU보다 크다면 이를 분할하고, 최종적으로 전송계층에게 올려줄 때 재조립을 한다.

image

image

length는 헤더를 포함한 패킷의 크기, ID는 패킷의 고유한 번호, flag는 조각난 패킷이 더 있는지 없는지, offset은 조각화된 패킷이 원래 패킷의 어느 위치에 있는지를 의미한다.

4) ARP (Address Resolution Protocol)

ARP

링크 계층의 PDU는 프레임 (Frame)이다. 데이터 링크 계층은 물리적 계층을 통한 데이터 전송에 신뢰성을 제공한다. 이를 위해 MAC주소, 네트워크 토폴로지, 에러 제어, 프레임의 순차적 전송, 흐름제어, 접근제어 등의 기능이 있다.

1) 스위치 테이블 (Swtich Table)

스위치는 dst MAC 주소를 보고 패킷을 포워딩하며, 이러한 정보는 스위치 테이블에 저장되어 있다. 스위치는 어느 포트에 어떤 host가 연결되어 있는지 self-learn 한다.

2) 에러 제어

CRC를 통해 한다.

3) 다중 접근 제어 프로토콜 (Multiple Access Control Protocol)

하나의 회선으로 복수개의 노드가 동시에 통신하려 하면 충돌이 일어난다. 이를 제어하기 위해 다중 접근 제어 프로토콜이 사용된다.

크게 Random Access, Channel Partitioning, taking turns 로 나뉜다.

Random Access Protocol

대표적으로 ALOHA, Slotted ALOHA, CSMA/CD, CSMA/CA 등이 있다.

Slotted ALOHA

일정한 간격으로 나뉜 시간의 시작점에서 데이터가 전송된다. 만약 충돌이 난다면 랜덤한 시간동안 대기 후 다시 전송한다.

CSMA/CD

이더넷이 사용하는 MAC이다.

CSMA는 Carrier Sense Multiple Access의 약자로, 스위치는 채널이 busy한지 idle한지 센싱한다.

CD는 Collision Detection의 약자로, 채널이 충돌나면 신호왜곡을 감지하고 즉시 전송을 멈춘다.

전송을 멈춘 후 binary backoff 상태가 되어 랜덤한 시간동안 대기 후 다시 전송을 시도한다.

Channelization Protocol

한정된 data rate를 시간(Time), 대역폭(Frequency), 코드(Code)를 기준으로 분할하여 사용한다. 각각 TDMA, FDMA, CDMA 라고 불린다.

여러 데이터가 동시에 보내질 수 있다.

8. 물리 계층 (Physical Layer)

두 호스트간에 기계적, 전기적, 기능적, 절차적인 연결을 정의하는 계층이다. 리피터, 허브가 물리계층 장비에 속한다.

카테고리:

업데이트:

댓글남기기