기말 시험 대비 정리

강준호·2021년 12월 8일
0

트랜스포트 레이어 서비스

트랜스 포트 레이어

서로 다른 호스트들 간에 동작하고 있는 프로세스 들 사이에서 발생하는 논리적인 커뮤니케이션 링크를 만들어 주는 역할

엔드 시스템(호스트)에서 돌아가는 형태

-send side: 앱 메세지를 세그먼트 단위로 나눔-> 헤더를 붙임 -> 네트워크 레이어에 전달
-rcv side: 세그먼트 재조합해 메세지로 만듬 -> app 레이어에 전달

TCP 특징

  • 혼잡(congestion) 컨트롤
  • 흐름(Flow) 컨트롤
  • 커넥션 셋업
  • 세그먼트 = 트랜스포트 레이어 패킷

멀티플렉싱과 디멀티플렉싱

  • 프로세스는 하나 혹은 여러개의 소켓을 가지고 있음
  • 소켓= 네트워크로부터 프로세스로 가는 문
  • 각 소켓은 식별자(identifier)있음

전송 방식

  • 트랜스포트 레이어는 소켓에 데이터 보냄, 어플리케이션 레이어도 소켓에 데이터 넣어줌.

멀티 플렉싱

프로세스가 네트워크를 이용 -> 소켓을 만듬 ->프로세스들은 하나 이상 소켓 있음 -> 소켓에 할당된 identifier로 헤더를 만듬 + 소켓에는 하나의 포트번호가 할당 => 1024~65535까지 랜덤하게.

디멀티 플렉싱

데이터들이 Transport 레이어에 전달이 될됨 -> 각 헤더를 보고 어플리케이션 레이어에 관련된 소켓으로 위로 올려줌

멀티플렉싱 필요 요건

  • 소켓은 각 아이덴티파이어를 갖고 있음. 각 세그먼트들이 이 아이덴티파이어를 포함하도록 트랜스포트 레이어에서 헤더를 붙여줌.
    따라서 소켓 헤더의 source, dest port에 이 아이덴티 파이어 정보가 담겨.

UDP 멀티&디멀티 플렉싱 통신 방법

호스트가 보낼때

  • UDP 소켓에서는 dst 포트, dst IP주소로 소켓 식별. 같으면 패킷이 포워딩.

서버가 보낼때

  • 자신이 받은 세그먼트에서 소스포트 번호 뺴낸 후에 이를 dst 포트번호로 사용하고 소스포트는 내꺼 번호 넣음.

TCP 통신 방법

  • src IP,src port, dst IP, dstPort 가 필요

  • UDP 와 달리 커넥션관리를 해야하기 때문에 유의미한 식별자가 더 필요
  • 4가지 식별자(+소스 IP,Port)를 보고 소켓 식별(-> 웹 서버 트랜스 포트 레이어는 디멀티플렉싱을 수행

UDP

특징

  • 혼잡 컨트롤 x
  • 커넥션 x => 빨라 but 순서 어긋날 수 있음
  • 헤더 사이즈 작음

UDP 세그먼트 구조

  • 소스포트, dest 포트, length(app 쪼개진 길이 + 전체 헤더 크기), Checksum(UDP에 에러 있는지 없는지) ,app data(쪼개서)

Checksum 사용이유

  • 라우터가 고장나서 링크레이어의 에러 체크 오류날 수 도 있어서
  • 네트워크 라우터에서 데이터 오류날 수 있어서

reliable 데이터 트랜스퍼 원칙

  • 에러나 공격이 발생하면 패킷을 재전송하자

파이프 라인

  • 기존 파이프라인은 U(sender) 유효시간동안 패킷을 얼마나 보내는지 = (L/R)/(RTT+L/R)임 = 찐 패킷 보낸시간/총시간.
  • 이게 형편없는 경우 많아서 = >파이프 라인프로토콜 등장

그러기 위해서..

  • 시퀀스 라인 범위 늘어나야해
  • ACK를 기다리는 패킷을 버퍼링 하는 버퍼가 필요해

중간중간 유실된 패킷 retrans 전략

GO-back-N

  • 유실된 패킷을 기준으로 다시 한 뭉태기를 보내줌
  • 여러개의 패킷을 보내야해서 range 커, TCP 헤더에 seq 넘버도 있어야해

윈도우 내부

  • base : 아직 ACK되지 않은 놈 중에 번호 최상단인 애 + base를 기준으로 timer 세팅=> 타이머 차면 base부터 윈도우 크기만큼 전송~
  • nextseqnum : 윈도우에서 아직 사용되지 않은 놈 중에 번호 최상단인 애
  • ACK(n) : cumulative ack라고 하며, 1~n번까지 ack 완료!

GBN 동작원리

sender

  • 타임아웃 되면 base~윈도우 크기만큼 재전송

receiver

  • 내가 받은것 중에서 젤 최신놈을 ACK
  • 내가 기다리는 놈 안오면 그 위에 놈들 다 버리고 계속 동일 ack

Selective Repeat

  • 잃어버린 하나만 따로 보내줌
  • gbn과 다르게 리시버에서도 윈도우가 관리됨

sender

  • ack 받으면 윈도우 움직여
  • timeout 되면 그 놈만 다시 보내

receiver

  • send 받으면 ack 보내고 윈도우 한칸씩 밀어
  • gbn과 달리 순서대로 안받아도 ack 보내줘
  • timeout 되서 send 받으면 받은건 윈도우 껑충 뛰어. 안받은 놈부터 윈도우 base 시작

정리

TCP가 reliable할 수 있는 이유

checksum

  • 패킷에 에러가 있는지

Timer

  • 패킷 로스 대비한 타이머

Sequence num

  • 패킷 순서 결정해주는 seq num

ACK

  • 패킷 잘받으면 ack

(NAK)

Window, pipelining

  • 윈도우 기반으로 n개의 패킷을 보내는 파이프라인
  • 이때 패킷 로스들을 처리하기 위해서 -> GBN,Selective repeat

TCP 특징

connection-oriented

  • 커넥션을 맺기 위한 작업이 필요(핸드쉐이킹)

flow controlled

  • 센더가 리시버 버퍼 상황보고 결정

congestion controlled

  • 네트워크가 감당할 수 있을 정도의 빠르기로 데이터를 보낸다

reliable, in-order byte stream

  • 순서 정의, reliable 한 프로토콜

pipelined

  • 효율성 향상을 위해 여러개씩 보내는 파이프라인 디자인

작동방식

  • 클라이언트에서 소켓 만듬 ->세그먼트 보냄->서버 세그먼트가 해당 소켓 받음->데이터 처리
  • TCP는 센더의 ip주소,포트넘버,des ip주소, des 포트 넘버로 구별.
  • 모든 커넥션들이 유일한 식별자를 부여할 수 있음.-> 하나의 소켓으로 커넥션 여러개 관리 가능.

TCP 세그먼트 구조

  • 소스 포트, des 포트, seq num, ack num, 리시브 윈도우 등

seq num, ACK

  • cumulative ack 시스템 사용

TCP round trip, timeout

  • TCP 타임아웃은 RTT(패킷 하나 보내고 ack 받는 시간)보다는 길어야
  • 타임 아웃 시간을 정하는 방법으로는 추정 RTT + 4*DevRTT(safety 마진) 를 곱하는 방식이 있다.

TCP reliable 데이터 전송 비결

  • 파이프 라인 세그먼트
  • 누적 ack
  • 타이머 세팅
  • 중복 ack 처리

TCP fast retransmit

  • cumulative ack 방식 사용
  • 문제가 발생한 놈만 다시 보내줌
  • 중복 ack 3개 나오면 다시 보내줌 -> 타임아웃 시간안에 다시 보내줘서 바로 만회가능

TCP flow control

  • 받는 리시버 생각해서 보내주기
  • 리시버는 (TCP 패킷 헤더에 있는) 빈공간이 얼마나 남았는지 리시브 윈도우 밸류를 알려줌

3way handshake

  • tcp 커넥션 전에 악수 함 하고 시작

client

  • SYN = 1, seq= client 랜덤 값
  • 다시 보낼때 SYN=0, seq = 클라이언트+1, ack= 서버+1

server

  • SYN = 1, seq = sever 랜덤 값, ack= 클라이언트 seq+1

커넥션으로 인한 해킹

Syn Flood Attack

  • 좀비 Botnet으로 특정 서버 접속함 -> 커넥션 맺어달라고 계속 요청 -> 서버는 이것도 모르고 syn ack 좋다고 보냄 -> 헥헥 거리다가 서버 리소스 가득참 -> 진짜 필요한 사람은 요청 못받음ㅜ

congestion control의 원리

congestion

  • 네트워크에 데이터가 많아지면 조절하는거(차막혀서 늦거나, 빨리 출발하는거/가는 속도 조절 가능)
  • 패킷 로스가 발생
  • 큐잉 딜레이가 늘어나(큐로 인한 딜레이) => 교통 혼잡

시나리오 1

무한한 버퍼, 패킷이 유실되도 재전송x

  • 두 센더가 최대한 많이 보내도 양분해서 서 r/2이야
  • 라우터의 큐사이즈는 무한대지만 큐가 다 차야지 전송됨으로 딜레이는 R/2에 가까울수록 계속 늘어나

시나리오 2

버퍼 유한, 센더는 재전송 전략 있음(타임아웃)

  • 100개를 보내면 100개를 받아야함(람다 in=람다 out)
  • BUT 데이터 전송량은 달라: 패킷 유실이 있기 때문에 (람다' in>= 람다 in)

이상적 상황

sender가 버퍼의 유효공간을 정확하게 알때(패킷 로스 X일때)

  • 패킷 로스에 따른 재전송이 있어서 (람다'in >= 람다out)

현실적 상황(중복 패킷 발생)

  • 버퍼 딜레이때문에 느리게 가는데 타임아웃으로 중복 재전송
  • 매번 중복패킷이 발생한다는 극단적 상황일때 r/4 밖에 못받음ㅜ =>재전송이 많아지면 안좋아

시나리오 3

  • 빨강 + 파랑 일때 위에 라우터 타고 B로 간다면, 더 멀리있는 파랑은 빨강에 밀려서 로스가 발생 할 수 밖에 없어
  • 전송량은 다른 노드에 영향을 줘 =>성능저하

TCP congestion 컨트롤

(네트워크 어시스트 congestion 컨트롤)

  • 네트워크 안에 버퍼 상황을 체크 ->혼잡도 커지면 네트워크가 알려줘
  • 정확도 굳 but 설치 힘듬

End-to-End congestion 컨트롤

  • 네트워크 혼잡도를 Host가 계산해서 데이터 유실 많아지면 전송량 조절

congestion 컨트롤 방법

  • sender 가 transmission rate를 관리해 증가, 감소시킴(로스시)
  • congestion 윈도우를 사용함(cwnd)
  • 리시브 버퍼(rwnd)는 매우크다고 가정했을때 cwnd는 TCP sending rate에 비례

congestion 컨트롤 알고리즘

Slow Start

  • 하나 보냈을때 통과면 2배 증가
  • 초기 rate가 적지만 증가 빨라!

Congestion 회피

  • sthresh(마지막 congestion 발생했을 기점의 절반)
  • 2배씩 가는 슬로우 스타트 하다가 sthresh 만나면 1씩 증가

Fast 리커버리

  • 중복 ACK가 3개 발생되면 시작
  • ssthresh +3 부터 1부터 증가하면서 시작 => 네트워크 퍼퍼먼스를 증가시키기 위함

TCP 정리

멀티플렉싱, 디멀티플렉싱

  • 포트넘버로 어디로 데이터를 보낼지 결정해주는거

reliable 데이터 트랜스퍼

  • GBN, selective repeat 방법이 혼용된 방법 사용.

flow 컨트롤

  • 상대방의 버퍼사이즈를 보고 데이터 송신량 조절

congestion 컨트롤

  • 전체 유저 사용량 보고 조절

네트워크 레이어

트랜스포트 레이어에서 데이터를 받아서 다른 지역의 호스트 까지 데이터를 전달하는 역할

  • sender side
    데이터를 받고 -> 세그먼트 단위를 캡슐화해 패킷 단위로 만드는것
  • receive side
    트랜스포트 레이어까지 내가 받은 세그먼트를 전송

목적지까지 패킷을 보낼때

  • 어플리케이션레이어에서 만들어진 데이터 => 트랜스포트레이어에서 세그먼트 단위로 쪼개짐 -> 각 세그먼트 앞에 IP 주소 붙음 -> 네트워크 패킷
    -> 데이터 링크 -> 물리 계층 -> 라우터로 -> 라우터에서 물리신호 보고 네트워크 헤더까지 본다음 라우팅 -> 목적지로 데이터 전달!

라우터

  • 라우터에는 트랜스포트, 어플리케이션 레이어 없어도돼
  • 네트워크까지만 구현되어있음

네트워크 계층 기능

포워딩

  • Data Plane의 기능으로, router의 input 부터 output까지 packet이 옮겨지는 것
    ex) 부산에서 대전으로 가는 방향을 결정해주는 : 1. 방향 조준

라우팅

  • Control Plane의 기능으로, source 부터 destination까지의 경로를 구축하는 것 ex) 부산, 대전,전주 를 거쳐서 가는 방법 2. 대포 발사

네트워크 계층 2가지

data plane

  • 포워딩 하는걸 결정해줌

ex) 데이터 플레인 (인풋이 왔을때 헤더 정보로 1번 output 포트로 보낼지, 2번일지 결정하는 것) 행동파 vs 포워딩(인풋이 왔을때 어느 output으로 보내는 기능) 설계파

control plane

  • 데이터 플레인이 어떻게 동작할지를 컨트롤 플레인으로 결정
  • 포워딩 테이블을 만들어줌
  • 어떤 식으로 라우팅 되서 source에서 dst 까지 갈것인가를 결정해줌

    ex) source에서 노랑이 루트로 갈지, 빨강이 루트로 갈지, 실선 루트로 갈지 결정

control plane- traditional routing 알고리즘

  • 패킷이 왔을때 최선의 결정을 하는

control plane- SDN(software-defined networking) 알고리즘

  • 라우터 위에 중앙컨트롤러가 라우팅 룰 등을 효율적으로 조절해주는 방식

traditional vs SDN

traditional 장단점

  • 라우팅 알고리즘이 고정. 동적으로 대응 X
  • 좀더 동적으로 빠르게 대응하기 위해서 SDN 이 만들어짐.

SDN 장단점

  • 동적으로 빠르게 반응 가능
  • 통신과정 중에 딜레이 있을 수 있음, 공격자가 룰을 망가트릴 가능성도 있음

라우터 아키텍처

control plane - 라우팅 프로세서

data plane - 인풋 포트

인풋 포트 기능

line termination

아날로그 신호가 라우터에 도착하면 이를 디지털로 컨버젼

링크레이어에서 이를 해석해줌

lookup, forwarding, queueing

  • 데이터가 어디로 갈지 결정, output 포트 결정후 포워딩, 데이터 많이 오면 queueing 작업 발생 => destination-based forwarding

  • destination-based forwarding은 dst ip주소 기반으로 어떤 output포트, 어떤 link interface로 보낼지 결정

  • input port queueing 추가 설명

    input에는 큐가 있어야지 떨궈지는 패킷이 안생겨.
    경로 겹치면 한놈은 못보내.
    앞에 놈이 안나가면 계속 기다리는 현상이 발생ㅜ(HOL blocking)

data plane - 스위칭 패브릭

인풋포트와 아웃풋 포트가 막 꼬이게 되는 경로를 스위치로 풀어줌

memory

과거 사용. 패킷 interupt기반. 속도 느림

bus

데이터가 오면 레이블을 붙여서 버스로 보냄. 모든 포트가 데이터 접시 받고 이를 뷔페 처럼 먹을 수 있음. but 한번에 한버스만 가능해서 밑에 있는 애들은 좀더 기다려야해

crossbar ☆

input output 교차로 마다 on/off 스위치가 있어. 찐 패브릭 느낌

data plane - 아웃풋 포트

queueing

앞에서 들어오는 데이터가 많거나, line termination에서 느리게 보내면 큐잉 생겨. => 아웃풋 포트에도 버퍼와 큐잉이 필요

우선순위 기반 scheduling도 가능

패킷이 큐에 있을때 어떤 놈 먼저 나갈지 스케쥴.
ex) FIFO 구조, priority 스케쥴링 +가중치, 라운드 로빈 방식(찐한색, 연한색 번갈아가면서)


Internet network layer

  • 라우팅 알고리즘으로 포워딩 테이블을 만듬. 이 포워딩 테이블을 참조해 포워딩이 이루어짐

IP fragmentation, reassembly


MTU = 최대 transfer 가능 사이즈

fragmentation

  • 출력 포트에 알맞게 큰 패킷을 쪼개 줘야해.

reassembly

  • 쪼개진 패킷을 final dst에서 다시 합치는것

IP Addressing (중요)

인터페이스에 IP 가 부여됨.
라우터는 멀티플한 인터페이스가 존재, 호스트는 보통 두개의 인터페이스를 갖음.

Subnet

  • 적절한 단위로 네트워크를 분할해야할 필요성이 나타남. >> subnet

  • 서브넷(Subnet)이라는 것은 하나의 네트워크가 분할되어 나눠진 작은 네트워크

  • IP 주소의 높은 비트는 - 서브넷, 낮은 부분은 - 호스트 주소.


subnet mask: /숫자
(숫자는 서브넷으로 사용되는 비트 수)
Ex) 223.1.1 = 서브넷
0/24 = 서브넷으로 사용되는 24비트

IP Addressing: classful addressing

  • 일정한 비트로 서브넷을 클래스로 나누는것

상위 8비트로 서브넷을 나누면 클래스 A, 16비트는 B, 24비트는 C
클래스 C는(/24) 256-2= 254 호스트 밖에 못써..
근데 또 B는 65634 호스트로 너무 많아
=> 애매..

IP Addressing: CIDR(classless inter domain routing)

  • 서브넷을 딱 정하는게 아니라 임의의 길이로 함.
    주소 포멧을 a.b.c.d/x 로 표현. ex) 200.23.16.0/23

  • 호스트 주소부분과 서브넷 주소를 variable하게

IP 주소 어떻게 얻어?

  • DHCP로

DHCP(동적 IP)

DHCP 서비스를 하기위해서 서버를 구축.

DHCP 프로토콜

client는 DHCP 서버한테 브로드캐스트 시도.
DHCP는 오퍼 주고, client는 여러개의 오퍼 받을 수 있어.
->그 오퍼중에 가장 자신있는걸로 request 보냄. yiaddrr 써도돼?
-> DHCP ACK (소스 주소랑 broadcast 주소를 알려주면서 쓰라고 함)

NAT(network address translation)

NAT 장점

  • 특정 IP 레인지를 사올 필요 없어. 모든 디바이스의 하나의 IP 사용가능
  • 내부 사설 IP 바꿔도 외부에 통보 안해도됨.
  • 내부 주소가 보이지 않아서 보안 굳

NAT 순서

  • dst로 통신하고 싶을때 S: 자신 IP를 소스로 하고 포트를 랜덤. D: 포트번호 80하고 웹서버 접속.
  • dst는 그대로 두고, 자신 라우터의 IP주소로 소스주소, 포트번호 바꿔. 자신이 만든 포트넘버와 이전 주소 기록해
  • 나가는 패킷은 source IP, port번호를 새 NAT IP,port로 바꿔줘. 이를 기억하고 있다가 돌아오는 패킷은 다시 원상태로 바꿔줘.

IPv6

아직까지 발전 안한 이유

  • NAT 이 있어서 아직은 집에서 사설 IP로 통신할 수 있거든~
  • flag day(쉬는날)가 없어. => 터널링으로 해야해
    터널링: IPv4를 중간에 패킷을 만들어서 숨기고 전달하고 하는 방식

IPv4와 차이

  • checksum
    프로세싱 스피드를 빠르게 하려고 v6에선 뺐음
  • options
    옵션도 동일하게 v6에서 제외
  • MTU 지원하지 않아서 쪼개고 복고 안함. 너무 크면 걍 버리고 source한테 다시 만들라함.

라우팅 프로토콜

가장 좋은 path를 결정하는것. 가장 효율적으로 보낼 방법 찾기

네트워크 그래프 묘사

  • Cost of path
    숫자가 크면 => 대역폭 작고, 혼잡도 높아.

라우팅 알고리즘

source~ dst 까지 어떤 경로가 가장 적은 cost로 보낼 수 있는가

  • 모든 link cost 정보를 가지고 라우팅.
  • 변화 주기적 체크하고 상태를 주변 노드한테 알려주는 link state broadcast 사용.
  • 모든 node들에 대한 라우팅 패스를 최소화하는 방법을 계산 => forwarding 테이블에 반영됨

단점

진동이 가능하다는 점.
어디는 패킷이 많고, 어디는 적고 해서 경로가 바뀔 수 있어

distance vector 알고리즘

  • Bellman-Ford 사용
  • 지역화된 정보를 가지고 라우팅 함. 주변 노드의 link cost만 알고 라우팅 함

핵심

  • 이웃노드로 갈 수 있는 최적의 값을 받은 다음 내 기점으로 link cost를 보면서 최종 dst에 빠르게 가는 경로 찾기 => 이웃 노드의 도움을 받아 예상하기, 링크 코스트가 변하거나 주변노드가 변할때 벡터가 수정됨.

라우팅 프로토콜 링크 스테이트 vs 디스턴스 벡터 알고리즘 비교

메세지 복잡성

  • LS: 메세지 보낼때 N개 노드 x E개 링크 필요. 복잡
  • DV: 이웃노드끼리만 데이터 교환하면 됨. 단순

속도

  • LS: 노드가 정해지면 메세지도 정해지고, 진동 있더라도 cost가 고정임
  • DV: 라우팅 loop, infinity 문제가 생길수도 있음. cost가 고정이 아님

견고함

  • LS: 각자 계산을 해서 노드가 하나 실수하면 자신의 포워딩 테이블만 잘못됨(대규모 적합)
  • DV: 이웃노드에게 계산 값을 알려줘서 똥싸면 연쇄적으로 클나..
    (소규모 적합)

OSPF(open shortest path first)

(Intra-AS routing in the Internet)

  • 기존 링크 스테이트 와 디스턴스 벡터는 현실적이지 않아 => 네트워크는 대부분 계층적인 상황이기 때문
  • 우리가 모든 dst를 저장하고 있는건 불가능. => 확장성이 보장이 되야함

라우팅 프로토콜

  • 라우팅을 구성하는 노드들이 자동화가 되어야함.

OSPF(open shortest path first) 알고리즘

  • link-state 알고리즘 기반 => 전체 네트워크 맵을 그린 후에 작동
  • 링크 스테이트 정보가 퍼지는 패킷이 있어야함
  • 링크에 대한 정보가 업데이트 되면 다익스트라 알고리즘이 구동되어야함

큰 도메인 안에서 계층구조 OSPF

  • 큰 도메인은 모든 노드들이 link-state 정보 공유해야함. 비효율적임
    => 도메인 안에 sub 도메인에서 link-state advertisement 하면 지역적인 정보들이 왔다갔다 하니까 코스트 줄어듬. 효율적
  • Area border router는 자신의 네트워크에 속한 라우터들이 어떤 상태인지 정보 조사하고 이를 다른 border 한테 공유해줌
  • Backbone router는 다른 백본 라우터들끼리 OSPF 가능
  • Boundary router는 다른 autonomous system과 연결할 수 있음(inter-as routing)

BGP(border gateway protocol) 알고리즘

  • subnet에 자신의 존재를 알려주는 프로토콜

BGP 규격

  • eBGP: as간의 메세지 교환할때 사용. 1c에서 2a까지 가는걸 알려줌(대장급 대화)
  • iBGP: as 내부 라우터들끼리 bgp 메세지 교환할때. 1d가 2a로 가는 경로를 알 수 있게 해줌.(내부 대화)

BGP 기초

  • TCP 위에서 돌아감
  • 다른 지역에 있는 네트워크에게 내 존재를 알림.

BGP 경로 선택 방법

  • 가까운 NEXT-HOP 라우터: Hot potato routing
  • 짧은 의사 결정이라는 뜻. ex) 2d에서 2a로 돌아가는 걸 택해

Intra-As routing + Inter-As Routing => Forwarding table


Link layer 서비스

Error detection, correction(EDC)

  • 에러가 발생했을 때 비트를 뽑아내고 EDC 값과 비교를 해서 에러가 있으면 => 패킷 버려짐. 없으면 IP레이어로 올려줘
  • EDC는 100퍼 신뢰되지는 않아.
  • EDC 사이즈가 길수록 redundancy가 많아져서 EDC하기 쉬워져, 에러 찾기 쉬움. But 전송 성능은 떨어져
  • redundancy가 있어야함(correction할때) => 그걸 복구하기 위한 추가 정보가 있어야..

MAC(Media Acces Control) protocols

channel 파티션

  • 채널을 쪼개서 사용

TDMA(channel 파티셔닝 Mac 프로토콜)

  • 데이터 안보내는 애들도 슬롯이 할당되서 비효율적. But "시간"을 보장해야하는 경우에는 가끔 쓸만함.

FDMA

  • 주파수 간격으로 데이터를 쪼갬.

random access

  • 채널 쉬고 있으면 노드들이 데이터좀 씀. 눈치게임하다가 충돌 발생하면 딜레이 쉬었다가 다시 눈치게임
  • 두개 이상 노드가 전송되면 => 충돌

slotted ALOHA(거의 안쓰임)

장점

  1. 내가 쓸 수 있는 타임슬롯이 할당되면 온전히 노드 혼자 씀. 전송 rate 풀차지로 쓸 수 있음.
  2. 충돌 감지되면 그 다음 슬롯을 선택할 확률을 p로 설정하는 심플함..

단점

  1. 충돌 자주발생.
  2. 비어있는 타임슬롯 => 대역폭 낭비
  3. 시간 동기화가 힘듬..

CSMA(carrier sense multiple access. 노빠꾸)->알로하 대안,

  • 데이터 쓰기전에 채널을 senseing해서 상태 감지하고 누가 쓰고있으면 transmission 지연시킴.

단점

  • 둘다 노빠꾸로 전부 보내기 시작하니까 두명이 채널 다 독점함. => 에러인데 채널은 다차지해서. 낭비!

CSMA/CD(+충돌 발생하면 보내지말자. 겸손한 사람)

  • 충돌 발생하면 전송 멈추자!

장단점

  • wired LAN에서는 쉬워 (쉐어드 채널이기 때문에 시그널 쉽게 보여) but, wireless 에서는 어렵..
  • 무선랜에서는 누가 쓰고있는지 몰라(신호약한게 멀리있어서인지 진짜 약한건지 등)

taking turns

투표(polling) protocol

  • 서로 번갈아가면서 데이터씀. 공평하지만 비효율적.

단점

  • 폴링 오버헤드
  • latency 있음
  • 마스터 노드에 에러가 발생하면 slave들이 통신 못해..

token passing

  • 토큰을 계속 옆으로 돌려서 발언권 갖고 보낼꺼 있는 사람 보내~

단점

  • 토큰 오버헤드
  • latency 있음
  • 마스터는 없지만, 하나가 장애가 발생하면 옆에 애한테 토큰 못전달해줌..

LANs(Local Area Network)

ARP(address resolution protocol)=상대방 맥주소 알아오는 방법

  • 맥주소 알려달라고 크게 소리쳐야해 => 브로드 캐스트
    => ARP 테이블에 저장 (ip 주소, Mac, TTL) TTL은 매핑시간(ip는 변함으로 일정 시간 지나면 지워버려도돼)

    -plug-and-play 특징 (특별한 설정없이 동작가능)

같은 LOCAL 일때 방법

    1. B의 맥주소를 알려면 B의 ip를 넣은 ARP 패킷을 만들고 dst맥주소를 FFFFFFF(브로드캐스트주소) 로 놓고 막 소리지름.
    1. 주변에서 B가 소리 듣고 A한테 자기 MAC 알려줌
    1. 정보 받은 A는 ARP 테이블에 기록하고, TTL 시간동안 유지

다른 LAN 일때 방법

  • 전제) A는 라우터 R의 맥주소, ip를 알고있음
    1. 데이터그램에 B ip주소 넣음. B 맥주소는 모르니 라우터의 맥주소 넣음.
    1. 라우터 R까지 데이터가 보내짐.
    1. R은 B의 맥주소를 알고 있음으로(이미 ARP 테이블 있을거임) B의 주소로 보냄

Ethernet(wired LAN의 표준)

특징

connectionless, Unreliable

  • 핸드쉐이크 이런거 없음. 데이터 링크에서는 커넥션 필요없어. reliable 하지않아
    이건 상위레이어에서 ACK NAK 하는거.

MAC 프로토콜

  • CSMA/CD 겸손한 사람 방법.

Switches

특징

  • 받는 패킷을 다른쪽 링크로 포워딩해줌.
  • 인풋포트에서 데이터가 오면 아웃풋 포트로 인터페이스 방향을 결정해서 내보냄.
  • 즉, 패킷을 받아서 디렉션만 해줌

기능

필터링

  • 프레임을 어디로 보낼지 혹은 드롭시킬지를 결정하는것

포워딩

  • 필터링에서 이걸 보내야한다고 하면 output 포트로 보냄

다중 동시 통신

  • 각 링크마다 버퍼가 있어서 충돌이 발생 X => 스위칭 아무때나 일어날 수 있어

스위치(L2) VS 라우터

라우터

  • "네트워크" 디바이스의 헤더를 봄 => ip주소 봄
  • ip주소 기반으로 데이터를 보내는거 결정

스위치

  • "링크레이어"까지만 보기 때문에 MAC주소를 봄
  • MAC 주소 기반으로 데이터 보내는거 결정

VLANS(Virtual Local Area Network)

가상으로 브로드캐스트 도메인을 나눠주는 기술

  • 스위치가 두개인거처럼 나눌 수 있음
  • 서로 다른 VLAN 영역끼리 통신하려면 라우터를 통해서 해야함
  • 두개의 IP 대역이 달라짐. => 두영역의 subnet이 아예달라짐

Trunk port (빨간선으로 스위치 여러개 연결)

  • 스위치를 작은걸 사게되서 같이쓰게되면 인터페이스를 또 나눌 수 있음.
  • 빨간 선을 통해서 서로 통신가능.
  • 같은 색끼리 통신할 때는 일반 이더넷 통신 => MAC만 보면됨.
  • 다른 색 통신은 서로 IP대역이 달라서 라우팅해야함.

지금까지 레이어 요약

1. DHCP

  1. 내 노트북을 학교 들고왔으면 학교에 있는 DHCP서버로 부터 IP주소 할당받음.
  2. 외부로 나가는 웹주소의 라우터 주소를 알아야함.
  3. ARP를 통해 외부로 나가는 MAC 주소 알게됨.
  4. 이제 DNS패킷을 라우터를 통해 dns까지 보낼 수 있게됨
  5. DNS한테 우리가 접속하고자하는 서버의 IP주소(구글)를 받아옴
  6. 핸드쉐이크 하기 위해서 TCP syn 패킷 보냄
  7. 구글은 이걸 받아서 syn ACK 받는 3way 핸드쉐이크 함.
  8. Tcp 커넥션이 맺어짐.
  9. 웹사이트의 페이지를 받기위해 HTTP 요청 보냄
  10. 서버가 요청을 수신해서 http response 보냄
  11. 중간에 패킷이 유실되면 TCP 가 알아서 해줌

침입 탐지 시스템(IDS)

IDS 의 종류

NIDS(Network-based IDS)

  • 네트워크 패킷 기반.

탐지 위주 정책으로 네트워크 사이에 인라인으로 끼어 들어가지 않음

  • 단순 모니터링 하는 용도. 고장나더라도 네트워크는 잘 왔다갔다함=> 이중화 구성(백업) 안해도됨

장점

  • 모든 호스트에 개별적으로 설치 안해도됨
  • 네트워크 전체를 다 볼 수 있음

단점

  • 네트워크를 쓰는 공격만 탐지 가능.
  • 암호화된 트래픽은 알아차릴 수 없음

HIDS(Host-based IDS)

  • 호스트 기반
  • 서버 혹은 pc 의 호스트를 관리.
  • 내pc, 서버 등 다 설치 해야함

장점

  • 상세분석이 가능.
  • 사용자 단위 분석도 가능

단점

  • 설치된 호스트만 볼 수 있음

침입 차단 시스템(IPS)

IDS vs IPS

시스템 타입

  • IDS는 모니터링만 함. passive
  • IPS는 모니터링 하다가 차단까지해서 active

감지 매카니즘

  • 둘다 동일

설치 위치

  • IDS는 가지치기 해서 포트 미러링을 통해 복사받음
  • IPS는 인라인 형태

공격 대응 방법

  • IDS는 공격 탐지하고 알람만줌
  • IPS는 경고를 주거나 없어배릴 수 도 있음

네트워크 performance

  • IDS는 네트워크 스피드에는 영향 X
  • IPS는 인라인 형태이기 때매 패킷 속도에 저하가 생길 수 있음

이점

  • IDS는 탐지기능에는 많이 활용됨
  • IPS는 IDS의 상위호환 느낌이지만. 정상패킷을 차단해버릴 수도 있는 단점이 있음

암호기술

암호학적 해쉬 함수

대칭키 암호

블록 암호

  • 대칭키 암호의 메인 꼴로 실생활에서 가장 많이 사용(AES)
  • 암호화 되는 파일의 사이즈를 정해놓을 수가 없으니 블록단위로 쪼개서 암호화

네트워크와 암호

  • 암호화가 모든 링크에서 독립적으로 수행됨
  • 링크마다 암호화를 함

장점

  • 헤더 부분까지 암호화해 트래픽 흐름을 숨길 수 있음

End-to-End encryption

  • 시작점에서 도착점까지 암호화가 수행됨

단점

  • IP 헤더 부분은 암호화되지 않음 -> 라우팅 하기 어려워서 => 트래픽 흐름이 노출될 수 있음 => 도청자가 A와 B가 암호화를 하고있구나는 알 수 있음.

둘다 대칭키 암호를 사용함 -> 속도 빨라서

IPsec

  • '네트워크 레이어'에 대한 보안을 제공하기 위함
  • 어플리케이션 레이어에서 보호되지 않는 애들, UDP 위해서 사용
  • 특수 보안 목적(vpn)

전송(Transport) 모드

  • end-to-end 보안을 제공하는 방식
  • IP 데이터 영역만이 보호되며, IP 헤더는 보호되지 않음

터널모드

  • IP 패킷 전체를 보호하는 방식
  • IP 데이터+ IP 헤더까지 보호 => 트래픽 흐름 보호가 가능

0개의 댓글