SW 사관학교 정글(Jungle)/컴퓨터 시스템(CSAPP)

[CSAPP] 11.2 네트워크

jinsang-2 2024. 9. 16. 09:30

💡호스트에게 네트워크는 단지 또 다른 I/O 디바이스이다 !

네트워크 호스트의 하드웨어 구성

그림처럼 데이터를 위한 소스와 싱크로 서비스한다.
I/O 버스의 확장 슬롯에 꽃혀 있는 어댑터는 네트워크에 물리적인 인터페이스를 제공한다.
네트워크에서 수신한 데이터는 I/O와 메모리 버스를 거쳐서 어댑터에서 메모리로, 대게 DMA 전송으로 복사된다.

 

  • 소스와 싱크로 서비스 : 소스는 데이터를 보내는 쪽, 싱크는 데이터를 받는 쪽을 의미한다. 네트워크 상에서 데이터를 보내는 장치와 받는 장치가 서로 데이터를 주고 받으며 역할을 분담한다는 뜻
  • DMA 전송 : DMA 전송(Direct Memory Access)은 컴퓨터의 메모리와 주변 장치 간에 데이터를 CPU를 거치지 않고 직접 전송하는 방법

 

💡이더넷

물리적으로 네트워크는 기하학적 위치로 구성된 계층구조 시스템이다. 하위수준은 LAN(Local Area Network)으로 빌딩이나 캠퍼스에 설치된다. 가장 대중적인 LAN 기술은 이더넷(Ethernet)이다. LAN 기술을 통해 공유기로 여러 장치(컴퓨터, 스마트폰, TV 등)를 하나의 네트워크로 묶어줄 수 있다. 

이더넷 세그먼트

이더넷 세그먼트

 

이더넷 세그먼트는 이더넷 네트워크에서 물리적으로 연결된 단위 네트워크 구간을 말하는데 이더넷 세그먼트 안의 모든 장치들은 같은 네트워크 대역을 공유하며 그 구간 내에서만 데이터를 주고받을 수 있다. 허브나 스위치를 이용해 여러 장치들을 연결하는 방식을 의미한다. 

  • 위에 그림과 같이 몇 개의 전선들과 허브라고 부르는 작은 상자로 구성된다. 
  • 대개 방이나 빌딩의 층과 같은 작은 규모
  • 허브는 각 포트에서 수신한 모든 비트를 종속적으로 다른 모든 포트로 복사한다. 
  • 각 전선은 동일한 최대 비트 대역폭을 가진다. 100Mb/s or 1Gb/s
이더넷 어뎁터

 

이더넷 어뎁터는 어댑터의 비휘발성 메모리에 저장된 전체적으로 고유한 48비트 주소를 가진다. 호스트는 `프레임`이라고 부르는 비트들을 세그먼트의 다른 호스트에 보낼 수 있다. 각 프레임은 프레임의 소스와 목적지, 프레임의 길이를 식별할 수 있는 고정된 `헤더 비트`를 가지고 있으며, 그 뒤에 `데이터 비트`가 이어진다. 모든 호스트 어댑터는 이 프레임을 볼 수 있지만 목적지 호스트만이 실제로 이것을 읽어드린다. 

 

브릿지형 이더넷

브릿지로 연결된 이더넷 세그먼트

 

브릿지형 이더넷은 전선들과 브릿지라고 하는 작은 상자들을 사용해서 다수의 이더넷 세그먼트를 연결하여 더 큰 LAN을 구성하는 것이다. 

  • 전체 빌딩이나 캠퍼스 규모로 이더넷 세그먼트의 규모보다 더 큰 규모로 설치될 수 있다. 
  • 브릿지-브릿지선은 1 Gb/s 대역폭, 허브-브릿지 선은 100Mb/s 대역폭을 가진다. 
    • 브릿지는 허브보다 더 높은 전선의 대역폭을 가짐
    • 분산 알고리즘을 사용하여 자동으로 어떤 호스트가 어떤 포트에서 도달 가능한지 장기간에 걸쳐 학습하고, 그 후 필요한 경우 선택적으로 하나의 포트에서 다른 포트로 프레임을 복사한다. 
  • 예시
    • 만일 호스트 A가 같은 세그먼트에 있는 호스트 B로 한 프레임을 전송하려면 브릿지 X는 이 프레임이 입력 포트에 도달할 때 이것을 버린다. 그래서 다른 세그먼트에서의 대역폭을 절약한다.
    • 호스트 A가 호스트 C로 프레임을 전송하려면 브릿지 X는 이 프레임을 브릿지 Y로 연결된 포트로만 복사하고, 이것은 호스트 C의 세그먼트에 연결된 포트로만 이 프레임을 복사하게 된다. 

💡인터넷(internet)

라우터

작은 인터넷, 두 개의 LAN과 두 개의 WAN이 세 개의 라우터로 연결

 

라우터는 네트워크 간 연결을 구성한다. (상호연결 네트워크)

  • 각 라우터는 이들이 연결되는 각 네트워크에 대해 어댑터(포트)를 가지고 있다.
  • 라우터는 또한 고속의 point-to-point 전화 연결을 할 수 있다.
    • WAN(Wide-Area Network)라고 하는 네트워크의 사례다. 
    • WAN은 LAN보다 지리적으로 더 넓은 지역에서 운용되기 때문에 불려졌다. 
  • 일반적으로 임의의 LAN과 WAN들로부터 internet을 만들기 위해 사용될 수 있다. 
    • 위의 그림을 보면 3개의 라우터로 연결된 작은 인터넷의 예시를 볼 수 있다. 
  • 어떻게 어떠한 `소스 호스트`가 모든 `비호환적인 네트워크`들을 지나서 데이터 비트를 다른 `목적지 호스트`로 전송할 수 있을까?
    • 해답은 여러 가지 네트워크 간의 차이를 줄여 주는 각 호스트와 라우터에서 돌고 있는 프로토콜 소프트웨어 계층이다. 
    • `프로토콜`로 호스트들과 라우터들이 데이터를 전송하기 위해 어떻게 협력하는지 결정한다. 
프로토콜이 제공하는 기본적인 두 가지 기능

 

1. 명명법 (Naming Scheme) 

  • 서로 다른 LAN 기술은 주소를 호스트에 할당하는 서로 다른 비호환성을 갖는 방법을 사용한다.
  • Internet 프로토콜은 호스트 주소를 위한 통일된 포맷을 정의해서 이 차이점들을 줄인다. 
  • 각 호스트는 자신을 유일하게 식별하는 internet 주소 최소한 한 개가 할당된다.

2. 전달기법 (delivery mechanism)

  • 서로 다른 네트워킹 기술은 서로 다른 비호환성을 갖는 비트 인코딩 방법과 프레임 내에 이들을 패키징하는 방법을 가지고 있다.
  • internet 프로토콜은 데이터 비트를 `패킷` 이라고 부르는 비연속적인 단위로 묶는 통일된 방법을 정의해서 이 차이점을 줄인다. 
  • 패킷은 패킷 크기와 소스 및 목적지 호스트 주소를 포함하는 헤더소스 호스트가 보낸 데이터 비트를 포함하는 데이터로 구성된다. 
internet 프로토콜의 사용 예시 

 

internet에서 데이터가 하나의 호스트에서 다른 호스트로 이동하는 방법

 

  1. 호스트 A의 클라이언트는 클라이언트의 가상 주소공간에서 커널 버퍼로 데이터를 복사하는 시스템 콜을 호출
  2. 호스트 A의 프로토콜 소프트웨어는 `internet 헤더`와 LAN1 `프레임 헤더`를 `데이터`에 추가해서 LAN1 프레임 생성한다. internet 헤더는 internet 호스트 B로 주소가 지정된다. LAN1 프레임 헤더는 라우터로 주소가 지정된다. 호스트 A는 이 프레임을 어댑터로 전달한다. LAN1 프레임의 데이터가 internet 패킷이고, 그 데이터는 실제 사용자 데이터라는 점에 유의해야 한다. 이런 종류의 캡슐화는 internetworking의 근본적인 통찰들 중 하나다.
  3. LAN1 어댑터는 이 프레임을 네트워크로 복사한다.
  4. 프레임이 라우터에 도달하면, 라우터의 LAN1 어댑터는 전선에서 이것을 읽어서 프로토콜 소프트웨어로 전달한다.
  5. 라우터는 internet  패킷 헤더에서 목적지 internet 주소를 가져와서 패킷을 전달할 곳을 결정하기 위해, 이 경우에는 LAN2 라우팅 테이블에서의 인덱스로 이것을 사용한다. 라우터는 이전의 LAN1 프레임 헤더를 벗겨내고, 호스트 B의 주소를 갖는 새로운 LAN2 프레임 헤더를 앞에 붙여서 이것을 어댑터로 전달한다. 
  6. 라우터의 LAN2 어댑터는 이 프레임을 네트워크로 복사한다. 
  7. 이 프레임이 호스트 B에 도착하면 어댑터는 이 프레임을 전선에서 읽어들이고, 이것을 프로토콜 소프트웨어로 넘긴다.
  8. 마지막으로, 호스트 B의 프로토콜 소프트웨어는 패킷 헤더와 프레임 헤더를 벗겨낸다. 프로토콜 소프트웨어는 최종적으로 이 데이터를 서버가 이 데이터를 읽는 시스템 콜을 호출할 때 서버의 가상 주소공간으로 복사한다. 

생각해봐야할 이슈들

  • 서로 다른 네트워크들이 서로 다른 최대 프레임 크기를 갖는다면 어떻게 되겠는가?
  • 라우터들은 어디로 프레임을 전달해야 할지 어떻게 아는가?
  • 라우터들은 언제 네트워크 구조가 변경되는지 어떻게 알아내는가?
  • 패킷이 손실된다면 어떻게 되는가?
  • `캡슐화`가 이 이슈들의 열쇠가 될 것이다.