쉽게 배우는 데이터 통신과 컴퓨터 네트워크를 개인적으로 정리한 내용입니다.
MAC 계층
데이터 링크(Data Link) 계층
데이터 링크 계층에서는 호스트가 통신하려면 1:1 형식의 점대점 방식으로 연결이 됩니다. 호스트를 구분하기 위한 주소개념이 필요가 없다는 뜻입니다. 물리적인 오류를 복구하는 역할을 하는 데이터 링크는 재전송 기법을 사용해 상위 계층에 신뢰성 있는 데이터 전송을 보장합니다.
데이터 링크 계층의 동작 원리를 이해하기 위해 프레임들 알기
정보프레임(Information Frame)
- 상위 계층이 전송을 요구한 데이터를 수신 호스트에 전송하는 용도로 사용
- 프레임의 순서 번호, 송수신 호스트의 주소 정보를 포함
- 순서번호는 각 정보 프레임에 부여되는 고유의 일련번호로, 수신 호스트가 중복 프레임을 구분하게 해줌
긍정 응답 프레임(Positive Acknowledgement)
- 정보 프레임을 수신한 호스트는 맨 먼저 프레임의 내용이 깨졌는지 확인
- 프레임 변형 오류가 발생하지 않으면 ACK를 회신함
- ACK를 수신한 송신 호스트는 데이터가 제대로 도착했음을 확인
부정 응답 프레임(Negative Acknowledgement)
- 정보 프레임 전송과정에서 프레임 변형 오류가 발생, 수신 호스트는 송신 호스트에 NAK 프레임을 회신
- 송신 호스트가 오류 발생을 인지하고 원래의 정보 프레임을 재전송하도록 요청
- 재전송 요구를 받은 송신 호스트는 오류가 발생한 프레임을 동일한 순서 번호로 다시 전송
타임 아웃(Time-Out)
- 전송된 프레임이 수신 호스트에 도달하지 못하고, 전송 도중 사라질때 수신호스트는 무한 대기를 하게 되는데 이를 막기 위한 방식
- 정보 프레임을 전송 한 후에 특정 시간이 지날때 까지 수신 호스트의 ACK/NAK 프레임을 회신 하지 않을때 발생
슬라이딩 윈도우 프로토콜(Sliding Window Protocol)
두 호스트 간의 프레임 전송을 위한 일반적인 통신 프로토콜, 오류제어와 흐름제어에서 사용하는 방식입니다.
1. 송신 호스트는 데이터뿐 아니라 프레임의 순서 번호, 오류 검출 코드 등을 프레임에 표기한 후에 정해진 수선 번호에 따라 순차적으로 송신합니다.
2. 수신 호스트는 해당 프레임의 순서 번호에 근거하여 송신 호스트에 응답 프레임을 회신해야 합니다. 응답 프레임의 내용에 포함되는 순서 번호는 다음에 수신하기를 기대하는 프레임의 번호를 표기합니다. 긍정 응답 프레임에 기록된 순서 번호 이전까지의 프레임은 모두 제대로 수신했다는 의미가 됩니다.
3. 송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼에 유지, 이를 송신 윈도우라고 합니다. 송신 윈도우에서 대기하는 정보 프레임은 송신 호스트가 수신 호스트에 프레임 전송을 완료했지만 아직 수신 호스트로부터 긍정 응답을 받지 못한 프레임입니다.
흐름제어(Flow Control)
수신 호스트가 연속으로 수신할 수 있는 정보 프레임의 개수를 윈도우의 크기로 지정함으로써, 송신 호스트의 프레임 전송 속도를 제어합니다.
순서번호(Sequence Number) : 프레임별로 고유하게 부여되는 번호이먀, 현재 처리되고 있는 서로 다른 프레임에 같은 순서 번호를 부여하지 않도록 주의합니다. 이런 상황을 방지하기 위해서 순서 번호의 최댓값이 송신 윈도우의 크기보다는 커야 합니다.
윈도우의 크기(Window Size) : 슬라이딩 윈도우 프로토콜은 원리상 흐름 제어를 지원하기 위해 제공하는 기능입니다. 공신 호스트가 수신 호스트로부터 긍정 응답 프레임을 받지 않고도 전송할 수 있는 정보 프레임의 최대 개수, 즉 윈도우 크기를 규정하기 위함.
고백 N(Go back N) 방식
10~17번 정보 프레임을 전송한다고 가정, 오류 복구 과정에서 오류가 발생한 12번 프레임을 포함해 이후에 전송된 모든 정보 프레임을 재전송하는 방식입니다.
- 수신 호스트가 올바르게 수신한 정보 프레임도 오류로 처리해 재전송하는 것이 문제
선택적 재전송(Selective Retransmission) 방식
오류가 발생한 프레임만 선택적으로 복구하는 방식을 의미합니다.
- 프레임의 도착 순서가 송신 순서와 일치하지 않을 수 있음
피기배킹
'CS > 네트워크' 카테고리의 다른 글
(2) 쉽게 배우는 데이터 통신과 컴퓨터 네트워크 (0) | 2022.05.27 |
---|---|
(1) 쉽게 배우는 데이터 통신과 컴퓨터 네트워크 (0) | 2022.05.27 |
(1) 네트워크에 관해서_ (0) | 2022.05.05 |
WebSocket과 Socket.io의 차이 (0) | 2022.01.26 |
SSL/TLS Handshake에 대해서 (0) | 2022.01.20 |