Study/Computer Science

[Network] 1회차 스터디 - 네트워크 시작하기

나리 집사 2023. 1. 18. 20:26
[Network] 1회차 스터디
『IT 엔지니어를 위한 네트워크 입문』 책을 읽고 정리하는 스터디입니다.
일시 : 2023년 1월 16일(월) 오후 7시
스터디장 : 우다현(C)
작성자 : 참여자 모두
참여자 : 우다현(C), 박지윤(L), 이웅희(C), 김다인(M), 박현재(M), 김수민(M)

1. 우다현 (C)

새롭게 알게 된 점

인캡슐레이션과 디캡슐레이션 과정에 대해 더 상세하게 알게되었습니다.

  • 집과 데이터 센터에서의 네트워크 구성도
    • 집: 공유기 사용
    • 데이터 센터: 2계층 구성인 스파인-리프(Spine-Leaf) 구조로 변화
  • 프로토콜
    • 네트워크에서 통신할 때의 규약
    • 이더넷-TCP/IP 기반 프로토콜 (스택)로 변화중
  • OSI 7계층과 TCP/IP 프로토콜 스택
  • OSI 7계층별 이해
    • 1계층: 물리 계층
    • 2계층: 데이터 링크 계층, MAC 주소, 주소 정보 정의 및 정확한 주소로 통신, 네트워크 인터페이스 카드 & 스위치: 포트를 적절히 필터링하고 적절한 포트로 포워딩
    • 3계층: 네트워크 계층, IP 주소와 같은 논리적인 주소 정의, 라우터: IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷 전송
    • 4계층: 트랜스포트 계층, 데이터들이 정상적으로 잘 보내지도록 확인, 패킷 순서(Seq num, ack num), 로드밸런서 & 방화벽
    • 5계층: 세션 계층, (TCP/IP)세션 관리
    • 6계층: 프레젠테이션 계층: 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환
    • 7계층: 애플리케이션 계층, 애플리케이션 프로세스를 정의하고 서비스 수행
  • 인캡슐레이션과 디캡슐레이션
    • 인캡슐레이션: 데이터 플로 계층(1~4계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는 것.
    • 디캡슐레이션: 상위 계층으로 올려주면서 분할된 패킷들을 받아 순서에 맞게 결합하는 것.
    • 정보를 헤더에 붙여넣음
      • 헤더는 각 계층끼리 전달됨
        • 헤더에는 현재 계층에서 정의하는 정보와 상위 프로토콜 지시자가 있어야 함

어려웠거나 이해하지 못한, 혹은 궁금한 점

인캡슐레이션과 디캡슐레이션 과정에서 헤더에 정보를 넣는 과정이 어려웠으나 책을 자세히 읽어보면서 이해하였습니다.

추가 내용

데이터 링크 계층에 전송된 데이터에는

2계층 헤더 + 3계층 헤더 + 4계층 헤더 + 사용자 데이터

  • 2계층 헤더 : 네트워크 프로토콜 (IP)계층에 대한 정보
  • 3계층 헤더 : 전송 계층의 프로토콜이 TCP인지 UDP인지에 대한 정보
  • 4계층 헤더 : 애플리케이션의 계층의 프로토콜이 HTTP인지, SSH 인지 등에 관한 정보

2. 박지윤 (L)

새롭게 알게 된 점

  • 데이터 센터는 기존에는 3계층 디자인이 일반적이었으나, 가상화 기술과 높은 대역폭을 요구하는 스케일 아웃 기반의 애플리케이션과 서비스의 등장으로 2계층 구성인 스파인-리프 구조로 변화되었다.

  • 4계층에서 로드밸런서, 방화벽이 동작한다.
  • 인캡슐레이션 시, 헤더에 반드시 포함되어야 하는 내용은 1. 현재 계층에서 정의하는 정보 2. 상위 프로토콜 지시자 이다.

각 계층에서 부르는 상위 프로토콜 지시자는 다음과 같다.

  • 4계층 : 포트 번호(Port Number)
  • 3계층 : 프로토콜 번호(Protocol Number)
  • 2계층 : 이더 타입(Ether Type)

어려웠거나 이해하지 못한, 혹은 궁금한 점

MTU가 2계층 헤더를 제외한 크기라고 했는데, 일반적으로 1500바이트라고 한다. 2계층부터는 physical layer와 data link layer로 네트워크를 통한 통신이 없기 때문에, 2계층 헤더의 크기는 따로 제한은 없는건가?

추가 내용

  • IANA에서 정한 프로토콜 넘버 목록
  • Multithreaded TCP Server in C
    • How to write a multithreaded server in C (threads, sockets)
    • 보통 소켓 프로그래밍을 처음 접해보면 스레드를 적용하지 않는 경우가 많은데, 실제로 tcp server는 여러 client의 요청을 받아야하므로 multithread로 구현해야 한다. 그와 관련된 동영상이다.
    • 비슷하게 구현해보았던 multithreaded TCP Server: https://github.com/PrimWILL/Multithreaded_TCP_Server
      • thread 수를 제한하고, queue에 client 요청을 쌓아 idle thread가 생길 때마다 queue에서 하나씩 꺼내서 처리
      • client가 숫자를 보내면, prime인지 아닌지 판단하여 return하는 간단한 서버

3. 이웅희 (C)

새롭게 알게 된 점

  • 데이터 센터
    • 데이터 센터란 무엇입니까? - 클라우드 네이티브 설명됨 - AWS
    • 데이터 센터는 컴퓨팅 시스템 및 관련 하드웨어 장비를 저장하는 물리적 위치입니다. 여기에는 서버, 데이터 스토리지 드라이브 및 네트워크 장비와 같이 IT 시스템에 필요한 컴퓨팅 인프라가 포함됩니다. 모든 회사의 디지털 데이터를 저장하는 물리적 시설입니다. - aws
      • 홈 네트워크와 차별점을 둔게 처음엔 의아했으나, 임의로 나눈 기준이라 생각했음.
      • 스파인-리프(Spine-Leaf) 구조
        • 40G, 100G, 400G라는 표준 단위 사용
  • 이더넷도 프로토콜
    • 해당 개념의 존재를 알고 있었으나, 용어는 알지 못했음.
    • 이론보다 실용성에 중점을 둔 프로토콜.
      • OSI 7계층은 참조형 모델, 실제 사용은 TCP/IP 프로토콜 스택

  • MSS & MTU
    • MSS(Maximum Segment Size): 네트워크에서 수용할 수 있는 크기를 역산정해 데이터가 4계층으로 내려올 때 적절한 크기로 쪼개질 수 있도록 유도하는 값
    • MTU(Maximum Transmission Unit): 네트워크에서 한 번에 보낼 수 있는 데이터 크기(2계층), 일반적으로 1,500 바이트.MSS & MTU

어려웠거나 이해하지 못한, 혹은 궁금한 점

  • 새로운 프로토콜을 만든다면 그 목적과 쓰임을 어떻게 정의해야할까?
    • 예시) 실시간 웹 기반 게임을 위한 프로토콜, 전자 액자의 커스텀을 위한 프로토콜 등

추가 내용

1. DIY 네트워크

  • 1. C로 만드는 웹 서버
    • https://youtu.be/cEH_ipqHbUw
    • 짧은 영상이지만, HTTP를 직접 구현하고 라우팅하는 과정이 담겨져 있음. 직관적이라 네트워크 구성 이해에 도움이 되었음
  1. 2. 예전에 했던 비슷한 시도(부캠)
    1. 패킷 구현 J150-Day13
    2.  채팅 서버 구현 J150-Day19
  2. 3. 첫 영상과 과거 경험 등을 바탕으로 좀 더 안정된 기획과 구현으로 새로이 도전해볼만 하다고 생각.

4. 김다인 (M)

새롭게 알게 된 점

  • scale-out, scale-up

어려웠거나 이해하지 못한, 혹은 궁금한 점

  • mss, mtu

추가 내용

 

5. 박현재 (M)

새롭게 알게 된 점

어려웠거나 이해하지 못한, 혹은 궁금한 점

추가 내용

MTU, MSS

 

라우터끼리 MSS 크기를 파악하는 과정이 존재한다. 통신하는 과정에서 합의하는 것.

ESP와 AH

6. 김수민 (M)

새롭게 알게 된 점

  • TCP/IP 프로토콜 모델은 총 4개 부분으로 나뉜다.
    • 5개 아니라 4개구나?
  • 랜 카드
    • p21) 보통은 단말(특히 메인 보드의 사우스브릿지)에 내장되는 네트워크 어댑터
    • p30) =네트워크 인터페이스 카드 =네트워크 인터페이스 컨트롤러 =NIC =네트워크 카드 =물리 네트워크 인터페이스 =이더넷 카드 =네트워크 어댑터
    • 이름은 하나인데 별명은 여러개구나. 어댑터구나.
  • 포트, 포워딩
    • p29) 1계층 장비는 주소의 개념이 없응므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송합니다.
    • p30) 스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있습니다.
    • p32) … 이 데이터를 기반으로 단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩해줍니다.
    • p32) 스위치는 단말(Terminal)이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 습득(Address Learning) 과정에서 알 수 있습니다.
    • p34) 이뿐만 아니라 장치 내의 많은 애플리케이션을 구분할 수 있도록 포트 번호를 사용해 상위 애플리케이션을 구분합니다.
  • 터미널(단말)
    • 터미널은 고유한 MAC 주소를 가진 개체 하나구나.

어려웠거나 이해하지 못한, 혹은 궁금한 점

  • p28) OSI 레퍼런스 모델의 상위, 하위 계층 구분은 데이터를 만드는 애플리케이션 부분과 이 데이터를 잘 전달하는 데 집중하는 하부 계층으로 구분하는 것이 목적이었습니다. 그러다 보니 자연스럽게 애프리케이션 개발자가 고려해야 할 부분과 서버 에니니어나 네트워크 엔지니어가 고려해야할 부분이 구분되었는데 TCP/IP 모델은 그 구분이 더 확연히 드러납니다.
  • P37) 이런 복잡한 작업은 2가지 정보 흐름으로 설명될 수 있습니다.
    • 인캡슐레이션, 디캡슐레이션 과정을 통해 데이터가 전송되는 과정
    • 각 계층 헤더를 이용해 송신자 계층 간의 논리적 통신 과정
  • p41) MTU와 MSS는 모두 데이터 크기를 지칭하는 것이므로 MTU 값은 2계층의 데이터 값, MSS는 4계층에서 가질 수 있는 최대 데이터 값입니다.
    • Host A의 51,200 bytes 크기의 file을 host B로 옮기고자 한다. TCP를 사용해서 전송한다고 할 때, 아래 문항 중 2개를 골라 답하시오.
    • MSS가 1024 bytes라고 하면 몇 개의 segment를 전송해야 file을 모두 전송할 수 있게 될까? 그렇게 생각하는 이유도 함께 적으시오.  - duplicate ACKs가 발생하지 않는 상황이라고 가정했을 때, 총 102개의 segment를 전송해야 file을 모두 전송할 수 있게 된다. 왜냐하면 51200/1024 = 50이므로 Host A가 처음 Connection setup을 위해 1개, data 전송을 위해 50개의 segment를 전송하고, Host B는 처음 Connection setup을 위해 1개, ACK 전송을 위해 50개의 segment를 전송해서 총 102개이기 때문이다.

추가 내용

  • p21) 무선 연결은 무선 신호를 보낼 수 있는 매체(공기)가 필요하다?
    • 전파: 전자기파의 일종으로, 적외선보다 파장이 긴 전자기파. 전파는 공기 중에서도 진공 속과 거의 같은 속도로 퍼지기 때문에, 먼 거리에서도 아주 짧은 시간에 통신이 가능하다. 이러한 성질을 이용하여 전파는 신호와 정보를 보내는 무선 통신에서 주로 사용된다.
  • p21) 유선 랜 카드(이더넷 랜 카드: 일반적으로 보드에 내장됨)
    • 네트워크 어댑터 → I/O 버스(PCI 버스) → 사우스브리지 → 노스브리지 → RAM(메모리) → CPU → 제어 장치 → …
  • p23) 네트워크 서비스들이 처음 개발되었던 1900년대의 네트워크
  • 포트
    • 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
  • p34) 프레젠테이션 계층은 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행합니다.
  • p35) 네트워크 소프트웨어의 UI 부분이나 사용자 입출력 부분을 정의하는 것이 애플리케이션 계층의 역할입니다.

 

상점

  • 가장 정리를 잘 해온 사람: 박현재 (M)
  • 가장 토론에 적극적으로 참여한 사람: 이웅희 (C)