[네트워크] 13, 14차시 - 링크계층(1), (2)
2023. 5. 2. 19:51ㆍCS/네트워크
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
링크계층과 이더넷을 소개한다. 링크계층 스위칭을 배운다.
1. 데이터 링크 계층
- IP가 있기 때문에 다른 응용들과 호환될지를 걱정할 필요가 없고, 데이터 통신 기법을 만들 때에도 IP만 고려하면 된다.
- 네트워크 계층: 출발지에서 목적지까지 패킷을 전달해 주는 역할
- 링크 계층: 목적지까지 가기 위해서는 여러 장비(라우터)를 거쳐 가는데, 한 합의 네트워크를 전송하기 위해 사용
- 라우터: 중간 중간에 있는 네트워크에서 IP 패킷이 왔을 때 다음 노드로 가게 해주는 장비
- 무선 공유기가 NAT Router: local IP → Global IP로 변경, 포트번호 또한 port mapping table에 의해 매핑된 내용으로 바뀜
- 목적지까지 가기 위해서는 여러 합을 가야 하는데, 이번 합에서 다음 합까지는 동일한 링크 계층
- 한 합을 가기 위해서는 한 합의 통신부와 그다음 한 합의 수신부의 통신기법은 같다.
- 한 합을 가고 나면 그 다음엔 다른 링크 계층일 수 있다. → IP 덕분에 한 합별로 통신 기법을 바꿀 수 있다.
- 과정
- 네트워크 계층으로 IP 패킷을 만들어서 LTE 층으로 내려 보내면
- LTE 헤더가 붙은 IP 패킷이 된다.
- 다음합의 LTE층으로 IP 패킷이 이동
- NAT 라우터에서 전송 계층까지 올라갔다가 다시 링크 계층(이더넷)으로 내려감
- IP 헤더는 local IP → Global IP
- TCP 포트는 port mapping table에 의해 매핑된 내용으로 바뀜
- 새로운 IP, TCP, 본문과 이더넷 헤더 패킷을 다음 항으로 전송
- 다음 항에서 이더넷 헤더를 지우고 global IP에 FDDI 헤더를 입혀서 다음 항으로 전송
- 최종 목적지에 도착하면, 네트워크 계층은 목적지 IP를 확인하고 응용 계층 위로 올려 보냄
- 링크 계층은 네트워크 계층에서 어느 링크를 쓸지가 결정되고 나면 그 링크로 보낼 수 있도록 링크 헤더를 붙여서 다음 링크로 보내주는 역할만을 한다.
- 전체적인 망의 효율성을 담보로 하는 것이 링크 계층과 물리 계층이다.
- 라우팅: 패킷의 IP 주소를 보고 다음합을 어느 링크로 보내야 할지를 판단
2. 데이터 링크 계층의 서비스
- Error detection(감지), correction(보정)
- 링크 계층에서는 심각하게 Error detection, correction 함
- Error detection - CRC
- Error correction - 특히 무선일 경우 Turbo code, LDDC
- 전송 계층에서 하는 Error detection은 일종의 확인 작업
- checksum + CRC as Error detection
- checksum
- SW, 연산 단위 word(SW의 강점), (+) 연산
- detection performance는 떨어짐
- CRC
- HW, 연산 단위 bit(HW 강점), exclusive or 연산
- performance가 좋음
- TCP나 IPv4에서 Error detection을 할 때는 checksum을 사용
- 링크 레이어에서 Error detection을 할 때는 CRC를 사용하고
- checksum
- Error correction은 물리 계층으로 내려가는 경향이 있음
- 링크 계층에서 데이터는 0, 1 : 1 → 0이 되면 Error
- 물리 계층에서는 데이터는 아날로그로 봄 : 0 ~ 1 사이를 Error로 인식
- 링크 계층에서는 심각하게 Error detection, correction 함
- 채널 공유 프로토콜
- 채널: 동시에 한 명만 사용할 수 있는 미디어의 단위, 기법에 따라 주파수, 코드, 시간이 될 수도 있음
- 주파수 분할(FDMA: Frequency Division Multiple Access)
- 시 분할(TDMA: Time - )
- 코드분할(CDMA: Code - ): guard time, guard frequency가 없어서 그것으로 인한 손실이 덜함
- ~를 나눠서 여러 명이 접근하게 한다.
- 단점ㅣ burst 통신에 쉽지 않다. 누가 어느 frequency, time, code를 쓸지가 미리 정해져 있어야 하기 때문 ~ 음성 통신에 많이 사용됨
- Carrier Sense Multiple Access(CSMA)
- Carrier를 아무도 쓰지 않을 때 통신
- 중앙에 dummy hub
- 단점 | 충돌
- 해결책 | 무작위 시간 동안 기다리기, 충돌이 잦으면 무작위 window 시간을 증가
- 모든 사람이 얘기할 때에는 채널(주파수 분할, 시 분할, 코드 분할)이 더 나을 수도 있다.
- 절충안 | 토큰 방식
- 토큰 돌리기(충돌 방지)
- 토큰링에서 할 얘기가 없으면 토큰만 돌리고, 할 얘기가 있으면 토큰에 붙여서 돌림
- 동시에 여러 명이 얘기하는 충돌도 방지할 수 있고, 계속적으로 얘기할 수도 있다.
- 고속 통신에 많이 사용했던 방법 - 요즘엔 switch 방식(Full-Duplex Switching)을 많이 사용
- Full-Duplex Switching
- 중앙에 switching hub
- 서로 같은 곳에 가려고 하지 않으면 통신에 협조
- 같은 곳으로 통신하려 하면 큐를 만들어서 대기 - 버퍼가 꽉 차면 패킷을 버릴 수는 있지만 충돌은 발생하지 않음
- 채널: 동시에 한 명만 사용할 수 있는 미디어의 단위, 기법에 따라 주파수, 코드, 시간이 될 수도 있음
3. Ethernet
- 규모의 경제(시장 장악력)
- 90년대 중반까지 CSMA/CD(캐리어를 유지하고 아무도 쓰는 사람이 없으면 사용한다) 방식으로 모든 노드를 wire로 연결
- CSMA/CD의 최대 이슈:
- propagation delay - 200m 거리를 가는데 1ms 소요되는 것은 굉장히 긴 시간이다.
- 노드수가 증가하면 속도가 비례해서 감소한다.
- switch vs router
- switch: link layer, ethernet망(ID가 없음), LAN 내부를 상대
- link layer를 하나의 네트워크처럼 보이도록 연결해 줌
- ID가 없음: 와이어 대신의 역할이기 때문
- LAN안에는 기껏해야 수천 개의 노드밖에 없기 때문에 그냥 수천 개의 테이블을 만들어 둠(스위치가 학습, 체험을 통해 만듦)
- router: network layer, IP 계층 혹은 그 이상(ID 필요), 인터넷 전체를 상대
- port를 구별
- 다음 목적지를 지목할 수 있는 ID가 필요함
- 전 세계에 있는 수십억 개의 노드를 관장해야 하기 때문에 그 안에 있는 라우터 테이블은 복잡해질 수밖에 없음
- switch: link layer, ethernet망(ID가 없음), LAN 내부를 상대
3-1. Frame 형식
- Preamble : 목적지 주소 : 출발지 주소 : 상위 프로토콜 타입(보통 IP) : 데이터 : CRC
- preamble: 10101010 .. 101010111 : 일종의 워밍업 + 타이밍 sync 맞추는 역할
- IP, TCP와 다르게 출발지 주소보다 목적지 주소가 더 빨리 나옴, 최대한 빠른 처리와 실시간성을 위해
- 목적지 주소: 6 Byte: HW주소
- 출발지 주소: 6 Byte: HW주소
- 상위 프로토콜 타입: IP
- CRC: Error Detection
3-2. HW 주소(HW addr, MAC Address)
- 6Byte(48bit) 주소
- 16진수로 8bit씩 끊어서 표현, 모든 바이트는 콜론(:)으로 연결
- FF:FF:FF:FF:FF:FF
- 원칙적으로 전 세계 유일
- 주민등록번호 개념 - HW를 만들 때 부여받음, 공장에서 부여받음
- ~ 일부 업체의 재사용: HW 주소는 링크 레이어의 동일한 subnet 내에서만 유일해야 하기 때문에 문제가 없다.
3-3. 이더넷이 연결되면
- IP를 세팅할 때
- 자신의 IP
- subnet mask(몇 bit가 subnet인지)
- GW의 IP를 세팅해야 한다.
- 노드는 라우팅 테이블을 가지고 있음
- 0.0.0.0./0은 GW로
- subent은 직접 보낸다
- 내 subnet mask가 있을 때 나와 동일한 subnet에 있다는 것은 gateway 밖으로 나가기 전에 있는 노드
→ 직접 보내야 하는데 IP 주소만 알고 이더넷 프레임 주소(= 서버의 하드웨어 주소)를 모른다면? - ARP(Address Resolution Protocol)를 보냄
- ARP안에 목적지 HW주소가 FF:FF:FF:FF:FF:FF로 세팅되어 있음
- switch는 모든 애들에게 다 뿌려줌
- ARP가 모든 애들에게 다 감 → 자신의 IP가 아니면 다 무시함, 자신의 IP라면 HW주소를 알려주면 IP주소와 HW주소를 매핑해서 이더넷 프레임을 보낼 수 있게 됨
- 내 subnet mask가 있을 때 나와 동일한 subnet에 있다는 것은 gateway 밖으로 나가기 전에 있는 노드
- 둘만 통신하는 게 아니라 스위치도 학습할 수 있다.
- 스위치를 위한 프로토콜이 없음 스위치는 와이어를 대신하는 역할밖에 하지 않기 때문에 ~ 자신이 뭘 해야 하는지 학습을 통해 알아냄
- Hierarchy 네트워크를 구성할 수 있음: 계층적 구조 형성
3-4. 예시
- 윈도우즈 PC 1개, MAC 1개, 서버 2개, 프린터 1개, Mac book 1개
- 개인용 컴퓨터들은 NAT Router 뒤에 숨기기(Mac, Win)
- IP가 드러나지 않게 하기 위해
- 서버는 Global IP를 가져야 하기 때문에 NAT Router 뒤에 숨기면 안 됨
- 기본적으로 NAT은 무선을 가지고 있기 때문에 노트북을 연결할 수 있다.
- 서버를 위해 switch가 추가적으로 필요하다.
- 방화벽에서 나오는 포트는 Global IP를 지원한다.
- switch와 NAT Router를 연결
- switch에 서버를 연결한다.
- NAT Router 뒤에 있는 컴퓨터들이 서버에 연결해도 밖으로 IP 내용이 나가지 않기 때문에 더 좋음
- 프린터에 Global IP를 연결하는 것보다 NAT뒤에 연결
- 프린터가 이용하는 출력 포트를 NAT에 강제로 port mapping table에 static 연결하면 NAT Router 자체가 프린터처럼 보임
- IP를 아끼고 싶다면 서버 하나를 NAT에 연결한다.
- 80번(HTTP) 포트 등의 포트들을 NAT Router에 static port mapping 하면 NAT Router를 서버처럼 보이게 함
* 컴퓨터 네트워크 과목: HTTP 프로토콜 동작, NAT 개념, 소켓 프로그래밍
[복습]
- IP가 있기 때문에 다른 응용들과 호환될지를 걱정할 필요가 없고, 데이터 통신 기법을 만들 때에도 IP만 고려하면 된다.
- 네트워크 계층: 출발지에서 목적지까지 패킷을 전달해 주는 역할
- 링크 계층: 한 합의 네트워크를 전송하기 위해 사용
- 라우터: IP 패킷이 다음 노드로 가게 해주는 장비
- 한 합을 가기 위해서는 한 합의 통신부와 그다음 합의 수신부의 통신기법이 같아야 한다.
- 한 합을 가고 나면 그다음엔 다른 링크 계층일 수 있지만, IP 덕분에 한 합별로 통신 기법을 바꿀 수 있다.
- 데이터 링크 계층의 서비스
- Error detection, correction
- 채널 공유 프로토콜(채널, CSMA, 토큰방식, Full-Duplex Switching)
- etherent
- switch: linke layer, etherent망, LAN 내부를 상대
- router: network layer, IP 계층 혹은 그 이상, 인터넷 전체를 상대
- Frame 형식: Preamble : 목적지 주소 : 출발지 주소 : 상위 프로토콜 타입 : 데이터 : CRC
- HW 주소: 6Byte 주소, 원칙적으로 전 세계 유일, HW를 만들 때 부여받음
- ARP(Address Resolution Protocol): 목적지 주소를 FF:FF:FF:FF:FF:FF로 세팅
- 스위치는 와이어를 대신하는 역할만을 하기 때문에 프로토콜이 존재하지 않는다. 따라서 자신이 무엇을 해야 하는지를 학습을 통해서 알아낸다.
한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다. 감사합니다.
728x90
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 컴퓨터 네트워크(2015) - 김철기 교수님 (0) | 2023.05.02 |
---|---|
[네트워크] 네트워크계층 복습 및 정리 (0) | 2023.04.28 |
[네트워크] 12차시 - 네트워크계층(2) (0) | 2023.04.27 |
[네트워크] 11차시 - 네트워크계층(1) (0) | 2023.04.25 |
[네트워크] 전송계층 복습 및 정리 (1) | 2023.04.18 |