데이터 통신과 네트워크 - The Link Layer and LANs -1

강준호·2021년 11월 21일
0

Link layer 서비스

Framing

  • 헤더와 트레일러를 붙여서 데이터 그램을 링크레이어 단위인 프레임으로 만드는일
  • 백본 망처럼 쉐어해서 쓰는 무선 링크
  • MAC 주소(근처에 있는 노드들을 보내는 주소)

Error detection, correction(EDC)

  • 에러가 발생했을 때 비트를 뽑아내고 EDC 값과 비교를 해서 에러가 있으면 => 패킷 버려짐. 없으면 IP레이어로 올려줘
  • EDC는 100퍼 신뢰되지는 않아.
  • EDC 사이즈가 길수록 redundancy가 많아져서 EDC하기 쉬워져, 에러 찾기 쉬움. But 전송 성능은 떨어져
  • redundancy가 있어야함(correction할때) => 그걸 복구하기 위한 추가 정보가 있어야..

Parity checking

single bit parity

  • 오직 detection만 할 수 있음
  • 에러가 있음을 알려줌. 전체parity에서 1의 개수는 짝수개가 되야함. => parity bit로 이걸 맞춰줌

2차원 bit parity

  • detection, correction까지 가능함.
  • 원리는 위랑 똑같음.

checksum 방법

  • 에러체크 하는 함수의 총칭
  • 메세지를 첵섬 함수에 넣음 => 함수의 output이 계산됨.
  • 따라서 메세지를 보낼때 메세지+checksum 값을 보내
  • 리시버는 데이터를 받고, 첵섬에 받은 메세지를 넣으면 checksum value가 나와. 같으면 에러x 다르면 에러 o 라고 인식

checksum in UDP

  • 모든 데이터를 다 더해. 그 후 마지막에 캐리(자리 수올림) 부분을 꽁무늬에 더해. => 최종 더한 값이 나와. => 이 값에 1의 보수를 취해 => 16비트 checksum나옴. 데이터를 checksum 필드에 넣어.
  • receier는 이를 받고 XOR을 해. 1은 0이랑 XOR해서 1 이 나오고, 0은 1이랑 XOR해서 1이 나와. 따라서 16비트가 다 1이면 checksum이 통과. 하나라도 0이 나오면 checksum 실패.

Multiple access protocol

  • 한번에 여러개의 데이터가 들어왔을때의 메뉴얼
  • 전제: 싱글 쉐어드된 브로드캐스트 채널이 있어야함
  • 노드들이 채널을 공유중일때 어떤 노드가 먼저 데이터를 보낼지 정하는 방법
  • 채널 쉐어링에 대한 제어메세지를 주고 받을때도 쉐어드된 상태에서 보내져야함.

desirable characteristics

  • 하나의 노드가 데이터를 전송할때, R의 비율로 보내져야함.
  • M개의 노드가 쉐어중이라면 R/M 비율.
  • Fully decentralized:
    스페셜 노드 넣기 X(교통경찰을 전지역에 넣는건 바람직 하지 않아)
    시간 동기화도 타이트하게 X(네트워크 시간동기화도 넘 어려워;)

MAC(Media Acces Control) protocols

channel 파티션

  • 채널을 쪼개서 사용

TDMA(channel 파티셔닝 Mac 프로토콜)

  • 데이터 안보내는 애들도 슬롯이 할당되서 비효율적. But "시간"을 보장해야하는 경우에는 가끔 쓸만함.

FDMA

  • 주파수 간격으로 데이터를 쪼갬.

random access

  • 채널 쉬고 있으면 노드들이 데이터좀 씀. 눈치게임하다가 충돌 발생하면 딜레이 쉬었다가 다시 눈치게임
  • 두개 이상 노드가 전송되면 => 충돌

slotted ALOHA(거의 안쓰임)

  • 모든 프레임이 같은 사이즈라고 가정. 데이터를 보낼 수 있는 타임슬롯을 공평하게 잘라.
  • 그 슬롯을 온전하게 사용가능.
  • 모든 노드들은 동기화 ㄱㄴ
  • 노드가 새로 보내야하는 프레임이 있다면, 다음슬롯에 보내야한다고 결정 => 충돌 발생하면 재전송. => 재전송할 슬롯을 정하는게 확률로 선택

    노드 1,2,3 가 충돌이 안나야 S(성공)함. 아무도 선택안하면 E(empty). 둘이상이 선택하면 C(충돌) 총 9개의 타임슬롯이 소요됨

장점

  1. 내가 쓸 수 있는 타임슬롯이 할당되면 온전히 노드 혼자 씀. 전송 rate 풀차지로 쓸 수 있음.
  2. 충돌 감지되면 그 다음 슬롯을 선택할 확률을 p로 설정하는 심플함..

단점

  1. 충돌 자주발생.
  2. 비어있는 타임슬롯 => 대역폭 낭비
  3. 시간 동기화가 힘듬..

ALOHA

CSMA(carrier sense multiple access. 노빠꾸)->알로하 대안,

  • 보내기전에 누군가 쓰고있는지 들어보자~, 대화할때 끼어들지 말기. 아무도 말 안할때 말하기.
  • ex) 데이터 쓰기전에 채널을 senseing해서 상태 감지하고 누가 쓰고있으면 transmission 지연시킴.
  • 충돌 발생

    센서에 감지되지 않아서 빨간색도 보냈는데...

    둘다 노빠꾸로 전부 보내기 시작하니까 두명이 채널 다 독점함. => 에러인데 채널은 다차지해서. 낭비!

CSMA/CD(+충돌 발생하면 보내지말자. 겸손한 사람)

  • 충돌 발생해도 무대뽀로 다 보내지말고 발생하면 전송 멈추자!
  • wired LAN에서는 쉬워 (쉐어드 채널이기 때문에 시그널 쉽게 보여) but, wireless 에서는 어렵..
  • 무선랜에서는 누가 쓰고있는지 몰라(신호약한게 멀리있어서인지 진짜 약한건지 등) => csma/ca 방법이 대안

방법

    1. NIC(네트워크 인터페이스 카드) 를 네트워크 레이어로부터 받음. => 프레임 만듬
    1. NIC 가 채널을 센싱함. idle 하면 전송시작. 바쁘다면 채널이 idle 될때까지 기달.
    1. NIC 데이터 보내는 도중에 다른 전송이 감지되면 지금 보내는 전송을 중단함.
    1. 중단이 일어나면 NIC는 바이너리 backoff상태로 감. 랜덤시간을 기다린다음에 재전송함.(참고로) 충돌이 많을 수록 backoff타임이 길어짐)

taking turns

투표(polling) protocol

  • 서로 번갈아가면서 데이터씀. 공평하지만 비효율적.

단점

  • 폴링 오버헤드
  • latency 있음
  • 마스터 노드에 에러가 발생하면 slave들이 통신 못해..

token passing

  • 토큰을 계속 옆으로 돌려서 발언권 갖고 보낼꺼 있는 사람 보내~

단점

  • 토큰 오버헤드
  • latency 있음
  • 마스터는 없지만, 하나가 장애가 발생하면 옆에 애한테 토큰 못전달해줌..

LANs(Local Area Network)

MAC 주소

  • 로컬하게만 사용됨
  • 한 인터페이스마다 고유함.(주민번호 느낌) , 반면 ip는 바뀔 수 있는 우편번호
  • portability 해서 따로 막 세팅 안해도 됨. 변경 안되거든
  • 48비트. 앞에 세개는 제조사번호

ARP(address resolution protocol)=상대방 맥주소 알아오는 방법

  • 맥주소 알려달라고 크게 소리쳐야해 => 브로드 캐스트

  • 네트워크 레이어에서는 ip로 ,데이터 링크에서는 MAC로 통신해서 두개의 정보가 필요
    => ARP 테이블에 저장 (ip 주소, Mac, TTL) TTL은 매핑시간(ip는 변함으로 일정 시간 지나면 지워버려도돼)

-plug-and-play 특징 (특별한 설정없이 동작가능)

같은 LOCAL 일때 방법

    1. B의 맥주소를 알려면 B의 ip를 넣은 ARP 패킷을 만들고 dst맥주소를 FFFFFFF(브로드캐스트주소) 로 놓고 막 소리지름.
    1. 주변에서 B가 소리 듣고 A한테 자기 MAC 알려줌
    1. 정보 받은 A는 ARP 테이블에 기록하고, TTL 시간동안 유지

다른 LAN 일때 방법

  • 전제) A는 라우터 R의 맥주소, ip를 알고있음
    1. 데이터그램에 B ip주소 넣음. B 맥주소는 모르니 라우터의 맥주소 넣음.
    1. 라우터 R까지 데이터가 보내짐.
    1. R은 B의 맥주소를 알고 있음으로(이미 ARP 테이블 있을거임) B의 주소로 보냄

Ethernet(wired LAN의 표준)

  • dst 에는 상대방 맥주소, src 주소는 나의 맥주소, type에는 ip를 의미하는 index.. 등

특징

connectionless, Unreliable

  • 핸드쉐이크 이런거 없음. 데이터 링크에서는 커넥션 필요없어. reliable 하지않아
    이건 상위레이어에서 ACK NAK 하는거.

MAC 프로토콜

  • CSMA/CD 겸손한 사람 방법.

Switches

특징

  • 받는 패킷을 다른쪽 링크로 포워딩해줌.
  • 인풋포트에서 데이터가 오면 아웃풋 포트로 인터페이스 방향을 결정해서 내보냄.
  • 즉, 패킷을 받아서 디렉션만 해줌

Transparent(투명한)

  • 스위치는 잘 안보이기때문에 스위치가 몇개있는지 알기 어려움

plug-and-play

  • self- learning이 있어서 연결만하면 얘네 알아서 설치됨

기능

필터링

  • 프레임을 어디로 보낼지 혹은 드롭시킬지를 결정하는것

포워딩

  • 필터링에서 이걸 보내야한다고 하면 output 포트로 보냄

다중 동시 통신

  • 각 링크마다 버퍼가 있어서 충돌이 발생 X => 스위칭 아무때나 일어날 수 있어

스위치(L2) VS 라우터

라우터

  • "네트워크" 디바이스의 헤더를 봄 => ip주소 봄
  • ip주소 기반으로 데이터를 보내는거 결정

스위치

  • "링크레이어"까지만 보기 때문에 MAC주소를 봄
  • MAC 주소 기반으로 데이터 보내는거 결정

single broadcast domain

  • 관리자의 데이터를 밑에 애들도 볼 수 있어서, 보안문제!
  • 효율성 이슈
    => 대안으로 VLAN

VLANS(Virtual Local Area Network)

가상으로 브로드캐스트 도메인을 나눠주는 기술

  • 스위치가 두개인거처럼 나눌 수 있음
  • 서로 다른 VLAN 영역끼리 통신하려면 라우터를 통해서 해야함 => L3 스위치는 알아서 지원함
  • 두개의 IP 대역이 달라짐. => 두영역의 subnet이 아예달라짐

Trunk port (빨간선으로 스위치 여러개 연결)

  • 스위치를 작은걸 사게되서 같이쓰게되면 인터페이스를 또 나눌 수 있음.
  • 빨간 선을 통해서 서로 통신가능.
  • 같은 색끼리 통신할 때는 일반 이더넷 통신 => MAC만 보면됨.
  • 다른 색 통신은 서로 IP대역이 달라서 라우팅해야함.

지금까지 레이어 요약

1. DHCP

  1. 내 노트북을 학교 들고왔으면 학교에 있는 DHCP서버로 부터 IP주소 할당받음.
  2. 외부로 나가는 웹주소의 라우터 주소를 알아야함.
  3. ARP를 통해 외부로 나가는 MAC 주소 알게됨.
  4. 이제 DNS패킷을 라우터를 통해 dns까지 보낼 수 있게됨
  5. DNS한테 우리가 접속하고자하는 서버의 IP주소(구글)를 받아옴
  6. 핸드쉐이크 하기 위해서 TCP syn 패킷 보냄
  7. 구글은 이걸 받아서 syn ACK 받는 3way 핸드쉐이크 함.
  8. Tcp 커넥션이 맺어짐.
  9. 웹사이트의 페이지를 받기위해 HTTP 요청 보냄
  10. 서버가 요청을 수신해서 http response 보냄
  11. 중간에 패킷이 유실되면 TCP 가 알아서 해줌

0개의 댓글