Data Link Layer
2025. 11. 25. 23:46ㆍNetwork
반응형
- 패킷을 게이트웨이 라우터에 보내야 다음 라우터를 타고 들어가 패킷 전송이 가능함
- 게이트웨이까지 내 pc만 사용하는 것이 아닌 다른 사용자들도 다 패킷을 보내기 때문에 많은 사람들이 공유하는 채널같은게 존재하고 해당 채널에 시그널 (파장)이 존재하면서 많은 사람들이 동시에 시그널을 막 보내면 collision이 발생하게 되면 게이트웨이 라우터는 해당 시그널들을 받을 수 없게됨
- 시그널은 유선, 무선 모두 파장
- 따라서 충돌을 안나게 하는게 바로 데이터 링크 계층의 역할임
- 한 hop이 넘어갈 때마다 어떻게 해결할건지에 대한 문제가 data link가 하는 일 (각 라우터들 사이 hop)
broadcast medium
- 매체에 접근할 때 여러명이 접근하면 신호가 섞임
- medium access control
- mac 프로토콜 (충돌 해결 프로토콜)
- wifi도 결국은 안섞이게 통신할 수 있게 도와주는 mac protocol을 사용하는 것
이상적인 가정
- 한개가 쓰면 r 대역폭 다쓰고
- 여러개 m이면 r/m으로 쓸 수있게 하는 것이 목표였음
채널 나누기 mac 프로토콜
TDMA (time division )
- 하나의 주파수 대역을 여러 사용자가 시간 슬롯으로 나누어 사용함
- 시간을 쪼개서 사용자들은 자기 시간에만 자원을 쓸 수 있게 하는 것 자기 slot에서만 사용
- 단점
- 많은 사람이 쓰기에는 좋지만 유저 한명일때는 낭비가 됨
- 시간 슬롯을 미리 고정된 개수만큼 나누어서 할당하는 방식이야. 그런데 사용자가 한 명만 있을 때도 시스템은 여전히 슬롯을 나누어 관리
- 많은 사람이 쓰기에는 좋지만 유저 한명일때는 낭비가 됨
- 충돌을 피하는 방법
- CSMA (carrier sense multiple access)
- broadcast medium 상황에서 언제든지 제공가능 (공기 전파 같은 것이 broadcast medium)
- 계속 listen 하고 있다가 아무도 얘기 안할 때, 내 패킷을 보내는 것
- 아무리 listen하더라도 끝났을 때 누가 동시에 같이 패킷 보내면 또 충돌이 나긴 함
- 충돌이 나면 둘다 계속 그냥 보내는 상황이 발생해버림
- propagation delay가 결국 빛의 속도니까 이걸 0을 만들면 해결가능하나 그것은 불가능
- csma/cd(collision detection)
- 따라서 충돌이 나면 충돌을 감지한 다음 바로 둘 다 멈춤
- 누가 먼저 보낼지 중재자가 없기 때문에 얼마만큼 물러날지에 대해 정의하는 것이 필요
- frame 전송 후, 만약 충돌이 났으면 그 충돌 횟수가 몇번인지 체크 (2번인경우) 2^2 (0,1,2) 랜덤 시간 고른 후 그 시간만큼 기다리고 다시 보냄
- CSMA (carrier sense multiple access)
- 단점
- 내가 보내고 싶을 때만 보내는 것
- 자기 주파수로만 보낼 수 있게

- 파장이 퍼져나가는 모습
- 충돌 횟수가 많을 수록 기다리는 시간이 길어질 수 있다는 것
- 왜?
- 나 말고 다른 frame도 보내려고 하기 때문에 충돌이 발생 하고 있는 상황인데 사람이 많으면 충돌이 많아진다는 뜻이니 서로 다른 숫자를 고를 수있어야 결국 서로 충돌하지 않고 보낼 수 있다는 것 back off == delay 가 되는 시간
- 결국 back off 시간이 길어지면 frame이 계속 기다리고 있는 거 다른 사람들이 보내는걸 기다리기 때문
- 왜?
taking turns mac protocol
- 사용은 안하지만 개념만 설명
- 토큰을 가지고 있는 사람만 패킷을 보낼 수 있음
- 토큰 잃어버리면 망함
- 토큰 잃어버리면, 모두가 기다리는 상황이 되버림
Lans
- Local area network
- subnet : 라우터를 거치지 않아도 다른 호스트에 접근이 가능한 구간
- 서브넷 공간 곧 lan
- Ethernet
- 이더넷 프레임
- Crc :에러체크
- Type : 어떤 프로토콜인지 (보통 ip프로토콜)
- Mac cama/cd : 링크의 재전송은 한 홉에서 재전송해야한다는 근거를 가지고 재전송 (collision detection) 일때만 재전송
- 충돌 발생 감지 실패하면?
- 충돌을 100% 감지하는가?
- 최악의 시나리오
- A가 전송한 프레임이 다른 호스트가 잘못하고 충돌이 나서 해당 다란 호스트의 발못된 collision난 프레임이 도달할 때까지 기다려야하는데 기다리기 전에 a는 프레임이 끝낫다고 셍각하고 잘못된 프레임이 도달하기 전에 끝냄
- 방지하기 위해 최소한의 프레임이 정해져있음(padding깂)
- 64byte 넣어서 말이 길어져서 강제하는것(춘돌 감지 최소시간)
- 최악의 시나리오
- 충돌을 100% 감지하는가?
- 충돌 발생 감지 실패하면?
- Tcp 재전송: 한 호스트와 다른 호스트의 관계에서 재전송 (여러 홉 사이, ack 메세지 응잡 없는 겅우 등)
- 이더넷 프레임
Mac address
- 인터페이스 자체 이름을 가지고 통신
- Nic 카드 그 자체의 이름을 뜻함
- 24bit 제조사 이름, 24bit는 일련번호
통신방법
- 게이트웨이 라우터의 mac주소를 써야 게이트웨이로 나감
- 게이트웨이 ip주소만 알고 mac주소는 모르는 상황
- 각 호스트에는 arp 테이블을 가지고 있음
- 처음에 arp request 사용해서 프레임 전송 후, 브로드케스트로 프레임 전송
- 소스 ip 주소는 나 1:1:1:1
- 목적지 ip주소는 게이트웨이 ip주소
- 게이트웨이만 해당 프레임 받아서 응답 (mac 주소를 알려줌)
- 케시된 맥주소를 ttl 만큼 유지하고 삭제됨 그럼 다시 arp 전송
- 소스가 자기 자신ip, 목적지가 구글인 패킷을 감싸는 프레임에는 소스가 자기자신 맥주소, 목적지가 게이트웨이 맥주소가 적힘
- 그럼 프레임 벗기고 패킷만 전송
- 받은 게이트웨이 라우터는 나가는 mac 주소 다른거를 소스 주소로 넣고 목적지는 다음 라우터의 맥주소를 기입
- 프레임으로 감싸서 collision detection 후 전송
- 반복해서 구글에 도달
- 결국, 변경되는 것은 프레임에 적힌 맥주소들만 변경되는 것임
- 각 라우터들은 forwarding table 확인히고 다음 hop의 라우터의 mac 주소를 모르면, arp 사용해서 알아오고 보냄
- 포워딩 테이블을 만들면 자연스레 mac 주소도 알 수 있는 것 아닌가?
- 사실 맞음 브로드케스팅 이후 알게되지만 arp table에 ttl이 존재하므로 캐시 식제 이후 arp 진행
Switch
- Collision domain을 분리해서 동시에 전송이 가능하게 구현하고 스위치가 교통정리를 진행함
- 호스트 입장에서는 안보이는 입장 그러니까 동시에 프레임을 보내도 충돌이 안생김
- 동시에 와도 누구를 먼저 보낼지 순서 정함
- 스위치 테이블 참저해서 어떤 포트로 버내야하는지 알게됨
- 테이블 만드는 방법
- Self- learning
- 각 호스트는 그위치의 존재를 모른채 목적지에 보내나 스위치가 확인 후, 들어온 포트 확닌 후 a 위치 적어둠.
- Flooding: 그리고 나머지 포트에 브로드 케스트 후 헤당 프레임을 받은 포트 번호를 적어둠
- Self- learning
- 스위치 포트 다 쓰면 한 포트를 다른 스위치에 연결 후 확장시켜 사용
- 테이블 만드는 방법
공유기란?
- 라우팅이 가능한 스위치
- 포트를 꽂아서 사용하고 그 뒤엔 bgp 사용한 인터넷 업체들이 연결해줌
- 포트가 부족할때
- 라우터 꽂기
- 하나의 서브넷이 또 생기는거고 그렇기 때문에 통신하려면 포워딩 발생
- 목적지 mac주소도 게이트웨이 주소가됨
- 스위치 꽂기
- 같은 서브넷에 속하고 없는 취급으로 그냥 collision detection만 해줌
- 목적지는 원하는 목적지의 호스트 맥 주소가 됨
- 라우터 꽂기
반응형
'Network' 카테고리의 다른 글
| Wireless Protocol (0) | 2025.11.25 |
|---|---|
| Transport layer (0) | 2025.11.25 |
| Transport Layer (0) | 2025.11.25 |
| socket (0) | 2025.11.25 |
| osi 7 layer, application layer (0) | 2025.11.25 |