네트워크

컴퓨터 네트워크 기본 9

hs-archive 2023. 1. 15. 22:36

http://www.kocw.net/home/search/kemView.do?kemId=1169634

 

컴퓨터네트워크

인터넷을 동작시키는 컴퓨터네트워크 프로토폴을 학습한다.

www.kocw.net

https://media.pearsoncmg.com/intl/ge/2021/cws/ge_kurose_compnetwork_8/cw/index.php

 

Companion Website | Computer Networking: A Top-Down Approach, Global Edition, 8/e

VideoNotes Video tutorials illustrating key concepts from the text.

media.pearsoncmg.com


Link layer

OSI 7 layer, TCP/IP 4 layer

네트워크 계층이 시작지부터 목적지까지의 경로를 책임졌다면, 링크 계층은 현재 노드부터 다음 노드까지 딱 한 홉만큼의 전송을 책임지는 계층이다. 우리가 패킷을 전송할 때 패킷은 결국 전기 신호로 바뀌어서 전송이 된다. 이때 전기신호는 딱 다음 노드한테만 전송되는 것이 아니라 파장처럼 회선의 모두에게 전달이 된다. 만약 내가 데이터를 전송할 때 다른 기기가 동시에 패킷을 전송한다면 서로 충돌하여 값이 엉망이 될 수 있다. Link layer에서는 한 홉만큼의 전송을 담당하며 전기 신호끼리의 충돌을 방지하고 충돌이 일어날 시 복구를 담당한다.

 

전기 회선처럼 어떤 정보를 broadcasting 해주는 매체를 broadcast medium이라 한다. (e.g. 공기) 이러한 매체를 통해 전송할 때 다른 신호와 겹치지 않도록 하는 기술을 MAC(Medium Access Control)이라 부른다. 

 

Transport layer, Network layer는 OS 내부에 구현되어 있는 반면, Link layer는 adaptor(= network interface controller; LAN card, WiFi card) 안에 구현되어 있다.

where is the link layer implemented?

 

Link layer의 동작 과정 예시

보내는 쪽

  - datagram을 frame으로 캡슐화

  - error checking bits 등을 추가

받는 쪽

  - error 검사 등을 수행

  - datagram 추출 및 상위 계층으로 전달

adaptors communicating

 

MAC(Medium Access Control) 프로토콜 종류

broadcast medium을 통해 전송할 때 다른 신호와 겹치지 않도록 하는 기술을 MAC(Medium Access Control)이라 부른다고 했다. 이 MAC에는 여러 종류가 있는데 그것들에 대해 알아보자.

 

Channel partitioning

  - 채널을 여러 슬롯으로 나눈 뒤 사용자들에게 각각 할당함

Random access

  - 채널을 나주지 않고 그냥 충돌하게 내버려 두고 충돌이 발생하면 그에 따른 작업을 동작함

Taking turns

  - 차례를 가지며 자기 차례일 때 신호를 보냄

 

TDMA(Time Division Multiple Access) - Channel partitioning

시간으로 slot을 나눠서 본인 slot에만 통신을 할 수 있도록 한다. 안 보내는 사람이 있다면 회선을 그냥 놓게 내버려 두는 것이므로 비효율 적이다.

TDMA: time division multiple access

 

FDMA(Frequency division Multiple Access) - Channel partitioning

TDMA가 시간을 기준으로 분할한 거라면 FDMA는 주파수를 기준으로 대역을 나눈 것이다. 동작은 TDMA와 동일하다.

FDMA: freqeuncy division multiple access

 

CSMA(Carrier Sense Multiple Access) - Random access

보내기 전에 다른 얘들이 지금 회선을 사용 중인지 확인한다. 만약 다른 녀석이 통신하고 있다면 기다린다. 사람이 다른 사람과 대화하는 방식과 유사하다. 보통 다른 사람이 말할 때 동시에 말하지 않으며, 상대방의 말이 다 끝난 뒤 다른 사람이 말하기 때문이다. 그렇지만, 빈 회선을 감지한 서로 다른 기기가 동시에 통신을 시작하는 경우 충돌이 발생한다. 좀 더 정확히 말하면 propation delay가 존재하기 때문에 충돌이 발생할 수 있다. CSMA의 경우 신호가 충돌하더라도 자기 보낼 거 그냥 다 보낸다. (이러면 당연히 보내는 데이터에 문제가 발생한다.)

CSMA collision

 

CSMA/CD(Carrier Sense Multiple Access/Collision Detection) - Random access

CSMA랑 똑같은데 충돌이 감지되면 전송을 중단한다. NIC가 전송하는 동안 다른 전송을 감지하면 전송을 중단하고 jam 신호를 보내는 방식이다.

충돌 감지/중단

 

전송을 중단하는 건 알겠는데 충돌한 다음에 누가 먼저 다시 전송을 시작해야 할까?

: 충돌이 m번 났을 때 {0, 1, 3, ..., 2^m-1} 집합에서 랜덤 하게 아무거나 골라 그 시간만큼 기다린 뒤 전송을 한다. 해당 기능은 당연히 Link layer의 기능이 탑재되어 있는 NIC가 진행한다. 예를 들어, 충돌이 두 번 발생했을 경우 {0, 1} 두 원소 중 랜덤하게 하나를 골라 그 시간만큼 기다리고 만약 고른 시간만큼 기다린 뒤 전송했는데 충돌이 한 번 더 발생했을 경우 총 세 번의 충돌이 발생한 것이므로 {0, 1, 3} 세 원소 중 랜덤하게 하나를 골라 그 시간만큼 기다리고 전송을 하는 것이다. 사람이 많을수록 충돌이 많이 일어나고 충돌이 많이 일어날수록 기다리는 시간이 길어질 확률이 높아진다. 그래서 네트워크를 이용하는 사람이 많을수록 통신이 느린 것이다.

 

LAN(Local Area Network)

근거리 통신망, 로컬 영역 네트워크는 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶는 컴퓨터 네트워크이다. 이와 대조적으로, 광역 통신망(WAN)은 더 넓은 지역 범위를 아우를 뿐만 아니라 일반적으로 전용선 또한 동반하기도 한다. 이더넷과 와이파이는 근거리 통신망에 사용하기 위해 흔히 쓰이는 기술들이다.

네트워크 범위에 따른 정의

 

랜은 표준화 기구인 미국 전기전자 기술자협의(IEEE)와 국제 표준화 기구(ISO)에서 다음과 같이 정의한다.

1. 한정된 지역에서 컴퓨터를 기본으로 하는 여러 가지 전자기기 사이의 자유로운 정보 교환

2. 구축한 사용자가 직접 관리, 운영함.

3. 서로 다른 밴더의 기기 간에도 통신 가능

 

예전에는 여러 가지 방식(이더넷 Token ring, FDDI 등등)의 랜이 사용되었지만, 현재는 이더넷(Ethernet)을 사용하는 것이 대부분이다.

 

참고로 이더넷 방식을 사용하려면 Ethernet을 지원하는 LAN 카드를 사용해야 하고 Token Ring 방식을 사용하려면 Token Ring을 지원하는 LAN 카드를 사용해야 한다.(https://gdnn.tistory.com/101)

 

이더넷(Ethernet)

LAN, WAN등에서 가장 많이 활용되는 기술 규격이다. 이더넷은 OSI 모델의 물리 계층에서 신호와 배선, 데이터 링크 계층에서 MAC(Medium Access Control), 패킷과 프로토콜의 형식을 정의한다.(이더넷 = 물리 계층과 링크 계층에 걸친 프로토콜) 현재 가장 널리 사용되고 있으며 토큰 링, FDDI 등의 다른 표준을 대부분 대체했다. 토큰 및 ATM보다 간단하고 저렴하며 일정 속도를 유지한다.(10 Mbps ~ 10 Gbps)

이더넷

 

이더넷 frame structure

송신 측 어댑터는 데이터그램을 캡슐화하여 frame을 생성한다.

Ethernet frame

 

preamble(7 Bytes)

  - 프리앰블은 이더넷 프레임의 7바이트 필드로 수신자가 전송 매체의 임의 노이즈가 아닌 실제 데이터임을 알 수 있도록 도와준다. 프리앰블은 101010....1010으로 된 7바이트 길이의 1010s 패턴으로 이러한 패턴은 노이즈에 의해 무작위로 생성될 가능성이 극히 낮기 때문에 수신자는 이 같은 패턴을 수신하면 아 이제 데이터가 올라나보다 생각하고 데이터를 받을 준비를 한다.

  - preamble은 7바이트이고 그 뒤에 SFD라고 '...11'으로 전송되는 1 Byte짜리 얘가 있는데 이 SFD는 프리엠블의 맨 마지막에 붙으며 프리엠블이 이제 끝났다는 것을 알리는 역할을 한다.

  - preamble과 SFD는 실제로는 물리계층의 헤더이기 때문에 공식적으로 Link layer의 Frame에 포함되지는 않는다.

dest address, source address(각각 6 Bytes)

  - 목적지와 출발지의 MAC 주소를 뜻한다. 여기서의 MAC은 앞서 공부한 medium access control가 아니라 media access control address로 네트워크 인터페이스에 할당된 고유 식별자를 뜻한다. frame이 나에게 도착했을 때 이 frame의 중간 목적지가 정확히 나인지 아니면 회선이 broadcast medium이기 때문에 우연히 나에게도 당도한 것인지를 모를 수 있다. 하지만 이 MAC 주소를 확인하면 구별할 수 있다. dest MAC address에 내 MAC 주소가 있으면 나에게 온 것이다. 그러므로, 나는 중간 전달자로서 해당 패킷의 dest IP address를 읽어 Network layer의 routing-forwarding 기능을 활용해 최적 경로를 파악한 다음 Link layer에서 source MAC address를 나의 MAC 주소로 넣고 dest MAC address를 방금 파악한 최적 경로에 있는 내 다음 노드의 MAC address를 기입한 다음 그곳으로 전달하면 된다. 반대로, frame에 적힌 dest MAC address가 내 MAC 주소와 다르다면 나한테 온 것이 아니라 회선의 성질(broadcast medium) 때문에 내가 받은 것이므로 해당 데이터를 그냥 버리면 된다. 

type(2 Bytes)

  - 이더넷 프레임은 여러 버전이 존재하기 때문에 (Ethernet II, Novell raw IEEE 802.3, IEEE 802.2 LLC, IEEE 802.2 SNAP) 그들을 구별하기 위해 있다.

CRC(4 Bytes)

 -  해당 frame이 전송되는 도중 데이터에 변질이 생기진 않았는지 확인하기 위해 존재한다.

 

 

** MAC은 adapter(= network interface)가 갖고 있는 유니크한 주소이며 바뀌지 않는다.

MAC

 

** IP 주소도 유니크한 주소고 MAC 주소도 유니크한 주소인데 왜 두 가지를 함께 사용할까 IP 주소만 사용하거나 혹은, MAC 주소만 사용하면 더 좋은 거 아닐까?

: IP 주소만 사용할 순 없는 이유

  - IP 주소는 IP 프로토콜을 사용하는 기기들이 쓰는 것인데, 그러면 IP 프로토콜을 사용하지 않는 기기들의 통신은 어떻게 하지? IP 프로토콜을 사용하진 않지만 IP 주소를 사용해야 하나? 좀 이상함

  - 모든 장치는 저수준 요구 사항에서 MAC 주소를 관리하도록 제작되었는데 그걸 다 바꿔야 함

MAC 주소만 사용할 순 이유

  - 보통 라우터들이 forwarding table을 작성할 때 IP 주소와 interface 방향을 바인딩하는데 그러한 row를 몇 개만 만들지 전체 IP 주소에 대해 저장해 놓지는 않는다. 이는 IP 주소가 일종의 지역성을 띠어서 비슷한 지역에 있는 기기들의 IP 주소는 같은 subnet을 갖기 때문에 가능한 일이다. 하지만 MAC 주소는 그런 거 없다. 만약 IP 주소를 사용하지 않고 MAC 주소만을 사용한다면 router들은 IP 주소를 활용하여 forwarding table을 작성했을 때보다 훨씬 많은 row를 바인딩 해놓고 있어야 할 것이다. 이는 무척 비효율적이다.

  - 한마디로 모든 MAC 주소를 외우는 것은 불가능하지만 일부 IP 주소를 외우는 것은 가능하다. MAC 주소만 사용하는 것은 네트워크가 커질수록 부담도 커지며, 비효율적이다.

 

** 기기는 어떻게 데이터의 마지막 비트를 구별할 수 있을까?

802.3 Ethernet packet and frame structure

: 위 사진을 보면 알 수 있지만 ethernet frame에는 length도 없는데 어떻게 마지막 bit를 구분할 수 있을까 -> Interpacket gap을 통해 가능하다. 컴퓨터 네트워킹에서 프레임간 간격을 IPG라 하며 이는 패킷 또는 프레임 사이에 필요한 일시 중지이다. 물리 계층 프로토콜 또는 이더넷 장치는 패킷 전송 간에 최소 유휴 시간을 허용해야 한다. 일부는 유휴 기간 동안 말 그대로 아무것도 전송하지 않지만 대부분의 것은 유휴 패턴 신호를 계속하여 전송한다. 

 

ARP(Address Resolution Protocol)

주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소(MAC 주소)와 바인드 하기 위해 사용되는 프로토콜이다. 

 

이를테면, 호스트 A가 호스트 B에게 IP 패킷을 전송하려고 하는데, 호스트 B의 물리적 주소(MAC 주소)를 모른다면 ARP 프로토콜을 사용하여 B의 물리적 네트워크 주소를 알 수 있는 것이다.

  1. A가 dest IP 주소에 B의 IP 주소를 적고 dest MAC 주소에 FF-FF-FF-FF-FF-FF를 적은 ARP 패킷을 네트워크에 브로드캐스팅 한다.

  2. B는 자신의 IP 주소가 목적지로 적혀있는 ARP 패킷을 수신하면 자신의 물리적 네트워크 주소를 A에게 응답한다.

  3. A는 ARP table에 B의 IP 주소와 B의 MAC 주소를 함께 저장한다. (e.g. IP addr: 1.2.3.4 MAC: AA-AB-AC-AD-AE-AF) 다음에 B에게 패킷을 전송하기 전에 ARP table을 확인하고 1~2 과정을 생략한다.

 

 

** 패킷 전송 과정

: 종단 클라이언트가 CSMA/CD 방식을 사용하여 눈치를 본다. 아무도 통신하지 않을 때 GWR(게이트웨이, 라우터랑 비슷)에게 frame을 전송한다. GWR는 frame의 header를 열고 IP packet의 헤더도 열어서 해당 정보들을 취합하여 어느 쪽으로 해당 프레임을 전송해야 할지 확인(Network layer: forwarding table 확인)한다. 그리고 다시 frame으로 감싸는데 이때 src MAC address와 dest MAC address가 바뀐다. src MAC address는 종단 클라이언트 MAC address에서 GWR MAC address로 바뀌고 dest MAC addr는 GWR MAC address에서 다음 노드의 MAC address로 바뀐다. 이 과정을 목적지에 도달할 때까지 반복한다.

 

참고로 MAC address는 network interface 당 하나이므로 GWR는 여러 MAC address를 가질 수 있고 이는 아래 사진과 같다. A와 B는 서로 다른 network interface이므로 서로 다른 MAC Address를 갖는다. 따라서 종단 클라이언트 A가 GWR에게 frame을 전달할 때 적었던 dest MAC address는 GWR의 A의 MAC address이고 GWR이 다음 노드로 frame을 전달할 때 적는 src MAC address는 GWR의 B의 MAC Address이다. 

여러 MAC address를 갖는 게이트웨이

 

switch

스위치는 기기들의 중간에 위치해 기기들의 신호를 가로채 어떤 신호를 먼저 보낼지 교통정리를 해준다. 기기의 입장에서 스위치는 인식되지 않는다. 따라서 전송을 할 때 기기의 입장에서는 스위치가 있으나 없으나 동작이 달라지지는 않는다. 그렇다면 스위치는 왜 쓰는 것일까.

 

스위치는 기기들을 분리시키는 용도로 사용된다. 기기들은 통신할 때 CSMA/CD 방식을 사용하므로 같은 회선을 쓰는 기기들이 많을수록 눈치를 많이 봐야 한다. 스위치는 기기들의 회선을 분리시켜 그러한 일을 최대한 적게 하도록 하는 용도이다.

 

bus: 90년대 중반에 많이 쓰인 회선 방식. 모든 노드들이 서로 충돌할 수 있다.

bus

 

star: 요즘 많이 쓰는 방식. 노드는 서로 충돌하지 않는다. 스위치가 요청을 받고 어떤 요청을 먼저 보낼지 교통정리 해준다.

star

 

switch는 어느 요청이 어느 방향으로 가는 것인지 어떻게 아는 것일까. 아래와 같은 그림에서 A가 A'로 요청을 보냈다 가정한다면 스위치는 요청을 4번으로 내보내야 한다. 이러한 과정은 스위치 안에 있는 switch table을 사용한다. switch table는 MAC address와 interface가 바인딩되어 있는 row로 이루어져 있으며 요청을 받으면 해당 요청의 frame header를 열어서 dest MAC address를 확인하고 switch table과 대조하여 해당 MAC address와 바인딩되어 있는 인터페이스로 요청을 내보내는 것이다.

switch

 

switch table을 확인하여 frame을 전송하는 것은 알았다. 그렇다면 switch table은 어떻게 만들어지는 것일까.

 

switch: self-learning

switch는 self-learning을 통하여 switch table을 작성한다. 예를 들어 다음과 같이 작동한다.

 

  1. A가 A'로 패킷을 전송한다.

  2. A가 보낸 패킷이 1번 interface를 통해 왔으므로 switch는 interface 1번에 A가 있다는 것을 알았다. 이를 switch table에 기입한다.

  3. switch는 A'로 전송하려면 어느 interface로 전송해야 하는지 모르기 때문에 broacast를 한다.(해당 작업을 Flooding이라 부른다.)

  4. A'가 A에게 ACK를 보낸다.

  5. A'가 보낸 패킷이 4번 interface를 통해 왔으므로 switch는 interface 4번에 A'가 있다는 것을 알았다. 이를 switch table에 기입한다.

  6. 2번에서 A가 1번 interface 쪽에 있다는 것을 switch table에 기입했으므로 해당 값을 토대로 패킷을 1번으로 보낸다.

switch table: 결과

 

 

** switch의 동작을 보면 네트워크 계층의 값(e.g. IP 주소)을 변환하거나 읽거나 하는 일은 하지 않는다. 그냥 MAC 주소만 볼 뿐이다. 따라서 switch는 2계층 장비로 충분하며 IP 주소를 갖지 않아도 된다. 참고로 우리가 사용하는 공유기는 NAT, DHCP 등을 제공하는 하나의 컴퓨터이며 7계층 Gateway라고도 할 수 있다. 이는 IP 주소도 없고 NAT, DHCP 등을 제공하지 못하는 switch와는 다르다.

 

 

 

 

 


https://ko.wikipedia.org/wiki/%EA%B7%BC%EA%B1%B0%EB%A6%AC_%ED%86%B5%EC%8B%A0%EB%A7%9D

 

근거리 통신망 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 10BASE5 이더넷을 이용한 근거리 통신망 개념도 근거리 통신망, 로컬 영역 네트워크(영어: local area network, LAN), 구내 정보 통신망은 네트워크 매체를 이용하여 집,

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%8D%94%EB%84%B7

 

이더넷 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 트위스티드 페어 케이블 인텔 82574L 기가비트 이더넷 NIC, PCI익스프레스 x1카드 이더넷(영어: Ethernet)은 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN

ko.wikipedia.org

https://www.quora.com/What-is-the-use-of-the-preamble-in-an-Ethernet-frame

 

What is the use of the preamble in an Ethernet frame?

Answer (1 of 11): Preamble is a 7 Byte field in the Ethernet frame which helps to receiver to know that it is an actual data ( Ethernet Frame) and not some random noise in the transmission medium. It acts like a doorbell telling about the incoming data. It

www.quora.com

https://ko.wikipedia.org/wiki/%EC%A3%BC%EC%86%8C_%EA%B2%B0%EC%A0%95_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

 

주소 결정 프로토콜 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜이다. 여기서 물리

ko.wikipedia.org

https://networkengineering.stackexchange.com/questions/3329/reason-for-both-a-mac-and-an-ip-address

 

Reason for both a MAC and an IP address

If my computer has an IP address,why does it need a MAC address?

networkengineering.stackexchange.com

'네트워크' 카테고리의 다른 글

컴퓨터 네트워크 기본 - 마지막  (4) 2023.01.17
컴퓨터 네트워크 기본 8  (0) 2023.01.11
컴퓨터 네트워크 기본 7  (0) 2023.01.11
컴퓨터 네트워크 기본 6  (0) 2023.01.09
컴퓨터 네트워크 기본 5  (0) 2023.01.09