[네트워크]

angie·2024년 9월 26일

1. 네트워크

1) 네트워크 구성도

  • 홈 네트워크
    인터넷 <-> 모뎀 <-> 공유기 <-> 컴퓨터, 테블릿, 스마트폰

  • 데이터 센터 네트워크

    • 안정적이고 빠른 대용량 서비스 제공을 목표로 함
    • 구성 방법
      • 3계층 디자인 - 예전에 많이 사용하던 방식
        • CORE <-> Aggregation(흐름제어 - 속도, 트래픽) <-> Access
      • 2계층 디자인 - 최근에 네트워크 속도가 빨라지면서 사용, Spine-Leaf 구조

2) 프로토콜

  • 개요
    • 통신을 하기 위한 규칙 규약
    • 물리적 측면: 데이터 전송 매체(케이블), 신호 규약, 회선 규격 등을 정의하는 것인데 최근에는 거의 이더넷만 사용
    • 논리적 측면: 프로토콜 규격 등을 정의하는 것인데 최근에는 TCP/IP 만 사용
    • 프로토콜을 정의할 떄 예전에는 비트 기반으로 많이 만들었는데 최근에는 문자 기반으로 많이 사용한다.
      비트 기반의 프로토콜은 효율적이기는 하지만 사람이 읽기가 어렵다.
    • TCP/IP는 엄밀한 의미에서는 프로토콜이 아니고 프로토콜 스택. TCP와 IP는 별도의 계층에서 동작하는 프로토콜인데 이를 합쳐서 부른다. 이렇게 여러 개를 합쳐서 부를 때는 Stack 이라는 단어를 추가. TCP/IP 프로토콜 스택에는 TCP와 IP 이외에도 UDP, ICMP, ARP, HTTP, SMTP, FTP, HTTPS 등이 포함되어있다.

3) OSI 7계층과 TCP/IP

  • OSI 7계층
    • 전에는 프로토콜을 각 벤더들이 별도로 개발했기 때문에 호환되지 않는 시스템이나 애플리케이션이 많았음
    • 하나의 프로토콜로 통합하고자 했던 노력으로 만들어진 것이 OSI 7계층
    • 7개의 계층으로 모듈화 한 이유는 재사용 문제 때문: 하나로 만들면 재사용성이 떨어지고 이해하기 어려워진다.
이름데이터
Application실제 데이터: 우리가 이해할 수 있는 데이터
Presentation실제 데이터
Session실제 데이터
TransportSegments
NetworkPacket
DataLinkFrames
PhysicalBits
  • 2개 부분으로 분할
    5-7계층: 상위 계층 - 애플리케이션 계층 : 인간, 애플리케이션 개발자의 영역
    1-4계층: 하위 계층 - Data Flow 계층 : 기계, 네트워크 엔지니어의 영역

  • TCP/IP 프로토콜 스택

    • 4개 계층으로 프로토콜을 정의
      Application: OSI 의 5-7계층
      Transport
      Internet: OSI 3계층
      Network Access: OSI의 1,2 계층
  • 계층 별 기능을 설명할 떄 OSI 7계층을 가지고 설명을 많이 한다.

4) OSI 7계층 별 이해

  • 1계층(물리 계층)
    • 물리적 연결과 관련된 정보
    • 장비로는 Hub, Repeater, Cable, Connector, Transiver(랜 카드와 케이블을 연결해주는 장비), TAP(네트워크 모니터링 이나 패킷 분석을 하기 위해서 전기 신호를 다른 장비로 복제해주는 장비) 등
  • 2계층(데이터 링크 계층)
    • 전기 신호를 데이터 형태로 변환하는 계층
    • 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는 역할을 수행
    • 1계층에서는 주소라는 개념이 존재하지 않지만 출발지 주소와 목적지 주소를 확인하고 자신에게 전송된 것인지 확인
    • 에러 탐지도 수행
    • 2계층 장비는 NIC(Network Interface Card)와 Switch
    • 사용하는 주소 체계는 MAC Address
    • 2계층 장비들은 MAC Address를 이해할 수 있는 장비
    • NIC 동작 방식
      전기 신호를 데이터 형태로 생성
      목적지 MAC Address와 출발지 MAC Address를 확인
      자신의 MAC Address를 확인
      목적지 MAC Address와 자신의 MAC Address가 일치하면 데이터를 처리하고 다르면 데이터를 폐기
    • Switch
      허브와 유사하게 여러 개의 포트로 구성
      MAC Address Table을 가지고 있어서 통신을 하면 MAC Address를 학습해서 테이블에 저장할 수 있다.
      단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩한다.
      허브는 어느 순간 하나의 장비만 전송이 가능하지만 Switch는 동시에 데이터 전송이 가능
  • 3계층 (네트워크 계층)
    논리적인 주소가 정의
    사용자가 환경에 맞게 변경할 수 있고 주소를 네트워크 주소 부분과 호스트 주소 부분으로 나누어서 할당할 수 있다.
    3계층 장비가 라우터이다.
    IP를 이해해서 다른 네트워크를 찾아가는 장비이다.
  • 4계층(전송 계층)
    • 데이터들이 정상적으로 잘 전송이 되는지 확인하는 역할
    • 데이터는 하나의 묶음으로 전송되지 않고 일정한 크기(Packet) 단위로 분할해서 보내게 되는데 중간에 패킷이 유실되거나 순서가 바뀔 수 있는데 이러한 문제를 해결하는 계층
    • 패킷을 만들 떄 Sequence Number를 붙이고 받는 쪽에서는 ACK(Acknowlegement) Number를 전송한다.
    • 컴퓨터 내에서 애플리케이션을 구분하기 위해서 port를 부여
    • 4계층에서 동작하는 장비는 Load Balancer와 Firewall: 장비라고 하기도 하고 Software라고 하기도 한다.
      • Load Balancer: 부하분산
    • 5계층(세션 계층)
      • 연결 해제와 연결 유지하는 역할
      • 에러 복구와 중단된 통신에 재전송 수행 수행
      • 연결 해제와 유지를 위해서 특별한 키를 발급해서 키를 가지고 실제 연결하는 컴퓨터를 구분
    • 6계층(프레젠테이션)
      • 구분 변환, 데이터 압축, 인코딩과 디코딩을 수행
      • 데이터의 형식을 맞추는 계층
    • 7계층(애플리케이션 계층)
      • 애플리케이션 프로세스 정의하는 계층
      • OSI 전 계층을 수행하는 장비는 Gateway(Router를 Gateway로 보는 경우가 많음)

5) 통신 과정

  • 데이터를 전송을 하게 되면 상위 계층에서 하위 계층으로 데이터를 전송
    전송을 받는 쪽에서는 하위 계층에서 상위 계층으로 데이터를 전송

  • 데이터를 보내는 과정을 Encasulation 그리고 받는 과정을 Dcapsulation 이라고 하기도 한다.

  • 보내는 쪽
    Data -> 4계층(4계층 헤더 + Data: Segment) -> 3계층(3계층 헤더 + 4계층 헤더 + 데이터: Packet) -> 2계층(2계층 헤더 + 3계층 헤더 + 4계층 헤더 + 데이터 + FCS) -> 1계층 (전기적 신호로 변환)

  • 받는 쪽은 반대 과정을 거침

  • MSS와 MTU

    • MSS(Maximum Segment Size): 4계층에서 사용할 수 있는 데이터의 최대 크기
    • MTU(Maximum Transmission Unit): 네트워크 계층에서 한 번에 보낼 수 있는 데이터의 최대 크기, 이데넛에서는 1500 바이트

2. 네트워크 구분과 구성 요소

1) 네트워크 연결 구분

  • 규모에 따른 구분
    • LAN: Local Area Network
      사무실이나 건물 하나 정도의 소규모의 네트워크
      도시 단위의 네트워크를 만들 때 통신사의 인프라를 이용하면 WAN이라고 하고 자체 인프라를 이용하면 MAN 이라고 하기도 한다.
    • MAN: Metropolitan Area Network
      하나의 도시 정도를 네트워크로 연결
    • WAN: Wide Area Network
      먼 거리를 연결한 네트워크
    • PAN: Personal Area Network
      개인의 작업 공간을 중심으로 장치들을 서로 연결하기 위한 네트워크

2) 회선에 따른 분류

  • 인터넷 회선: 인터넷 접속을 위해 통신 사업자와 연결하는 회선
    가입자와 통신 사업자 간에 직접 연결되는 구조가 아니라 전송 선로 공유 기술을 이용
  • 전용 회선: 가입자와 통신 사업자 간에 대역폭을 보장해주는 서비스

컴퓨터 - 스위치 - 라우터 - ISP - 라우터 - 스위치 - 컴퓨터
본사와 지사 연결이나 지사와 지사 연결등에 사용
종류는 저속인 음성 전송 기술 기반이 있고 고속인 메트로 이더넷이 있다.

LLCF(Link Loss Carry Forward)
한쪽 링크가 다운되면 이를 감지해 반대쪽 링크도 다운시키는 기능
전용 회선을 이더넷으로 구성할 때 통신 사업자가 LLCF를 설정하지 않으면 한 사이트에 다운되더라도 반대쪽 사이트에서 회선이 살아있는 것처럼 보이기 때문에 회선 개통 한 후 회선사에서 LLCF 설정이 되어있는지 확인

  • 인터넷 전용 회선: 인터넷 연결 회선에 대한 통신 대역폭을 보장해주는 서비스

3) VPN(Virtual Private Network)

  • 전용 회선이 아니지만 가상으로 직접 연결한 것 같은 효과가 나도록 만들어주는 네트워크 기술
  • 통신 사업자 VPN
    • 통신 사업자가 VPN을 구성해주는 것
    • 하나의 건물에서만 VPN을 구성한다면 직접 구성하면 되지만 먼거리에 떨어져있는 곳 과도 통신이 가능한 VPN을 만들려면 회선 연결 비용이 증가하기 때문에 통신 사업자의 회선을 이용해서 구성한다.
    • MPLS VPN: 통신 사업자는 전용선인 것처럼 보이게 하지만 실제로는 가입자를 구분하는 기술을 적용해서 시분할을 이용해서 서비스를 제공
  • 가입자 VPN: 일반 사용자가 가상 네트워크를 직접 구성하는 것

4) DWDM(Dense Wavelenth Divistion Multiplex: 파장 분할 다중화)

  • 광케이블로 데이터를 전송할 채널을 분할해서 데이터를 전송하는 것

5) 네트워크 구성 요소

  • NIC(Network Interface Card)
    직렬화, MAC Address, 흐름 제어(Flow Control - 데이터를 안정적으로 주고받기 위해서 통신 중일 때 다른 네트워크에서 데이터를 보내는 것을 중지하라고 요청)

일반적으로 사용하는 NIC 외에도 스토리지와 서버를 연결하는 NIC도 존재
고성능 클러스터링을 구현하기 위한 HPC(HIgh Performance COmputing)에서도 우리가 일반적으로 사용하는 NIC를 사용하지 않는다.

  • 케이블과 커넥터
    1000(속도)BASE(채널)-T(케이블 타입)
    케이블 종류는 트위스트페어(유선 인터넷), 동축 케이블(TV 회선), 광케이블 등이 있음

  • 스위치
    여러 장비를 연결하고 케이블을 한 곳으로 모아주는 역할을 수행
    스위치와 허브의 기능을 같이하면 스위칭 허브라고 부르기도 하고 4계층이나 3계층의 역할까지 수행하는 스위치를 L3 또는 L4 스위치라고 한다.

  • 라우터
    외부 네트워크와 통신하기 위한 장비
    정확한 방향으로 데이터가 전송되도록 하고 최적의 경로로 데이터를 포워딩하는 역할을 수행

  • 로드밸런서

    • 4계층 장비
    • 애플리케이션 계층에서 애플리케이션 프로토콜의 특징을 이해하고 동작하는 로드밸런서를 ADC(Application Delivery Controller)라고 부른다.
    • 포트 주소를 확인하는 동시에 IP 변환도 수행
    • 웹 서버를 구축할 때 많이 사용하는데 동일한 역할을 수행하는 웹 서버를 여러 대 만들고자 하는 경우 로드 밸런서를 웹 서버 앞에 두고 웹 서버를 여러 대 만든 다음 대표 IP는 로드밸런서에게 부여하고 로드밸런서가 요청이 오면 웹 서버를 지정해서 전송하도록 한다.
    • 이런 원리로 동작하는 소프트웨어 중 하나가 nginx 이다.
    • 로드밸런서를 이용하게 되면 서비스 헬스 체크나 대용량 세션 처리 기능을 사용할 수 있다.
  • 보안 장비

    • 방화벽이나 IPS 등의 장비 또는 소프트웨어
    • 방화벽: OSI 7계층 중 4계층에서 동작해서 패킷의 3, 4 계층 정보를 확인하고 패킷을 정책과 비교해서 버리거나 포워딩한다.
  • 공유기

    • 2계층 스위치, 3계층 라우터, 4계층 NAT와 간단한 방화벽 기능을 모아놓은 장비
    • 내부는 스위치와 무선 AP 그리고 라우터 부분으로 구성되어 있음
  • 모뎀

    • 공유기의 LAN 포트와 WAN 포트는 일반 이더넷이어서 100m 이상 먼 거리로 데이터를 보내지 못하기 때문에 먼 거리 통신을 위해서 모뎀이 필요

3. 네트워크 통신

1) 네트워크에서 출발지에서 목적지로 데이터를 전송할 떄 사용하는 통신 방식

  • unicast
    • 1:1 통신
    • 출발지와 목적지가 명확히 하나로 정해져있는 통신 방식
    • 대다수의 통신은 unicast
  • broadcast
    • 목적지 주소가 모든으로 표기되어 있는 통신 방식
    • 유니캐스트로 통신하기 전에 상대방의 정확한 위치를 알기 위해서 사용
    • 로컬 네트워크에서 모든 호스트에 패킷을 전달해야 할 떄 사용
  • multicast
    • 멀티캐스트 그룹 주소를 이용해서 해당 그룹에 속한 다수의 호스트로 패킷을 전송하기 위한 통신 방식
    • IPTV 와 같은 실시간 방송을 볼 때 사용하고 사내 방송이나 증권 시세 전송과 같이 단방향으로 다수에게 같은 내용을 전송할 때 사용
  • anycast
    • 주소가 같은 호스트 중에서 가장 가깝거나 가장 효율적으로 서비스할 수 있는 호스트와 통신하는 방식
    • 도메인을 이용해서 인터넷을 할 때 가장 가까운 DNS 서버를 찾을 떄 사용
  • IPv6에서는 브로드캐스트라는 용어 대신에 링크 로컬 멀티캐스트라고 한다.

2) MAC Address

  • 주소 체계
    • 변경할 수 없도록 하드웨어 고정되어 출하
    • 모든 네트워크 장비에는 MAC 주소를 할당해야 한다.
    • 한 제조업체 하나 이상의 주소 풀을 주고 그 안에서 자체적으로 할당
    • 48비트로 구성되는데 앞의 24비트가 제조회사 코드(OUI)이고 뒤의 24비트(UAA)는 제조사에서 자체적으로 할당
    • 고유하지 않을 수 있는데 이유는 제조사의 실수나 코드의 부족 때문인데 동일 네트워크 안에서만 같지 않으면 통신하는데 문제가 없다.
    • ROM 고정되서 변경할 수 없도록 출하가 되지만 이 주소도 메모리에 적재되서 사용되므로 MAC 주소를 변경해서 사용하는 것이 가능

3) IP Address

  • IPv4

    • 32비트로 만들고 표기할 떄는 4개의 Octet(8비트)으로 나누고 각 OCtet은 .으록 구분

    • 각 Octet은 10진수로 표기

      192.168.0.1과 같이 표기

    • 2개 부분으로 구성

      • 네트워크 부분: 호스트들을 모은 네트워크를 지칭하는 주소, 네트워크 주소가 같으면 같은 로컬 네트워크라고 한다.
      • 호스트 부분: 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소
    • 네트워크 부분과 호스트 부분을 구분하는 경계점이 고정이 아니다. 따라서, 호스트의 IP 개수에 따라 네트워크 크기를 다르게 할당하는 것이 가능한데 이를 위해서 클래스라는 개념을 도입
      A클래스는 약 1600만 개의 IP 주소를 가질 수 있다. 첫번째 점이 경계
      B클래스는 65536 개의 IP 주소를 가질 수 있다.두번째 점이 경계
      C클래스는 256개의 IP 주소를 가질 수 있다. 세번째 점이 경계

    • 최근에는 조금 더 세밀하고 네트워크와 호스트 부분을 설정할 수 있다.

    • 사용 가능한 IP 범위를 할 때도 이를 이용
      처음 IPv4를 만들 떄 각 클래스 별로 별도의 주소 블록을 할당
      A Class는 맨 앞 비트가 0으로 시작: 0.0.0.0 ~ 127.255.255.255
      B Class는 맨 앞 두 비트가 10으로 시작: 128.0.0.0 ~ 191.255.255.255
      C Class는 맨 앞 세 비트가 110으로 시작: 192.0.0.0 ~ 223.255.255.255

    만일 IP 주소가 192.168.202.207 이라면 기본적으로 C 클래스
    네트워크 주소: 192.168.202.0
    브로드캐스트 주소: 192.168.202.255
    실제 사용 가능한 IP 범위: 192.168.202.1 ~ 192.168.202.254가 된다.
    이를 조금 더 세분화시켜서 비트 단위로 분할 할 수 있는데 이를 서브네팅이라고 한다.

  • IP 주소 부족 문제 해결

    • 인터넷을 사용하는 호스트 숫자가 폭발적으로 증가해서 IP 주소가 부족해지는 문제가 발생
    • 이를 해결하기 위해서 가장 먼저 도입한 것은 클래스 리스 방식 즉 CIDR
      두번째 도입한 것은 NAT와 사설 IP 주소
      세번쨰 도입한 것이 IPv6
  • 클래스 리스

    • 기존 클래스의 개념을 없앤 것으로 네트워크를 원하는 단위로 분할 할 수 있도록 한 것
    • 이를 위해서 subnet mask 라는 개념을 도입
    • subnet mask 는 동일한 네트워크 크기를 표현하기 위한 주소
      subnet mask를 표현하는 방법은 비트 수를 기재하는 방법과 10진수로 표현하는 방법 2가지이다.
      IP Address/비트 수 또는 IP Address 10진수로 표기
    • 비트 수로 표시를 하면 비스 수 만큼 같으면 동일한 네트워크로 간주하는 것이 10진수로 표현하면 이진수로 변환해서 1이 있는 부분까지가 동일하면 동일한 네트워크로 간주
      - 라우터나 컴퓨터에 IP를 설정할 때 이 방식을 사용
      - 비트 수로 설정하지 않고 10진수로 설정
      - 네트워크를 설정할 떄는 네트워크 대역안에 있는 어떤 IP 주소를 할당해도 동일하게 적용
      - 컴퓨터의 IP를 설정할 때는 동일 네트워크 대역안에서 정확하게 IP를 할당해야 한다.
      현재 컴퓨터의 IP는 192.168.202.207이다.
      서브넷 마스크는 255.255.240.0(11111111.11111111.11110000.0000)
      192.168.202.207/20 로 표기한다.

라우터의 네트워크 설정을 한다면 192.168.200.0 255.255.240.0 으로 해야 하지만 이 주소 풀이 192.168.200.0 ~ 192.168.215.255 이다.
192.168.201.1 255.255.240.0 으로 설정해도 된다.

  • 필요한 크기대로 분할하는 작업 subnetting이라고 한다.
  • 네트워크 사용자 입장에서 서브네팅이 중요한 것은 서브네팅 된 주소를 보고 사용할 수 있는 IP를 할당해야 한다.
  • 네트워크 설계자 입장에서는 호스트의 개수를 파악해서 적절한 서브네팅 작업을 해주어야 한다.
  • 방화벽을 설정할 떄도 서브네팅이 필요하다.

모든 컴퓨터를 지칭 | 0.0.0./0 | 웹 애플리케이션 서버가 보통 이렇게 설정
컴퓨터 1대를 지칭 | IP/32 | 데이터베이스 서버의 경우 이렇게 설정하는 경우가 많음
일정 그룹의 컴퓨터를 지칭 | 네트워크주소/크기 | 애플리케이션 서버가 여러 대인 경우 데이터베이스는 이런식으로 설정

  • 퍼블릭 클라우드의 대부분 동일 네트워크 내에서의 통신은 비용을 지불하지 않는다.
    퍼블릭 클라우드에서는 직접 설정하기 보다는 동일한 VPC 로 묶으면 이 작업을 대신 수행해 준다.

  • Public IP와 Private IP

    • 인터넷에 접속을 할려면 IP주소가 있어야 한다.
      인터넷을 할 때 사용할 수 있는 IP주소를 Public IP라고 한다.
      인터넷을 연결하지 않고 네트워클 구성하기 위해서 사용하는 IP 주소를 Private IP라고 한다.
    • 인터넷에 접속할려면 통신 사업자로부터 IP 주소를 할당받거나 IP 할당 기관(KISA)에서 인터넷 독립기관 주소를 할당받은 후 할 수 있는데 직접 할당 받는 것은 절차가 복잡하기 때문에 대부분은 통신 사업자로 부터 할당을 받는다.
    • 인터넷에 접속하지 않거나 NAT(Network Address Translation) 기술을 사용할 경우 Private IP를 이용
      Private IP를 가지고는 인터넷을 할 수 없지만 NAT 장비에서 Public IP로 변경해서 인터넷에 접속이 가능
    • Private IP 대역
      10.0.0.0/8 | 10.0.0.0 ~ 10.255.255.255
      172.16.0.0/12 | 172.16.9.9 ~ 172.31.255.255
      192.168.0.0/16 | 192.168.0.0 ~ 192.168.255.255
    • 회사 내부에서 Private Network을 구축할 떄 보안 상의 문제나 IP공유를 위해서 NAT를 사용하는데 이 떄 다른 사용자와 중복된 IP를 사용하면 안되는데 다른 사용자가 사용하고 있는 Public IP를 내부 네트워크의 IP로 할당을 하면 인터넷은 문제가 없지만 그 IP를 가진 컴퓨터와 통신은 안된다.
  • Bogon IP
    사용할 수 없는 IP 주소로 IANA(IP 주소를 할당하는 최상위 기관)가 여러가지 목적으로 예약해 놓아서 public IP로 사용할 수 없는 IP.
    이 주소를 이용한 네트워크 접속 시도가 있는 떄는 IP Spoofing(주소를 변조해서 공격)일 가능성이 높으므로 필터링 해야 한다.

0.0.0.0/8: This Network
10.0.0.0/8: Private IP
100.64.0.0/10: 캐리어 그레이드 NAT(통신 사업자가 Private IP를 할당하기 위해서 사용)
127.0.0.0/8: Loop Back Address(자기 자신)
169.254.0.0/16: 링크 로컬
172.16.0.0/12: Private IP
192.0.0.0/24: IETF 프로토콜 할당
192.0.2.0/24: 테스트 용
192.168.0.0/16: Private IP
224.0.0.0/4: 멀티캐스트 예약
255.255.255.255/32: 브로드캐스트

4) TCP와 UDP

  • 4계층 프로토콜

  • 포트가 이 계층에서 제공하는 주소

  • 애플리케이션에서 사용하는 프로세스를 정확히 찾아가고 데이터를 분할한 패킷을 잘 쪼개고 조립하는 역할을 수행

  • 포트번호

    • HTTP TCP는 80, HTTPS TCP는 443, SMTP TCP는 25 이런 식으로 알려진 포트를 Well Know 포트라고 하고 IANA에서 등록해 놓았고 1023 이하의 포트번호를 사용
    • 애플리케이션에서도 IANA에 포트 번호를 등록할 수 있는데 이때는 1024~49151 번 포트를 사용한다.
      MySQL이나 MaraiDB는 3306
      Oracle은 1521,8080
      Mongo DB는 27017
      Django는 8000
      Tomcat 8080
      자주 사용하는 Application은 이 포트번호를 기억해 두는 것이 좋다.
    • 49152~65535 까지는 자동으로 할당되거나 Private 용도로 클라이언트의 임시 포트 번호로 사용
  • TCP

    • 신뢰할 수 없는 공용망에서 정보 유실없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능을 가지 프로토콜
    • 송신자와 수신자가 3개의 패킷을 주고 받아야 한다면
      송신자 측에서 1번 패킷을 전송하면 수신자 측에서 1번을 잘 받으면 2번을 요청하고 송신자 측에서 2번을 전송하고 수신자 측에서 2번을 전송받았다면 3번을 요청을 하고 송신자에서 3번을 전송하고 수신 측에서 3번을 받으면 데이터를 전부 받았다고 알려주고 통신을 종료
    • 유실없는 안전한 통신을 위해서 통신 시작 전에 사전 연결 작업을 수행
      클라이언트가 서버에게 Syn 신호를 전송하고 서버는 Syn과 Ack를 전송하고 다시 클라이언트는 Ack를 전송해서 연결을 수행
    • 네트워크 프로그램을 직접 만든다면 중요한 데이터 전송에는 반드시 TCP 방식을 사용해야 한다.
  • UDP

    • 사전 연결 작업을 수행하지 않고 전송하는 프로토콜
    • 음성 데이터나 실시간 스트리밍 과 같이 시간에 민감한 프로토콜이나 애플리케이션을 만들 때 사용하고 사내 방송이나 증권 시세 데이터 전송에 사용하는 멀티캐스트 환경에서 사용
    • 중요하지 않은 데이터 전송이나 단방향 전송을 하는 애플리케이션을 만들 때 사용

4. Switch

1) 개요

  • 2계층 주소인 MAC Address 기반으로 동작하는 장비
  • 아무 설정없이 네트워크에 연결해도 MAC Address를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있다.
  • 기본 동작이외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크 루프를 방지하는 스패닝 트리 프로토콜(STP) 같은 기능을 기본적으로 가지고 있음
  • MAC Address Tble을 만들어서 어떤 포트에 어떤 MAC Address를 가진 호스트가 연결되어 있는지 학습을 할 수 있다.
    Flooding -> Address Learning -> Forwarding/Filtering의 3가지 동작으로 설명이 가능하다.
    • 플러딩
      스위치는 부팅되면 네트워크 관련 정보가 하나도 없다.
      이 상태에서는 스위치는 네트워크 통신을 중재하는 자신의 역할을 하지 못하고 허브처럼 동작
      스위치가 허브처럼 모든 포트로 패킷을 흘리는 동작을 플러딩이라고 한다.
      새로 부팅하지 않았는데도 자꾸 플러딩이 일어나면 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황
    • Address Learning
      모르는 MAC Address로 데이터를 전송하라고 하면 일단 플러딩을 수행하고 데이터를 전송하는 장비의 MAC Address를 주소 테이블에 기록한다.
    • Forwarding/Filtering
      패킷이 스위치에 들어오면 도착지 MAC Address를 확인하고 자신이 가진 주소 테이블과 비교해서 맞는 정보가 있는 해당 포트로 데이터를 전송하고 다른 포트로는 데이터를 전송하지 않음

2) VLAN

  • 하나의 물리적인 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 기능: Virtual Local Area Network
  • VLAN을 나누게 되면 유니캐스트나 브로드캐스트로 다른 VLAN과 통신할 수 없다.
    VLAN을 나누게 되면 VALN 간에는 3계층 장비를 이용해서 통신을 해야 한다.
  • 종류
    • 포트 기반의 VLAN: 포트 단위로 VLAN을 생성
    • MAC Address 기반의 VLAN: LAN을 이동하면서 사용하는 경우 MAC Address 기반으로 VLAN 생성

3) STP

  • SPoF(Single Point of Failure: 단일 장애점)
    하나의 요소 때문에 장애가 발생한 경우 전체 시스템에 장애가 발생하는 것

  • 네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해서 이중화 또는 다중화된 네트워크를 디자인하고 구성

  • 여러 개의 switch로 네트워크를 디자인하게 되면 패킷이 잘못되면 네트워크를 따라서 계속 전송되는 일이 발생할 수 있다.

  • 루프 구조의 switch 연결이 있으면 계속해서 데이터를 전송할 수 있다.

  • 브로드캐스트 스톰

    • 루프구조를 가진 네트워크에서 브로드캐스트 전송을 하는 경우 각 스위치는 데이터가 들어온 포트를 제외하고 모든 포트에 데이터를 전송한다.
      이 경우 케이블을 제거하기 전까지 데이터를 계속 전송한다.
  • MAC 러닝 중복 문제

    • Switch는 출발지의 MAC Address를 가지고 테이블을 구성하는데 여기서 출발지와 실제 데이터를 전송받은 곳의 MAC Address가 다른 경우 잘못된 학습을 할 수 있다.
  • Spanning Tree Protocol

    • 스위치가 루프를 확인하고 적절히 포트를 사용하지 못하도록 하는 것

다운받을거

profile
열심히 달리는 개발자

0개의 댓글