네트워크 공부

TCP / IP 계층 구조 2(물리, 링크 계층)

때류기 2023. 10. 27. 16:11

관련 책: https://product.kyobobook.co.kr/detail/S000001792473

 

멀티플레이어 게임 프로그래밍 | 조슈아 글레이저 - 교보문고

멀티플레이어 게임 프로그래밍 |

product.kyobobook.co.kr

이 책을 참고, 공부하여 서술하고 있습니다.!

 

물리 계층

책에선 물리 계층은 전자기학과 관련되어있다고 하여 자세히 설명은 하지 않았습니다.

 

물리 계층 이란?

 

계층 구조 최하단에 있으며 가장 기본적인 하드웨어 전송을 지원하는 계층

 

네트워크로 연결된 컴퓨터, 즉 호스트 사이의 물리적 연결을 책임짐

- 물리적으로 연결된 매체가 있어야 정보를 주고 받을수 있다. TP CAT-6 케이블, 전화선, 동축 케이블, 광섬유 케이블 등이 물리계층에서 연결에 이용하는 매체의 예 이다. 하지만 물리적인 연결이라 하여 반드시 눈에 보이는 것일 필요는 없다(전파 통신등)

 

 

링크 계층

링크 계층 이란?

 

물리적으로 연결된 호스트 사이의 통신 수단을 제공하는 것

- 송신 호스트가 그 정보를 꾸려 물리 계층을 통해 정보를 보낼 수 있는 수단, 그리고 수신 호스트가 높은 확률로 그 정보를 수신하여 안에 담긴 정보를 꺼낼 수 있게 하는 수단을 링크 계층이 제공

 

링크 계층의 송수신 단위는 프레임(frame)이다.

 

각 호스트는 링크 계층을 통해 서로에게 프레임을 주고 받는다.

 

링크 계층의 역할을 좀더 나눠보면 다음과 같다.

- 특정 목적지에 주소를 부여해서 각 프레임에 기재토록 하여 호스트를 식별할 수단 제공

- 수신 측 주소와 데이터를 담을 수 있는 프레임 포맷 정의

- 한번에 데이터를 얼마까지 보낼 수 있는지 윗단 계층에서 알 수 있게끔 프레임의 최대 길이 정의

- 물리 계층으로 거쳐 전달된 신호를 의도된 호스트가 수신할 수 있게 프레임을 물리적인 전기 신호로 변환하는 방법 정의

 

의도된 호스트에 프레임이 전달될지 아닐지는 확률적으로 결정되며 항상 보장되는 것은 아니다.

-전기 신호를 훼손하지 않고 목적지까지 전달하는데에는 많은 변수가 있어 영향을 끼침

- 전기적 간섭 혹은 장비의 고장등 물리적 매체에 장애가 발생한 경우 프레임이 누락되어 아예 전달되지 않을 수 있음

- 링크계층에선 프레임이 도착했는지 확인하거나 실패했을 때 다시 보내는 등 시도를 하지않음

- 이와 같은 이유로 링크 계층을 비신뢰성(unreliable)통신 이라함

- 신뢰성(reliable)통신을 구축하려면 다시 보내는 등의 적절한 매커니즘을 직접 구현해야함

 

물리계층을 구현하고자 하는 물리적 연결 매체 마다 대응되는 하나 이상의 프로토콜이 링크 계층에 존재한다.

- ex. 랜선으로 연결된 호스트에선 1000BAS-T 같은 이더넷 계열 프로토콜

        전파로 연결된 호스트 사이에선 단거리 와이파이 프로토콜(802.11g...) 혹은 장거리 무선 프로토콜인 3G 4G 5G 통신

 

 

이더넷 / 802.3

링크 계층 프로토콜의 기능을 잘 보여주는 것이기도하며, 네트워크 게임 프로그래머로서 살다보면 거의 반드시, 라고 해도 좋을 만큼 마주치게 되는 프로토콜이라 알아두는 것이 좋다.

 

이더넷 표준은 1980년도 DEC,인텔, 제록스가 공동으로 제창하였으며 오늘날 이더넷 프로토콜은 IEEE 802.3을 표준으로 정의하고 있다.

광섬유, TP 케이블, 동축 케이블등 매체마다 상응하는 이더넷 파생 프로토콜이 있다. 또한 속도에 따라 파생되는 프로토콜도 있는데 기가비트 이더넷, 10기가 이더넷등등이다.

이더넷은 여러 호스트를 식별하기 위해 매체 접근 제어 주소(Media Access Control Address, Mac Address), 줄여서 MAC주소를 사용한다. MAC주소는 이론상 고유한 48비트 숫자로서 이더넷 네트워크에 연결 가능한 장비 하나하나마다 고유한 값으로 부여된다. 이러한 장비를 통칭 네트워크 인터페이스 컨트롤러(Network Interface Controller) 줄여서 NIC라고 부른다.

MAC주소는 범용 고유 식별자(Universally Unique Identifier, UUID)의 일종으로, 기기마다 고유한 값을 부여해야 하므로 NIC제조업체는 하드웨어 제조 과정에서 MAC주소를 기기에 새겨 넣는다. 첫 24비트는 OUI(Organizationally Unique Identifier), 즉 제조업체 식별 코드로 IEEE가 제조사마다 고유한 번호를 할당해준다. 나머지 24비트를 고유하게 할당하는 일은 제조업체의 책임으로 제조사는 자신이 생산하는 하드웨어 하나마다 고윳값을 부여해야한다.

 

 

이더넷 패킷 구조

 

모든 이더넷 패킷은 0x55 7개의 0xD5 1개 총 8바이트의 16진수, 즉 55 55 55 55 55 55 55 D5로 시작하며 이를 프리앰블(preamble)과 SFD(Start Frame Delimiter)라 한다. 밑단 하드웨어는 이러한 이진수 패턴을 체크하여 동기화를 맞추고 새 프레임을 받을 준비를 한다. 프리앰블과 SFD는 보통 NIC하드웨어가 걸러내며, 프레임을 구성하는 나머지 바이트 열을 이더넷 모듈에 넘겨 처리한다.

SFD뒤에 붙는 6바이트는 프레임의 수신자로 설정된 기기의 MAC주소를 나타낸다.

길이/ 종류 필드는 오버로드하여 길이나 종류 둘 중 하나로 사용한다. 길이 필드로 사용하는 경우, 프레임에 포함된 페이로드의 길이를 바이트 단위로 나타낸다. 종류 필드로 사용한 경우, 이더타입(Ether Type) 고유 식별자 값을 기록해 *페이로드 내 데이터를 어떻게 해석해야 하는지 표시한다.

(페이로드: 프레임에 담겨 전송되는 데이터 그 자체를 뜻함)

프레임 체크 시퀸스(Frame Check Sequence, FCS)는 CRC32값으로, 여러 값에 걸쳐 연산하여 얻은 체크섬 값으로, 연산에 포함되는 것은 발신자와 수신자 주소 각각, 길이/종류 필드, 페이로드, 패딩값 등이다. 이더넷 하드웨어가 데이터 수신 시 이 값을 검사하여 전송된 데이터가 손상되었는지 판단하고, 만일 손상된 경우 프레임을 폐기한다.