- bit는 연속적으로 들어오기 때문에, 들어오는 bit stream을 의미있는 block of data로 나누는 것이 가장 먼저 해야 할 일이다. Framing
Fixed-size Framing
- Fixed number of bits. 장점이기도 하다. 모든 frame bit가 정해져있다.
- No delimeter neccessary (이게 뭐지?..)
- inefficeint할 수도 있다.
- 만약 frame size를 1000bit로 주었는데, 실제로 50bit만 보낸다면, 나머지는 낭비되기 때문
Variable-size Framing
- Each frame이 각각 다른 number of bits를 갖는다
- Delimeter neccessary to identify frames
- efficient. Can build frames according to the data sent
- flag : frame의 시작과 끝을 찍는 marker
- header : bits inserted before the data for control purposes
- trailer : bits inserted after the data for control
- data/payload : data to be sent
Bit Stuffing
flag에 있는게 data/payload에 있으면 안된다.
- If the marker pattern appears in the payload, the receiver will think it as an end marker
- 현재 flag는 '01111110'이다.
- data에서 '11111'이 나오면, 뒤에 '0'을 붙여버린다. bit stuffing
- receiversms '11111' 뒤의 '0'을 제거한다. stuffed bit
Byte Stuffing
- Same purpse as bit stuffing
- Insert a byte after a marker byte pattern
- Used in a system that process data in unit of bytes
- TinyOS는 센서같은 small embedded system에 사용되는 OS이다.
- TinyOS는 7E를 start/end marker로 사용한다.
- 만약 payload에 7E가 나오면, 7D 5E로 바꾼다.
- 만약 payload에 7D가 나오면, 7D 5D로 바꾼다. 왜냐면 애초에 7D 5E가 있을 수도 있으니까.
00 45 28 7E 7D
-> 00 45 28 7D 5E 7D 5D
45 28 36 7D 5E
-> 45 18 36 7D 5D 5E