개별 링크를 통해 데이터를 전송하는 데
가장 널리 사용되는 프로토콜을 이더넷이라고 한다.
이더넷과 데이터 링크 계층은 데이터를 주고받을 수 있는 소프트웨어를 위한 수단을 제공한다.
인터넷, 트랜스포트 및 애플리케이션 계층은 그들이 실행 중인 장치가
어떻게 연결되어 있든지 간에 모두 동일하게 작동할 수 있다.
(전송 계층이나 네트워크 계층은 물리 장치가 어떤 장치로 연결되어있던지
모두 동일하게 작동할수 있도록 데이터 링크 계층이 변환을 해준다.)
따라서 웹 브라우저는 물리장치가 트위스트 페어로 연결되어 있던지
무선 연결로 되어 있는 장치에서 실행 중인지 알 필요가 없어지게 된다.
그것은 단지 그것을 위한 데이터를 주고 받기 위해 아래 계층이 필요 할 뿐이다.
이번 장의 목표
1. MAC 주소가 무엇이고 컴퓨터를 식별하는데 어떻게 사용되는지
2. 이더넷 프레임을 구성하는 컴포넌트들이 무엇인지
3. 유니캐스트, 멀티캐스트, 브로드캐스트 어드레스를 구분할 수 있는지
4. 중복 검사가 이더넷을 통해 전송되는 데이터의 무결성을 어떻게 보장하는지
알아보자
먼저 , 이더넷의 역사를 알아보자!
1980년도에 처음 등장을 했고, 83년에 표준화가 되었다.
1983년의 컴퓨터 네트워킹은 오늘날과 완전히 달랐다.
가장 큰 차이점 중 하나는 스위치나 hub 가 없었다는 것이다.
이건 네트워크의 모든 장치가 하나의 충돌 가능한 도메인을 공유한다는 것을 의미한다.
충돌 도메인은 오직 한 순간에 한 device만 사용할 수 있는 네트워크 세그먼트라고 배웠었다.
충돌 도메인의 모든 데이터가 충돌 도메인에 연결된 모든 노드로 전송되기 때문이다.
만약 두 대의 컴퓨터가 동시에 전선을 통해 데이터를 전송한다면, 이것은 우리의 0과 1을 나타내는 전류의 문자 그대로 충돌을 일으켜 최종 결과를 이해할 수 없게 될 것이다.
이더넷은, 프로토콜로서, 충돌 검출에 의한 캐리어 감지 다중 접속(carrier sense multiple access with collision detection)이라고 알려진 기술을 사용하여, 이 문제를 해결했다.
우리는 일반적으로 이것을 CSMA/CD로 줄인다.
CSMA/CD는 통신 채널이 명확하고
기기가 데이터를 자유롭게 전송할 수 있는 시기를 결정하는 데 사용된다.
CSMA/CD의 작동 방식은 사실 매우 간단하다.
현재 네트워크 세그먼트에서 전송되고 있는 데이터가 없는 경우, 노드는 데이터를 자유롭게 전송할 수 있다.
만약 두 대 이상의 컴퓨터가 동시에 데이터를 전송하려고 시도하려고하면,
컴퓨터는 이 충돌을 감지하고 데이터 전송을 중지한다.
충돌과 관련된 각 장치는 데이터 전송을 다시 시도하기 전에
임의의 시간 간격을 기다린다.
이 임의의 시간 간격이 다음에 다시 충돌하는 것을 막는데 도움을 준다.
네트워크 세그먼트가 충돌 영역인 경우,
해당 세그먼트의 모든 장치가 전체 세그먼트에 걸쳐 모든 통신을 수신함을 의미한다.
이는 전송이 실제로 어떤 노드를 위한 것이었는지
확인할 수 있는 방법이 필요하다는 것을 의미한다.
여기서 미디어 액세스 제어 주소 또는 MAC 주소라고 알려진 것이 작동하게 된다.
MAC 주소는 개별 네트워크 인터페이스에 연결된 전역 고유 식별자다.
이것은 보통 두 개의 16진수 숫자로 이루어진 여섯 개의 그룹으로 대표되는 48비트 숫자 입니다.
MAC 주소는 전 세계적으로 고유하다
이더넷은 MAC 주소를 사용하여 전송되는 데이터가 전송한 기계의 주소뿐만 아니라 전송을 위한 주소도 모두 가지고 있는지 확인한다.
이러한 방식으로, 단일 충돌 도메인의 역할을 하는 네트워크 세그먼트에서도, 그 네트워크의 각 노드는 트래픽이 언제 그것을 위한 것인지 알고 있다.
유니캐스트 vs 멀티캐스트 vs 브로드 캐스트
한 device 에서 다른 device 로 데이터를 전달하는 걸 유니캐스트라고 한다.
유니캐스트 전송은 항상 하나의 수신 주소만을 위한 것
이더넷 레벨에서는 목적지의 맥 주소를 보고 판단을 한다.
목적지 주소의 첫 octet의 첫 비트가 0으로 되어있으면 이건 오직 목적지 주소만을 위한 이더넷 프레임이라는 뜻이다.
만약 비트가 1이면 , 멀티캐스트 프레임을 뜻한다.
멀티캐스트 프레임은 MAC 주소 외에 기준에 따라 각 기기에서 수용하거나 폐기한다는 것이다.
네트워크 인터페이스는 설정된 멀티캐스트 주소들을 받아들이게 설정할 수 있다.
세번째 유형은 브로드 캐스트이다.
브로드 캐스트는 LAN의 모든 기기에 전송된다. 이건 브로드 캐스트라고 알려진 목적지를 사용하여 이루어진다.
이더넷 프레임
이더넷 프레임을 해부해보면서 네트워킹의 기본기를 이해해보자
데이터 패킷은 네트워크 링크를 통해 전송되는 이진 데이터의 단일 집합을 나타내는 포괄적 용어다.
데이터 패킷은 특정 레이어의 얽매이지 않는다. 그저 하나의 개념일뿐.
이더넷 레벨의 데이터 패킷을 이더넷 프레임이라고 한다.
이더넷 프레임은 특정한 순서로 표시 되는 구조화된 컬렉션입니다.
피지컬 레이어의 네트워크 인터페이스는 링크를 통해 이동하는 비트 문자열을 의미 있는 데이터로 변환하거나
그 반대를 할 수 있다.
이더넷 프레임의 모든 섹션은 전부 필수 사항이고, 대부분 고정된 사이즈를 가지고 있다.
이더넷 프레임의 첫 번째 부분은 프리앰블이라고 알려져 있다.
프리앰블은 8바이트 또는 64비트 길이로, 그 자체로 두 부분으로 나눌 수 있다.
처음 7바이트는 0과 1이 교대로 이루어진 것이다.
이러한 것들은 프레임들 사이의 버퍼로 작용하며
네트워크 인터페이스에 의해 그들이 사용하는 내부 클럭을 동기화하고
그들이 데이터를 보내는 속도를 조절하는 데 사용될 수도 있다.
프리엠블의 마지막 바이트는 SFD 또는 시작 프레임 구분 기호로 알려져 있다.
이 시그널은 프리엠블이 이제 끝났고 실저 프레임 컨텐츠가 온다는 걸 뜻한다.
이 프리엠블 바로 뒤에 목적지 MAC 주소가 나타난다.
이건 하드웨어 MAC 주소 이고 그 다음 소스 MAC 주소가 온다.
그 다음 부분은 이더넷 타입 필드다.
16비트의 길이로 프레임 컨텐츠의 프로토콜이 무엇인지 설명한다.
또 우리는 VLAN 헤더를 찾을 수 있는데 이건 이 프레임이 VLAN 프레임이라는 걸 나타낸다.
VLAN은 한 물리장비에서 여러개의 논리 LAN 을 작동시키는 기술이다.
VLAN 프레임은 특정 태그를 릴레이 하도록 구성된 스위치 인터페이스에서만 제공된다.
VLAN 은 일반적으로 서로 다른 형태의 트래픽을 분리하는데 사용된다.
예를들면 한 회사의 전화기의 IP가 한 VLAN 에서 작동하는 반면, 데스크톱은 다른 VLAN 에서 작동하는 걸 볼 수 있다.
이 이후엔 이더넷 프레임에서 데이터 payload 를 찾을 수 있다.
네트워크에서 페이로드란 전송되는 실제 데이터로 , 헤더가 아닌 모든것을 말한다.
데이터 페이로드의 길이는 46~1500 바이트 가 전통적인 사이즈다
여기에는 IP, transport , application 레이어들의 실제 전송되고 있는 모든 데이터가 포함된다.
마지막으로 우리는 frame check sequence 라고 알려진 것을 얻는다.
이것은 전체 프레임의 체크섬 값을 나타내는 4바이트의 숫자다.
이 체크섬 값은 프레임에 대해 주기적 중복성 검사(cyclical redundancy check)라고 알려진 것을 수행함으로써 계산된다.
CRC 는 데이터 무결성을 위한 중요한 개념으로 네트워크 뿐만이 아니라 컴퓨팅 전반에 걸쳐 사용된다.
CRC는 다항 분할을 사용해서 더 큰 데이터 집합을 나타내는 숫자를 만드는 변환이다.
device가 프레임을 보낼 준비가 되면 , 목적지 및 발신 MAC 주소, 데이터 페이로드 등 모든 정보를 수집한다.
그 다음 데이터에 대해 CRC 를 수행하고 , 결과 체크섬 번호를 프레임 끝에 FCS로 부착한다.
이 데이터는 링크 를 통해 전송되고 다른 끝에서 수신된다.
여기서 , 이더넷 프레임의 모든 필드가 수집되고, 수신 측에서 데이터에 대해 CRC를 수행한다.
만약 체크섬이 FCS의 체크섬과 일치하지 않으면 데이터를 버린다.
이걸 재전송 해야될지 결정하는 것은 더 상위의 layer에서 결정한다.
이더넷 자체는 데이터의 무결성에 대해서만 보고를 한다.
'프로그래밍 > 네트워크' 카테고리의 다른 글
[Coursera Google] The Network Layer - Subnetting (0) | 2020.12.06 |
---|---|
[Coursera Google] The Network Layer (0) | 2020.12.06 |
[Coursera Google] Physical Layer (0) | 2020.07.07 |
[Coursera Google] 네트워크 device 장치들 (0) | 2020.07.07 |
[Coursera Google] OSI Model (0) | 2020.07.01 |