CS/네트워크 수업 / / 2021. 3. 23. 02:17

컴퓨터 네트워크 3주차


1.6 netwoks under attack: security

1Bad guys: put malware into hosts via Internet

  • 초기의 인터넷 목표는 '신뢰할 수 있는 사용자들끼리 상호 통신' 을 목표로 했기 때문에 보안에 대한 문제를 생각하지 않았다. 그러나 현재의 인터넷은 보안의 대한 문제를 생각하지 않을 수 없으므로 모든 층에서 보안을 고려해야 한다
  • malware(나쁜 소프트웨어)가 인터넷을 통해서 호스트에 침투할 수 있다. → virus, worm
    • virus는 자체적으로는 감염을 일으킬 수 없다. 즉, 숙주가 있어야 한다. 예를 들어, 이메일에 첨부 파일로 온 소프트웨어를 사용자가 실행을 해야 감염이 된다.
    • work은 숙주가 없어도 된다. 스스로 실행할 수 있는 능력이 있음. 이런 오브젝트 단지 수신하기만 해도 스스로 실행할 수 있으므로 감염된다.
  • spyware malware: 사용자 정보(e.g. 방문한 웹 사이트)를 자신의 수집 사이트에 업로드.

Bad guys: attack server, network infrastructure

  • Denial of Service: 공격자들은 가짜 트래픽을 만들어서 해당하는 서버에 과부하가 오도록 공격. 이렇게 함으로써 일반 사용자의 요청을 서비스할 수 없게끔 만든다.
    1. 타겟을 정한다.
    1. 네트워크 주변에 있는 호스트들에 침투한다.
    1. 감염된 호스트로 하여금 서버쪽으로 패킷을 무한정 보내도록 명령을 내린다.
    1. 서버는 가짜 트래픽을 처리하느라, 일반 유저 요청을 처리할 수 없다.

Bad guys can sniff packets (중간에 패킷을 가로채서 분석 시도)

  • broadcast media(shared Ethernet, wireless) → 스위칭이 되지 않는 네트워크 즉, 주변에 있는 사용자가 모두 데이터를 얻을 수 있는 환경. e.g. 와이파이 환경에서는 모든 패킷이 주변에 뿌려지기 때문에 동일 공간에 있는 사용자들 모두 데이터를 받을 수 있다.
  • 네트워크를 지나가는 모든 데이터 패킷을 기록한다(아이디, 패스워드 등)
  • 패킷에는 목적지를 기입하게 돼 있는데, 목적지 호스트가 자신이 아니면 원래는 해당 패킷을 열람하면 안 된다. 그러나 위에서 언급한 바와 같이 broad 환경에서는 패킷 스위핑(패킷 엿보기)이 가능하다. e.g. wire shark

Bad guys can use fake address

  • IP spoofing(IP 주소 속이기): 가짜 출발지 IP 주소를 가진 패킷을 전송해서 도착지 호스트 속이기. 서버 측이 이로 인해서 잘못된 액션을 취할 수 있다.

Transport Layer

Transport Layer의 예

4계층에서는 컴퓨터의 어떤 프로세스에게 데이터를 전송해야 하는지를 결정한다. 우리의 컴퓨터에는 카카오톡, Zoom, 크롬, 디스코드, 메모장같이 여러가지 프로세스가 실행되고 있다. 그렇다면 영희가 받은 데이터는 어느 프로세스에서 받아야 하는 데이터일까? 예를 들어, 철수와 영희가 카카오톡으로 채팅을 하고 있다고 가정해보자. 철수는 영희에게 Hello World 라는 메시지를 전송했고 스위치->라우터->라우터->스위치를 통해서 영희 PC의 카카오톡 창에 철수가 보낸 메시지가 도착했다. 왜 하필 많은 프로세스 중에 카카오톡에 도착했을까? 줌도 있고 메모장도 있고 많은 프로세스가 현재 영희 PC에서 실행되고 있는데 말이다. 결론부터 말하면 프로세스들은 데이터 통신을 할 때 포트번호(Port Number)라는 걸 가져야 한다. 포트 번호란 하나의 컴퓨터 내에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값이다. 포트 번호의 범위는 0~65535의 값으로서 그 이상의 프로세스들은 하나의 컴퓨터 내에서 실행될 수 없다. 그러나 현실적으로 65535 이상의 프로세스들이 동시에 실행될 이유는 없으니 이 문제는 차치하도록 하자. 정리하자면, 데이터를 전송하는 철수는 영희의 IP 주소 뿐만 아니라 영희의 PC의 어떤 프로세스가 받을지를 결정하는 포트번호까지 알고 있어야 한다. 그래야 영희에게 데이터가 전송된 후에 포트번호를 이용해 특정 프로세스에게 데이터를 전달할 수 있다. 즉, Transport Layer는 포트 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터를 도달하게 하는 모듈이다. Transport Layer도 3계층인 Network Layer와 마찬가지로 OS 커널에 소프트웨어적으로 구현되어 있다. 1계층에서 4계층까지 데이터를 송수신 하는 과정은 다음과 같다.

Flow Control이란?

송신 측과 수신 측의 데이터 처리 속도 차이를 해결하기 위한 기법. 수신 측이 송신 측보다 데이터 수신 속도가 빠른 것은 아무 문제가 없다. 오히려 베리 굿이다. 그러나 송신 측이 전송하는 데이터 패킷이 수신 측에서 적절한 속도로 처리하지 못한다면 문제가 발생한다. 수신 측에서 수신된 데이터를 처리해서 윗 계층으로 서비스 하는 속도보다 송신 측에서 보내는 데이터의 속도가 빠르다면, 수신 측에서는 제한된 버퍼(큐)를 초과하여 이후에 도착하는 데이터 패킷은 손실될 우려가 있다. 이렇게 될 경우 불필요하게 응답과 재전송 데이터가 다시 송수신 측 간에 이동해야 한다. 이러한 비효율성을 줄이기 위해 강제로 송신 측의 데이터를 줄인다.

  • Stop and Window 방식: 매번 전송한 패킷에 대해 확인 응답을 받아야만, 그 다음 패킷을 전송할 수 있다.
  • Sliding Window 방식: 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하여 제어하는 기법.

Transport Layer의 Reliability와 Link Layer의 Reliability의 차이

전송 계층은 신뢰성을 제공할 수도 있고 안 할 수도 있지만, 전송 계층의 신뢰성은 프로세스 to 프로세스이고 링크 계층에서 신뢰성 체크는 node to node(hop to hop) 단위로 이루어진다. 이게 무슨 말이냐면 라우터는 전송 계층과 담당하는 스코프가 다르므로 전송 계층의 제어 정보를 볼 수 없다. 즉, 에러가 발생하면 신뢰성 확보를 위해 프로세스 간에 예외 처리가 되어 있다면, 링크 계층은 노드에서 노드로 갈 때, 네트워킹 디바이스 라우터나 브리지에 제어 정보 관련된 기능이 구현이 되어 있으므로 제어 정보를 볼 수 있다. 즉, 나의 직전 노드가 나에게 패킷을 잘 보냈는지, 에러가 없이 왔는지, 만약 에러가 발생하면 재전송 요청을 하는 방법 등을 이용해 신뢰성을 확보한다.

3.1 transport-layer services

  • 서로 다른 호스트에서 실행되고 있는 프로세스 간에 논리적 통신을 제공. 프로세스에서 프로세스까지 통신을 하기 위해서 거치는 라우터, 스위치 등은 전송 계층 프로토콜이 제공되지 않으므로 전송 계층을 볼 수 있는 건, 두 Host(end system)들밖에 없다.
    • sender side: 애플리케이션 메시들을 세그먼트 단위(패킷)로 쪼개서 헤더로 붙이고 네트워크 레이어로 넘긴다.
    • receive side: 네트워크 레이어에서올려준 세그먼트들을 애플리케이션 메시지로 조립하고 조립된 메시지를 애플리케이션 레이어로 올려준다.
  • 애플리케이션들이 사용 가능한 전송 프로토콜은 1개 이상이다. 인터넷에서는 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)이 사용된다.

Transport Layer VS Network Layer

  • 네트워크 레이어에서는 호스트들 간에 논리적 통신을 한다.
  • 전송 계층에서는 호스트에서 구동되는 프로세스 간에 논리적 통신을 한다. 즉, 전송 계층은 네트워크 계층의 서비스에 의존하고, 네트워크 레이어에서 서비스 받은 것을 발전시켜서 애플리케이션 레이어에게 서비스한다.
  • e.g. bill의 집의 12명의 아이들이 Ann의 집의 12명의 아이들에게 편지를 보낸다고 가정해보자. 여기서 hosts는 Bill과 Ann의 집이다. 프로세스는 각 집의 12명의 아이들이며, 애플리케이션 메시지는 동봉된 편지라고 할 수 있다. 전송 계층은 누구한테 온 건지 확인하고(포트 번호를 보고) 나눠주는 Bill과 Ann이다. 네트워크 계층은 우편 서비스(Postal Service)이다.

Internet Transport-Layer protocols

  • tcp
    • 신뢰성이 있고, 애플리케이션 레이어에 올려줄 때 순서대로 서비스한다.
    • Congestion Control: 수신 측이 송신 측의 전송 속도를 제어
    • Flow Control
    • Connection Setup: 연결 설정을 한 이후에 실질적 데이터 전송. 데이터 전송이 완료된 후에 연결 해제(terminate)
  • UDP
    • 신뢰성이 없고, 상위 층에 순서에 상관없이 수신받는 대로 애플리케이션 계층에 올려준다.
    • best-effort → IP: 최선을 다해서 전송하지만 완벽한 전송에 대한 보장은 할 수 없다. TCP 신뢰성을 보장하기 때문에, 중간에 데이터가 손실되거나, 실패하면 재전송을 하는 등 추후 조치를 하지만 UDP는 그런 조치를 취하지 않는다. 이런 UDP의 간단함 때문에 빠른 전송이 가능하다.
  • UDP와 TCP 모두 지연시간에 대한 보장(어느 일정 지연시간 내에 서비스 해줄게)을 하지 않는다.
  • 대역폭 역시 보장을 하지 않는다. 즉, 현재 인터넷은 보장성 서비스를 제공하지 않는다.

'CS > 네트워크 수업' 카테고리의 다른 글

컴퓨터 네트워크 6주차  (0) 2021.04.07
컴퓨터 네트워크 5주차  (1) 2021.03.29
컴퓨터 네트워크 2주차  (1) 2021.03.23
컴퓨터 네트워크 1주차  (0) 2021.03.23
컴퓨터 네트워크 4주차  (0) 2021.03.23
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유