일단 씻고 나가자
[널널한 개발자 TV] 네트워크 기초 이론 본문
(본 포스팅은 해당 영상의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.)
널널한 개발자 TV. (2022, 03 01).
네트워크 기초 이론 [비디오 파일].
검색 경로 https://www.youtube.com/playlist?list=PLXvgR_grOs1BFH-TuqFsfHqbh-gpMbFoy
계층별 Layer와 실제 구성, 각 층의 소통 방법, 각각의 식별자와 역할
OSI 7 Layer는 이론적인 부분이며, 실체 구현에 관련된 것이 오른쪽 그림.
전송, 네트워크 부분을 TCP/IP로 구현한 것이며, 실제 물리 계층에서 네트워크에 정보를 전달하고 받는 하드웨어 부품을 NIC (Network Interface Card/Controller = LAN 카드),
그러한 하드웨어를 움직일 수 있도록 하는 것이 device Driver라 한다.
Kermel 의 구성요소를 User mode application으로 추상화 시엔 file의 형태로 추상화하는데, 이때 네트워크 관련된 것일 경우 해당 file을 socket이라 한다. 즉, TCP를 User mode application이 접근할 수 있도록 추상화 한 것이 socket이다.
[식별자]
각 층에서의 식별자가 존재한다.
- Transport 계층 : Port 번호
- Network 계층 : IP 주소 (Host의 식별자)
이때 host란 인터넷에 연결된 컴퓨터이다.
IP 주소는 하나만 부여되는 것이 아닌, NIC 하나에 여러 IP를 동시에 바인딩 할 수 있다.
즉, 하나의 컴퓨터는 여러 IP 주소를 가질 수 있음.
- Hardware 계층 : MAC 주소 (NIC의 식별자)
host에 장착된 부품의 주소. NIC의 주소이지만, 바꿀 수도 있다.
Host, Switch, Network
네트워크의 대표적인 예는 Internet이며, 이 인터넷은 Host 들로 이루어진다.
Host는 네트워크를 이용하는 주체인 Endpoint(Client, Server, 둘 다 아니라면 peer)와
네트워크를 구성하는 주체인 Switch (ex. Router)으로 나뉜다.
즉, Intenet은 Router, DNS를 핵심으로 여러 Host가 연결된 그물이다.
[Host]
Host의 식별자는 IPv4 혹은 IPv6를 사용하며, 주로 IPv4를 사용한다.
IPv4 -> 32bit (3자리 * 4) / IPv6 -> 128bit (4자리 * 8)
IP는 NetID 와 HostID를 합쳐 32자리로 구분하는데 (.을 하나로 본 기준으로),
이때 NetID가 몇 자리인지 알려주는 것이 Net mask이다.
Net mask는 255.255.255.0과 같이 255 혹은 0으로 이루어지는데, 이 이유는 IP의 각 뭉텅이를 2진수로 변환한 후 255 혹은 0으로 AND 연산할 시에 255부분은 원래 값 그대로, 0부분은 모두 0으로 나올 것이다. 그때 0으로 변환되지 않은 부분을 NetID로 분류한다.
(ex. 192.168.60.14 AND 255.255.255.0 == 192.168.60.0)
이를 표기하기 편하게 하도록 192.168.60.14/24와 같이 NetID 길이를 슬래시로 표기하는 방법도 있는데, 이를 프리픽스 표기법이라 한다.
[Port]
프로세스의 식별자. 하나의 컴퓨터에서 여러 작업 (ex. 크롬, 파이어폭스 창을 여러 개) 시에 어떤 작업에 어떤 정보를 전달하는지에 대한 식별자. (4계층에서 port 번호로 정해줌)
TCP/IP는 kernel mode으로 되어있기에 user mode (application)에서 접근할 수 있도록 자체적으로 interface를 제공하고 이는 본질은 file이나 socket이라 명.
Socket에 부여(binding)되는 정보에는 프로토콜, IP, Port 정보가 있으며, 이때 TCP를 사용하는 것이 스트림 소켓, UDP를 사용하는 것이 데이터그램 소켓이다.
HTTP 통신은 클라이언트가 요청 시에만 응답하고 연결을 끊는 (keep alive로 잠시 연장할 수 있지만) 단방향 통신이지만, 소켓 통신은 연결을 끊지 않고 실시간으로 데이터를 주고 받는 양방향 통신이라는 차이가 있다.
[Switch, Switching]
데이터 패킷 (단위)을 목적지까지 효율적으로 보내는 것을 스위칭이라 한다. (L3 단계 스위칭)
이때 목적지까지 중간중간 이어주는 교차로가 라우터, 즉 스위치이며, (인터넷은 수많은 라우터의 집합) 각 라우터들은 서로 통신하며 어느 길이 효율적인지 정보를 주고받는다. 이렇게 목적지까지 갈 수 있는 이정표의 역할을 라우팅 테이블이 담당한다.
네트워크 용어 및 개념
User 단계 (application, socket)에서 데이터를 전송하려면 데이터를 file 단위로 전송해야 한다. 이는 stream (단위) 형태로, 데이터가 많을수록 크기가 커지고 그 한계가 명확하지 않다.
이런 큰 stream 형태를 전송하기 위해 TCP 단계에선 큰 stream을 작은 여러 조각으로 나누게 되는데, 이렇게 잘린 단위를 segment (TCP : segment, UPD : data gram), 나누는 과정을 segmentation이라 한다.
IP 단계에선 이것에 정보를 추가하여 Packet 단위로 바뀌고, 이를 L1 단계에선 Frame 단위로 바꾼다.
(이때 Frame 단계로 바꾸는 것을 encapsulation이라 한다.)
segment의 각 조각의 최대 크기를 MSS(Maximum Segment Size)라 하고, 이는 Packet의 최대 크기에 의해 정해지는데 Packet의 최대 크기를 MTU(Maximum Transport Unit)라 한다. MTU는 1500bytes (1.5 megabyte) 정도로 아주 작다.
cmd에서 route print를 입력하면 창에 여러 정보들이 나오는데,
특정 [네트워크 대상]에 대하여 [네트워크 마스크]를 적용했을 때 [게이트웨이] 값이 나온다면 [인터페이스] IP로 향하라라는 의미이며, [매트릭]은 각 경로의 비용을 뜻한다.
즉, OS는 내부적으로 매트릭 값을 계산하여 가장 적은 비용의 경로를 통해 네트워크를 활용하며, 같은 PC에서 유선, 무선 모두 연결됐더라도 매트릭 값을 통하여 경로를 선정한다.
웹 서비스의 이해
초창기 웹 서비스는 CERN 입자 물리 연구소에서 티모시 버너스 리가 제안하였다.
웹 초창기 당시 여러 논문 및 정보에 대한 참고문헌을 일일이 검색해야 하는 불편함을 해결하고자 Link가 되는 방식을 고안하였고, 그러한 문서 형식을 HTML, 전달 방식을 HTTP로 칭하였으며, 연결된 모양이 거미줄을 닮았다 하여 Web이라 칭하게 되었다.
특성 문서 및 정보에 대해 보여지는 것(GUI 등), 데이터의 제어, 데이터 세 가지로 분류하는 것의 개념까지 설립하였다. 이는 유지보수 편의성에 의해 분류하게 되었다.
기존의 Web은 Client, Server로만 분리하여 TCP/IP 전제로 HTTP(Stateless) 연결만을 허용하였고, 이때 Client는 웹 브라우저를, 서버는 데이터 송수신만을 담당했다. (단방향 작용)
당시 서버는 정적인 HTML 자료만을 제공했는데, 따라서 웹 브라우저는 DOM (tree)를 분석하는 구문 분석 역할과 화면에 출력해주는 렌더링 엔진을 가지고 있었다. 이는 원격지 문서뷰어와 흡사했다. (HTTP 1.0)
이후 문서의 편의성(UI)을 위해 CSS가 추가되고, 사진 등의 데이터도 추가할 수 있게 된다.
(입력되는 순서 : HTML -> CSS -> 사진)
복잡성이 증가함에 따라 서버에서 데이터 처리만을 담당하는 역할이 또 분리되고, 처리한 데이터에 대한 상태를 기억하기 위해 Database가 탄생한다. Client 진영에서도 동적인 자료 및 동작 (연산)을 위해 JavaScript(MochaScript -> LiveScript -> JS)가 탄생하고 이를 브라우저가 담당한다. Client 또한 문맥의 기억을 위해 Cookie(Key:Value) 구현체를 탄생시킨다.
웹 서비스는 Web Server(정적 자원 view), WAS(Service, 비즈니스 로직 처리), DataBase로 구성된 3계층 구조(3 Tier-Architecture, 3 Tier Web Solution)로 보통 이루어져 있다.
DB 응답속도 및 WAS 연산속도를 전문적으로 모니터링하는 시스템을 APM(Application Performance Management)이라 한다.
이러한 3계층에서 사용자와 직접 소통하는 파트를 Front-End, 데이터 저장 및 서비스 제공을 위한 미들웨어 일부를 Back-End라 칭했다. 최근에는 SPA(Single Page Application, 필요한 리소스를 미리 다운 받아 놓고 필요한 데이터만 갱신)의 발전으로 Back-End에서 동적 페이지 자체가 아닌 데이터만을 전송해주고, Front-End에선 브라우저를 수정하는 코드를 작성하는 방식으로 구조가 바뀌었다.
https://velog.io/@dbstjrwnekd/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A0%95%EB%A6%AC2
Packet이란?
결과적으로 Network 계층에서의 데이터 단위를 뜻한다. 네트워크로 보내려는 데이터는 전송 계층에서 분해(Segmentation)되어 나눠지고, 이는 네트워크 계층에서 header를 붙여 Packet이라는 전송 단위가 된다. 이러한 Packet에 라우팅 될 다음 디바이스의 MAC 주소를 담은 것이 Frame 단위이다. (segment에서 header를 뺀 것이 payload, 이는 TCP 헤더만을 가짐)
(header = IP(L3, 20 bytes + TCP(L4, 20 bytes) / Packet = 1500 bytes, MTU)
추가로 header는 노출될 수밖에 없는 정보이며, payload를 조사하는 것을 DPI(Deep Packet Inspection)라 하며 이는 범법에 해당한다. (header와 payload는 계층별로 상대적 관점)
L2 Switch
물리 계층에서의 스위치는 MAC 주소로 이루어진다. MAC 주소는 48bit (6 * 8bit)로 이루어진다.
PC(Endpoint)가 NIC를 통해 케이블로 연결되었을 때, 가장 최초로 만나는 연결 지점을 L2 Access라 하고, 그것들을 묶어주는 것을 L2 Distribution, 그것들이 모여 라우터로 향한다.
하위 레벨에서 상위 연결 지점으로 가는 것을 Up link라 한다. (Link-up, Link-down은 물리적 케이블이 연결되고 끊겼다는 의미이므로 주의)
IP 헤더 구성
[ip 헤더 구성]
- version / 4 bit
: IP 버전. IPv4 혹은 IPv6를 구별한다.
- IHL (IP Header Length) / 4 bit
: 헤더의 길이. bytes 단위로 20 (bytes) ~ 40 (bytes) 값이 들어간다.
- TOS (Type Of Service) / 8 bit
: IP 패킷의 우선순위 정의. (음성 -> 영상 -> Text)
- Total Length / 16 bit
: 패킷의 총길이 (header + data)를 byte 단위로 기재. 흔히 1500 bytes 내외의 패킷 크기를 가지지만, 이론적으론 2^16 크기를 가질 수 있음.
- Identification / 16 bit
: (단편화) 패킷 식별 번호.
- Flags / 3 bit
: (단편화) 단편화 조각 관련 값.
(x – 항상 1 / Don’t Fragment? - 패킷 분할 여부 / More Fragment? - 마지막 분할 패킷인지에 대한 여부)
- Fragment Offset / 13 bit
: (단편화) 패킷 재조립 시 상대 위칫값. (값 * 8 byte 가 상대 위치가 됨)
- TTL (Time To Live) / 8 bit
: 라우터를 지날 때마다 1씩 감소하여 0이 되면 패킷을 버림. 통상 30 내외로 전달 가능.
- Protocol / 8 bit
: Data에 저장된 값이 어떤 프로토콜인지에 대한 값. 이것으로 Data 내에 추가적인 헤더가 존재하는지 구분.
- Header Checksum / 16 bit
: 헤더의 오류 발생 여부에 대한 값.
- Source/Destination Address / 32 bit
: 출발/도착 주소. (IP)
- Options (IP Option)
: 특별한 처리 옵션이 있다면 기재. 없다면 없이 전송.
https://blog.naver.com/powerhw/80122427353
Wireshark의 내부 구조와 작동 원리
Driver 계층과 IP 계층 사이에는 Filter가 존재하며, 해당 필터에서 데이터를 수집할 수도, 필터링을 통해 데이터를 선별하여 송수신 할 수도 있다.
이때 송수신을 허가하는 것을 Bypass, 거절하는 것을 Drop이라 하며, Filter에서 선별의 과정 없이 무조건적으로 Bypass(허용)하는 것을 Sensor라 한다.
(추가로 NIC와 인터넷에서 데이터가 들어오고 나가는 방향성을 Inbound, Outbound라 한다)
이런 Filter의 레벨에서 데이터를 디코딩하고 수집하는 것을 Wireshark가 담당할 수 있는데, 이러한 툴로 타인의 데이터를 감청하는 것은 현행법에 위배된다.
Router (Inline, Out of Path, Proxy)
PC에서 naver에 접속하는 과정은 다음과 같다.
PC (Client) -> L2 (NIC) -> L2 Access/Distribution -> Router -> Internet
-> Router -> Naver (Server)
라우터는 패킷을 스위칭하는 L3 스위치의 한 종류로서, 각 라우터에는 IP 주소가 부여되고 이 라우터는 각각의 호스트로 볼 수도 있다. 보통 하나의 라우터에는 input/output의 NIC 두 개 인터페이스가 존재한다.
Inline 구조란 패킷이 외부에서 접근하여 OSI 1계층부터 특정 계층까지 올라가는 업링크 후, 다시 특정 계층에서 1계층까지 내려가 외부로 송신하는 다운링크 과정을 거치는 것이다. 라우터는 Inline 구조로 되어있으며, Inline 장치가 해당 과정을 처리하는 방법은 3가지가 있다.
User mode의 process 수준
Kernel mode의 IP 수준
NIC의 Hardware 수준
1계층 ~ 특정 계층까지 이동하는 것에서 비용과 처리가 발생하므로 가장 저레벨에서 처리하는 것이 좋다.
라우터가 패킷을 전송하는 경우 외부(server)로 보낼 수도 있지만 다른 라우터에게 전송하는 때도 존재한다.
이때는 다른 라우터의 IP 주소를 확인하여 전송해야 하므로 Kernel의 IP 수준에서 read & write 하는 과정을 거쳐야 한다.
Inline 장비가 단순 라우팅 관련만 담당한다면 라우터가 되는 것이고, 보안적인 과정을 거쳐 Bypass 혹은 drop을 결정한다면 방화벽이 된다. 라우터와 방화벽은 동일한 L3 스위치의 일종이며 같은 내부구조를 갖는다.
Inline 구조 외에 Out of path라는 구조도 있다.
보통 L2 Distribution 급에서 지원하는 해당 구조는, 인터페이스 중 하나를 연결하여 자기 자신(switch)을 지나는 모든 패킷을 copy하고 전달한다. Read only이므로 데이터에 영향을 줄 수 없어 Out of path(길 밖에 나 있는)라 부른다.
이때 모든 데이터를 하나도 빠짐없이 복사하는 것을 mirroring이라 하며,
연결된 다른 port에 특수 목적을 위해 전달하는 것을 port mirroring이라 한다.
(port mirroring을 하는 목적 즉 센서에는 장애 확인을 위한 장애 대응 센서, 보안 목적인 NIDS(Network Intrusion Detective Sensor) 등이 있다)
모든 데이터를 copy 한다는 건 많은 부하를 발생시키기에 tab switch라는 기기도 등장했는데, 이러한 tab switch는 모든 패킷을 bypass 시키고 단순 copy만 하여 특수 센서들에게 전달하지만 모든 패킷에 대해 연결된 특수 센서 개수만큼 전달하므로 CPU 사용량이 많다.
proxy란 사전적 의미로 대리자로서, 특정 요청을 대신 받아 수행해주는 것을 말한다.
proxy를 수행하는 user mode 수준의 process는 socket을 2개 열어두고, 하나는 listen의 역할만으로 들어온 데이터를 그대로 받으며, 다른 socket을 통해 데이터를 전달한다.
proxy = user mode (application) = socket stream
inline/out of path = packet
둘은 계층이 다르며, 따라서 다루는 데이터의 단위도 다르다.
[proxy의 역할]
- 우회
: IP를 proxy 서버의 IP로 우회하여 접속할 수 있다.
vpn과 유사한데, proxy는 user mode의 수준, vpn은 암호화된 트래픽으로 kernel mode 수준의 처리 차이가 있다.
- 분석
: HTTPS의 SSL 보안 적용의 경우, application 수준에서 데이터가 암호화되기에 어떤 정보를 받는지 분석할 수 없다. 따라서 proxy 서버를 나의 IP로 설정한 후 raw 데이터를 받아 분석할 수 있다. (wireshark 단계에서 패킷된 암호화를 해석할 수는 있지만, 스트림과 패킷 단위의 차이 때문에 복호화가 비효율적)
- 감시, 보호
: 네트워크 대역을 모두 맞추고, proxy 설정을 모두 한 하위 pc들의 경우 (ex. 회사에서 사원들이 쓰는 pc) 특정 사이트 접속 시 proxy 서버를 거치고 통신하게 된다. 이때 proxy 서버가 악성 코드 사이트에 접속하는 것을 막아준다면 Virus Wall, 특정 사이트에 접속하는 것을 차단한다면 접근 통제 시스템이라 부른다.
- Reverse proxy (역방향 proxy)
: private 네트워크로의 분리 및 공격 차단 (Web Application Firewall, WAF)
추가로 proxy는 순방향 프록시(Forward Proxy)와 역방향 프록시(Reverse Proxy)가 있다.
proxy의 위치에 따라 명칭이 달라진다.
(클라이언트 – Forward Proxy – 인터넷 – Reverse Proxy – 서버)
순방향의 경우 클라이언트와 인터넷 사이에 존재하며, 특징은 다음과 같다.
캐싱 – 서버의 데이터를 미리 캐싱하고 있다가 빠르게 응답
보안 & IP 우회 – 클라이언트의 IP를 숨겨 서버에 요청
감시 & 보호 – 특정 사이트에 접속하는 것을 미리 방지
역방향의 경우 인터넷과 서버 사이에 존재하며, 특징은 다음과 같다.
캐싱 – 미리 캐싱한 정보를 빠르게 응답
웹 서버 분산 & 로드밸런싱 – 서버의 부하를 줄일 수 있음
보호 – 서버로의 직접적인 공격을 proxy 서버가 대신 맞아줌
SSL – SSL 인증을 proxy 서버 단일에만 받아놓으면 됨
서버와 클라이언트의 송수신 과정 (Window size(buffer), ACK, 처리 지연)
서버에서 클라이언트에게 파일을 보낸다고 가정하면,
서버에서는 stream 단위의 데이터가 segment 단위로 분해되고 buffer에 저장되어 하나씩 수신한다.
클라이언트는 받은 segment를 또 tcp 수준의 buffer에 순서대로 쌓는데, File I/O 수준의 buffer로 넘기는 과정을 진행한다.
이때 TCP 수준에서의 buffer의 남은 용량을 window size라고 한다.
segment에는 조각의 순서를 의미하는 번호도 첨부되는데,
통상 2번 정도 받았을 때 클라이언트는 서버에게 [마지막으로 받은 조각의 숫자 + 1]의 ACK를 수신하며,
남은 window size의 용량도 보낸다. (조각의 숫자는 header에 Sequence Number로 저장됨)
이때 서버는 ACK를 수신하기 전까지 파일을 보내지 않고 wait 하며, 만약 window size가 보내려는 segment size보다 작을 때에도 wait 한다. 이곳에서 속도 지연이 발생하게 되는데,
따라서 클라이언트가 TCP buffer에 받은 segment를 빠르게 윗단의 buffer으로 넘겨주어야 window size가 충분해져 wait가 발생하지 않게 된다.
즉, 속도 지연을 방지하기 위해서는 어플리케이션 수준에서의 buffer 처리 속도가 network 수신 속도보다 빨라야 할 것이며, 속도 지연이 발생했을 때보다 먼저 확인해야 한다.
클라이언트와 서버가 데이터를 전송하기 이전 연결하는 것을 3-way handshake라 한다.
순서는 클라이언트가 선행하여 SYN(cli) -> SYN(ser) + ACK(cli+1) -> ACK(ser+1) 순으로 통신하고, 이때 서로의 MSS를 공유하여 최소 단위로 맞추고 정책(혼잡 제어)을 교환한다.
단, TCP 연결은 서버와 클라이언트 값을 검증하지 않고 통신하기에 보안성이 떨어진다.
이렇게 TCP 연결 도중 LAN 케이블을 뽑게 되면 단시간에 다시 꼽았을 때 다시 프로세스가 작동할 수 있지만, 오래 연결이 되지 않는다면 프로세스가 아예 작동하지 않게 되고 이를 네트워크 충격이라 한다. 이렇게 순간 네트워크가 해제되었을 때 언제까지 연결을 지속할 것이냐는 개발에 따라 다르고, 네트워크 연결 관리 시 물리적 네트워크 충격을 프로그램이 인지하지 못하는 것인지 신경 쓰지 않아도 되는지 확인해보아야 한다.
Unicast, Broadcast, Multicast
라우터를 기준으로 내부, 외부망을 나눌 때,
내부의 특정 IP에서 다른 하나의 IP로 송신하는 것을 Unicast,
내부의 특정 IP에서 다른 모든 IP로 송신하는 것을 Broadcast,
내부의 특정 IP에서 다른 몇 개의 IP로 송신하는 것을 Multicast이라고 한다.
Multicast의 경우 수신을 원하는 IP들이 그룹으로 묶여서 해당 그룹에 속한다면 정보를 수신하는데, 기본적으로 전체 송신 후 판단하므로 Broadcast의 일종이다. (ex. IP TV) 그룹에 속하지 않는 IP는 정보를 받자마자 무시한다.
Broadcast는 [network IP 24bit + 마지막 8bit가 모두 1인 IP]에 송신할 때 이루어진다.
흔히 사용하는 Ethernet의 경우 CSMA/CD 방식을 사용하는데, 이는 간략하게 공유기에 정보가 송신 중이라면 수신할 수 없는 방식이다. 따라서 특정 IP가 Broadcast를 진행한다면 다른 모든 IP는 수신 불가 상황이 되므로, 이것이 네트워크 부하의 주요 원인이 되기에 Broadcast는 최소화하는 것이 좋다.
IP 주소의 종류
[IP 종류]
- Global IP (공유 IP)
: v4 기준, [8bit.8bit.8bit.8bit] 형태로, 총 32bit의 주소다.
인터넷을 연결하는 유일한 주소로, 전 세계에 단 하나씩만 존재한다.
원칙적으로 Router는 Global IP만을 routing 한다.
범위에 따라 A/B/C/D 클래스로 나뉜다.
- Private IP (사설 IP)
: 원리적인 것은 Global IP와 같으며, 작은 소규모 인터넷을 구축하는 것을 의미한다.
클래스별로 사설 IP용 주소가 존재하며, 사설 IP용 공유 IP는 주로 공유기가 받아 공유 IP로 변환하여 외부망과 통신한다.
사설 IP는 공유 IP가 다르다면 얼마든지 같은 사설 IP가 존재할 수 있다.
- Loopback
: 송신하는 IP와 수신하는 IP가 같을 때(ex. localhost), OS는 데이터에 대한 패킷을 만들긴 하지만
NIC(Layer 2)까지 패킷을 내려보내지 않고 바로 다시 올려서 다른 애플리케이션에게 보낸다.
이를 Loopback 이라 하며, 이런 성질로 IPC같이 프로세스 간의 자원 공유에서도 Loopback을 활용하여 socket을 통해 정보를 공유할 수 있다.
URL, URI
url은 여러 정보를 담고 있다.
오른쪽에서부터 더 큰 범위를 의미하며,
왼쪽으로 갈수록 더욱 정확한 위치를 표기한다고 생각하면 된다.
그림에서 4가지 모두 합친 도메인을 FQDN(Fully qualified Domain Name)이라 하며,
이는 정확한 위치를 나타내므로 unique 해야 하는 특성이 있다.
TLD (Top Level Domain) + SLD (Second Level Domain)
: 가장 큰 범위이며, 해당 도메인의 역할, 소속 기관, 혹은 나라를 의미한다.
TLD는 gTLD(generic) / new gTLD / ccTLD(country code)으로 분류한다.
gTLD | .com(commercial - 영리단체), .net(network – 네트워크 관리) |
new gTLD | .email, .xyz |
ccTLD | .kr. .jp |
기존 gTLD에서 시작하여 명확한 의미를 전달하는 도메인의 포화로 인해
추가적인 new gTLD와 국가를 설명하는 ccTLD 또한 탄생하게 되었다.
SLD는 ccTLD 탄생 직후, gTLD의 의미를 명시하기 위해 약속한 추가적인 도메인이다.
SLD | .co(영리단체), .go(정부), ac(교육 기관), .or(비영리단체) |
애초에 gTLD와 의미가 겹치기 때문에 gTLD와 같이 사용하지 않고 ccTLD와는 함께 사용하거나, 사용하지 않는다.
(ex. co.com <X> co.kr <O>)
이후 짧은 도메인이 외우기 쉽고 인기가 많다는 이유로 SLD를 제거하자는 의견이 생겼고,
SLD를 제거한 도메인이 생겨나기 시작했다.
이를 2단계 도메인 (domain + TLD), 3단계 도메인 (domain + SLD + TLD)으로 구분한다.
[용어 설명]
- domain name
: 기업 혹은 서비스의 고유 이름을 나타내며, 사용자는 이를 구매하여 등록할 수 있다.
- host name
: 기업에서 관리하는 서비스의 분류를 나타낸다. (사실상 하나씩의 서버)
가장 흔하게 볼 수 있는 www는 기업을 소개하거나 서비스를 진행하는 웹 페이지 서비스를,
mail, comic ( + naver.com ) 는 각각 메일과 웹툰 서비스를 의미한다.
즉, 도메인의 기업체가 제공하는 각기 다른 서비스에 대한 명칭을 명시한다.
- protocol
: 인터넷에서 데이터를 주고받을 때 활용하는 규약이다.
즉, 이 부분이 달라지면 다른 방식으로 데이터를 송수신하는 것이다.
가장 흔한 HTTP 프로토콜은 정해진 형식에 의해 데이터를 주고받고, 이를 구체화한 RESTful API 네트워크 아키텍처를 통해 JSON 형식으로 송수신한다.
(HTTP와 RESTful은 거의 함께 사용하지만, 엄밀하게 HTTP가 더 넓은 의미)
HTTP 외에 파일 송수신만이 특화된 ftp 프로토콜 (ex. ftp://~) 등 다양한 종류가 존재한다.
- URL, URI
: URL(Uniform Resource Locator–통합 자원 지시자)은 자원의 위치까지만을,
URI(Uniform Resource Identifier–통합 자원 식별자)는 URL 및 자원의 식별자를 포함한다.
예를 들어 www.mypage.com/board 는 URL을,
www.mypage.com/board?Id=1 는 자원의 정확한 식별자까지 포함하므로 URI를 의미한다.
https://library.gabia.com/contents/domain/4005/