application 계층에서는: message
transport 계층에서는: segment
network 계층에서는: datagram, packet
link 계층에서는: frame
Internet Protocol Stack 중 Data Link 레이어 (data transfer)
Network Access/Data Link: 프로토콜은 Ethernet, WiFi, ATM, frame relay
Data Link Protocols
Frame이 관심대상. Physical Layer의 헤더를 뗀 (Data layer의 헤더까지만)
Data Links Services
- Framing(프레임 잘 나눴고 빠진거 뭔지 확인)
- Error control
- Flow control (window 정해놓고~)
- Multiplexing (합쳐서 보내는)
- Security: Authentication & Encryption
- Data Link는 directly link로 것이 관심대상. 순서를 벗어나는 경우 없다.
- 예시: HDLC, 이더넷 LAN, wifi LAN
Framing
비트 스트림을 하나의 frame으로 매핑하거나 그 반대.
- frame 경계 구분 방법: character counts, control characters, flags, CRC checks
Data Link Control Protocols
- 두 직접 연결된 stations 간의 protocol.
Flow Control
- 특정한 두 관계에 대해서가 data link.
- overwhelm 시키면 안되어서 조절함.
- 없으면 버퍼 다 차고 패킷 없어짐...
Frame이 lost되거나 demaged 될 수 있음
Error Control Techniques
- Error Detection
- Timeout 후 재전송
- Positive acknowledgement (다음은 뭘 보내면 된다 = 잘 받았어)
- Negative acknowledgement와 재전송 (뭐를 못받았어)
Automatic Reqeat Request (ARQ)
- data link를 reliable하게 바꿀 수 있는 효과.
(1) Stop and wait
(2) Go-back-N
(3) Selective-reject
Stop-and-Wait Flow Control
Src는 frame 보내고 Dest가 frame 받은후 ACK를 보내는 것을 기다림.
여러개 packet을 더 작은 블록들로 쪼개 보냄 -> 많은 frame
RX buffer size 많지 x.
transmission 길수록 에러 생길 수 있음. 재전송이 중요함.
shared medium에서 ACK 잘 활용해야
transmission time: modulation 해서 보내는 시간
propagation time: 전송 매체 자체의 특성 때문에 발생하는 시간
시각 t0에 packet을 전송: 전송 완료되는 시각 t0+1+a (1:전송지연, a:전파지연)
ACK 처음으로 도달하는 시각 t0+1+2a, reception time 1이라면 t0+2+2a
(1) Stop-and-Wait ARQ
TX가 frame 보내고, RX는 기다림. TX는 답장 올 때까지 기다림(timeout을 걸어놓음)
RX는 받은 frame이 demaged라면 버림.
frame이 lost 되면 ACK 보내지 않아 TX가 timeout에 의해서 재전송
ACK가 lost되면 TX가 timeout 의해서 재전송, RX는 ACK를 2개 받음.
그림 보기
Frame transmission time 걸리고 propagation time 걸리고...
ACK도 transmission time 걸리고 propagation time 걸림
(2) Go-Back-N-ARQ
window를 정해놓고 보낼 수 있는 것을 정해놓음
* Sliding Windows Flow Control
여러개 frame을 Sliding window로 보낼 수 있따.
TX는 ACK 없이 최대 W개의 frames를 보낼 수 있다.
ACK는 다음에 기대하는 프레임의 번호를 포함한다.
프레임이 modulo 2^k 개라면
윈도우의 사이즈는 최대 2^k - 1. 0 < W <= 2^k - 1
Receiver의 ACK - 보내도 돼: RR #, 보내지마: RNR #
full-duplex link라면 piggyback ACK를 쓸 수 있다 (효율적)
Sliding window
TX: RX 따로 ACK 안 보내도 sliding window 안의 번호들을 보낼 수 있다. ACK 받으면 sliding window가 커진다.
언제 shrink? 보내면
언제 expand? ACK 받으면
RX:
이미 받은 애들이
받기를 기대하는 애들이 파란 window 안에 있음
sliding window 경계선 기준은 ACK 보낸/받은 것이 기준