Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 깡돼후
- pytest
- VARCHAR (1)
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 코루틴 컨텍스트
- tolerated
- 겨울 부산
- JanusWebRTCServer
- Value too long for column
- 코루틴 빌더
- 오블완
- python
- 달인막창
- JanusWebRTC
- 자원부족
- JanusWebRTCGateway
- PytestPluginManager
- 티스토리챌린지
- taint
- JanusGateway
- addhooks
- preemption #
- PersistenceContext
- kotlin
- 개성국밥
- terminal
- table not found
- mp4fpsmod
- vfr video
- Spring Batch
Archives
너와 나의 스토리
[CH.5] Link Layer - LANs(addressing, ARP, Ethernet, switches, VLANs) 본문
Computer Networks/이론
[CH.5] Link Layer - LANs(addressing, ARP, Ethernet, switches, VLANs)
노는게제일좋아! 2019. 12. 4. 00:25반응형
MAC addresses and ARP
- 우리가 지금까지 쓰던 IP는 8bit 4개로 총 32bit IP 주소이다
- 전세계에서 유일한 나만의 IP를 가짐
- 위치하고 바인딩 되어있음 (IP를 보고 위치를 알 수 있음)
- MAC(or LAN or Physical or Ethernet) 주소
- 모든 디바이스들은 MAC 주소를 가짐
- 네트워크 세그먼트의 데이터 링크 계층(2계층)에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자
* IP는 주민등록번호 느낌 -> 변하지 않음
* MAC address는 집 주소 느낌 -> 이사가면 바뀜
LAN addresses
- MAC 주소는 IEEE에서 할당 -> unique를 보장
- 제조업자는 MAC 주소 공간의 일부분을 구매
- MAC flat address -> portability
- MAC addr은 처음부터 끝까지 모든 digit으로 무언가를 구분하지 않음. 계층이 없음 -> flat하다
- flat한 게 IP와의 차이 (IP 주소는 계층적이니까)
ARP: address resolution protocol
- Q: IP주소를 알 때, 인터페이스의 MAC address를 어떻게 결정하는가?
- ARP table: LAN에 있는 IP 노드(호스트, 라우터)들 각각은 테이블을 가진다.
- 몇몇 LAN 노드를 위해 IP/MAC address 매핑; <IP address, MAC address, TTL>
- TTL (Time To Live): 일정 시간 지나면 매핑된 주소 사라짐 (보통 20분)
ARP protocol: same LAN
- A가 B에게 데이터그램을 보내고 싶다면
- A는 B의 MAC addr을 모른다 (A 테이블 내에 존재하지 않음)
- A는 B의 IP 주소가 담긴 ARP 쿼리 패킷을 broadcast한다
- 목적지 MAC 주소를 FF-FF-FF-FF-FF-FF로 채워서 보냄
- LAN에 있는 모든 노드는 ARP 쿼리를 받음
- B는 ARP 패킷을 받고, A에게 자신의(B) MAC 주소를 넣어서 답장함
- A의 MAC 주소로 프레임을 보냄 (unicast) -> (받은 쿼리에 source addr 적혀있으니까)
- A는 IP-MAC addr 쌍을 자신의 ARP 테이블에 저장함
- ARP는 "plug-and-play"
- 와이파이 등에 연결하는 순간 자동으로 동기화됨. 그 때부터 <IP, MAC addr> 업데이트
- 노드는 net 관리자에게 간섭받지 않고 ARP 테이블을 만든다.
☆Addressing: routing to another LAN☆
- walkthrough: R(라우터)을 통해 A에서 B로 데이터그램을 보냄
- 여기서는 MAC addr만 보임
- A는 B의 IP 주소를 안다고 가정
- A는 첫 번째 hop 라우터(R)의 IP 주소를 안다고 가정
- A는 R의 MAC addr 주소를 안다고 가정
- 목적지 주소를 라우터의 MAC 주소로 지정하면, 나가고 싶다는 신호로 간주됨
- 현재 네트워크 밖으로 데이터그램을 보내겠다는 말
- 그럼 라우터는 그 패킷 안에 적힌 IP 주소를 보고 해당 호스트로 보내기 위해 라우팅 테이블을 보면 포워딩을 함
- 이 때 사용하는 것이 longest prefix matching 알고리즘
- IP는 3계층, MAC addr은 2계층
- 즉,
- A는 목적지 주소(MAC dest)를 FF-FF-FF-FF-FF-FF로 채워서 broadcasting 함
- 만약 반응이 없다면, 현재 네트워크 내에 B가 존재하지 않는다는 말
- 그렇다면 이제 목적지 주소를 라우터의 MAC addr로 채워서 보냄 -> "안에는 없으니 밖에 알아봐주세요~"
- 라우터는 그 frame을 받으면 MAC 주소 때고, IP src:A, IP dest:B를 가지는 데이터그램 포워드
Ethernet
- 이더넷은 네트워크에 연결된 각 기기들이 MAC 주소를 가지고 이 주소를 이용해 상호간에 데이터를 주고 받을 수 있도록 만들어졌다. 각 기기를 상호 연결시키는 데에는 허브, 네트워크 스위치 등의 장치를 이용한다.
- 지배적인 유선 LAN 기술
- token LANs과 ATM보다 간단하고 저렴
Ethernet: physiscal topology
- bus: 90년대 중반에 인기
- 모든 노드가 같은 충돌 영역에 있음
- star: 요즘 많이 사용
- 중앙에서 switch가 똑똑하게 관리
- mac learning, switch learning
Ethernet frame structure
- 송신 어댑터는 이더넷 frame에서 IP 데이터 그램을 캡슐화한다.
- preamble: 10101010 패턴이 7byte(->10101010이 7번 반복)하고 10101011 패턴이 1byte
- 수신자, 송신자 클락 속도 동기화하는데 사용
- preamble을 쭉 보낸 후, 첫 번째 6byte destination, 그 다음 6byte source를 보냄
- dest를 먼저 들어보고, 자기가 아니라면 무시(frame 버림)하고 자기이면 쭉 들음
- frame에 들어있는 데이터를 네트워크 계층 프로토콜로 보냄
- type: 어떤 상위 계층 프로토콜인지 지정
- CRC: cyclic redundancy check at receiver
- crc붙여서 에러 탐지하거나 복구함
Ethernet: unreliable, connectionless
- connectionless: 송수신자 사이에서 handshaking 없음
- unreliable: 수신한 NIC은 ack이나 nack을 송신자한테 보내지 않음
- CRC 붙여서 탐지되면 버리고, 탐지 안되면 어쩔 수 없는 것
- 나머지는 TCP한테 맡김
- Ethernet's MAC protocol: unslotted CSMA/CD with binary backoff
Ethernet switch
- link layer device: 적극적인 역할을 맡음
- Ethernet frame을 저장하고 포워딩함
- 들어오는 프레임의 맥어드레스를 조사하고, 프레임이 세그먼트에 전달될 때, 하나 이상의 나가는 링크로 프레임을 선택적으로 포워딩한다.
- CSMA/CD를 사용하여 세그먼트에 액세스
- transparent
- 호스트는 스위치의 존재를 인지하지 못 함
- plug-and-play, self-learning
- 우리가 스위치에 플러그를 꽂는 순간(접속하는 순간) 자동으로 동기화 됨
- 스위치가 환경 설정할 필요없음
Switch: 여러개를 동시에 전송
- 호스트는 스위치와 직접 연결(direct connection)함
- 스위치는 패킷 buffer
- 각 스위치는 스위치 테이블을 가짐
- entry: <MAC addr of host, interface to reach host, time stamp>
- 라우팅 테이블 느낌
- Ethernet protocol은 각 들어오는 링크를 사용, 충돌 없음; full duplex
- 각 링크는 자신의 충돌 영역이 있음
- switching: A-to-A' and B-to-B'로 충돌없이 동시에 전달할 수 있다.
A에서 A'로 보내기
- A는 현재 누가 A'인지 모름
- A가 A'한테 보낼거라고 스위치에 보내면, 스위치는 스위치 테이블을 업데이트 함(learning)
- 스위치:는 A라는 MAC addr은 interface 1번에 연결되어 있음을 알게되고 스위치 테이블에 저장한 후 60초 동안 기억
- 스위치가 스위치 테이블을 봄
- 매치가 되면, 해당 인터페이스에 보낸다.
- 매치가 안되면, flooding 한다. (다른 모든 애들한테 보냄)
- A'는 flooding된 데이터를 보고 자기를 찾는 다는 것을 알면, 스위치한테 알려줌. 그럼 스위치는 A'는 interface 4번과 연결된다는 것을 알게됨
- 이러한 과정을 MAC switching learning or MAC learning이라고 부름
라우팅과 스위칭의 learning 차이
- MAC switching learning: 플러그를 꽂자마자(통신이 시작하자마자) 있는걸 가지고 계속 업데이트함
- 뽑힌거에서 오는 걸 보고 습득을 하면서 업데이트
- 인접한 애 찾기
- routing: 옆에 있는 hop의 정보를 가지고 다익스트라나 벨만포드로 업데이트를 함
- 경로 찾기
라우터 vs 스위치
- 둘 다 store and forward
- 라우터: 네트워크 계층 장치
- 스위치: 링크 계층 장치
- 둘 다 forwarding table을 가짐
- 라우터: IP주소를 사용해서 테이블 연산 -> 라우팅 알고리즘
- 스위치: flooding을 이용해서 포워딩 테이블 학습 (MAC addr 학습)
- 3계층 장비라 세 계층의 주소를 다 봐야함
출처: [Computer Networking: A Top-Down Approach]
반응형
'Computer Networks > 이론' 카테고리의 다른 글
[Computer Network] 프로토콜 스택 / Socket 통신 (0) | 2021.06.28 |
---|---|
[CH.5] Link Layer - MPLS / a day in the life of a web request (2) | 2019.12.08 |
[CH.5] Link Layer - services, error detection/correction, multiple access protocols (0) | 2019.12.03 |
[CH.4] Routing algorithms / Routing in the Internet (0) | 2019.11.26 |
[CH.4] Network Layer - ICMP, IPv6 (0) | 2019.11.26 |
Comments