[Network] 데이터 전송 : 프로토콜과 OSI 7계층 및 Wireshark 패킷 분석

2024. 2. 23. 03:34
반응형

 

 

 

 

네트워크는 결국 데이터를 전송하기 위한 연결 인프라를 의미한다. 네트워크에서의 데이터를 전송할 때의 주요 개념들에 대해서 살펴보자.

 

 


프로토콜 

 

네트워크나 컴퓨터 등에서 데이터를 주고받는 데 사용되는 규칙과 절차의 집합. 

예를 들어, 인터넷에서 주로 사용되는 프로토콜 중 하나는 TCP/IP 프로토콜이 있다.

 

 

 

데이터 전송

 

 

데이터 전송 시 수신자와 발신자 사이에서는 데이터가 전달되기 위해 Encapsulation과 Decapsulation 과정이 발생한다. 이러한 과정은 OSI 모델의 각 계층에서 수행되며, 데이터가 한 계층에서 다음 계층으로 전달될 때 일어난다.

 

Encapsulation(인캡슐레이션) : 통신 과정에서 데이터에 헤더(주소 등 부가적 데이터)가 추가되며, Data-link layer에서는 트레일러(끝을 나타냄)가 함께 추가된다.

Decapsulation(디캡슐레이션) : 수신 과정에서 캡슐이 해제된다.

 

즉 발신자의 Application Layer로부터 시작하여 Physical Layer까지의 Encapsulation 과정을 거쳐 데이터를 전송한 후, 수신자의 Physical Layer로부터 Application Layer까지의 Decapsulation 과정이 일어난다.

 

 

 

OSI 7계층

 

 

 

 

컴퓨터 네트워크에서 통신을 위한 표준 프로토콜을 계층적으로 분류한 모델이다.

 

 

이 모델은 ISO(국제 표준화 기구)에서 개발되었으며, 네트워크 통신을 일곱 개의 계층으로 분할하여 각 계층이 서로 다른 기능을 수행하도록 설계되었다. 각 계층은 아래에서 위로 올라갈수록 더 추상화되고 더 높은 수준의 서비스를 제공한다.

 

 

 

 

 

https://commons.wikimedia.org/wiki/Category:OSI_model

 

데이터의 전송

 

1. 발신자 : (Encapsulation) 응용 -> 표현 -> 세션 -> 전송 -> 네트워크 -> 데이터링크 -> 물리 

2. 전송 매체를 통해 발신자 -> 수신자 전송

3. 수신자 : (Decapsulation) 물리 -> 데이터링크 -> 네트워크 -> 전송 -> 세션 -> 표현 -> 응용

 

 

 

 

응용 계층 (Application Layer)

  • 발신자 : 데이터가 생성되며 해당 데이터에 응용 계층의 헤더와 데이터가 추가된다. 데이터는 메시지나 패킷으로 구분된다.
  • 수신자 : 데이터를 수신하고 해당 데이터를 해석하여 사용한다.
  • 프로토콜 : HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), DNS (Domain Name System), DHCP (Dynamic Host Configuration Protocol)
  • TCP/IP Model의 경우 Application + Presentation + Session을 묶어서 Application Layer로 표현한다.
  • 사용자가 네트워크를 통해 데이터를 송수신하고 응용 프로그램 간의 통신을 지원, 최종 사용자가 직접 상호 작용하는 응용 프로그램 및 서비스를 제공

표현 계층 (Presentation Layer)

  • 발신자 : 응용 계층에서 받은 데이터를 표현 계층에서 적절한 형식으로 변환하고, 필요한 경우 데이터를 압축하거나 암호화한다.
  • 수신자 : 받은 데이터를 해석하고 필요한 경우 데이터를 해독하고 압축을 해제한다.
  • 프로토콜 : SSL/TLS (Secure Sockets Layer/Transport Layer Security)

세션 계층 (Session Layer)

  • 발신자 : 데이터를 세션에 맞게 나누거나 조합하여 세션을 관리한다.
  • 수신자 : 받은 데이터를 세션에 맞게 조합하고 관리한다.
  • 프로토콜 : SSH (Secure Shell), NetBIOS (Network Basic Input/Output System)

전송 계층 (Transport Layer)

  • 발신자 : 데이터를 세그먼트(Segment)로 분할하고, 각 세그먼트에 대한 헤더를 추가하여 목적지까지 전송한다.
  • 수신자 : 받은 세그먼트를 다시 합치고, 데이터의 무결성을 확인하여 손상된 세그먼트를 복구한다.
  • 프로토콜 : TCP (Transmission Control Protocol), UDP (User Datagram Protocol)
  • 양 끝 노드의 프로세스-프로세스간의 논리적 통신 제공, 네트워크 계층에서 설정한 경로로 하나의 프로세스에서 다른 프로세스로 전송한다. 효율적 데이터 전송, 데이터의 신뢰성 검사

네트워크 계층 (Network Layer)

  • 발신자 : 데이터를 패킷으로 분할하고, 각 패킷에 대한 헤더를 추가하여 목적지까지 전송한다.
  • 수신자 : 받은 패킷을 다시 합치고, 데이터를 목적지로 전달하기 위해 경로를 선택한다.
  • 프로토콜 : IP (Internet Protocol), ICMP (Internet Control Message Protocol), ARP (Address Resolution Protocol)
  • 한 호스트에서 다른 호스트로 라우팅(경로설정+경로결정), 망구조 네트워크에서 최적의 데이터 경로를 설정함 
  • Network layer은 호스트 간의 통신 및 문제 해결, Transport layer은 프로세스 간의 통신 및 문제 해결

데이터 링크 계층 (Data Link Layer)

  • 발신자 : 데이터를 프레임(Frame)으로 분할하고, 각 프레임에 대한 헤더와 트레일러를 추가하여 목적지까지 전송한다.
  • 수신자 : 받은 프레임을 다시 합치고, 데이터의 무결성을 확인하고 오류를 수정한다.
  • 프로토콜 : Ethernet 등
  • 경로 상의 인접 네트워크 노드 간의 데이터 전송, 링크를 안정적으로 사용할 수 있도록 서비스 제공. 오류 발생시 복원 또는 재전송 또는 폐기 등을 지원. 접근제어. 물리계층으로부터 일정 거리까지 안정적으로 보내주는 역할

물리 계층 (Physical Layer)

  • 발신자 : 전송 매체를 통해 데이터를 전송하고, 해당 데이터를 신호로 변환하여 전송한다.
  • 수신자 : 물리 계층에서 받은 신호를 데이터로 변환하고, 이를 상위 계층으로 전달한다.
  • 프로토콜 : IEEE 802.3 (Ethernet), IEEE 802.11 (Wi-Fi) 등
  • 데이터의 전송은 송신자의 물리 계층과 수신자의 물리 계층 사이에서 이루어진다. 데이터가 디지털 신호로 변환되어 통신 매체를 통해 비트 스트림 형태로 전송되며, 이는 전기 신호(유선) 또는 전파(무선)로 변환된다.

 

 

 


패킷

 

데이터를 일정 길이로 자른 전송 시 최소 단위. 벽돌의 개념

작은 단위의 정보 덩어리이며 데이터를 전송할 때 데이터를 나누어서 보내는 방식으로 사용

네트워크 계층에서 사용되는 데이터 단위로서 기본적으로 Packet이라고 부르지만, Segment, Datagram, Frame 등 모든 계 층의 데이터 단위를 총칭하는 말이기도 하다.

  • Segment : Transport(전송) 계층에서 사용하는 데이터 는 Segment(세그먼트)로 불린다
  • Datagram : Network(네트워크) 계층에서 사용되는 데이터 단위 (= Packet)
  • Frame : 2계층과 1계층에서 사용되는 데이터 단위. 모두 상위계층의 데이터 단위를 받아서 필요한 헤더를 붙여서 만든다.

 

패킷의 구조

 

헤더(Header): 출발지 및 목적지 주소(SA/DA), 패킷 전송에 관련된 제어 정보(전송 순서, 오류 검출 및 복구 정보 등)이 포함되며, 프로토콜의 특성에 따른 다양한 정보가 포함된다.

 

페이로드(Payload): 실제로 전송되는 정보를 포함한다.

 

트레일러(Trailer): 패킷의 끝을 나타내는 정보를 포함한다. 오류 검출을 위한 체크섬 또는 CRC (순환 중복 검사) 값이 포함된다.

 

 

 


Wireshark를 통해 캡쳐한 패킷 구조 이해

 

Wireshark는 전송되는 패킷을 캡처하여 확인해 볼 수 있으며, 네트워크 트래픽을 분석하고 디버깅하는 데 유용한 도구이다.

 

 

 

헤더 정보 확인

 

다음은 캡처한 패킷 중 DNS 패킷 하나를 선택한 것이다. DNS는 Application Layer에 해당한다.

아래의 바이트들은 헤더에 해당한다.

 

 

2계층(데이터링크 계층)에 해당하는 Ethernet II 프로토콜

 

목적지 주소(DA)와 발신지 주소(SA)를 확인할 수 있다.

DA에 해당하는 Fortinent_eb:64:b2 (08:5b:0e:eb:64:b2)SA에 해당하는 IntelCor_2b:bb:b4(a0:c5:89:2b:bb:b4)이다.

 

 

 

3계층(네트워크 계층)에 해당하는 IPv4 프로토콜

 

 

 

 

4계층(전송 계층)UDP 프로토콜

 

 

 

응용 계층에서의 DNS 프로토콜

 

 

즉 캡쳐된 DNS의 계층별 프로토콜을 정리해 보면 다음과 같다.

 

2계층(Datalink layer) : Ethernet II

3계층(Network layer) : IPv4

4계층(Transport layer) : UDP

5계층(Application layer) : DNS

 

 

 

DNS 패킷의 레이어 구조를 좀 더 자세히 살펴보겠다. 다음은 DNS의 패킷의 헤더 바이트이다.

 

 

계층 별 FieldEncapsulationlayer 구조이다. DNS packet은 총 데이터링크 계층에서 14byte, 네트워크 계층에서 20byte, 전송 계층에서 8byte, 응용 계층에서 41byte인캡슐레이션 되어 있는 구조이다.

 

 

 


 

네트워크 지연

 

Transmission delay (전송 지연)

 

네트워크에서 데이터가 한 지점에서 다른 지점으로 전송되는 데 걸리는 시간, 벽돌을 올려놓는 것

패킷의 크기(L)와 네트워크 대역폭(R)에 따라 좌우된다.

  • R=100bit, L=1000bit일 때 (R : 초당 전송 비트 수, L : 패킷의 총 비트)
  • Transmission delay : 10초

 

 

Propagation delay (전파 지연)

 

링크의 물리매체(광섬유, 꼬임 쌍 동선)등에 의해 좌우됨. 벽돌을 운반하는 것

 

 

Processing delay (처리 지연)

 

처리 지연. 무시할 만한 수준. 라우터에서의 출력 링크 결정, 비트 수준 오류검사 등

 

 

 


 

Packet Switching(패킷 교환)

 

데이터를 패킷 단위로 분할하여 전송하는 방식이다.

 

 

 

 

Throughput(처리율) : 종단과 종단 간에 비트가 전송되는 속도. bit/sec 실제 전송률.

평균 처리율은 병목현상에 의해서 Bottleneck Link(가장 전송률이 작은 Link)가 결정할 확률이 크다.

 

Bandwidth(대역폭) : 패킷의 전송률(R)

 

Routing : 경로를 결정

Forwarding : 경로로 전송

 

Store-and-forward

패킷은 라우터에 도착한 후에 전송되기 전에 저장된다. 다음 링크로 전송하기 전에 패킷이 라우터에 도착해야 한다.

패킷은 하나씩 옮기는 개념이다 -> 오류 검사를 위해서

Transmission delay가 10초일 때 : 패킷 세 개 전송 시 40초가 걸린다.

 

Queueing delay

패킷 스위칭의 경우, 전송 속도에 따라 패킷이 큐에서 대기하게 되며, 해당 딜레이를 의미한다. 라우터에 비트가 도착하는 속도가 전송률보다 빠를 경우 발생한다.

Multiflexing effect: 여러 개의 input port에서 들어온 비트들이 하나의 output port로 나가고 싶어한다면 이 때 패킷들은 Queue에서 대기한다.

 

패킷 스위칭의 문제 : 대기 시간이 정해지지 않았다. 버퍼의 용량이 꽉 찬 경우 폐기(Drop)하여 패킷 손실이 일어난다.

La/R이 1에 가까울수록 평균 Queueing Delay가 기하급수적으로 증가한다 (a:패킷이 도착하는 평균 속도)

La/R이 1보다 커지면 평균 지연이 무한대로 커진다.

 

 

 


Circuit Switching(회선 교환)

 

서킷 스위칭은 데이터를 전송하는 데 사용되는 다른 방법이다.

연결 설정 단계에서 송신자와 수신자 간에 전용 경로(서킷)를 설정하고, 전송되는 동안 경로를 유지한다.

예시로는 전화 통화가 서킷 스위칭을 사용한다.

 

과정

 

1. 경로 결정(Routing)

2. 경로에 있는 라우터에 예약

3. 실제로 데이터를 전송

 

Circuit switching의 방식

 

1. Time division multiplexing

시간을 분할하여 정해진 시간에 예약하여 쓰는 방식

시간을 일정 주기의 프레임으로 구분하고 각 프레임은 고정된 시간 슬롯으로 분할, 연결 설정 시 하나의 시간 슬롯이 할당.

 

2. Frequency division multiplexing

전용 회선의 주파수 대역폭을 여러 개의 작은 대역폭으로 분할하여 전용 회선을 공유한다.

 

 


패킷 스위칭 vs 서킷 스위칭

 

패킷 스위칭 : 서킷 스위칭보다 패킷 스위칭이 많은 사용자를 수용 가능하다. 네트워크를 공유하고 성능 측면에서 서킷 스위칭보다 낫다.

사용자들이 동시에 통신 회선을 사용할 확률이 패킷 스위칭이 낮음.

 

서킷 스위칭 : Queueing delay가 존재하지 않는 것이 패킷 스위칭과 비교하였을 때 장점중 하나이다.

 

 

 

 

 


References

 

Data Communications and Networks, 4th Edition, Forouzan, McGraw-Hill

Computer Networking: A Top-down Approach, 6th Edition, Kurose and Ross, 2013
 
 
반응형

BELATED ARTICLES

more