강의 영상

https://www.youtube.com/watch?v=_i8O_o2ozlE&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=9&t=1s 

 

목차

  1. IPv4 프로토콜
  2. ICMP 프로토콜
  3. 라우팅 테이블
  4. 다른 네트워크와 통신과정
  5. IPv4의 조각화
  6. 실습

 

IPv4 프로토콜

IPv4가 하는 일

  • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
  • 데이터가 정확하게 전달될 것을 보장하지 않음
  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 수도 있다. (악의적으로 이용하면 DoS 공격이 됨)
  • 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장

 

IPv4 구조

  • Identification: Packet을 쪼개서 보낼 때, 원래 하나의 Packet이었다는 것을 파악 가능
  • Framentation Offset: 쪼개진 Packet의 순서를 알려줌 (시작점부터 얼만큼 떨어져있는지 알려줌)
  • Time To Live (TTL): Packet이 무한 루프로 도는 것을 방지 (장비를 하나씩 지날 때마다 1씩 감소) -> TTL이 0인 장비는 해당 Packet을 버림
  • Protocol: 상위 프로토콜을 알려줌
    • ICMP: 0 1로 세팅
    • TCP: 0 6으로 세팅
    • UDP: 1 1로 세팅 (17)
    • Header Checksum: 헤더의 오류여부 점검

ICMP 프로토콜

강의영상

https://www.youtube.com/watch?v=JaBCIUsFE74&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=10 

ICMP 프로토콜이 하는 일

  • ICMP (Internet Control Message Protocol)
  • 네트워크 컴퓨터의 운영체제에서 오류메시지를 전송받는데 주로 쓰인다.
  • 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받는다. 

 

ICMP 의 구조

  • Type: 대분류
  • Code: 소분류
  • Type 0,3,8,5,11은 알아야 함
    • 0, 8: 기본: 8 = 요청, 0 = 응답
    • 3 = Destination Unreachable, 11: Time Exceeded => 왜 통신이 안되는지 파악 가능
    • 3: 목적지까지 가지 못함 ex. 중간에 경로 설정 잘못됐을 때
    • 11: 목적지까지 갔는데 오지 못함 ex. 상대가 방화벽 켜 놨을 때
    • 5: Redirect 보안상 중요

 

IPv4, ICMP 프로토콜 실습

강의 영상

https://www.youtube.com/watch?v=8ZwTvTuZlVw&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=11 

* 내가 보내는 이더넷 프로토콜과 구글이 받는 이더넷 프로토콜은 다르다 (네트워크 대역이 달라서)

 

라우팅 테이블

강의영상

https://www.youtube.com/watch?v=CjnKNIyREHA&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=12 

어디로 보내야 하는지 설정되 있는 라우팅 테이블

(패킷을 보낼 때 참고하는 지도가 된다)

- 게이트웨이

    - 모르면 일단 저기로 보내라

 

다른 네트워크와 통신 과정

- A -> B가 (통신) 가능하려면, B의 네트워크 대역이 A의 라우팅 테이블에 있어야 한다

192.168.20.0/24 한테 가려면, 일단 192.168.10.1로 가라

 

A -> B로 갈 때, Ethernet은 cc:cc:cc:cc:cc:cc로 설정 (게이트웨이)
공유기는 192.168.20.0/24는 일단 192.168.30.2로 보낸다
Ethernet 프로토콜을 바꾼다

*Ethernet 프로토콜은 네트워크 대역이 바뀔 때마다 다시 작성됨

 

IPv4의 조각화

조각화란?

  • 큰 IP 패킷들이 작은 MTU를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어(조각화)되어 전송돼야 한다.
  • 즉 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요하다.
  • 일단 조각화되면, 최종 목적지에 도달할 때까지 재조립되지 않는 것이 일반적이다.
  • IPv4에서는 발신지뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
  • IPv6에서는 IP 단편화가 발신지에서만 가능
  • 재조립은 항상 최종 수신지에서만 가능함

 

조각화 예시

IPv4 20바이트를 뺀 만큼씩 쪼개야 한다

- MF (More Fragmentation): 내 뒤에 조각이 더 있다 - 맨 마지막 조각은 0

- Offset: 0으로부터 얼마나 떨어져있는지 (Byte단위)

큰 데이터를 조각화해서 보내는 예시

2000짜리 데이터를 1480과 520으로 쪼갬 (MTU 1500)
IPv4 구성

- 05 dc, 02 24: Data 길이

- 12 ab: 패킷의 ID값

- 2 0 : MF (More Fragmentation)

- 0 00, 0 b9: Offset

 

조각화 실습1

보내려는 데이터 크기: 2379

MTU: 980

- 몇 개의 패킷으로 쪼개지는가?

    3

- 첫번째 패킷의 데이터 크기는 몇인가?

    960

- 마지막 패킷의 데이터 크기는 몇인가?

    459

 

조각화 실습2

명렁어 ping [ip 주소] -l 4800

보내려는 데이터 크기: 4800

MTU: 1500

1514 = 14 (Ethrnet) + 20 (IPv4) + 1480 (Data)

마지막 조각 = 402 = 14 (Ethernet) + 20 (IPv4) + 8 (ICMP) + 360 (Data)

 

목차

- ARP 프로토콜

- ARP 프로토콜의 통신 과정

- ARP 테이블

- 실습

 

ARP 프로토콜

- ARP가 하는 일

    - ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC주소를 IP주소를 이용해서 알아오는 프로토콜

 

- ARP 프로토콜의 구조

    - IP 주소를 이용해 MAC 주소를 알아오는 ARP 프로토콜

예외없이, Hardware type에는 0 0 0 1, Protocol type에는 0 8 0 0, Home Address Length에는 0 6, Protocol Address Length에는 0 4가 들어감

    - Opcode: 질문인지 응답인지 정보가 담겨 있음

 

- ARP 프로토콜을 활용한 통신

    1. Eth | ARP 요청

        - 목적지 MAC주소를 몰라서 ARP로 알아오려는 것인데, 목적지 MAC 주소가 필요한 Ethernet을 어떻게 앞에 붙이는가?

        -> Opcode = 1로 두고 출발지 MAC주소와 출발지 IP 주소를 채워넣음

        -> 목적지 MAC 주소는 비워두고, 목적지 IP 주소만 채워넣음

        -> Ethernet 프로토콜 인캡슐레이션: 목적지 MAC주소를 모르기 때문에 ff로 채워넣음 => 브로드캐스트 주소가 됨: 같은 대역에 있는 모두에게 보낸다 (목적지 MAC주소를 누가 갖고있는지 모르니까)

    2. 목적지 IP 주소가 일치 안하는 애들은 Packet을 버림, 목적지 IP 주소가 일치하는 애는 응답 프로토콜을 보냄 (출발지, 자기 IP주소를 적어서) - 이때는 목적지 MAC주소를 알고 있음

    3. 해당 IP 주소를 ARP 캐시테이블에 등록 (OO IP 주소를 쓰는 애는, ~~ MAC 주소를 갖고 있구나)

    4. 이후 통신 가능 (이 과정을 한번 거쳐야만 통신이 가능하다)

 

ARP 테이블

: 나와 통신했던 컴퓨터들의 주소가 남는다.

- arp -a 명령어로 확인 가능

https://vwo.com/blog/multi-armed-bandit-algorithm/

 

What is Multi-Armed Bandit(MAB) Testing? | VWO

Learn about the basics of multi armed bandit testing & algorithms, the difference b/w multi-armed bandit testing and A/B testing, its application in the real world.

vwo.com

요약

  • Exploration만 하는 AB Test와 달리, MAB Test는 winner(혹은 이기고 있는 상태인 variation)에게 트래픽을 몰아준다
  • winner를 일찍 결정해서 buisiness decision을 빨리 내릴 수 있다.
  • AB test는 통계적 유의성을 확보하고 실험 종료 후 다양한 context에서 데이터를 해석할 때 주로 사용하고 MAB Test optimization algorithm으로 성공지표를 극대화하는 방안으로 실험이 진행된다.

AB Test VS. MAB Test

목차

  • 3계층의 기능
  • 일반적인 IP 주소
  • 특수한 IP 주소
  • 실습

 

3계층의 기능

  • 3계층은 다른 네트워크 대역 즉 멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어하는 일을 담당
  • 발신에서 착신가지의 패킷의 경로를 제어
  • 라우터와 같은 3계층 장비 필요

 

  • 3계층에서 쓰는 주소: WAN에서 통신할 때 사용하는 IP 주소 + 서브넷 마스크 + 기본 게이트웨이
  • IPv4 주소: 현재 PC에 할당된 IP 주소
  • 서브넷 마스크: IP 주소에 대한 네트워크의 대역을 규정하는 것
  • 게이트웨이 주소: 외부와 통신할 때 사용하는 네트워크의 출입구

 

일반적인 IP 주소

Classful IP 주소: 낭비가 심함

Classful IP

  • Class를 나눴던 이유: 
    • ex) A 클래스 내에서 맨 앞자리 숫자(0 ~ 127)로 A-0, A-1, ... , A-127로 구분
  • A 클래스 두번째 자리부터 컴퓨터 하나당 할당 - 2^24개의 컴퓨터에 IP 주소 할당 가능 (매우 큰 관공서 같은 곳에서 사용)
  • B 클래스: 두번째 필드까지 네트워크 대역을 구분하는데 사용, 나머지를 그 안에 속한 컴퓨터를 구분하는데 사용
  • C 클래스: 세번째 필드까지 네트워크 대역을 구분하는데 사용, 나머지를 그 안에 속한 컴퓨터를 구분하는데 사용

Classless IP 주소: 낭비되지 않도록 아껴씀

  • 원하는 곳에서 잘라 쓰자
  • 서브넷 마스크: 네트워크 대역을 어디서 구분할지 지정한 값
    • 1과 0이 바뀌는 부분이 클래스를 구분하는 값
  • 그래도 IP가 부족해짐 -> IPv6를 쓰자고 하지만, 바로 넘어갈 수가 없다.

 

일반적인 IP 주소

  • 사설 IP와 공인 IP: 공인 IP 1개당 2^32개의 사설 IP

  • 외부와 통신할 때는 공인 IP로 바꿔서 통신
  • NAT: 사설 IP를 공인 IP로 translate (특정 IP를 다른 IP로 바꿈: 공인 IP -> 공인 IP, 사설 IP -> 사설 IP도 가능): NAT는 기술이다
  • 실제 인터넷 세상에서는 공인 IP로만 통신: 외부 네트워크 대역에서는 사설 IP 대역이 보이지 않는다.
  • 통신이 나갈 때, NAT 테이블에 기록 -> 응답이 오면 NAT 테이블을 보고 사설 IP로 전달
    • NAT 테이블에 없으면, 공유기가 받고 끝남
    • 서버는 보통 공인 IP를 씀 or 공유기에 따로 설정(port forwarding)을 해 둠

 

특수한 IP 주소

  • 0.0.0.0/0: Wildcard = 나머지 모든 IP
  • 127.0.0.1: 나 자신을 나타내는 주소
  • 게이트웨이 주소: 외부 세상으로 나가는 문

강의 영상

https://www.youtube.com/watch?v=HkiOygWMARs&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=5 

2계층: 가까이 있는 컴퓨터끼리 어떻게 데이터를 주고받는지

목차

  • 2계층에서 하는 일
  • 2계층에서 사용하는 주소
  • 2계층 프로토콜
  • 실습

 

2계층에서 하는 일

  • 2계층은 하나의 네트워크 대역 즉, 같은 네트워크 상에 존재하는 여러 장비들 중에서 어떤 장비가 어떤 장비에게 보내는 데이터를 전달, 추가적으로 오류제어, 흐름제어 수행
    • 2계층은 하나의 네트워크 대역 LAN에서만 통신할 때 사용
    • 다른 네트워크와 통신할 때는 항상 3계층이 도와주어야 함

 

2계층에서 사용하는 주소 = 물리적인 주소

  • LAN에서 통신할 때 사용하는 MAC 주소
  • 16진수로 작성 (6자리 = 6Byte)
  • 앞 여섯 16진수 = OUI: IEEE에서 부여하는 일종의 제조회사 식별 ID (삼성, HP, Apple 등등)
  • 뒤 여섯 16진수 = 고유번호: 제조사에서 부여한 고유번호

 

2계층의 프로토콜 = Ethernet 프로토콜

  • LAN에서 통신할 때 사용하는 Ethernet 프로토콜
  • 24Byte 사용
  • Destination Address: 6 Byte => Ethernet프로토콜의 목적지 주소는 MAC 주소
  • Source Address: 6 Byte (출발지 주소)
  • Ethernet Type: 프로토콜 타입, PayLoad 안의 1계층 프로토콜 (인캡슐레이션된)가 있다는 것을 알려줌

 

실습

1. 내 PC의 MAC 주소 확인해보기

- MacOS는 System Preferences -> Network -> Advanced -> Wi-Fi Mac Address 로 확인가능

- ifconfig 로도 확인 가능 (en0: ether 부분)

MAC 주소

2. Ethernet 프로토콜 캡처

3. Ethernet 프로토콜 분석: 캡처한 Ethernet 프로토콜에 내 MAC 주소가 있는지 목적지는 어디인지 분석해보기

강의영상

https://www.youtube.com/watch?v=y9nlT52SAcg&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=4 

모델의 종류

  • TCP/IP 모델
  • OSI 7 Layer 모델

TCP/IP 모델

현재 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신 규약(프로토콜) 모음

1계층: 네트워크 인터페이스

2계층: 네트워크

3계층: 전송

4계층: 응용

 

OSI 7 Layer - 더 중요

1984년 네트워크 통신을 체계적으로 다루는 ISO에서 표준으로 지정한 모델

1계층: 물리

2계층: 데이터 링크 - 이더넷

3계층: 네트워크 - IP, ICMP, ARP

4계층: 전송 - TCP, UDP

5계층: 세션

6계층: 표현

7계층: 응용 - HTTP

 

두 모델 비교

공통점

- 계층적 네트워크 모델

- 계층간 역할 정의

 

차이점

- 계층의 수 차이

- OSI 역할 기반, TCP/IP는 프로토콜 기반

- OSI는 통신 전반에 대한 표준

- TCP/IP는 데이터 전송기술 특화

 

네트워크를 통해 전달되는 데이터, 패킷

패킷이란?

- 네트워크 상에서 전달되는 데이터를 통칭하는 말

- 데이터의 형식화된 블록

- 패킷은 제어 정보와 사용자 데이터로 이루어지며, 사용자 데이터는 페이로드라고도 한다

- 패킷은 프로토콜들의 모음: 프로토콜들이 여러 겹으로 포장되어 있는 구조로 생각하자

 

구조

  • header  |  payload  | footer (대부분 footer는 사용 x)
    • ex
      • Ethernet  |  IPv4  |  TCP  |  HTTP (여러 프로토콜로 캡슐화된 형태)

인캡슐레이션

* 하위계층보다 상위 계층이 위에 오는 경우는 없다.

디캡슐레이션

데이터를 받을 때: 안에 들어있는 양식대로(순서대로) 하나씩 확인 (디캡슐레이션)

 

PDU: 계층별 패킷의 이름 (계층별로 이름이 다르다)

4계층의 PDU = 세그먼트: TCP | 데이터

3계층의 PDU = 패킷: IPv4 | TCP | 데이터

2계층의 PDU = 프레임: 이더넷 | IPv4 | TCP | 데이터

 

실습

1. 프로토콜의 캡슐화된 모습과 계층별 프로토콜들을 확인해보기

- Wireshark를 이용해 패킷을 캡쳐해보고 해당 패킷이 어떻게 캡슐화 되었는지 자세히 살펴본다.

3계층 (ARP) 캡처 모습

-> 이더넷은 footer 사용

 

영상

https://www.youtube.com/watch?v=Av9UFzl_wis&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=1 

앞으로 배울 내용

  • 네트워크란 무엇인가?
  • 네트워크의 분류
  • 네트워크의 통신 방식: 네트워크에서 데이터는 어떻게 주고받는가?
  • 네트워크 프로토콜
  • 따라학잇: Wireshark

 

네트워크란 무엇인가?

- 노드들이 데이터를 공유할 수 있게 하는 디지털 전기통신망의 하나이다.

 

인터넷이란?

- 문서, 그림 영상과 같은 여러가지 데이터를 공유하도록 구성된 세상에서 가장 큰 전세계를 연결하는 네트워크

- www를 인터넷으로  착각하는 경우가 많은데 www는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것

 

네트워크의 분류

크기에 따른 분류

  • LAN (Local Area Network): 가까운 지역을 하나로 묶은 네트워크
  • WAN (Wide Area Network): LAN과 LAN을 다시 하나로 묶은 것 (멀리 있는 지역을 한데 묶은 네트워크)

연결 형태에 따른 분류

  • Star 형: 중앙 장비에 모든 노드가 연결 - 일반적으로 가정집에서는 공유기를 통해서 핸드폰, 컴퓨터, TV 등등이 연결된다. 이 때 만약 공유기가 고장난다면?? -> 가까운 지역에 있는 연결(LAN)에 주로 사용
  • Mesh 형: 여러 노드들이 서로 그물처럼 연결 - WAN에 주로 사용 
  • 혼합형: 실제 인터넷은 여러 형태를 혼합한 형태

네트워크의 통신 방식

  • 유니캐스트: 특정 한 사용자와만 1:1 통신
  • 멀티 캐스트: 특정한 다수와 1:N으로 통신
  • 브로드 캐스트: 네트워크에 있는 모든 대상과 통신

 

네트워크 프로토콜 

프로토콜이란?

- 프로토콜은 네트워크에서 노드와 노드가 통신할 때 어떤 노드(from)가 어떤 노드(to)에게 어떤 데이터를 어떻게 보내는지 작성하기 위한 양식

- 택배는 택배만의 양식, 편지는 편지만의 양식, 전화는 전화만의 양식이 있듯, 네트워크도 프로토콜이라는 네트워만의 양식이 있다.

 

여러가지 프로토콜

  • 가까운 곳과 연결할 때: Ethernet 프로토콜 (MAC 주소)
  • 멀리 있는 곳과 연락할 때: ICMP, IPv4, ARP (IP 주소)
  • 여러가지 프로그램으로 연락할 때 TCP, UDP (포트번호)
  • 패킷: 여러 프로토콜들로 캡슐화 함 (Ethernet + IPv4 + TCP + 데이터)

Reference

 

How to choose an AWS profile when using boto3 to connect to CloudFront

I am using the Boto 3 python library, and want to connect to AWS CloudFront. I need to specify the correct AWS Profile (AWS Credentials), but looking at the official documentation, I see no way to

stackoverflow.com

 

2 - Sessions — AWS Data Wrangler 2.15.1 documentation

How Wrangler handle Sessions and AWS credentials? After version 1.0.0 Wrangler absolutely relies on Boto3.Session() to manage AWS credentials and configurations. Wrangler will not store any kind of state internally. Users are in charge of managing Sessions

aws-data-wrangler.readthedocs.io

 

dev = boto3.session.Session(profile_name='dev')

df = wr.athena.read_sql_query(
	boto3_session=dev,
	sql='''
    	select *
        from schema.table
    '''
)

+ Recent posts