프로그래밍/Computer Network

2. Physical & Data Link Layer

prime 2024. 4. 6. 00:07

1. Physical Layer

 

1) Moving Bits across the wire

Bit란 컴퓨터기 이해할 수 있는 가장 작은 데이터 표현이고, 0 or 1이다. 이러한 데이터는 복잡한 물리적인 방법을 이용하여 전송되는데, copper cable의 경우 electric charge를 전송하고, 이것의 voltage를 변화시키는 방법을 Modulation이라고 한다. 이러한 Modulation은 컴퓨터에서는 line coding이라고 하는데, digital data를 Encoder로 digital signal로 변환시켜 전송하느 수신측에서는 digital signal을 Decoder로 digital data로 변화시키는 것을 말한다.이러한 방식으로 Network를 통해 수 많은 데이터들을 보낸다. 

 

2) Twisted pair cable & Duplex

Twisted copper cable은 여러 twisted pair wire들로 이루어 져있다. 이러한 twisted pair wire 형태는 electromagnetic interference로부터 보호하고, 근처의 pair들로부터 crosstalk을 막는다. Standard Cat6는 8개의 wire가 2개씩 pair를 이루는 4개의 twisted pair로 이루어져 있다. 중요한 것은 이러한 cable들은 duplex communication을 지원한다는 것이다. 하나 또는 두개의 twisted pair를 전송하기 위해, 또 다른 하나 또는 두개의 twisted pair를 수신하기 위해 사용함으로서 하나의 cable로 양방향으로 통신할 수 있도록 한다. 만약, 하나의 cable로 동시에 양방향으로 통신할 수 있다면 full-duplex라고 하고, 양방향 통신은 가능하지만 동시에는 안된다면 half-duplex라고 한다.  

 

3) Network port & Patch panel

Twisted copper cable은 device의 port와 연결되는 끝부분이 있는데, 일반적으로 RJ45 plug를 주로 사용한다. 이것과 연결되는 port부분은 RJ45 port이다. Switch는 여러 device들과 연결하기 위해 많은 port를 가진다. RJ45 port는 두가지 LED를 가지는데, 하나는 Link LED이고 두 device가 잘 연결되었는지를 알려준다. 다른 하나는 Activity LED인데 데이터가 전송되고 있는지를 알려준다. 물론 모든 device의 LED가 동일한 방식으로 작동하는 것은 아니지만, 보통의 경우는 이러한 LED를 검사하는 것만으로도, troubleshooting을 할 수 있다. 때때로 이러한 port는 벽과 같은 곳에 붙어있을 수 있는데, 이러한 경우 해당 port는 Patch panel이라는 device로 연결된다. 이것은 단지 cable들을 연결시키는 역할만 하고 다른 기능을 하지 않는다. patch panel에 cable을 연결해 다른 switch나 router로 연결할 수 있다.

 

2. Data Link Layer

 

1) Ethernet & MAC address

Ethernet은 개별 link사이에서 데이터를 전송하기 위해 널리 사용되는 protocol이다. Ethernet과 data link계층은 상위계층의 software가 데이터를 주고받을 수 있도록 한다. Data link layer의 주된 목적은 abstraction을 통해 다른 계층이  physical layer을 다룰 필요를 없애버리는 것이다. 다른 계층은 어떤 하드웨어가 사용되는지 알 필요가 없다. 과거에 Hub에 연결된 장치들은 모두 Collision domain에 속했기 때문에,  Ethernet은 CSMA(Carrier Sense Multiple Access)라는 방식을 이용해 이러한 collision을 탐지한다. CSMA방식에서는 한 컴퓨터가 데이터를 전송하다가, 다른 컴퓨터가 데이터를 전송하여 collision이 발생할 때 각 컴퓨터는 random interval동안 기다리고 다시 전송한다.  Collision domain에 있다는 것은 한 컴퓨터가 모든 컴퓨터로부터 데이터를 받는다는 의미이다. 따라서, 어떤 컴퓨터로부터 왔는지를 구분하는 것이 필요한데, 이를 구분하는 것이 바로 MAC address (Media Access Control address)이다. 

MAC address는,개별 network interface를 구분하는 globally unique identifier이고, Ethernet에서 사용한다. FF:FA:12:13:1B:54 와 같이, 48bit(6byte)의 hexademial number로 표현한다. 앞의 24bit는 IEEE에 의해 할당되는 hardware manufactures번호이고, 뒤의 24bit는 Vender사에 의해 할당된다. 이를 이용하여 network segment를 single collision domain으로 동작하도록 한다. 

 

2) Unicast, Multicast, Broadcast

Unicast란 항상 오직 하나의 receiving address로 의도된 전송을 말한다. Ethernet에서 이는 destination MAC address의 fitst octet의 least significant bit를 0으로 설정함으로서 이루어진다. 이렇게 설정하면 collision domain에서 여러 다른 컴퓨터로 데이터가 전송되어도, 실제로는 MAC address가 일치하는 컴퓨터에서만 처리된다. 

Multicast란 하나의 receiving address 뿐만 아니라 다른 local network segment들에게도 보내지는 전송이다. Ethernet에서 이는 destination MAC address의 fitst octet의 least significant bit를 1으로 설정함으로서 이루어진다.  MAC address가 일치하는 컴퓨터에서 처리될 뿐만 아니라, 다른 컴퓨터에서도 처리될 수 있는데 그것을 받아들일지 버릴지는 각 device가 결정한다. 각 Network interface는 이러한 multicast를 처리하기 위한 허용리스트를 만들어 활용할 수 있다.

Broadcast는 특별한 Broadcasting MAC address인 FF:FF:FF:FF:FF:FF 를 destination address로 설정하여 local network segment내 모든 device에게 전송하는 전송방식이다. Broadcast는 devicer들끼리 서로에 대해서 학습하기 위해 사용된다. 

 

3) Dissecting Ethernet Frame

Data packet이란 network link를 통해 전송되는 하나의 데이터 집합이다. 

Ethernet Frame이란, 구조화된 정보의 모음이고 아래와 같은 구조를 가지고 있다.

 

출처 : Wikipedia

 

Preamble은 7byte이고, 부분적으로 buffer로서 frame간의 전송속도를 조정하는데 사용되는 internal clock을 synchronize하는데 사용할 수 있다. SFB(Start frame delimiter)는 1byte이고, receiving device에게 preamble이 끝나고 이후의 정보는 실제 frame content임을 알려누는 signal역할을 한다. 이후에 목적지 주소, 출발지 주소가 나오고, EtherType이 나온다. EtherType은 2byte이고, frame content의 protocol이 어떤 것인지를 설명한다. EtherType앞에 VLAN header(4byte)가 나오기도 하는데, 이것은 현재 프레임이 VLAN frame임을 말해준다. 이러한 방식은 VLAN(Virtual LAN)을 사용할 수 있도록 하는데, VLAN을 사용함으로서 물리적으로 같은 LAN으로 연결된 device들을 논리적으로 여러 LAN으로 분리할 수 있다. 해당 frame이 전달되기 위해서는 Switch에서 VLAN frame이 relay가능해야 한다. 

Payload는 실제로 전달되는 데이터이다. 데이터의 길이는 보통 46 ~ 1500byte길이가 가능하다.

마지막으로 오는 FCS(Frame check sequence)는 4byte이고, 전체 frame의 checksum이다. checksum값은 CRC(Cyclical redundancy check)를 수행하여 계산된다. CRC는 IP header, TCP header, DATA등을 input으로하여 수학적으로 계산이 되는데, 만약 수신측이 동일한 방식으로 계산했을 때 checksum값이 일차하지 않는다면, 데이터의 integrity가 깨진것으로 보고 데이터를 버린다. 물론 그것을 재전송할지, 또는 데이터를 복구할지는 상위 level의 역할이다.