CS/Newwork

네트워크 : 3. 네트워크 프로토콜

OSP 2024. 12. 20. 00:32

3. 네트워크 프로토콜


3.1. HTTP/SSL


3.1.1. HTTP

  • Hyper Text Transfer Protocol. 웹상에서 이루어지는 데이터 전송 프로토콜이다.
더보기
  • 최초에는 HyperText 즉 HTML(HyperText Markup Language)을 전송하기 위한 통신규약이었으나 근래에는 웹브라우저-웹서버로 대변되는 웹클라이언트-웹서버간 데이터 요청/응답 프로토콜로 의미가 확장되었다.
  • 근래의 어플리케이션이 눈부시게 발전한 탓인지 비교적 미지근한 웹페이지는 어플리케이션이 아니라고 생각하기도 하는데, 웹페이지 자체가 TCP연결 위에 얹어진 어플리케이션이다. 
  • 데이터를 평문으로 전송하기에 wireshark 따위의 패킷포획도구에 통신 데이터가 쉽게 노출된다
  • 클라이언트 URL로 웹서버에 접속해 HTTP 요청을(메서드/헤더/바디) 보내면, 요청을 받은 웹 서버가 요청을 처리하여 상태 코드와 함께 응답을 클라이언트에게 반환한다.
메서드 내용
GET 서버에 리소스를 요청한다. 
보통 요청 파라미터를 URL에 포함하기에 바디는 공백이다.
서버 리소스를 변경하지 않기에 반복해도 결과가 같다. *멱등적이다.
POST 서버에 리소스를 생성한다.
요청 파라미터가 바디에 위치한다.
insert/append 방식이기에 반복하면 결과가 달라진다. *비멱등적이다.
PUT 서버의 리소스를 생성/수정한다.
overtype/replace 방식이기에 반복해도 결과가 같다. *멱등적이다.
DELETE 서버의 리소스를 삭제한다.
HEAD 서버에 리소소를 바디 없이 헤더만 요청한다.
*상태점검용

 

상태코드 내용
1XX 진행 중
2XX 성공
3XX 리다이렉션 필요
*경로를 다시 지정할 필요가 있다는 것으로, ">, >>"과 다르다.
4XX 클라이언트사이드 에러
5XX 서버사이드 에러
6XX 사용자졍의 상태
더보기
  • 알 만한 상태코드들은 아래와 같다.
상태코드 내용
200 요청 성공 OK. 요청데이터 반환를 반환한다. *GET
201 Created. 새 자원 생성한다. *POST
204 No Content. 응답 내용은 없다. *DEL
301 경로 재지정 필요 Moved Permanently. 요청 데이터 경로가 영구적으로 변경. *사업자 변경
302 Found. 요청 데이터 경로가 임시적으로 변경. *유지보수
304 Not Modified. 요청 데이터가 캐시에 있으니까 그거 사용 바람. 응답 내용은 없다.
400 요청 실패 Bad Request. 서버가 이해할 수 없는 요청. 주로 형식 이탈.
401 Unauthorized. 인증이 필요한 사안에서 인증 오류시.
403 Forbidden. 서버가 수행할 권한이 없음.
404 Not Found. 요청한 리소스 없음.
405 Method Not Allowed. 허용되지 않는 메서드.
408 Request Timeout. 시간 초과.
500 Internal Server Error. 서버측 시스템 설정 문제.
502 Bad Gateway. 서버측 네트워크 설정 문제.
503 Service Temporaily Unavailable. 일시적 서비스 불가.
504 Gateway Timeout. 게이트웨이 시간 초과,

3.1.2. SSL/TLS

  • Secure Sockets Layer/Transport Layer Security. 인증세션관리 및 암호화 기술로, HTTP의 보안 문제를 개선하기 위해 등장하였다. HTTP에 SSL/TLS가 접목된 것이 HTTPs이다.
  • 하이브리드 암호화 + 공개키 인증
더보기
  • 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 과정을 통해 서로 연결을 확립한 상호간에서만 데이터를 주고받는 특징을 의미한다.
더보기
  • 연결 설정 :3-way handshake
    1. A가 B에게 연결요청을 보낸다(SYN)
    2. B는 A에게 응답하고, 응답을 요구한다(ACK+SYN)
    3. A는 응답한다. (ACK) 
1. "연결 해도 됨?" 2. "ㅇㅇ 아 근데 너 연결 준비 됨?" 3. "ㅇㅇ"
  • 연결 유지 : TCP session
    • 세션이 유지되는 동안 A와 B가 패킷단위로 데이터를 주고 받는다.
  • 연결 종료 : 4-way handshake
    1. A가 B에게 송신종료 신호를 보낸다(FIN)
    2. B가 A에게 응답한다(ACK)
    3. B가 A에게 송신종료 신호를 보낸다(FIN)
    4. A가 응답한다(ACK)

 

연결 설정시와는 달리 B가 ACK/FIN을 별도로 전송한다. 동시에 보냈을 때 송신을 종료한다는 B의 FIN을 먼저 처리한다면, 그 후에 있을 신호 수락 응답인 ACK의 처리에 혼선을 빚는다. 물론 A는 ACK/FIN 패킷을 수신한 후 Time-Wait 상태에서 240초간 잉여패킷을 받을 시간을 확보하긴 하지만, 안전하고 명확한 종료를 위해 일단 구분하고 본다.
  • TCP 헤더는 신뢰도와 순서를 보장하기 위한 내용들을 포함한다.
    Byte Offset 0 1 2 3
SEGMENT H 0 Source Port Destination Port
4 Sequece number
8 Acknowledgement number
12 Offset Reserve TCP Flags Window
16 Checksum Urgent Pointer
20 TCP Options
B 21 Application Data
더보기
  • S/D port : 송신자/수신자의 포트 번호
  • Sequence number : 세션별 송신 데이터 순번. 0부터 시작
  • Acknowledgement number : 세션별 수신 데이터 순번. 0부터 시작
  • Offset : 세그먼트에서 헤더의 크기를 표시한다. 위 표에서 헤더의 행 길이와 같다.
    • 4바이트 단위로 헤더의 크기를 유용할 수 있고, 5(디폴트)~15의 값을 갖는다.
    • 5면 헤더는 20바이트, 10이면 헤더는 40바이트.
    • 그 다음 Byte Offset부터 어플리케이션 데이터가 위치한다.(디폴트는 17)
  • Reserve : 차후 사용을 위해 예약된 필드로, 항상 0으로 둔다.
  • TCP Flags : 세그먼트의 용도와 내용
Flags 내용
SYN Synchronize. 연결 요청
ACK Acknowledgement. 수신확인 응답
URG Urgent. 긴급처리 요청
PSH Push. 즉시처리 요청
RST Reset. 재연결
ECE Explicit Congestion Notification Echo. 네트워크 혼잡 알림
CWR Congestion Window Reduced. 윈도우 크기 감소 알림
FIN Finish. 송신 종료 요청
  • Window : 한 번에 전송할 수 있는 데이터의 최대 크기
    • 2바이트이기에 0 - 65535의 값을 가지며, 바이트 단위를 채택한다
    • 즉 한 번에 전송할 수 있는 데이터의 크기는 최대 65535byte(64KB)이다
  • Checksum : 송신데이터와 수신데이터간 차이 검출
    1. 송신자 측에서 송신 세그먼트의 헤더와 데이터를 16비트 단위로 쪼개고, 그 값을 전부 더한다
    2. 결과값의 보수를(0-1 반전) 송신 TCP헤더의 checksum에 입력해 송신한다
    3. 수신자 측에서  수신세그먼트의 헤더와 데이터를 16비트 단위로 쪼개고, 그 값을 전부 더한다.
    4. 결과값을 수신받은 chechksum값과 더한다.
    5. 0xFFFF(=1111 1111 1111 1111)이 나온다면 정상으로 처리한다. 그 외에는 전부 오류이다.
  • Urgent Pointer : 우선 처리가 필요한 데이터의 위치
  • TCP Options : 약 30개의 부가적 옵션. 옵트인 옵션이기에 디폴트 헤더 크기는 20바이트이다.
  • Application Data : payload

  • Packet은 모든 레이어의 프로토콜에서 사용되는 데이터 단위를 지칭하는 일반적인 명칭으로, 각 레이어나 프로토콜에서 사용되는 구체적인 명칭을 포괄하는 개념이다. 

3.3.2.UDP

  • User Datagtam Protocol. 인터넷 연결의 핵심 프로토콜 중 하나로, 연결 비지향으로 속도를 추구한다.
  • 3way-handshake의 연결과정이 존재하지 않는다.
  • 8바이트로 고정되고 단순한 헤더를 갖는다.
    Byte Offset 0 1 2 3
DATAGRAM H 0 Source Port Destination Port
4 Length Checksum
B 5 Application Data
더보기
  • S/D Port : 송/수신자의 포트 번호
  • Length : 데이터그램의 전체 크기
    • 8~65535의 값을 가지며, 바이트 단위를 채택한다.
    • 즉 데이터그램은 8~65535Byte의 크기를 가질 수 있다.
  • Checksum : 옵션이라 쓰고 필수라 읽는다. 방식은 TCP와 같다.
  • Application Data : payload

3.3.3. Port 

  • TCP/UDP 등 유력 네트워크 통신은 포트번호를 이용하는데, 포트는 IP주소를 논리적으로 분할한 것이다.
  • 최종 목적지를(어플리케이션) 의미하기에 통신의 종단점이라고 한다.
포트 번호  어플리케이션
0~1023 well-known port. 범용적으로 예정되어 있는 포트이다.
20 FTP(D)
21 FTP(C)
22 SSH
23 Telnet
25 SMTP
53 DNS
80 HTTP
110 POP3
443 HTTPs
1024-49151 registered port. 관리기관에 등록된 포트이다.
49152-65535 dynamic port. 동적으로 할당되는 포트이다.
더보기
  • 네트워크단에서 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가 있다.
  • 통신장치의 주소 체계. 
  • IPv4헤더는 IP주소 및 Fragment/단편화에 대한 정보를 담는다.
    Byte Offset 0 1 2 3
Fragment H 0 Version IHL TOP Total Length
4 Identification Flags Fragment Offset
8 TTL Protocol identifier Header Checksum
12 Source address
16 Destination address
20 Options
D   Data
더보기
  • Version : IPv4 or IPv6를 표시하는 무려 4비트 필드.
  • IHL(Internet Header Length) : 헤더의 길이를 1word = 4Byte 단위로 나타낸다. 디폴트값은 5.(20byte)
  • TOS(Type of Service) : 서비스 우선순위를 표시한다. 디폴트값은 0.
이름 설명
0 Normal 디폴트
1 Minimize cost 비용이 적은 경로
2 Maximize Reliability 신뢰성이 높은 경로
4 Maximize Throughput 처리량이 큰 경로
8 Minimize delay 속도가 빠른 경로
  • Total Length : 헤더와 데이터를 합친 크기
  • Identification : 패킷을 단편화해서 보낸 경우 이들의 묶음 번호
    • 패킷이 네트워크의 MTU(Maximun Transmission Unit)을 초과하면 라우터는 이를 단편화하는데 그 조각을 Fragment라 한다. 서로 다른 단편화끼리 혼동하지 않도록 하는 필드이다.
  • Flags : 패킷 단편화 정보를 표시하는 3비트 필드(XDM)
    • X = 0으로 셋팅되는 예비 비트
    • D(Dont Fragment, DF) : 0이면 분할이 허용/1이면 분할이 불허
    • M(More Fragment, MF) : 0이면 마지막 조각/1이면 후술 패킷 남음. 
필드값 XDM 내용
X D M
0 0 0 0 마지막 Fragment
1 0 0 1 다음 Fragment 있음
2 0 1 0 단일 패킷(단편화 없음)
3 0 1 1 가지면 안 되는 값
  • Fragment Offset : 패킷 단편화가 이루어지기 전의 위치를 8바이트 단위로 표시하는 나타내는 13비트 필드.
  • TTL(Time To Live) : 패킷이 살아있는 시간, 정확히는 경유할 수 있는 라우터의 수를 의미한다. 디폴트값은 64.
  • Protocol identifier : 상위 계층(L4) 프로토콜을 의미한다.
    • 1 : ICMP
    • 2 : IGMP
    • 6 : TCP
    • 17 : UDP
  • Header Checksum : IP헤더가 올바르게 교환되는지 여부를 살핀다.
  • Source/Destination address : 발신사/수신자의 IP주소
  • Options : 보안/QoS/라우팅 등 특별한 처리를 지정하는 옵트인 필드.
  • Data : payload.

  • 4000바이트 패킷을(20H+3980D) 1500MTU(20H+1480D) MTU 환경에서 전송하는 경우의 IP헤더 예시
    • 단편화된 Fragment마다 20바이트의 헤더가 붙기에 각 Fragment가 운반하는 Payload는 그 20바이트만큼 줄어든다. 따라서 마지막 Fragmemt에서 그 만큼 넘겨받아 Toal length값이 그만큼 늘어난다.
      • 4000 = 20H+3980D
      •          > 20H+1480D + 20H+1480D + 20H+1020D
    Byte Offset 0 1 2 3
Fragment

1
H 0 Version
4
IHL
5
TOS
0
Total Length
1500
4 Identification
12
Flags
1
Fragment Offset
0
8 TTL
64
Protocol identifier
6
Header Checksum
0xFFFF
12 Source address
192.168.1.1
16 Destination address
192.168.1.100

 

    Byte Offset 0 1 2 3
Fragment

2
H 0 Version
4
IHL
5
TOS
0
Total Length
1500
4 Identification
12
Flags
1
Fragment Offset
185
8 TTL
64
Protocol identifier
6
Header Checksum
0xFFFF
12 Source address
192.168.1.1
16 Destination address
192.168.1.100

 

    Byte Offset 0 1 2 3
Fragment


3
H 0 Version
4
IHL
5
TOP
0
Total Length
1040
4 Identification
12
Flags
0
Fragment Offset
370
8 TTL
64
Protocol identifier
6
Header Checksum
0xFFFF
12 Source address
192.168.1.1
16 Destination address
192.168.1.100

3.4.2. DHCP

  • Dynamic Host Configuration Protocol. 동적 IP 할당 프로토콜로, 자동화 IP주소 할당 프로토콜이다.
  • BP(Bootstrap Protocol)를 전신으로 한다.
  • 대부분의 사설 IP와 Wifi가 이에 의한다.
더보기
  • 편지를 써도 주소를 모르면 받는 주소를 쓸 수도 없고, 비운 채로 우체통에 넣어도 편지는 갈 곳이 없다. 이와 마찬가지로 통신 장치의 주소를 의미하는 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를 통해 여러 호스트 장치가 인터넷에 접속하기 위함이다.
    Static Dynamic
NAT SNAT Static SNAT Dynamic SNAT
사전 매핑테이블에 따른 아웃바운드 변환 즉흥 매핑테이블에 따른 아웃바운드 변환
DNAT Static DNAT Dynamic DNAT
사전 매핑테이블에 따른 인바운드 변환 즉흥 매핑테이블에 따른 인바운드 변환
PAT Static PAT Dynamic PAT
사전 매핑테이블에 따른 인/아웃바운드 변환 즉흥 매핑테이블에 따른 인/아웃바운드 변환
더보기
  • SNAT(Source NAT)
    • 로컬 네트워크에서 외부 네트워크로 나가는 패킷의 출발지 IP를 변환한다.
    • 사설IP를 공인IP로 변환한다.
    • Static이 아니라 Source
  • DNAT(Destination NAT)
    • 외부 네트워크에서 로컬 네트워크로 들어오는 패킷의 목적지 IP를 변환한다.
    • 공인IP를 사설IP로 변환한다.
    • Dynamic이 아니라 Destination
  • PAT(Port Address Translation)
    • 로컬 네트워크의 호스트를 포트번호로 식별하여 매핑한다
    • NAT를 말할떄는 이를 포괄할 수 있다.(NAT ~ SNAT/DNAT/PAT)

  • NAT(Static NAT)
    • 사설 IP와 공인 IP를 사전에 생성한 매핑 테이블에 따라 변환한다.
  • 동적 NAT(Dynamic NAT)
    • 사설IP와 공인IP를 NAT수행시 생성된 매핑 테이블에 따라 변환한다.
    • DHCP의 임대시간처럼 Table Timeout이 있다.

  • 어째서 NAT인가
    • 주소부족문제 : 하나의 공인 IP에 여러 호스트가 꼽사리낄 수 있다. 
    • 보안문제 : 외부에서는 내부 호스트들의 사설 IP까지 알아야 해서 접근이 어렵다.
  • 사설 IP와 공인 IP의 혼선을 방지하기 위해 사설 IP는 미리 정의된 범위에서 사용한다.
클래스 IP주소 대역 서브넷 주소 개수
A Class 10.0.0.0 - 10.255.255.255 10.0.0.0/8 약 1680만개
B Class 172.16.0.0 - 172.31.255.255 172.168.0.0/12 약 105만개
C Class 192.168.0.0 - 192.168.255.255 192.168.0.0/16 약 65000개

3.4.4. ICMP

  • Internet Control Message Protocol. 네트워크 점검 프로토콜로, IP의 부속 프로토콜로 간주된다.
  • ping.

3.4.5. IP주소 및 서브넷팅

  • IP주소는 IPv4와 IPv6로 나뉘는데, 현재 통용되는 IPv4를 기준으로 설명한다.
  • 0.0.0.0 - 255.255.255.255의 주소를 가지며, 32비트의( 42억9496만7296개) IP주소를 갖는다.
  • 서브넷팅 : IP 주소 분류 행위로, 클래스분류와 CIDR분류방법이 있다.
더보기
  • 서브넷/서브넷 마스크
    • 서브넷은 상위 네트워크에서 소분된 하위 네트워크들 중 일부를 특정하는 의미이며, 서브넷 마스크는 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주소 대역/서브넷을 유연하게 분류한다.
    • 서브넷 마스크를 더 유연하게 적용하며, 표기법도 단순화한다.
IP주소 서브넷 마스크 CIDR표기
8.8.8.8 255.255.255.0 8.8.8.8/24
168.150.2.0 255.255.0.0 168.150.2.0/16
110.127.0.1 255.128.0.0 110.127.0.1/9
110.255.0.2 255.192.0.0 110.255.0.2/10

3.5. RIP, OSPF, BGP

  • 동적 라우팅프로토콜로, 통신 경로를 자동으로 결정한다.
  RIP
Routing Information Protocol
OSPF
Open Shortest Path First
BGP
Border Gateway Protocol
유형 벡터 거리 라우팅 링크 상태 라우팅 경로 벡터 라우팅
계산 홉 수 기반 비용 기반 경로 속성 기반
속도 느림 빠름 매우느림
특징 간단한 설계 계층적 설계 정책기반 설계
규모 소규모 네트워크 중대형 네트워크 대규모 네트워크
더보기
  • 라우팅이란
    • Routing(Route + ing). 말 그대로 경로를 설정하는 행위를 의미한다.
    • 적절한 경로 설정을 위해 필요한 정보를 라우터간에 주고 받아야 한다.
    • 의외로 일본식 발음이 아니다.
  • 정적/동적 라우팅
    • Static : 경로 수동 설정
    • Dynamic : 경로 자동 설정

  • RIP(Routing Information Protocol)
    • 홉수를(목적지까지 도달하기 위해 필요한 라우터의 수) 기반으로 최단경로 탐색하는 라우팅 프로토콜.
    • 여러 라우팅 테이블 중 최소 홉 테이블을 선택하면 되는 것이라 비교적 알고리즘이 단순하여 설계가 비교적 간단한 반면, 라우터의 개수를 기반으로 하기에 간접적인 경로 최적화에 불과하다는 한계도 있다. 따라서 네트워크 규모가 커질 수록 적합성이 낮아진다.
      • 홉 수가 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 주소 기반의 필터링도 한다.
      • 일반모드(Non-promiscuous mode)
        • 목적지 MAC주소가 자신의 MAC주소인 것만 수신하는 모드
      • 프로미스큐어모드(Promiscuous mode)
        • 목적이 MAC주소에 상관 없이 모든 패킷을 수신하는 모드 : 트래픽모니터링 / 패킷분석
  • ARP 데이터는 다음과 같은 구조를 갖는다.
Byte Offset 0 1 2 3
0 Hardware Type Procotol Type
4 HW address length PR address length Operation
8 Sender HW Address
12 Sender HW Address Sender IP Address
16 Sender IP Address Target HW Address
20 Targer HW Address
24 Targer IP Address
더보기
  • 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이다.
  • Operation : 패킷의 유형이다
유형 내용
1 ARP request MAC주소 요청
2 ARP reply MAC주소 응답
3 RARP request IP주소 요청
4 RARP reply IP주소 응답
  • Sender HW Address : 발신자의 MAC주소
  • Sender IP Address : 발신자의 IP주소
  • Target HW Address : 목적지의 MAC주소
  • Targer IP Address : 목적지의 IP주소
Opeartion Sender HW Address Sender IP Address Target HW Address Targer IP Address
1(ARP request) ARP 요청자 MAC ARP 요청자 IP NULL
*BroadCast
찾으려는 HOST IP
2(ARP reply) ARP 응답자 MAC ARP 응답자 IP ARP 요청자 MAC ARP 요청자 IP
  • 대표적인 유선 통신 프로토콜인 Ethernet의 헤더는 아래와 같다
    Byte Offset 0 1 2 3
    0 Preamble
4 Preamble SFD
Frame H
,D
8 Destination Address
12 Destination Address Source Address
16 Source Address
20 Ethernet Type Data
  Data...
T   CRC

 

더보기
  • 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바이트다.
  • CRC : 트레일러에 속하여 데이터 오류 검출 코드를 표시하는 4바이트 필드.

'CS > Newwork' 카테고리의 다른 글

Network : Web : HTTP/HTTPs  (0) 2024.12.27
네트워크 : 2. 네트워크 모델  (0) 2024.12.18
네트워크 : 1. 개념과 분류  (1) 2024.12.17