링크계층의 두종류
다중접속링크(LAN,위성네트워크,HFC)
점대점 링크 PPP(Point to Point Protocol) HDLC
노드 : 링크계층 프로토콜실행하는장치
링크: 노드경로
링크계층에서 가능한 서비스
프레임화
링크접속
신뢰적전달
오류검출정정=>패리티비트,체크섬(보통전송계층),CRC(순환중복검사)
=>대부분 하드웨어 NIC(Networc interface Controller)로 구현
소프트웨어부분은 MAC주소조립, 프레임수신시 interrupt정도..?(충돌떄문)
2차원패리티 =>오류난 행과 열이 일치하는 지점을 통해 오류비트를 정확히찾아서 정정가능
링크계층에서는 CRC(순환중복검사) 사용(하드웨어구현)
다중접속프로토콜
1.채널분할프로토콜
CDM 시간할당
FDM 주파수할당
CDMA(Code division multiple access) 코드할당 => 무선에서 다룸
2.랜덤접속프로토콜
CSMA(carrier sense multiple access)/CD(collision detection) =>슐화해서 프레임생성
채널이 idle상태일때 전송(carrier sensing 결과가 없을때)
busy상태일때 대기
다른 노드가 프레임을 전송하고 나한테 도달하기전에는 idel상태이므로
이때 collision이 일어나게됨
collision detection해서 전송멈추고 대기후 carrier sensing후 다시 전송(전송시간이 너무짧으면 전송중에 coolision detection을 감지 못하기떄문에 프레임은 최소길이제한이 있다 책에는 46바이트... 인터넷에는 다름)
얼마만큼 멈추는게 좋을까?
충돌노드가 적을떄는 짧게, 노드가 많을떄는 길게
=> 이진 지수적 백오프 알고리즘 사용(n개충돌일때 2^0,2^1...2^n중에서 랜덤)
3.순번프로토콜
1)폴링프로토콜 - 라운드로빈방식
2) 토큰 전달 프로토콜
둘 모두 이론상 효율은 높지만 상위노드 고장에 대처하기 어려워서 실사용X
ARP프로토콜
IP주소와 MAC주소 맵핑
MAC주소 : 6바이트/48비트 16진수 12자리로 표시, 평면구조
1.ARP테이블(ip주소/mac주소/ttl)에 맥주소검색
2.있으면 얻은 MAC주소로 보내고
없으면 MAC브로드캐스트주소로 질의 ->각 ARP모듈은 IP주소가 일치하는지 검사하고 일치하면 응답
3.응답 받으면 ARP테이블에 insert,목적지 맥주소 얻게됨 => ARP는 플러그앤플레이로 ARP테이블이 자동구축
서브넷에 없는 노드일경우 위과정이반복됨
호스트는 서브넷네트워크의 라우터(A)에 MAC주소얻어서 보냄(위와같음)
A에 도착하면 ARP테이블서치 > 질의 > 응답 >테이블갱신 해서 다른라우터로 보냄(반복)
위에서 보듯이 ARP프로토콜은 링크계층+네트워크계층
이더넷 프레임구조
프리앰블(8바이트) 첫 7바이트는 수신어댑터를 꺠우고 클록(프레임전송속도)을 동기화 뒤1바이트는 중요여부
목적지주소(6) MAC 수신자는 같거나 브로드캐스트주소인경우만 네트워크계층으로전달 이외는 폐기
출발지주소(6) MAC주소
타입필드(2) 역다중화할때 이를 통해 구분
데이터필드(46~1500바이트) 임의로 채워서 46바이트로 만들었을경우 수신할때 IP헤더의 길이필드로 비교해서 다시 버림
CRC(4) 프레임오류여부 확인 오류나면 폐기(TCP사용시엔 폐기여부 확인가능 3ack/timeout)=>자체로는 비신뢰적 프로토콜이라는 뜻
스위치기반 이더넷랜
전송을 조절하여 동일 인터페이스로 하나 이상의 프레임을 전달하지 않음
=> 충돌이 없다는뜻 => MAC프로토콜이 필요할까? X필요없음
=> 링크계층이 의미없다는 뜻이아님;
필터링 프레임을 인터페이스로 전달할지 폐기할지 결정
포워딩 전달기능
스위치테이블 이용해 필터링과 포워딩 수행
스위치테이블구조
1 MAC address
2 해당 MAC주소로 가게하는 스위치 인터페이스
3 해당 엔트리가 만들어진 시점
스위치테이블 또한 허브처럼 plug and play 방식임
A노드가 B노드를 목적지로 프레임을 보내기 위해 스위치로 인터페이스로 전송
스위치는 수신할때 프레임 헤더의 출발지 주소필드, 프레임이 도착한 인터페이스, 현재시간을 테이블에 저장or갱신
저장된시간에서 일정시간(aging time)동안 갱신 안되면 테이블에서 해당 row 삭제
스위치테이블에 목적지macAddress에 해당하는 interface검색에 실패하면 브로드캐스팅(flooding라고도표현)
검색에 성공했을때 자기자신과 같으면 필터링
다르면 해당 인터페이스로 포워딩
음 책에서는 self-learning이랑 포워딩과 필터링을 나눠서 설명했는데 쓰다보니 합쳐져버림
L3 라우터와 유사한기능을하는데
테이블 만드는 알고리즘이 상이하다
라우터는 중앙집중형(다익스트라)나 분산형(DV알고리즘)사용해서 테이블형성
스위치의 특성
충돌제거 => 낭비되는 대역폭이 없다는 뜻 => 효율적
이질적인 링크 =>스위치에 각 링크들이 연결되기때문에 스위치를 기준으로 상이한 속도로 동작가능
관리상이점 : 보안,네트워크관리 용이(스위치를 관리하는것과 상호작용하는 노드들을 관리하는것중에 뭐가 쉬운지생각하면 너무 당연하다...)
cf)스위치독 여러가지 출발MAC주소로 스위치테이블을 가득채워서 스위치가 브로드캐스트하게 만듦=>스니핑가능(허브보다는 어려움)
허브 라우터 스위치
트래픽격리 X O O
플러그앤플레이 O X O
최적라우팅 X O X
물리계층은 다루지않음