[CS 기초] 네트워크

Sohyeon Bak·2022년 7월 20일
1

개발 책

목록 보기
14/18
post-thumbnail

'성공과 실패를 결정하는 1%의 네트워크 원리' 책을 바탕으로 정리한 내용입니다.

05. IP와 이더넷의 패킷 송·수신 동작

패킷의 기본

의뢰 받은 IP 담당 부분은 어떻게 패킷을 상대에게 송신할까?

  1. 헤더와 데이터를 담은 패킷은 송신처가 되는 기기에서 만든다.
  2. 만들어진 패킷은 가장 가까운 중계 장치에 송신한다.
  3. 중계 장치는 도착한 패킷의 헤더를 조사해 패킷의 목적지를 판단한다.
    • 수신처가 어느 방향에 있는지에 대한 정보가 있는 표와 함께 목적지를 판단한다.

    엔드노드는 송신처와 수신처를 명확하게 구별하지 않는 것을 묶어서 나타내는 것

라우터와 허브

  • 라우터가 목적지를 확인해 다음 라우터를 나타냄
  • 허브가 서브넷 안에서 패킷을 운반해 다음 라우터에 도착
  • IP가 목적지를 확인해 다음 IP 중계장치를 나타냄 (허브-이더넷 규칙)
  • 서브넷 안에 있는 이더넷이 중계장치까지 패킷을 운반 (라우터 - IP 규칙)
  • MAC 헤더(이더넷 용)
  • IP 헤더(IP 용)

송신처에서 패킷의 목적지가 되는 엑세스 대상 서버의 IP 주소를 IP 헤더 수신처에 기록한다.
IP 수신처가 어느 방향에 있는지 조사하고 그 방향에 있는 라우터를 조사한다.
라우터에 패킷이 도착하도록 이더넷에 의뢰를 하고 다음 라우터에 이더넷의 주소를 조사해 그것을 MAC 헤더에 기록한다.

  • 이더넷의 헤더의 수신처 정보와 표를 결합해 패킷의 목적지를 판단해 중계한다.
  • 라우터에는 IP용 표가 있어 이것과 IP 헤더의 수신처를 결합한다.

패킷의 송·수신 동작의 개요

  • IP 헤더
    : IP 프로토콜에 규정된 규칙에 따라 목적지까지 패킷을 전달할 때 사용되는 제어정보를 기록
  • MAC 헤더
    : 이더넷 등 LAN을 사용해 가장 가까운 라우터까지 패킷을 운반할때 사용하는 정보를 기록

패킷을 이제 LAN 어뎁터로 보내 줄 때 전기나 빛의 신호로 바뀌어 케이블에 송출된다.
신호는 허브나 라우터 등의 중계장치에 도착하고 중계장치가 상대 있는 곳까지 패킷을 전달한다.

수신처 IP 주소를 기록한 IP 헤더를 만든다

IP 담당은 TCP에서 패킷 송·수신 의뢰를 받으면 IP 헤더를 만들어 TCP앞에 붙인다.

  • 수신처 IP 주소
    : 패킷을 어디로 보내야하는지에 대한 정보
    • TCP 담당 부분에서 통지된 상대 IP 주소를 설정
    • IP는 스스로 수신처를 판단하지 않고 지정한 상대에게 그대로 패킷을 송신한다.
  • 송신처 IP 주소
    : IP 주소는 컴퓨터가 아닌 LAN 어댑터에 할당되어 LAN 어댑터를 장착하면 각 LAN 어댑터에 서로다른 IP 주소가 할당
    • LAN 어댑터를 사용해 패킷을 송신해야하는지 판단한다
  • IP 용 경로표
    : IP 주소의 왼쪽부터 일치하는 것을 찾아낸다.
    • Network Desination 항목
    • Interface는 어댑터 등의 네트워크용 인터페이스를 나타냄
    • Gateway는 다음 라우터의 IP 주소를 기록하게 되어 IP 주소를 가진 라우터에 패킷을 건네주면 라우터가 목적지에 패킷을 전달한다.

이더넷용 MAC 헤더를 만든다

이더넷에는 TCP/IP 개념이 통용되지 않는다.
MAC 헤더의 맨 앞에 있는 수신처 MAC 주소와 다음 송신처 MAC 주소는 각각 패킷을 전달하는 상대와 패킷을 송신한 송신처 MAC 주소를 나타낸다.

  • 이더타입(EitherType)
    : IP 경우 IP 헤더 뒤에 이어지는 데이터가 어디에서 의뢰됐는지 프로토콜 번호에 기록되어 있고, 이더넷의 경우 MAC 헤더까지가 이더타입이다.
    • 0800
    • 송신처 MAC 주소
      : LAN 어댑터의 MAC 주소를 설정 ROM에 기록되어 있는 값을 읽어와서 MAC 헤더로 설정
    • 수신처 MAC 주소
      : 패킷을 건네주는 상대의 MAC 주소를 기록해 누구에게 건네줘야 할지 모르기 때문에 패킷을 줄 상대를 경로표로 조사해 Gateway항목에 기록되어 있는 IP 주소의 기기가 패킷을 건네줄 수 있다.

ARP로 수신처 라우터의 MAC 주소를 조사한다

ARP(Address Resolution Protocol): 상대가 자신과 같은 네트워크에 존재하면 이것으로 MAC 주소를 알 수 있다. 그러면 MAC 주소를 MAC 헤더에 설정해 만들고 패킷을 보낼때마다 ARP의 패킷이 불어나서 한번 조사한 결과는 ARP 캐시라는 메모리 영역에 보존해 다시 사용하게된다.
ARP 캐시에 저장된 값은 시간이 지나면 삭제되게 되어있다.

  • MAC 주소를 조사할 때는 ARP를 사용한다.

    역할 분담을 획일적으로 해석해 IP 패킷만 취급할 수 있는 LAN 어댑터를 만드는 것보다 현실적으로 해석해 여러가지 패킷에 대응할 수 있는 LAN 어댑터를 만드는게 좋다.

이더넷의 기본

이더넷 : 다수의 컴퓨터가 여러 상대와 자유롭게 적은 비용으로 통신하기 위해 고안된 기술

  • 트랜시버
    : 연결한 케이블 사이에 신호를 흘리는 역할
    • 신호의 맨 앞부분에 수신처 주소를 써서 누구에게 갈 것인지 판단 할 수 있게 한다
  • 이더타입으로 패킷의 내용물이 무엇이 들었는지 알 수 있다.

    전원에게 신호가 전달 된다는 성질은 변했고, 수신처 MAC 주소로 나타내는 원하는 기기가 존재하는 부분에만 신호가 흐르고, 다른 곳에는 신호가 흐르지 않게 된 것이다.

IP 패킷을 전기나 빛의 신호로 변환해 송신한다

디지털데이터를 전기나 빛의 신호로 변환해 네트워크 케이블에 송출하는 것이 기본이다.

  • LAN 어댑터
    : 단독으로 동작하지 않고 제어를 위해 LAN 드라이버 소프트웨어가 필요
    • LAN 드라이버가 하드웨어의 초기화 작업을 수행해 사용가능한 상태가 된다.
    • 이더넷의 송·수신 동작을 제어하는 MAC이라는 회로에 MAC 주소를 설정하는 작업도 한다.
      : LAN 어댑터의 ROM에는 중복되지 않도록 일원화해 관리하는 MAC 주소를 제조할 때 기록하기 때문에 MAC 회로에 설정한다.

패킷에 3개의 제어용 데이터를 추가한다

MAC 회로는 프래앰블, 스타트 프레임 딜리미터라는 두개의 데이터와 프레임 체크 시퀀스(FCS) 라는 오류 검출용 데이터를 부가한다.
디지털 데이터를 전기 신호로 나타낼 때 0과 1의 비트값을 전압이나 전류 값에 대응한다.

  • 신호의 변화가 없어 비트 구분이 어려워지는 문제를 해결하기 위해 데이터를 나타내는 신호와 별도로 비트 구분을 나타내는 클록이라는 신호를 보내는 방법이 있다.
    : 거리가 멀어져 케이블이 길어지면 신호선의 길이가 달라져서 데이터신호와 클록신호가 전달되는 시간에 차이가 생기면 이 방법도 문제가 생긴다.
    : 변화의 타이밍까지 알고 수신한 신호에서 클록신호를 추출해 수신 신호와 클록 신호에서 원래 데이터 신호를 추출할 수 있게 된다.
    • 프리앰블
      : 클록신호의 타이밍을 잡기 위해 특별한 신호를 패킷 앞에 부가

허브를 향해 패킷을 송신한다

프리앰블, 스타트 프레임 딜리미터, PCS의 세가지를 부가하면 케이블에 송출하는 패킷이 완성된다.

  • 반이중 모드(리피터 허브를 사용)
    1. 신호의 충돌을 피하기 위해 케이블에 다른 기기가 송신한 신호가 흐르는지 조사
    2. 신호가 흐르면 끝날때까지 기다리고 흐르지 않으면 송신 동작을 시작
    3. 송신 동작은 MAC 회로가 프리앰블의 맨 앞부터 1비트씩 차례로 디지털 데이터를 전기신호로 변환하고, PHY, MAU라는 송·수신 신호 부분으로 보낸다.
      • PHY(MAU) 회로는 케이블에 송출하는 형식으로 변환해 송신
        : MAC 회로에서 받은 신호를 케이블에 송신할 때 수신 신호선에 신호가 흘러들어오는지 감시
  • 전이중 모드(스위칭 허브를 사용)

돌아온 패킷을 받는다

  • 리피터 허브를 이용한 반이중 동작의 이더넷에서 1대가 송신한 신호가 리피터 허브에 접속된 케이블 전부에 흘러간다.
  • 신호 맨 앞에 프리앰블로 파형에서 타이밍 계산하고, 스타트 프레임 딜리미터가 나오면 디지털 데이터로 변환해 동작을 개시한다.
  • PHY회로에서 MAC 회로로 진행 할 때 패킷의 맨 앞부터 계산식에 적용해 FCS 값을 개산하고 패킷의 끝의 PCS 값과 비교한다.
  • 패킷 수신 사실을 인터럽트 구조를 사용해 통지한다.
    : 컴퓨터 본체는 패킷이 도착한 사실을 알지 못해 컴퓨터 본체가 실행하는 있는 작업에 끼어들어 LAN 어댑터 쪽에 주위시키는 일을 한다.
    • LAN 어댑터가 확장 버스 슬롯 부분에 인터럽트용 신호선에 신호를 보냄
    • 신호가 흘러들어오면 CPU는 실행하던 작업을 보류하고 OS 내부의 인터럽트 처리용 프로그램으로 전환
    • 인터럽트에는 번호가 자동으로 할당되어 LAN 어댑터가 인터럽트를 걸면 LAN 드라이버가 호출된다.
profile
정리하고 기억하는 곳

0개의 댓글