학교
[컴퓨터 네트워크] Chapter 6. The Link Layer and LANs - (2)
날짜: 24-2 15주차 2차시
2. LANs - 이더넷 (Ethernet)
[1] 이더넷 (Ethernet)

1) “주요” 유선 LAN 기술:
처음으로 널리 사용된 LAN 기술
단순하고 저렴함
속도 경쟁을 따라잡음: 10 Mbps ~ 400 Gbps
단일 칩으로 여러 속도 지원 (예: Broadcom BCM5761)
[2] 이더넷: 물리적 토폴로지

버스형(topology): 90년대 중반까지 인기 있었음
모든 노드가 같은 충돌 도메인에 속함 (노드끼리 충돌 가능)
다른 노드끼리 통신하고 있을 경우에는, 다른 노드끼리 통신이 불가능한 것은 아니지만, 충돌이 발생하여 데이터 손상이 생길 가능성이 높다. 충돌이 발생하면 데이터를 재전송해야 하므로 네트워크 성능이 저하된다.
스위치형(topology): 오늘날 널리 사용됨
중앙에 활성 링크 계층 2 스위치 배치
각 "스포크"는 별도의 이더넷 프로토콜을 실행 (노드 간 충돌 없음)
[3] 이더넷 프레임 구조
송신 인터페이스가 IP 데이터그램(또는 다른 네트워크 계층 프로토콜 패킷)을 이더넷 프레임에 캡슐화함

datagram은 dat(Playload)에 위치한다.
preamble : 8 bytes
address : 6 bytes
type : 2 bytes
crc : 4 bytes
합계
프리앰블(Preamble):
수신기와 송신기 클록 속도를 동기화하는 데 사용
7바이트의
10101010 뒤에101010111바이트로 구성ex)10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011
주소(Addresses): 6바이트 소스 및 목적지 MAC 주소
어댑터가 수신한
프레임의 목적지 주소가 일치하거나브로드캐스트 주소(예: ARP 패킷)일 경우, 프레임의 데이터를네트워크 계층 프로토콜로 전달그렇지 않으면 어댑터는 프레임을 폐기:
프레임을 폐기하는 이는 목적지 MAC 주소가 자신과 일치하지 않는 데이터는 해당 네트워크 장치와관련이 없기 때문이다.
타입(Type):
상위 계층 프로토콜을 나타냄대부분 IP이지만 Novell IPX, AppleTalk 등 다른 프로토콜도 가능
IP : 0x0800: 프레임의 페이로드가 IP 패킷임을 나타낸다
ARP : 0x0806: 프레임의 페이로드가 ARP 패킷임을 나타낸다
수신 측에서 다중화 해제(demultiplexing)에 사용
CRC(Cyclic Redundancy Check):
수신기에서 오류를 검출
오류가 발견되면 프레임은 폐기됨
[4] 이더넷: 비신뢰성(unreliable), 비연결성(connectionless)
비연결성: 송신 NIC와 수신 NIC 간에 핸드셰이킹 없음
비신뢰성: 수신 NIC는 송신 NIC에 ACK 또는 NAK를 보내지 않음
손실된 프레임의 데이터는 초기 송신자가 상위 계층 신뢰 데이터 전송(rdt) 프로토콜(예: TCP)을 사용할 경우에만 복구 가능, 그렇지 않으면 손실된 데이터는 영구적으로 손실됨
이더넷의 MAC 프로토콜: 슬롯 없는 CSMA/CD와 이진 백오프(binary backoff)를 사용
CSMA/CD : 충돌 감지 및 처리 메커니즘
손실된 패킷에 대해서는 TCP의 재전송을 통해 이루어진다. 패킷 손실은 TCP가 ACK 메시지를 통해 감지하고, 재전송을 요청하는 방식이다. 링크 레이어는 이러한 재전송을 직접적으로 처리하지 않지만, 네트워크 레이어 및 전송 레이어에서 패킷 손실을 감지하고 진행하는 방식이다.
[5] 802.3 이더넷 표준: 링크 및 물리 계층
ethernet :
802.3으로 시작한다.wifi :
802.11으로 시작한다.

다양한 이더넷 표준 존재
공통 MAC 프로토콜과 프레임 형식
다양한 속도: 2 Mbps, 10 Mbps, 100 Mbps, 1 Gbps, 10 Gbps, 40 Gbps
다양한 물리 계층 매체: 광섬유(fiber), 케이블(cable)
2. LANs - 스위치
[1] 이더넷 스위치
스위치는 링크 계층 장치로 능동적인 역할을 수행
이더넷 프레임을
저장 및 전달들어오는 프레임의
MAC 주소를 검사하고, 프레임을 전달할 세그먼트가 있을 때하나 이상의 아웃고잉 링크로 선택적으로 전달(목적지 전달이 있을 때만 진행하기 때문이다.)
위치는 여러 장치가 네트워크에 동시에 접근할 수 있도록 하기 위해, 또한 세그먼트에 접근하기 위해
CSMA/CD사용
**투명성(transparent)**: 호스트는 스위치의 존재를 인식하지 못함**플러그 앤 플레이, 자가 학습**스위치는 별도의 설정이 필요하지 않음
자동으로 네트워크를 학습하고 최적의 경로를 찾아서 데이터 전달을 시작사용자가 스위치를 연결하면, 스위치는 연결된 장치의 MAC 주소를 기록하여 데이터 전송을 최적화 진행
[2-1] 스위치: 다중 동시 전송
호스트는 스위치와
전용(dedicated), 직접(direct) 연결을 가짐스위치는
패킷을 버퍼링각 입력 링크에 이더넷 프로토콜을 사용하므로:충돌 없음; 전이중(full-duplex) 지원각 링크는 자체 충돌 도메인
스위칭:
A-to-A’와 B-to-B’는 충돌 없이
동시에 전송 가능그러나 A-to-A’와 C-to-A’는
동시에 전송 불가
1) 예시 1 : A-to-A’와 B-to-B’ (가능)

2) 예시 2 : A-to-A’와 C-to-A’ (불가능)

A-to-A’와 C-to-A’의 전송이 동시에 불가능한 이유는 스위치의 전용 연결과 데이터 전송 방식에서 발생하는 충돌 도메인 때문이다.
[3] 스위치 포워딩 테이블

Q: 스위치는 어떻게 A’가 인터페이스 4를 통해 도달 가능한지, B’가 인터페이스 5를 통해 도달 가능한지 알 수 있을까?
A: 각 스위치는 스위치 테이블을 가지며, 각 항목은 다음과 같다:
(호스트의 MAC 주소, 호스트에 도달하기 위한 인터페이스, 타임스탬프[TTF])
라우팅 테이블과 유사하다!
Q: 스위치 테이블의 항목은 어떻게 생성되고 유지되는가?
라우팅 프로토콜과 비슷한 방식이다.
1) 비유를 통한 쉬운 설명
비유: 도서관의 사서와 책
도서관 상황: 상상해보자. 도서관에는 많은 책들이 있다. 각 책은 특정 위치에 있으며, 사서(스위치)는 책을 찾는 데 도움을 준다.
스위치 테이블의 역할
스위치 테이블은 사서가 가지고 있는 도서 목록과 같다. 이 목록은 각 책의 제목(호스트의 MAC 주소)과 그 책이 있는 위치(인터페이스), 마지막으로 언제 이 책을 본 것인지에 대한 메모(타임스탬프)를 기록하고 있다.
예를 들어, 도서관에서 A'라는 제목의 책이 인터페이스 4에 있다는 정보를 사서는 메모해둔다. 그리고 B'라는 제목의 책은 인터페이스 5에 있다고 기록해 둔다.
테이블의 생성과 유지
도서관에 새로운 책이 들어오거나 책이 이동할 때마다, 사서는 메모를 업데이트한다. 마치 스위치가 새로운 MAC 주소를 배우고 테이블에 추가하는 것과 같다.
새로운 책이 도착하면, 사서는 그 책의 위치를 확인하고 스위치 테이블에 추가한다. 예를 들어, A'라는 책이 도서관에 들어왔을 때, 사서는 "A'는 이제 인터페이스 4에 있어요"라고 적는다.
동작 방식
사용자가 특정 책을 요청하면 사서는 목록을 확인한다. "A'라는 책을 찾고 있어요?" 라고 물어보면, 사서는 테이블을 보고 "인터페이스 4에서 가져올 수 있어요"라고 대답한다.
이처럼 스위치는 각 호스트의 MAC 주소와 해당 주소에 도달하기 위한 인터페이스를 파악하고 있어, 데이터를 적절한 경로로 전송할 수 있다.결론
이 비유에서 도서관의 사서가 책의 위치를 아는 방식과 스위치가 MAC 주소와 인터페이스 정보를 아는 방식은 유사하다. 스위치는 데이터를 올바른 경로로 전달하기 위해 스위치 테이블을 사용하여 정보를 업데이트하고 유지하며, 이를 통해 각 호스트에 대한 경로를 알아낸다.
[4] 스위치: 자가 학습

스위치는 각
인터페이스를 통해 도달할 수 있는 호스트를 학습한다.프레임이 수신되면, 스위치는 송신자의 위치를 학습한다. (수신된 LAN 세그먼트)송신자/위치 쌍을스위치 테이블에 기록한다.
A'에 대한 정보는 현재 담고 있지 않다. 그렇다면, 어떻게 A'를 향한다는 것을 알 수 있을까?
-> 스위치는 A'에 대한 정보가 없을 경우, 프레임이 수신될 때송신자의 MAC 주소와 해당 포트를 기반으로 A'를 향하는 프레임을 플러딩하여 모든 포트로 전송하고, A'로부터 응답이 오면 그 정보를 스위치 테이블에 기록하여 학습한다.
[5] 스위치: 프레임 필터링/전달
1) 프레임이 스위치에 수신될 때:
수신 링크와 송신 호스트의
MAC 주소를 기록한다.MAC 목적지 주소를 사용하여 스위치 테이블을 인덱스한다.목적지에 대한 항목이 발견되면 {프레임이 도착한 세그먼트에 목적지가 있다면프레임을 폐기한다.그렇지 않으면(
목적지가 없다면), 항목에 의해 지정된 인터페이스로 프레임을 전달한다.}else flood /* 도착 인터페이스를 제외한 모든 인터페이스로 전달 */
2) 요약
송신자의 MAC 주소 기록: 프레임을 보낸 호스트의 MAC 주소를 기억한다.
스위치 테이블 검색: 프레임의 목적지 MAC 주소를 사용해 스위치 테이블에서 해당 주소를 찾는다.
목적지 확인:
목적지가 같은 세그먼트에 있으면: 프레임을 폐기한다(즉, 불필요하게 중복 전송하지 않음).
목적지가 다른 세그먼트에 있으면: 해당 목적지로 프레임을 전달한다.
목적지 정보가 없으면: 모든 포트로 플러딩하여 프레임을 전달하고, 이후 응답이 있을 경우 그 정보를 테이블에 기록한다.
스위치는 수신된 프레임의 송신자 주소를 기록하고, 목적지 주소를 기반으로 스위치 테이블을 검색하여, 해당 주소가 없으면 모든 포트로 프레임을 전달한다.
[6] 자가 학습 및 전달: 예시

프레임의
목적지 A’의 위치가 알려지지 않으면: flood목적지 A의 위치가 알려지면:단일 링크로 선택적으로 전송
[7] 스위치 간 연결
자가 학습 스위치는 서로 연결할 수 있다

Q: A에서 G로 전송하는 경우, S1은 G를 향한 프레임을 S4와 S3를 통해 어떻게 전달하는가?
A:자가 학습! (단일 스위치의 경우와 정확히 동일하게 작동한다!)
1) 추가적인 설명
A에서 S1로 프레임 전송
S1에서 G의 주소를 찾고, 정보가 없으면 플러딩
S3 또는 S4에서 G의 주소를 확인하여 해당 포트로 전달
G가 프레임을 수신.
2) 스위치 간 프레임 전송 과정
프레임 생성: 호스트 A는 G에게 데이터를 보내기 위해 프레임을 생성한다. 이 프레임에는 송신자의 MAC 주소(A의 MAC 주소)와 수신자의 MAC 주소(G의 MAC 주소)가 포함된다.
프레임 수신: 프레임이 A의 스위치 S1에 도착한다. S1은 먼저 이 프레임을 수신하고 송신자 주소(A의 MAC)와 수신자 주소(G의 MAC)를 기록한다.
스위치 테이블 검색:S1은 G의 MAC 주소가 스위치 테이블에 있는지 확인한다.G의 MAC 주소가 스위치 테이블에 없다면, S1은 G가 어디에 연결되어 있는지 모르기 때문에 모든 포트로 프레임을 플러딩한다. 즉, S1은 프레임을 S4와 S3를 포함한 다른 모든 포트로 전송한다.
프레임 전달:프레임이 S3나 S4에 도착하면, 각 스위치는 수신한 프레임의 목적지 MAC 주소를 확인하고, G가 연결된 포트를 찾아 해당 포트로 프레임을 전달한다.
결론
이 과정에서, 각 스위치(S3와 S4)는 자신의 스위치 테이블을 업데이트하면서 G의 MAC 주소와 연결된 포트를 기록하게 된다.
G의 수신: 결국 G는 프레임을 수신하고, A에서 보낸 데이터가 도착하게 된다.
[8] 자가 학습 다중 스위치 예시
C가 I에게 프레임을 전송하고,I가 C에게 응답한다고 가정하자.

Q: S1, S2, S3, S4의 스위치 테이블과 패킷 전달을 보여줘.
1) 답변
각 스위치의 스위치 테이블은 C와 I 간의 프레임 전송 과정을 통해 업데이트된다.
처음에 C가 I로 프레임을 전송하면, 각 스위치는 송신자의 MAC 주소와 인터페이스를 기록하고, I의 응답이 수신될 때까지 이 정보를 유지한다.응답이 발생하면,스위치들은 스위치 테이블을 업데이트하여 다음 전송에 필요한 정보를 저장하게 된다.
[9] 소규모 기관 네트워크

[10] 스위치와 라우터의 비교
1) 둘 다 저장 및 전달(store-and-forward) 방식:
라우터:
네트워크계층 장치로,네트워크 계층 헤더를 검사한다.스위치:
링크계층 장치로,링크 계층 헤더를 검사한다.
2) 둘 다 포워딩 테이블을 가진다:
라우터:
라우팅 알고리즘과IP 주소를 사용하여 테이블을 계산한다.스위치:
플러딩(flooding),학습(learning) 및 MAC 주소를 사용하여 포워딩 테이블을 학습한다.
3. 웹 요청의 하루
[1] 종합: 웹 요청의 하루
프로토콜 스택을 따라가는 여정이 이제 완료되었다!
애플리케이션, 전송, 네트워크, 링크
모든 것을 통합하기: 종합!
목표: 간단해 보이는 시나리오에서 관련된 모든 계층의 프로토콜을 식별하고, 검토하고, 이해하기: www 페이지 요청하기
시나리오: 학생이 노트북을 캠퍼스 네트워크에 연결하고 www.google.com을 요청/수신함
[2] 하루의 시나리오

시나리오:
이동 클라이언트가 네트워크에 연결됨 …
웹 페이지 요청: www.google.com
간단하게 들린다!
[3] 하루의 시나리오: 인터넷에 연결하기
1) 1단계

노트북이
자신의 IP 주소, 첫 번째 홉 라우터의 주소, DNS 서버의 주소를 얻어야 함:DHCP를 사용한다.DHCP 요청은
UDP로 캡슐화되고,IP로 캡슐화되며,802.3 이더넷으로 캡슐화된다.이더넷 프레임이
LAN에서 브로드캐스트됨(목적지: FFFFFFFFFFFF),DHCP 서버가 실행 중인 라우터에서 수신된다.이더넷이 디멀티플렉스되고, IP가 디멀티플렉스되고, UDP가 DHCP로 디멀티플렉스된다.
2) 2단계
DHCP 서버는 클라이언트의 IP 주소, 클라이언트를 위한 첫 번째 홉 라우터의 IP 주소, DNS 서버의 이름 및 IP 주소를 포함하는 DHCP ACK를 생성한다.
DHCP 서버에서 캡슐화가 이루어지고, 프레임은 LAN을 통해 전달되며(스위치 학습), 클라이언트에서 디멀티플렉스된다.
DHCP 클라이언트는 DHCP ACK 응답을 수신한다.
클라이언트는 이제 IP 주소를 가지게 되었고, DNS 서버의 이름과 주소, 첫 번째 홉 라우터의 IP 주소를 알게 되었다.
3) DHCP 과정 요약
1단계: DHCP 요청
노트북은 자신의 IP 주소, 첫 번째 홉 라우터의 주소, DNS 서버의 주소를 얻기 위해 DHCP 요청을 보낸다.
이 요청은 UDP로 캡슐화되고, IP로 다시 캡슐화되며, 이더넷 프레임으로 포장되어 LAN에 브로드캐스트된다.모든 이더넷 장치가 이 프레임을 수신하고, DHCP 서버가 요청을 처리한다.
2단계: DHCP ACK 응답
DHCP 서버는 클라이언트의 IP 주소, 첫 번째 홉 라우터의 IP 주소, DNS 서버의 정보를 포함한 DHCP ACK 응답을 생성한다.
이 응답은 캡슐화되어 LAN을 통해 클라이언트로 전달되고, 클라이언트는 이를 디멀티플렉스하여 수신한다.
클라이언트는 이제 IP 주소와 라우터, DNS 서버의 정보를 얻게 된다.
[4] 하루의 시나리오… ARP (DNS 및 HTTP 이전)
클라이언트는 Google의 IP 주소를 알아야 한다.
-> 어떻게? DNS 서버를 통해서!
HTTP 요청을 보내기 전에
www.google.com의 IP 주소가 필요하다:DNS를 사용한다.DNS 쿼리가 생성되어UDP로 캡슐화되고, IP로 캡슐화되며, 이더넷으로 캡슐화된다. 라우터에 프레임을 전송하기 위해서는라우터 인터페이스의 MAC 주소가 필요하다:ARP를 사용한다.ARP 쿼리가 브로드캐스트되어 라우터가 수신하고, 라우터는 인터페이스의 MAC 주소를 제공하는 ARP 응답으로 회신한다.클라이언트는 이제
첫 번째 홉 라우터의 MAC 주소를 알게 되었으므로,DNS 쿼리를 포함하는 프레임을 전송할 수 있다.
[5] 하루의 시나리오… DNS 사용하기
DNS로 디멀티플렉스된다.
DNS는 클라이언트에게 www.google.com의 IP 주소로 응답한다.

DNS 쿼리를 포함하는 IP 데이터그램이 클라이언트에서 첫 번째 홉 라우터로LAN 스위치를 통해 전달된다.IP 데이터그램이 캠퍼스 네트워크에서
Comcast 네트워크로 전달되고,DNS 서버로 라우팅된다 (라우팅 테이블은 RIP, OSPF, IS-IS 및/또는 BGP 라우팅 프로토콜에 의해 생성된다).
[6] 하루의 시나리오… HTTP를 운반하는 TCP 연결
HTTP 요청을 보내기 위해 클라이언트는 먼저 웹 서버에 TCP 소켓을 연다.
TCP SYN 세그먼트(3-way 핸드셰이크의 1단계)가 도메인 간에 웹 서버로 라우팅된다.
예) SYN, SYN-ACK, ACK
웹 서버는 TCP SYN-ACK로 응답한다(3-way 핸드셰이크의 2단계).
TCP 연결이 설정되었다!
[7] 하루의 시나리오… HTTP 요청/응답
HTTP 요청이 TCP 소켓을 통해 전송된다.
HTTP 요청을 포함하는 IP 데이터그램이 www.google.com으로 라우팅된다.
웹 서버는 HTTP 응답(웹 페이지를 포함)으로 응답한다.
HTTP 응답을 포함하는 IP 데이터그램이 클라이언트로 다시 라우팅된다.
[8] 웹 요청 하루의 요약
시나리오 개요: 학생이 노트북을 캠퍼스 네트워크에 연결하고 www.google.com을 요청하는 과정이 진행된다.
인터넷 연결: 노트북은 DHCP를 사용하여 IP 주소, 첫 번째 홉 라우터 주소, DNS 서버 주소를 획득한다. DHCP 요청이 UDP, IP, 이더넷 프레임으로 캡슐화되어 브로드캐스트되고, DHCP 서버가 응답하여 정보를 클라이언트에 전달한다.
IP 주소 획득 요약: 클라이언트는 DHCP 요청을 통해 필요한 정보를 얻고, DHCP ACK를 통해 클라이언트의 IP 주소와 라우터 및 DNS 서버 정보를 수신한다.
ARP 과정: HTTP 요청을 보내기 전에 클라이언트는 DNS 서버에 접근하기 위해 www.google.com의 IP 주소를 알아야 한다. ARP를 사용하여 라우터의 MAC 주소를 요청하고, 클라이언트는 DNS 쿼리를 전송할 준비를 한다.
DNS 사용: DNS 쿼리가 클라이언트에서 전송되고, DNS 서버는 www.google.com의 IP 주소를 클라이언트에 응답한다.
TCP 연결 설정: 클라이언트는 웹 서버에 TCP 소켓을 열고, TCP 3-way 핸드셰이크를 통해 연결을 설정한다.
HTTP 요청/응답: 클라이언트는 HTTP 요청을 전송하고, 웹 서버는 웹 페이지를 포함한 HTTP 응답으로 응답하여 데이터그램을 클라이언트로 다시 전송한다.
4. 6장 요약
데이터 링크 계층 서비스의 원칙:
오류 검출 및 수정
브로드캐스트 채널 공유: 다중 접근
링크 계층 주소 지정
다양한 링크 계층 기술의 구체화 및 구현:
이더넷
스위치드 LAN
종합: 웹 요청의 하루
