Home (웹해킹) 1-2. 네트워크와 프로토콜 (1)
Post
Cancel

(웹해킹) 1-2. 네트워크와 프로토콜 (1)

프로토콜이란 컴퓨터끼리 소통하기 위한 약속이다.

하지만 프로토콜에 대해 이야기하기 전에 그 약속이 오가는 공간인 네트워크의 구조를 먼저 이해해야 한다.
우선 네트워크란 Net+Work로 그물로 연결되어 있는 상태에서 일을 한다는 것이다.

컴퓨터 네트워크로 한정지어 말하면 여러개의 컴퓨터나 기기를 유선 또는 무선으로 연결해서
데이터와 리소스를 공유할 수 있는 통신 체계
이다.

데이터 통신

이렇게 네트워크를 통해서 전달되는 데이터는 0과 1로 이루어진 bit 신호이다.
이 때 보낸 쪽과 받는 쪽이 데이터를 해석하는 방법이 다르다면 원하는 정보를 전달할 수 없다.
그렇기 때문에 데이터를 다루는 일정한 규칙이 필요하고, 이것이 프로토콜이다.

패킷 교환

그러면 컴퓨터 간의 그물은 어떻게 구성이 되어있을까?
간단하게 파이프 이미지로 연결이 되어있다고 하면 ㅁ은 컴퓨터, -를 선으로 보고

1
2
3
ㅁ-----ㅁ
ㅣ
ㅁ-----ㅁ

와 같다고 볼 수 있다.

그러면 각 컴퓨터가 1:1 통신을 하기 위해서는 파이프가 몇 개가 필요할지 생각해보면
컴퓨터를 노드, 선을 간선이라 보면 완전 그래프의 형태로 N개의 노드에 N(N-1)/2개의 파이프가 필요하다.

컴퓨터가 많아질수록 필요한 파이프가 너무 많아지므로 회선이 아주 많은 교환기에 전송하는 방법을 사용한다.
각 컴퓨터들은 교환기까지만 데이터를 전송하고, 이 교환기끼리 회선이 있어서 데이터를 목적지까지 중계해준다.
이렇게 하면 모든 컴퓨터를 1:1로 연결하지 않아도, 교환기를 거쳐 원하는 곳으로 데이터를 보낼 수 있다.

또, 데이터를 전송할 때 패킷이라는 작은 단위로 나눠서 전송된다.
만약 큰 데이터를 그대로 전송한다면 회선을 독점하며 전송이 되고, 그 동안 다른 데이터는 해당 선을 사용할 수 없다.

하지만 여러개의 컴퓨터가 동시에 데이터를 전송하는 상황이기 때문에 회선을 더욱 효율적으로 사용해야만 한다.
그렇기에 하나의 회선을 여러 데이터 조각들이 섞여 이동하면서 효율적으로 쓸 수 있다.

네트워크의 범위

연결된 네트워크들은 그 규모에 따라 크게 LAN과 WAN으로 나뉜다.

LAN(Local Area Network)
LAN이란 집, 사무실 같은 좁은 공간에서 컴퓨터가 연결된 지역 네트워크이다.
거리가 짧기 때문에 데이터를 주고받는 속도가 매우 빠르고, 구축 비용이 저렴하다.
우리가 흔히 쓰는 와이파이나 이더넷이 여기에 속한다.

WAN(Wide Area Network)
WAN은 위의 LAN들이 모여서 더 넓은 범위를 연결하게 된 것이다.
도시와 도시, 나라와 나라처럼 멀리 떨어진 곳을 연결한 광역 네트워크라고 할 수 있다.
이렇게 먼 거리는 직접 선을 깔 수 없으므로 통신사의 케이블을 빌려서 연결하게 된다.

LAN보다 속도는 느리고, 거리가 멀어 신호가 약해질 수 있으며, 통신사의 것을 사용하기에 비용이 생긴다.

큰 흐름을 보면 집에서 라우터로 LAN을 통해 보내고, WAN을 통해서 먼 곳의 라우터까지 보내서 먼 곳과 통신한다.

프로토콜

이제 다시 컴퓨터끼리 소통하기 위한 약속인 프로토콜 이야기로 돌아오자.

만약 컴퓨터를 만드는 회사마다 프로토콜이 다르다면 호환 때문에 불편한 일이 계속 생길 것이다.
이를 통일하기 위해서 OSI 참조 모델이 등장했고, 데이터 통신을 단계로 나누고, 이 모델에 따라 프로토콜을 정의했다.

지금 이 OSI 모델은 실제로 사용되지 않지만 설명하는데 유용하므로 네트워크를 배울 때 항상 등장한다.

사용되지 않는 이유는 모델이 기술 개발 속도를 따라가지 못했기 때문으로 복잡한 모델을 만들고 있을 때
미 국방성에서 개발한 TCP/IP 프로토콜이 실용성을 앞세워 인터넷의 성장이 이뤄졌고, 사실상 표준이 되었다.
그렇기에 OSI 모델은 이론적인 모델로 남게 되었다.

OSI 7 layer

이 모델은 데이터 통신을 7개의 단계로 나누고 이를 각각 Layer(계층) 라고 부른다.

image

  • Layer 1 (물리 계층) : 전기, 기계적 부분의 전송
  • Layer 2 (데이터 링크 계층) : 인접한 기기에 대한 데이터 전송
  • Layer 3 (네트워크 계층) : 전송 규칙이나 수신처 결정
  • Layer 4 (전송 계층) : 신뢰성이 높은 전송
  • Layer 5 (세션 계층) : 데이터를 주고받는 순서를 관리
  • Layer 6 (표현 계층) : 데이터의 형식을 결정
  • Layer 7 (응용 계층) : 사용자에게 네트워크 서비스 제공

이렇게 각 layer마다 역할과 규칙을 주고, 여러 프로토콜로 데이터 통신을 구현하는 모델이다.
데이터를 송신할 때는 Layer 7 -> Layer 1 순서로, 수신할 때는 역순인 Layer 1 -> Layer 7로 진행된다.

이 설계도를 따라 프로토콜이 만들어지고, 각각 독립해 있어서 다른 layer에 영향을 끼치지 않는다.
기본적으로 하위 계층이 상위 계층을 위해서 일하고, 상위 계층은 하위 계층에 관여하지 않는다.

캡슐화

위의 그림을 보면 계층을 지나면서 데이터가 점점 길어지는 것을 알 수 있다.
데이터를 제대로 목적지까지 보내기 위해서는 데이터 그 자체 말고도 필요한 여러가지가 있다.

이런 것을 Protocol Data Unit(PDU)라고 하며 각 계층을 지날 때마다 헤더(Header)라는 정보가 붙는데
여기에는 보내는 순서, 포트 번호, IP 주소, MAC 주소 등이 담긴다.

각 계층마다 추가되는 정보는 다음과 같다.

전송 계층(L4): 포트 번호(어떤 프로그램으로 보낼지)가 포함된 헤더를 붙여 세그먼트(Segment)를 만든다.
네트워크 계층(L3): IP 주소가 포함된 헤더를 붙여 패킷(Packet)을 만든다.
데이터 링크 계층(L2): MAC 주소가 포함된 헤더를 붙여 프레임(Frame)을 만든다.
이렇게 Layer를 지나면서 필요한 정보들이 캡슐처럼 감싸지며 추가된다.


결국 통신에는 프로토콜이 필요하고, 단 한 개의 프로토콜이 아닌 다수의 프로토콜이 계층을 이루어 작동한다.
상위의 프로토콜이 하위의 프로토콜을 이용하며, 하위 프로토콜은 상위 프로토콜에 데이터를 전송할 수 있는 구조다.

프로토콜이 결정하는 것

프로토콜은 데이터를 어떤 구조로 하고, 헤더에는 어떤 정보를 순서대로 넣을지 결정한다.
데이터를 주고받는 순서와 받는 속도의 차이 등도 프로토콜이 결정하는 것이다.

TCP/IP 4계층

앞서 말했듯 OSI 7계층은 이론적인 표준에 가깝고, 실제 인터넷은 TCP/IP 프로토콜을 기반으로 돌아간다.
TCP/IP는 4개의 Layer로 이루어져 있으며 인터페이스, 인터넷, 트랜스포트, 애플리케이션 계층이 있다.

인터페이스 계층은 OSI의 1계층(물리)과 2계층(데이터 링크)을 합친 것과 비슷하다.
실제 데이터를 물리적인 케이블로 전송하고, LAN 안에서 기기 간 통신을 담당한다. (Ethernet, Wi-Fi 등)

인터넷 계층은 OSI의 3계층(네트워크)과 비슷하다.
패킷을 목적지까지 보내기 위한 경로를 설정하고 주소를 지정한다. (IP, ARP, ICMP 등)

트랜스포트 계층은 OSI의 4계층(전송)과 비슷하다.
통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다. (TCP, UDP)

애플리케이션 계층은 OSI의 5(세션), 6(표현), 7(응용) 계층을 하나로 합친 것과 같다.
사용자가 실제로 사용하는 프로그램이나 서비스가 동작하는 계층이다. (HTTP, SSH, DNS 등)

우리가 웹 브라우저를 켜는 순간 애플리케이션 계층에서 시작해서
트랜스포트 -> 인터넷 -> 인터페이스 계층을 거쳐 전기 신호가 되어 나가는 것이다.


이렇게 간단하게 OSI 7계층과 TCP/IP 4계층을 통해 네트워크 구조와 프로토콜이 무엇인지 봤다.
다음 글에서는 각 계층에서 실제로 사용되는 주요 프로토콜들을 구체적으로 살펴보겠다.

This post is written by PRO.