SSL이 TLS의 초기버전으로 근래에는 SSL은 지원이 중단되었다. 그럼에도 SSL/TLS라 부르거나 심지어 SSL이라고 부르기도 하는데, 엄밀하게는 TLS를 가리키는 것이다. 정교한 언어 구분을 뒤로하고 그냥 운명공동체적 단어라고 생각하면 마음이 편하다. 갤럭시 10도 갤럭시 노트도 갤럭시니까 뭐.
오만 일에 발을 다 걸치고 있기 때문에 계층 분류가 다채롭다.
3.2. DNS
Domain Name Service. IP 주소를 읽기 좋은 문자로 변환하여 제공하며, 그 매핑테이블을 관리한다.
IP주소에도 모종의 규칙성이 있기는 하지만 이는 전화번호의 011/010/070 수준의 규칙성에 불과하기에 사실상 임의적이라 봐야 한다. 네트워크단에서의 통신은 IP주소로 이루어지는데 수 많은 임의적 IP주소를 암기하거나 매번 찾아보는 것은 피곤한 일이다. "www.examples.com"따위의 문자열을 "191.165.1.0"처럼 대응되는 IP주소로 변환하고, 그 매핑테이블을 관리한다.
HTTP와 마찬가지로 오해받을 수 있으나 7계층 네트워크 서비스이다.
DNS 서버를 전세계에 분산 배치해 안정적이고 빠른 서비스를 제공한다.
3.3. TCP/UDP
3.3.1. TCP
Trasmission Control Protocol. 인터넷 연결의 핵심 프로토콜 중 하나로, 연결지향으로 연결 신뢰도와 순서를 보장하는 대신 네트워크 자원 소모가 많고 느린 프로토콜이다.
연결지향이란, 3 way handshake 과정을 통해 서로 연결을 확립한 상호간에서만 데이터를 주고받는 특징을 의미한다.
연결 설정시와는 달리 B가 ACK/FIN을 별도로 전송한다. 동시에 보냈을 때 송신을 종료한다는 B의 FIN을 먼저 처리한다면, 그 후에 있을 신호 수락 응답인 ACK의 처리에 혼선을 빚는다. 물론 A는 ACK/FIN 패킷을 수신한 후 Time-Wait 상태에서 240초간 잉여패킷을 받을 시간을 확보하긴 하지만, 안전하고 명확한 종료를 위해 일단 구분하고 본다.
네트워크단에서 IP주소는 단말을 가리킨다.(로컬 범위에서는 MAC이 단말을 가리킨다) 여러 통신이 이루어지는 상황을 가정하면 모든 통신정보가 IP주소 하나에만 의거해서 쌓이게 되면 처리가 곤란하다. 192.165.25.0:80 같이 IP주소 말미에 데이터가 도착하는 어플리케이션에 대한 라벨링을 추가함으로써 한 단말 내의 출발/도착 지점을 논리적으로 분할하여 원활한 처리를 도모하기 위함이다.
어차피 컴퓨터가 분류해야 될 거, 네트워크단에서 분류해주는 셈이다. 통신 단말에서 매번 분류하는 것보다 네트워크 단에서 미리 몇 비트(16비트) 내놓는 게 전체적인 컴퓨터리소스 효율 차원에서 유리하기 때문.
포트를 지정하지 않으면 동적으로 할당된다. 일반적인 사용자 입장에서는 사용하는 어플리케이션에서 이미 알맞은 포트를 지정하기에 신경쓸 일이 없는 반면, 서버 입장에서는 지원하는 어플리케이션에 부합하는 포트만 ON하고 나머지는 OFF해두는 것이 보통이라 올바른 포트 지정이 필요하다.
포트번호를 IP주소 말미에 설정하기에 IP주소와 같은 3계층으로 오해할 수 있다. 그러나 1-3계층은 호스트를 식별하고, 4부터는 호스트 내부의 프로세스를 식별하기에 4계층에 속한다.
프로토콜/포트지정을 올바르게 유도하기 위해 4계층 프로토콜과 함께 표기하기도 한다.
HTTP : TCP/80 또는 TCP/8080
HTTPs : TCP/443
3.4. IP
3.4.1. IP
Internet Protocol. 네트워크의 기본 프로토콜로, OSI 3 계층에서 호스트에 대한 논리적 주소를 할당한다.
32비트의 IPv4가 현재 가장 대중적이며, 주소 부족 문제 해결을 위해 등장한 128비트의 IPv6가 있다.
편지를 써도 주소를 모르면 받는 주소를 쓸 수도 없고, 비운 채로 우체통에 넣어도 편지는 갈 곳이 없다. 이와 마찬가지로 통신 장치의 주소를 의미하는 IP주소가 없다면 통신이 이루어지지 않는다. 즉 표준이 변하거나 다른 프로토콜에 의하지 않는 이상, 통신을 위해서 통신 장치는 IP주소를 가져야 한다.
IP주소 할당은 기본적으로 정적인 방식에 의하는데, 이는 장치의 주소가 잘 변하지 않는 경우에는 큰 부담이 없다. 그러나 이 방식으로 카페에서 wifi를 쓰려면 카페가 유용할 수 있는 IP 대역 중 내 기기가 사용할 IP주소를 할당받아 이를 기기에 직접 기재해야 하고, IP주소 포화 문제로 다음에 가면 이를 반복할 확률이 높다. 즉 호스트 기기의 변화가 잦은 환경에서의 정적할당은 번거롭다.
따라서 이러한 할당문제를 자동화 프로토콜로 해결한 것이 DHCP이다. 그런데 내 주소지가 자주 변한다면 나에게 오는 모든 편지를 확실하게 수령하기는 어려울 것이다. 마찬가지 이유로 동적할당은 자동으로 할당된 IP주소가 관리자 설정에 따라 수시간-며칠 범위의 임대시간동안 유지되는 것이지, 할당 IP주소가 수시로 변하는 것은 아니다. Dynamic은 Frequent보다 modifiable/automatic에 가까운 의미를 갖는다.
일반적으로 Global IP는 정적으로 할당된다.
3.4.3. NAT
Network Address Translation. IP주소를 IP주소로 변환하는 기술. 주로 사설 IP주소와 글로벌 IP주소를 매핑한다.
라우터/방화벽 장비에서 사용되는 것으로, 하나의 글로벌 IP를 통해 여러 호스트 장치가 인터넷에 접속하기 위함이다.
서브넷은 상위 네트워크에서 소분된 하위 네트워크들 중 일부를 특정하는 의미이며, 서브넷 마스크는 IP주소와의 연산으로 해당 IP주소가 속한 서브넷의 IP대역을 도출하기 위한 장치이다.
서브넷 마스크는 네트워크 비트와 호스트 비트를 1과 0으로 구별한다.
서브넷 마스크는 연속된 네트워크비트(1) 이후에 호스트비트가(0) 연속되는 형태를 가진다.
IP주소와 서브넷마스크로 네트워크주소와 브로드캐스트주소가 도출되며, 이 구간이 해당 IP주소가 속한 서브넷의 IP대역이다.
네트워크주소 = IP주소 and 서브넷마스크
브로드캐스트주소 = (서브넷마스크 반전) or 네트워크 주소
예시는 아래와 같다.
IP주소
서브넷마스크
네트워크주소
브로드캐스트주소
1
10.0.0.2
255.0.0.0
10.0.0.0
10.255.255.255
00001010.0.0.00000010
11111111.0.0.0
00001010.0.0.0
00001010.1x8.1x8.1x8
2
10.0.158.5
255.0.0.0
10.0.0.0
10.255.255.255
00001010.0.10011110.00000101
11111111.0.0.0
00001010.0.0.0
00001010.1x8.1x8.1x8
3
110.5.0.1
255.0.0.0
110.0.0.0
110.255.255.255
01101110.00000101.0.00000010
11111111.0.0.0
01101110.0.0.0
00001010.1x8.1x8.1x8
4
110.5.0.1
255.128.0.0
110.0.0.0
110.255.255.255
01101110.00000101.0.00000001
11111111.10000000.0.0
01101110.0.0.0
00001010.1x8.1x8.1x8
5
110.127.0.1
255.128.0.0
110.0.0.0
110.127.255.255
01101110.011111111.0.00000001
11111111.10000000.0.0
01101110.0.0.0
01101110.01x7.1x8.1x8
6
110.255.0.2
255.128.0.0
110.128.0.0
110.255.255.255
01101110.11111111.0.00000010
11111111.10000000.0.0
01101110.10x7.0.0
01101110.1x8.1x8.1x8
7
110.255.0.2
255.192.0.0
110.192.0.0
110.255.255.255
01101110.11111111.0.00000010
11111111.11000000.0.0
01101110.110x6.0.0
01101110.1x8.1x8.1x8
슈퍼넷팅(Supernetting)
서브넷팅에 따라 분류된 네트워크들을 하나로 합치는, 즉 서브넷팅의 반대 과정이다.
전체 네트워크의 엔트로피 감소와 라우팅 효율 향상에 유리하다.
서브넷 마스크의 특성상 서브넷팅은 유연하지만, 슈퍼넷팅은 그렇지 않다.
병합대상 서브넷은 서로 연속된 IP대역으로서
바람직하게는 병합될 슈퍼넷에 포함되는 모든 대역이어야 한다.(충돌)
병합대상 서브넷
서브넷 IP대역
포괄하는 슈퍼넷 IP대역
슈퍼넷
A
192.168.1.0/24
192.168.1.0 - 192.168.1.255
192.168.0.0 - 192.168.3.255
192.168.0.0/22
B
192.168.2.0/24
192.168.2.0 - 192.168.2.255
클래스 분류
5가지의 클래스로 나누어 IP대역을 분류하여 할당하는 방법이다.
초기의 IP주소 분류 기준이었다. 그러나 분류가 투머치러프할 뿐만 아니라, 대규모 네트워크에게 할당되는 IP 주소 대역이 가장 큰 비중을 차지하는 가분수 카테고라이징으로 인해 낭비되는 IP주소가 많아 현재는 개념적으로만 잔류할 뿐이다.
초창기에 네트워크 기술은 고급기술로 비용도 비싸고 접근성도 낮은 편이었던 터라, 이를 운영할 수 있는 덩치를 가진 기관이나 기업 위주로 네트워크를 구성할 것이라고 상정하였다. 따라서 대규모 네트워크에게 가장 많은 IP대역이 할당되고, 규모가 작을수록 운영하기가 벅찰 것이라 생각해 적은 IP대역을 할당한 것이다.
클래스
IP대역
서브넷 마스크
내용
A
0.0.0.0 ~ 127.255.255.255
255.0.0.0
대규모 네트워크
B
128.0.0.0 ~ 191.255.255.255
255.255.0.0
중규모 네트워크
C
192.0.0.0 ~ 223.255.255.255
255.255.255.0
소규모 네트워크
D
224.0.0.0 ~ 239.255.255.255
없음
특정장치 네트워크
E
240.0.0.0 ~ 255.255.255.255
실험용도 예약
CIDR(Classless Inter-Domain Routing)
기존의 클래스 분류를 대체하는 주소할당 방식으로, IP주소 대역/서브넷을 유연하게 분류한다.
홉수를(목적지까지 도달하기 위해 필요한 라우터의 수) 기반으로 최단경로 탐색하는 라우팅 프로토콜.
여러 라우팅 테이블 중 최소 홉 테이블을 선택하면 되는 것이라 비교적 알고리즘이 단순하여 설계가 비교적 간단한 반면, 라우터의 개수를 기반으로 하기에 간접적인 경로 최적화에 불과하다는 한계도 있다. 따라서 네트워크 규모가 커질 수록 적합성이 낮아진다.
홉 수가 16이상인 경우 도달 불가능한 것으로 간주되는 것은 프로토콜 설계부터 소규모 네트워크의 폐쇄적 환경을 상정하였음을 암시한다.
OSPF(Open Shortest Path First)
비용을(100000000/링크대역폭) 기반으로 최단경로를 탐색하는 라우팅 프로토콜.
RIP에 뿌리를 두되 홉 수 계산의 최적화 한계와 홉 수 제한의 한계를 극복하기 위해 등장한 프로토콜이다. 경유하는 라우터의 수가 아니라 링크대역폭(bps, bits per second : 초당 전송 가능한 최대 용량), 즉 전송 속도를 기반으로 하여 RIP의 최적화 한계를 극복하고, RIP과 같은 제한을 두지도 않는다.
경유하는 라우터의 수를 합연산하기만 하면 되는 RIP와 달리 dijkstra 알고리즘으로 비용이 가장 적은, 즉 소요 시간이 가장 적은 경로를 계산해야 하기에 리소스 소모가 상대적으로 많다. 대신 라우팅 속도/시간 자체로 계산되기에 직접적인 경로 최적화를 도모하며, 서브넷과 유사한 영역이라는 개념 도입으로 계층적 설계와 관리 편의를 갖춘다.
데이크스트라 알고리즘 : A와 B 사이의 최단 경로를 찾아라.
BGP(Border Gateway Protocol)
다음을 포함하는 여러 경로 속성들을 기반으로 최단 경로를 탐색하는 라우팅 프로토콜.
로컬 선호도 : 자기 자율 시스템(AS)의 선호도 : 높음 선호
AS 경로 : 경유하는 AS의 수 : 적음 선호
MED : 다중진입
origin : 경로의 유래
Next hop : 다음 라우터의 IP 주소
community : 경로의 한정 조건
위 속성들의 우선순위를 변경/제외 하는 등 라우팅 정책을 유연하게 꾸밀 수 있다. RIP/OSPF가 동적 라우팅 프로토콜이라면 BGP는 사용자설정 동적 라우팅 프로토콜이라 말할 수 있다. 어떻게 보면 정적 라우팅 프로토콜이라고도 볼 수 있다.
라우팅 정책을 유연하게 설정하기 위해 만들어진 프로토콜로, 애초에 절대적 차원의 최적화를 제1요소로 하는 프로토콜이 아니다. 따라서 속도도 느리고 리소스 소모도 크다.
3.6. ARP/RARP
Address Resolution Protocol/Reverse ARP. IP주소와 MAC주소 사이의 변환를 담당한다.
MAC주소는 단말에 고유한 물리적 주소 또는 식별표지로, 유동적/논리적 식별표지인 IP주소와 다르다.
IP주소는 L3이상에서 경로 지정에 이용되는 값이고, MAC주소는 L2에서 실제 통신 단말의 특정을 위해 사용되는 값이다. 간혹 IP주소를 설명하고 MAC주소를 설명하면서 "사실 실제 통신에서는 IP주소가 아닌 MAC주소를 사용한다"라는 등의 표현을 볼 수 있는데, 둘 다 쓰인다. 쓰이는 순서가 다를 뿐이다. 네트워크단에서부터 MAC주소를 이용해 통신하는 글로벌 표준 프로토콜은 없다. 현실적으로 불가능하기 때문이다.
네트워크단에서부터 MAC주소를 이용해 통신하는 것은 실현하기 어렵다. 왜냐하면 현대 통신 인프라는 국가단위에서나 Mesh형으로 연결하고, MAN > LAN으로 범위가 작아져야 Star형으로 연결해 관리 편의를 도모하는데, 만약 네트워크단에서부터 MAC주소를 이용해 통신하려면 세계 각국에 퍼진 단말들을 Mesh형으로 연결해야 하는 기가 막힌 상황에 부딪힌다.
만약 MAC주소가 무작위적이지 않고 지리적/논리적 규칙성을 가졌다 하면 꼭 Mesh형으로 하지 않아도 모듈형 중간관리를 두어 Star형처럼 관리할 수도 있다. 그 계층적 규칙성이 유연한 형태로 분리된 모듈형 프로토콜이 IP/IP주소이다.
MAC이란 (Media Access Control Address)로, 이름 그대로 미디어(현대의 네트워크라는 단어가 더 적절한)에 접근하기 위한 주소인데, NIC에 할당된 고유 식별자이다.
16진수로 표현된 6바이트값으로 구성된다
상위 3바이트의 제조업체 식별코드, 하위 3바이트의 장치 고유 시리얼 넘버로 구성된다
a4:53:60:cd:4f:0d
ARP
IP주소를 MAC주소로 변환한다.(그 매핑테이블을 관리한다)
ARP Request : ARP 장치의 브로드캐스트 "수신인 192.168.0.2로 데이터 왔는데 이 IP주인?"
ARP Reply : 호스트 X "저요(MAC주소 첨부)"
ARP장치는 이런 Reply 를 기반으로 매핑테이블을 관리한다.
ARP Reply를 검증 없이 최신정보를 우선으로 덮어 쓰는 관계로 보안상 취약점이 있다.
해커 "저요"
호스트 X "저요"
해커 "저요"
해커 "저요"
...계속
RARP
MAC주소를 IP주소로 변환한다.(그 매핑테이블을 관리한다)
RARP Request : 호스트 Y "제 IP주소좀 알려주세요.(MAC주소 첨부)"
RARP Reply : "192.168.1.5"
ARP 장치는 이런 Reply를 기반으로 매핑테이블을 관리한다.
RARP는 DHCP로 대체되어 사라졌다.
NIC(Network Interface Card)
ARP 요청/응답의 통로역할을 하는 하드웨어 모듈이다. 보통 랜선이 연결되는 부분의 내부에 PCB 형태로 위치한다. ARP 요청/응답만 하는 것은 아니고, 유/무선 통신으로 주고 받는 데이터의 통로인데, 목적지 MAC 주소 기반의 필터링도 한다.
ARP 데이터는 이더넷 프레임의 페이로드에 포함되어 전송된다. ARP가 2.5계층 프로토콜이라거나, 2계층과 3계층 사이에서 작동한다는 표현을 한번 쯤 봤을 법한데, 여기에 그 이유가 있다. 사실 계층 구분은 헤더를 통한 캡슐화로 각 계층의 독립적 모듈화를 추구하는 것인데, ARP 데이터를 딱히 헤더/계층화로 구분하지는 않지만 구조체로 엮는 방식이 헤더와 유사하기 때문.
2계층은 물리주소, 3계층은 논리주소/경로라 구별한 다음 이에 맞춰 생각해보니 물리주소와 논리주소간 매핑은 들어갈 계층이 없는 것이다. 애초부터 2단을 물리주소, 4단을 논리주소라 하고 3단을 매핑테이블로 했어도 되는 것이긴 하지만, 사실 많은 표준이라는 것은 권위 기관의 쪼에 따른다. 다만 이는 표준 제정에 따르는 필연적인 어려움이기에 대체로 관용적으로 수용하는 태도를 보인다.
Hardware Type : 2계층 네트워크의 물리적 유형을 표시한다.
값
유형
의미
0x0001
Ethernet
ethernet 네트워크 장치. 가장 일반적인 값
0x0013
IEEE 802.11
Wifi
Protocol Type : 상위 계층 프로토콜을 의미한다.
값
프로토콜
내용
0x0800
IPv4
IPv4 패킷인 경우
0x86DD
IPv6
IPv6 패킷인 경우
0x0806
ARP
ARP 요청/응답 패킷인 경우
HW address length : MAC 주소의 길이를 byte단위로 나타낸다. 일반적으로 6이다.
PR address length : 3계층 프로토콜의 길이를 byte단위로 나타낸다. 보편적인 IPv4의경우 4이다.
Preamble : 송신 시작을 알리고 데이터 통신의 신뢰성을 위한 장치간 비트 동기화를 도모하는 8바이트 필드. 이 다음부터 유효한 프레임이 전달됨을 알린다. 보통 이더넷 헤더와 함께 설명되지만 장치간 동기화 신호일 뿐이고 이더넷 헤더는 아니다. 물리적 신호 차원의 작동이기에 엄밀히는 1계층에 속하며, 이더넷 헤더와 함께 설명되는 것은 이것이 1.5계층 정도로 인식되어진다는 것을 암시한다.
10101010..로 구성된 비트열이다.
SFD(Start of Frame Delimeter) : 프레임의 시작을 알리는 Preamble의 마지막 1바이트 부분으로, 최초에는 별도로 구별하지 않던 것을 이후 표준화하며 분리하였다. 마지막 11로 프레임 시작을 분리한다.
10101011로 구성된 비트열이다.
즉 초기 8바이트는 10101010........10101011의 비트열이다
Destination/Source Address : 수/송신 장치의 MAC주소를 나타나는 6바이트 필드
Ethernet Type : 상위 계층(L3) 프로토콜을 나타내는 2바이트 필드
Data : payload.
TCP/IP와 같은 상위 프로토콜과 달리 헤더를 4바이트 단위로 이쁘게 자르지 않는 모습을 보인다. 대부분의 컴퓨터 시스템에서는 소프트웨어적으로 4바이트 단위로 메모리 주소를 정렬한다. 따라서 최적화를 위해 프로토콜 헤더 역시 4바이트 단위로 나누는 반면, 이더넷은 NIC하드웨어가 쌈마이웨이로 처리하니까 신경쓰지 않는다. 낑겨진 2바이트를 보자니 애처로운 마음도 든다.
최대 1500바이트의 값을 가지는데, 이 제한이 바로 MTU이다. 이더넷 프로토콜의 표준 규격이 1500바이트이기 때문. 이더넷 프로토콜 표준에 따르면 이더넷 프레임의 크기는 최대 1518바이트이며, 14바이트의 Preable과 헤더, 4바이트의 트레일러를 제하면 1500바이트의 페이로드 용량이 남는다.
덧붙이자면 MTU는 확장과 이식에 능통한 의미이기에 반드시 point-to-point의 이더넷 프로토콜에서 한정되어 사용되지는 않는 것은 아니고, 라우터 등 네트워크 장비 차원에서도 동일한 의미로 사용된다. 그 영향을 받아 네트워크 장비차원 MTU의 디폴트값도 1500바이트다.