A 와 B 가 연결되있고 그 연결되어있는 선을 Link 라고 한다.
직접적인 연결은 유선 or 무선인데 제대로 송수신을 하기 위해서는 제어가 있어야한다.
주고 받는 Data 외에도 데이터를 보내기위한 별도의 정보가 필요하다
이것이 control 정보이다.
우리는 처음 강의에서 계층에 대해서 배운적이 있다.
다른 계층은 다 제외하고
Physical 계층에서는 1010,,,, 등의 비트를 주고받게 된다. ( 신호를 송수신)
그리고 DL(Data Link)계층에서는 Frame 으로 주고 받게 된다.
우리는 이 Data link 에 대해서 배울 것이다.
동기화 라고 한다.
송신은 Frame 으로 이루어진다.
수신도 잘 확인할수 있게된다.
결국 송,수신이 동일한 데이터를 주고받기위해선 Frame 으로 주고받아야하는 동기화가 필요하다.
흐름 제어라고 한다.
A 가 B에게 데이터 보내는데 B는 받을수있는 Buffer size 가 있다.
B 가 보낼수있는 Size 보다 더 큰 size 가 들어오게 되면 수신이 불가한다.
그렇기에 알맞게 데이터를 보낼수 있게 control 해줘야함
그렇지 않으면 OverFlow 발생
에러 제어라고한다.
에러가 있나 없나 확인하는데 Error Detecting 을 하고 Error Correction 을 하는것을 말한다.
Error Correction 에는 Retransmission 그리고 FEC(Foward Error Correction) 이 있다.
주소 부여하기이다.
내가 받을수있는 주소가필요하다.(나만의 주소 필요)
IP 는 논리적인 주소로 Netword Id 와 Host Id를 합친 말이다.
Netword Interface Card 에는 물리적 주소인 MAC Address 가 있다.
수신측에서 능력을 Overwhelm 하지 않도록 해준다.
BUffer size 이상으로 Data 를 보내면 Overflow 가 생긴다.
수신후 상황을 잘보고 Data 보내야한다.
아까 DL 계층에서는 Frame 으로 송,수신 한다 말했다.
Frame 은 [PRE/DA/SA/Type/Data/FCS] 로 구성 되어있다.
이렇게 Frame 만드는것을 Framing 이라 한다.
한 Transmission media 에 A,B,C,D 가 연결되어있다 가정하자.
그런데 A 에서 B로 보낼려 했다.
A가 보낸 Frame 은 B,C,D 모두에게 수신이 되지만 DA 를 보고 C,D 는 자기 주소가 아니여서 받지않는다.
실제로 이렇게 전송이 되는데
(a) 는 전송이 잘 된 예시이고
(b) 는 지금 Frame2 가 가다가 가지못한것이다.
이것은 Buffer 가 가득차서 Overflow 가 일어난것이다.
그리고 Frame4 에서는 가긴 가는데 Error 를 받은것이다.
흐름제어를 하는것이고.
일단 Frame을 전송을한다.
그런고 Data가 정상적으로 수신이 되었다면 ACK(acknowledgement) 를 보내서 다음 Data 보내면 된다라는 sign 을 보내준다.
송신측은 ACK 를 기다리고있다가 ACK 를 받으면 다음 Frame 을 보낸다.
하지만 만약 수신측의 Buffer 가 가득차서 Data 를 더 받으면 안되는 상황이라 생각해보자.
더 받으면 안되는데 송신측에게 다시 ACK 를 보내면 될까?
이 상황에서 ACK 를 보내게 되면 송신측은 다시 Data를 보내게 될것이고 OverFlow 가 발생할것이다.
그래서 Overflow 가 발생하지않게 ACK 를 안보내서 다음 Data 를 못 보내도록 해야한다.
위 그림을 보면 U 는 Tp인 propagation delay 안에 몇개의 Tx (Transmission Delay) 를 보낼수 있는지 말한다.
결국 U = Tx / 2Tp + Tx 를 나타내는데
이를 또 다시 Tx 로 나누면
1/ ((2 * tp/tx) + 1) 를 뜻하고 tp/tx 를 a 라고 하면
결국 1/2a+1 이 되는것이다.
2a+1 시간동안 1개의 Frame 을 보내니 성능이 좋을수가 없다.
그래서 Frame 을 여러개 보내는 방식을 생각했다.
Receiver는 W개의 Frame 을 받을수 있게하면 된다.
W Long Buffer 를 가지고 있다는 말은 보낼수있는 최대 크기도 W 개 이다.
ACK 는 기대되는 다음 프레임의 번호를 포함한다.
ACK 2를 보낸다는건 2번을 보내달라는것.
그리고 K 가 3 이면 Frame 은 8개의 번호를 가지게 될것이고
max window size 는 최대 2의 K 제곱 -1 이기때문에 최대 window size 는 7이다.
이 예제를 보면 Maximum window size 는 7 이다.
최대 ACK 를 받지 않고 Data를 몇개까지 보낼수있냐를 뜻하는건데 7개까지 보낼수있는 말이다.
Sequential Num 이 3 임으로 Maximum window size 는 7인것이다.
A 와 B 가 Frame을 보내고 ACK 를 보냄으로써 Window Size 가 늘었다 줄었다 하는것을 볼수있다.
보내면 Window size 가 줄어들게되고 ACK 를 받으면 다시 Window Size 가 증가하는것을 확인할수있다.
가장 먼저 제대로 Data 가 안 갈수도있다.
그래서 Lost Frame 이라는것은 Data 를 아에 받지못한것이고(OverFlow)
Damaged Frame 이라는것은 Data 내에 error 가 있다는 말이다.
Positive acknowledgement 는 ACK 를 보내줘서 잘 받았음을 알려준다.
Negative acknowledgement 는 Data 를 못 받았음을 알려준다.(보내준게 Error)
그리고 Retransmission after timeout 은 Timeout 으로 인해 재전송을 하는것을 말한다.
Data 를 보내고 ACK 을 보내줬는데 그 ACK 마저 Error 일수 있다. 그래서 제대로된 ACK 받을때 까지 기다린다.
-> Timeout 으로 기다리다가 안오면 재전송을 하면된다.
근데 이 재전송도 보냈는데 이게 새로운 데이터인지 재전송인지를 모른다.
그래서 Sequence 번호로 사용해서 재전송은 같은번호로 부여해서 재전송임을 확인할수있따.
Error 가 있으면 제대로 수신하게 하는것이다.
재전송 요청을 통한 Error Control 방법이다.
Stop and Wait 는 하나 보내놓고 노는것이다.
Stop and wait 는 Repeat Request 이다.
Go back N 과 Selective reject 는 Continuous RQ 로써 Go back N 은 TCP 에서 사용하고 Selective reject 는 연속으로 보낼떄 Flow Control 해줘야한다. Sliding window 사용한다.
먼저 Single Frame 을 보낸다.
그러고 ACK 를 기다린다.
Damaged 이면 없애버리고 재전송한다.
ACK 이 Damged 이면 안받은것과 같다.
ACK 도 Frame 인데 그럼 ACK를 잘받았다는 ACK 의 ACK 를 보내줘야 하는것 아닌가? 그냥 송신측에서는 안오면 다시 보내면 된다.
그림을 보면 이해갈것이다.
Continous RQ 로 Data 를 보내면 N번으로 돌아간다는 말이다.
가장 많이 사용하는 Error control 이고 상위계층에서도 쓴다.
ACK 를 받지 못한 상황에서 이미 보낸것들을 Control 해준다.
Piggybacked acknowledgement 는 A,B 가 서로 송수신할때 A 가 보내고 B가 보낼때 ACK 를 DATA 와 같이 보내는것이다.
Duplix 에 사용된다.
만약 데이터를 1 번 보내고 ACK(1)를 보내고 2번 보내고 3 번을 보냈는데 ACK(2) 가 오지 않는다면 2번부터 다시 보내는것이다.
Sequence 로 3 Bit 이면 8개를 표현할수있다.
만약 Frame 0 을 보내고 RR1(ACK(1)) 과 같은말 을 보낸다.
그런다음 Frame 1,2,3,4,5,6,7,0 을 보내고 또다른 RR1을 받는다 가정하자.
여기서 8개 Frame 이 잘 받아도 RR1 이고 8개가 다 Damaged 이나 Lost 여도 RR1 을 보낸다.
이러면 재전송을 해줘야하는지 전송을 해줘야 하는지 구별할수가 없다.
이러면 2의 K 제곱 -1 로 설정해주면 된다.
Go Back N 은 잘못받은것 부터 전체를 다 다시 보내는 방식이였다.
그런데 왜 잘보낸것을 다시 다 보내는가 이다.
제대로 온것들은 Buffering 그리고 안온게 오면 전체적으로 보내준다.
-> 바뀐것만 다시 보내면 된다는 방식이 Selective Reject 이다.
Selective Reject 의 Maximum window size 는 2의 (K-1) 제곱이다.
이건 no Problem
송신측에서 ACK 를 받지 못해서 Timeout 으로 이전 Frame 0을 보내게 되면
수신측에서는 0을 가지고있는데 새로 보내는 Frame 0 이 저번에 받은 Frame 0 과 같은것이 되어버림.
새로운 Data , 기존의 Data 둘중에 구분이 되지 않는 문제가 생김
그래서 Maximum Window Size 를 2 의 (k-1) 제곱을 하면 된다.
약속은 표준화가 되어야한다.
Primary 는 자기가 Link의 operation Control 을 하는것
Secondary 는 Primary 에 의해 제어되는것
Combined 는 자기가 Primary,Secondary 둘다 될수있다.
Unbalanced 는 1개의 Primary,다중의 Secondary 를 뜻한다.
Balanced 는 2개의 combined station 을 뜻한다.
통신하기전 Mode 를 설정한다.
unbalanced로 주로 사용되고 Primary 부터 전송을 시작한다.
Point to Point 는 주소가 크게 필요하지 않다.
MultiPoint 는 다 수신이 되지만 주소를 보고 판단한다.
Balanced 사용하고 Balanced 는 2개의 Combined Station Type을 가지기에 어떤애든 Transmission 할수있다.
Polling 이 없는데 Polling 은 데이터 전송할거 있는지 물어보는것이다.
가장 많이 사용된다.
Unbalanced 하고 Secondary 가 Primary 없이 그냥 전송해버린다.
Flag 는 Frame 의 시작을 뜻한다.
Protocol 에 따라 Frame 이 다르다.
01111110 은 Frame 의 시작을 뜻하는데 만약 Data 중간에 01111110 이 있으면 이게 Frame 의 끝인지 Data 인지 모른다.
Infromation 안에는 1이 연속적으로 6개 나오면 안된다.
1이 5개 연속적으로 나오면 0을 넣어준다
이걸 Bit insertion 이라 한다.
Frame 을 수신할 Secondary Station 주소를 명시한다.
8bit 길이를 가지고
Address 가 11111111 이면 방송주소로 모두 다 받아라를 뜻한다.
문맥에 따라 Final bit(P/F) 를 사용한다.
P는 Polling 으로 1로 세팅하면 어떻게든 응답해야한다.
F 는 1이면 polling 에 대한 응답이다.
I = Information
S = Supervisory
U = Unnumbered
Data를 제외한 정보는 Control 정보이다.
감시한다는것은 (ACK,NAC) 를 뜻하고
Data 를 보내고 ACK 을 보낼때 마칠 보낼게 있으면 PiggyMapped
보냈는데 보낼게 없으면 RR 이다.
-> N(S): Send seq #
-> N(R): Receive seq #
-> P/F: Poll/Final bit
-> RR : ACK
-> RNR : Receive Not Ready
-> REJ : Reject
-> SREJ : Selective Reject
3개의 단계를 거친다.
Initialization 에서는 초기화로 mode를 설정하고, 몇 Bit Sequence 도 설정해준다.
그리고 Data Transfer 에선 데이터 전송후
Disconnect로 Connection 을 종료한다.
A 가 SABM 을 보낸다.
SABM 은 AMB Mode 로 Setting 한다는 말이고 ABM 은 Asynchronous Balanced Mode 로 Balanced 방식이다.
2개의 Combined Station Type 임으로 두개가 Primary,Secondary 가 될수 있다는 말이다.
서로 데이터를 주고 받음을 유추할수있다.
하튼 처음에 SABM 을 보냈는데 그에대한 응답이 오지않아 TimeOut 으로 또 한번 SABM 을 보낸다.
그에 대한 응답으로 UA 를 보냈다.
UA 는 Unnumberd Acknowledgement 로 OK 라는 응답을 보낸것이다.
그다음에는 Disconnect 로 종료한다고 알리고 UA로 응답을 받았다.
A 가 먼저 I,0,0 을 보낸다
I 다음 0,0 은 각각 N(S) N(R) 로 N(S) 는 현재 Sequence 를 뜻하고 N(R) 는 Ack Sequence(Expected) 를 뜻한다.
0을 보내고 0을 받음을 뜻한다.
그래서 B는 I,0,1 를 보내준다.
B는 A로부터 0을 받았기에 다음에는 1을 보내주면 된다의 정보인 N(S) 1를 포함하고 0을 보낸다는 N(R) 를 보내서 I,0,1 를 보내는것이다.
그리고 진행하다가 RR4를 보내서 더이상 보낼게 없다는 신호를 보내준다.
B 가 I,3,0 를 먼저 보냈다.
위의 A,B를 통해서 이게 무슨 뜻인지는 넘어가겠다.
A에서 RNR,4 를 보냈는데 RNR 는 Receive Not Ready 로 4 번을 받을 준비가 되지않았다를 말해준다.
그런뒤 B 에서 RR,0,P 를 보내주는데 Polling 으로 상황을 알려달라고 한다.
RR,4,F 는 받을준비가 됐고 4번을 요구하는것이다.
I,4,0 으로 4번을 보내고 0번을 보내달라고 알림.
A에서 각각 3,4,5를 보내다가 4번이 제대로 도착하지 못한것을 확인
그래서 B에서 REJ,4 를 보냈음
그래서 못받은 4부터 A에서 다시 다보냄
Go Back N 임을 확인할수있다.
RR,3 은 3번 요구
I,3,0 은 3번보냈으니까 0 번요구
근데 I,3,0 은 보냈는데 ACK 가 안옴
RR,0,P 로 물어봄
RR,3,F 로 3번 다시 보내라고 응답
I,3,0, 으로 보내고 RR,4 로 응답
Card 가 있다면 Card Level 에선 중요
Point to Point Access 에 사용되는 Protocol
Point to Point 에서는 Adderss 가 크게 중요하진 않음
Establish 는 상태관리
Authenticate 는 맞는지 확인
Network 는 무선 Lan에서 사용