[데이터 통신] 11. Data Link Control(DLC)
2023.02.13- -
11.1 Framing
frame 만들기
- Data link layer needs to pack bits into frames, so that each frame is distinguishable from another.
- Separate a message from one source to a destination, or from other messages to other destinations, by adding a sender address and a destination address
- Frame size: fixed or variable
- Variable-size framing: 일반적인 경우 fixed보다 variable을 사용
- Need a way to define the end of the frame and the beginning of the next
- Character-oriented approach and bit-oriented approach
11.2 Data-link layer protocols
Character-Oriented Protocols
- Frame structure
flag라는 시작과 끝을 알리는 8 bit pattern으로 구분을 짓는다.
- Byte stuffing and unstuffing: process of adding 1 extra byte whenever there is a flag or escape character in the text.
- Flag라는 data가 존재하는 경우 이것이 frame의 끝이 아니라는 것을 알려주기 위해 or ESC라는 special character 앞에서 구분해 주기 위해서 Byte stuffing 과정과
- 수신측에서 ESC를 빼 주는 unstuffing 과정이 거쳐진다.
- ESC character 없이 FLAG가 오게 되면 끝 or 시작이라고 판단
- byte를 다 읽고 ESC든지 FLAG든지를 판단 가능
Bit-Oriented Protocols
character oriented 보다 더 많이 씀
- Frame structure
- Bit stuffing: process of adding one extra 0 whenever five consecutive 1s follow a 0 in the data
- 011111? : ? = 0
- 만약 flag와 똑같은 bit pattern이 data안에 있는 경우를 막기 위해서 0다음에 1이 5개가 오면 그 다음 bit는 무조건 0이 오도록 만든다.(0에 1이 6개가 붙어면 bit pattern이 될 수 있기 때문)
- receiver에서는 flag가 아니라고 판단하면 다시 unstuffing을 통해 0을 제거해 준다.
Flow and Error Control
data link layer의 기능 중에서 가장 중요한 두 가지 기능
- Data link control = flow control + error control
- Flow control refers to a set of procedures used to restrict the amount of data that the sender can send before waiting for acknowledgement
- data의 양을 조절하여 overflow의 발생을 막는다.
- Using two buffers at the sending and receiving data-link layer
- Error control prevent the receiving node from delivering corrupted packets to its network layer
Finite State Machine(FSM)
- 복잡한 protocol을 정형화 하는 기법
- 유한한 state를 갖고 있고 event가 있을 때마다 another state로 transition함.
- 각 state에서 다른 state로의 transition은 event에 의해 이루어 지며 event에 따른 actions을 수행할 수도 있고 딱히 수행하는 action이 없을 수도 있다.
Data-Link Layer: Simple Protocol
- Simplest protocol with no flow or error control
Sending mode:
- Packet came from network layer 라는 event가 발생하면 Make a frame and sent it 이라는 action 수행
Receiving mode:
- Frame arrived라는 event가 발생하면 deliver the packet to network layer 라는 action 수행
둘 다 state은 계속 ready로 제자리로 돌아온다.
Example 11.2
- 아주 간단한 예제에 대하여 time 축에 대하여 정형화 된 그림
- frame을 보낼 때와 도착했을 때의 delay가 있음.
Stop-and-Wait Protocol
- Use both flow and error control
- CRC & ACK(Acknowledgement)
- 답장을 기다린다 -> 일종의 flow control
- CRC가 붙는다 -> error control
- frame을 하나 보내고 receiver에서 잘 받았다는 답장이 올 때까지 stop 한다(답장을 wait).
- timer가 필요한 이유는 frame을 보냈는데 중간에 lost 되어 답장을 받을 수 없을 때 무한정 기다릴 수 없으므로 설정된 timer 시간이 지나면 자동으로 다시 frame을 보내게 되기 위함이다.
- frame이 lost 되었을 수도 ACK이 lost 되었을 수도 있다.
FSM for Stop-and-Wait Protocol
event가 발생 -> action 수행 -> state transition
- save a copy -> 전송에 실패한 경우 다시 보내려면 복사해 두었던 것을 보내기 위해서
- error-free 즉, 제대로 전달이 된 경우 -> timer 멈추고, saved frame 버리기
- corrupted ACK -> ACK를 버림
Q) 계속 error가 발생하면 sender 측에서 계속 같은 frame만 보내게 되나요? error가 발생한 frame에 대해서 그 다음 전송 때는 error가 발생하지 않을 수도 있나요?
A) 그치. 그니까 재전송하는 것. 모종의 이유로 잘 도착하지 않은 것이기 때문에 다시 전송해 주는 것
Flow Diagram for Example 11.3
ACK(응답)가 lost된 경우에는 reiciving node까지 packet이 제대로 도착해서 network layer로 packet을 잘 올렸음에도 답장(ACK)이 가다가 lost된 것이기 때문에 sender 측에서는 잘 올라갔는지를 몰라서 똑같은 frame을 또 보내게 되고 똑같은 frame을 다시 보냈기 때문에 중복된 packet이 또 올라가게 되는 duplicate 문제가 발생한다.
Flow Diagram for Example 11.4
- 위에서 발생한 문제를 해결하기 위해서 각 frame에 sequential (binary) number(0, 1)를 주면서 해결할 수 있다.
- reiciving 측에서 ACK1을 전송한다는 것은 frame 1을 받을 것을 기대한다는 뜻,
- 즉 Frame0은 잘 받았다는 것을 의미한다.
- ACK1이 중간에 깨지거나 하는 이유로 답장을 못받으면 time out 될 때까지 기다리다가 다시 보내게 되는데 sender 입장에서는 ACK1을 받지 못했기 때문에 frame1을 보낼 수 없는 것이고 frame0을 다시 보내도록 한다.
- 그런데 또 0을 받게 되면 이미 직전에 frame0을 받았었기 때문에 충돌이 일어나 packet을 network layer에 delivery 하지는 않고 ACK1을 sender 측에 resent 한다.
11.3 HDLC(High-level Data Link Control)
- bit-oriented protocol
- High-level Data Link Control
- stop and wait protocol 보다 효율적
- Two common transfer mode:
- normal response mode (NRM) and asynchronous balanced mode (ABM)
- NRM
- 하나는 Primary 하나는 Secondary로 일종의 주종 관계에 있다고 할 수 있다.
- primary의 command에 따라서 Secondary가 response를 보내는 통신방식
- secondary가 여러개인 경우 하나를 지정해서 response하도록 할 수 있음
- ABM: asynchronous balanced mode -> 양쪽이 동등한 관계의 통신
HDLC: Frames
- bit-oriented protocol
- The shortest frame in HDLC protocol is usually the supervisory frame.(s-frame)
- I(information)-frames, S(supervisory)-frames, U(unnumbered frame)-frames
- Flag field: 01111110 to identify both the beginning and the end of a frame and serve as synchronization pattern for receiver
- FCS field: 2- or 4-byte ITU-T CRC for error detection
- FCS = Frame Checking Sequence
- I-frame: Information frame
- 실질적인 정보를 포함하는 frame
- network가 내려준 정보를 전달
- S-frame: Supervisor frame
- 보낸 정보를 잘 받았는지를 확인하기 위해 보내는 frame(like ACK)
- 관리 제어
- U-frame: Unnumbered frame
- link를 setup 혹은 끊을 때 사용하는 frame
- unnumbered frame
- 세 frames 모두 Flag로 시작해서 Flag로 끝난다.
HDLC: Frames
- Control Field: 1- or 2-byte segment of the frame used for flow and error control
- 이해를 위해서 1 byte의 control field를 집중적으로 보겠다.
- Determine the type of frame and define its functionality
- 맨 앞의 bit
- control field의 MSB를 확인해서
- 0이면 I-frame
- 10이면 S-frame
- 11이면 U-frame
- Control field for I-frame: P/F (poll/final bit for primary/secondary)
- P/F -> command를 보내거나 response를 보낼 때 1로 된다.
- 요즘엔 master-slave 관계가 아니라 양쪽이 combinde이기 때문에 별로 신경 안 씀.
- P/F -> command를 보내거나 response를 보낼 때 1로 된다.
- N(S) : send sequence number
- 000~111까지의 패턴을 매 frame마다의 number를 나타낸다.
- 즉 지금 내가 지금 보내는 frame의 number를 뜻함
- 000~111까지의 패턴을 매 frame마다의 number를 나타낸다.
- N(R): Receive sequence number
- 답장 전용의 frame인 S-frame에서는 N(R)만 존재함
- frame을 잘 받았다는 답장을 줌
- 만약 010(2) 라면 2번을 받을 것을 기대한다는 의미로 1번까지는 잘 받았다는 뜻이다.
HDLC: Frames
- Control field for S-frame
- Receive ready (RR), Receive not ready (RNR), Reject (REJ), Selective reject (SREJ)
- RR: 00
- ACK에 해당하는 것 (PACK)
- 또한 RNR로 STOP 시켜놨던 flow control을 재기시키는 역할도 한다.
- REJ: 01
- NACK로 error가 있으면 reject하는
- NACK : Negative ACK
- sender가 0번도 보내고 1번, 2번, 3번... 을 쭉 보내는데 3번에 error가 있으면 3번을 reject, 즉 다시 보내는 것을 요청하고 그 뒤의 4번, 5번,... 은 전부 받지 않고 버린다.
- RNR: 10
- STOP
- RR/RNR
- Flow control
- SREJ: 11
- Selective-reject and NACK
- sender가 0번도 보내고 1번, 2번, 3번... 을 쭉 보내는데 3번에 error가 있으면 3번은 reject해서 다시 보내라고 하지만 뒤의 4번이나 5번이 잘 왔다면 받아 놓는다.
REJ vs. SREJ :
- 3번 frame이 가다가 깨지면 receiver 측에서는 REJ로 3번을 다시 보낸다.
- 이 때 REJ는 그 뒤의 4번, 5번 데이터를 모두 버리지만
- SREJ는 3번은 REJ하여 다시 보내라고 하긴 하지만 그 뒤의 4, 5번은 다 받아 놓는다.
- 3에대한 REJ가 오면 3,4,5를 전부 보냈더라도 3번부터 다시 3,4,5를 전부 reject 할 것이기 때문에 그 뒤의 것들을 전부 다시 보내야 하고
- 3에대한 SREJ가 오면 3,4,5를 전부 보냈으면 3번만 다시 보내고 4,5번은 이미 받았기 때문에 3번 다음으로는 6번으로 넘어가게 된다.
HDLC: Frames
- Control field for U-frame
SNRM: normal response mode로 연결(set) 하자
UA: 알겠다고(okay) 답장하는 것
RD: 연결을 끊는 것(No)
Example 11.5: HDLC
- Connection and disconnection
U-frame은 connection establishment and connection release.
Data tranfer에서는 I-frame과 S-frame이 왔다갔다 할 것이다.
Example 11.6: HDLC
data transfer에서는 어떤 일이 벌어지는 지 보도록 하자.
- Piggybacking without error
- Piggybacking: 내가 보내고 싶은 정보를 보내면서 상대방의 답장까지 보내는
- 세 번째 frame에서 node B는 내가 보내고 싶은 정보인 0을 보내면서 상대방이 보낸 0과 1에 대해 답장을 잘 받았다는 의미로 2번의 ACK를 동시에 보낸다. -> piggybacking
- 보낼 편지가 없으면 마지막 frame에서와 같이 S-frame(답장 전용)으로 3번에 대한 ACK를 보내게 된다.
- RR -> receive ready 즉, ACK
Example 11.6: HDLC
- Piggybacking with error
- REJ 1을 보냈다는 것은 0번까지는 잘 받았고 1에 대한 응답과 더불어 2번까지 응답을 다시 보낼 것을 요청하는 것이다.
- 만약 SREJ였다면 2번까지 다시 보내지 않고 1번을 다시 보내고 그 다음에는 3번을 보냈을 것이다.
HDLC: Bit Stuffing and Unstuffing
HDLC는 Bit-oriented protocol 이기 때문에 bit stuffing이 존재함
- 하나의 0이후에 연속적인 1이 다섯개가 오면 무조건(flag와 구별하기 위해) 0을 그 다음에 insertion한다.
- 송신 측에 도착하면 0 이후에 연속적인 1 다섯개가 있으면 그 다음에 있는 0은 제거한다.
11.4 Point-to-Point Protocol: PPP
대표적으로 전화망이 있음
- One of the most common protocols for point-to-point access
- Many Internet users who need to connect their home computer to the server of an Internet service provider use PPP
- A point-to-point link protocol is required to control and manage the transfer of data
- But, several services are missing for simplicity
- no flow control, simple error control (detection and discard), no sophisticate addressing for multipoint configuration
- 그냥 error 체크하고 error 있으면 버려버리는
- 1:1 protocol이기 때문에 address가 필요없음
- sophisticate: 정교한, 복잡한
- no flow control, simple error control (detection and discard), no sophisticate addressing for multipoint configuration
PPP Frame
- Flag: 01111110 the same as HDLC, but it treated as a byte because of PPP is a byte-oriented protocol
- Address:
- 11111111 (broadcast address)
- 보내면 무조건 상대가 받기 때문에 broadcast
- point-to-point 형태라서 sender, receiver 주소를 필요로 하지 않는다.
- Control:
- No need because PPP has no flow control and limited error control
- PPP is a byte-oriented protocol using byte stuffing with the escape byte 01111101
- FCS:
- error control
- Protocol: defines the type of payload encapsulated in the frame.
- defines the contents of the data field.
PPP: Transition Phases
dead: 양쪽 device의 파워가 꺼진 상태
Establish: 설정 단계 -> link를 설정
authenticate: 인증 절차
PPP: Multiplexing
- PPP uses another set of other protocols to establish the link, authenticate the parties, and carry the network layer data
- Three sets of protocols defined for powerful PPP: LCP, two APs, several NCPs
- LCP: Link control protocol
- link를 끊고 setup하는 것을 담당
- AP: Authenticate protocol
- NCP: Network control protocol
- LCP: Link control protocol
LCP: Encapsulated in a Frame
Link Control Protocol: link를 setup할 때 어떤 option을 가지고 할 것인지를 정하는
- Purpose
- Configuration
- Termination
- Option negotiation
LCP: Common Options
- Options are inserted in the information field of the configuration packets
Authentication
- Authentication means validating the identity of a user who needs to access
- PPP is designed for use over dial-up links
- User authentication is necessary
- 전화를 통해서 연결된 이 사람이 인증된 사람인가
- PPP has two protocols for authentication
- Password Authentication Protocol (PAP)
- Challenge Handshake Authentication Protocol (CHAP)
Password Authentication Protocol (PAP)
- Two way password authentication protocol
- Autehnticate-request
- Autehnticate-ack or Autehnticate-nak
- user name과 password를 주면 authenticate-request을 통해 system을 가고 system으로부터는 사용을 허락하는 Authenticate ACK가 올 수도 있고 user name 과 password가 matching이 안 됐을 경우 접근을 거절하는 NAK가 가도록 한다.
- user name과 password를 주고 받는 와중에 누가 정보를 가로채 가면 정보가 노출되는 것이기 때문에 보안에 취약한 점이 단점
Challenge Handshake Authentication Protocol (CHAP)
- Three-way hand-shaking authentication protocol with greater security than PAP
- Challenge
- Response
- Success of failure
- system 쪽에서 user에게 challenge value를 주면 user는 양쪽에게 약속된 function을 적용한다.
- 예를 들어 challenge value에 root를 씌운 값이 실제 값이라던가와 같은
- 그래서 같은 function을 적용해서 valid한 결과가 나오면 승인 아니면 거절을 한다.
- 그렇기 때문에 정보를 빼가더라도 challenge value를 처리하는 algorithm을 모르면 쓸모가 없기 때문에 PAP가 가졌던 보안에 취약한 것을 보완하기 위한 protocol이다.
Network Control Protocol: NCP
- PPP is a multiple-network layer protocol.
- It can carry a network data packet from protocols defined by the Internet, OSI, Xerox, DECnet, AppleTalk, Novel
- IPCP (IP Control Protocol)
- Configures the link used to carry IP packets in the Internet
IPCP Packet
IP Datagram in a PPP frame
Multi-link PPP
payload를 channel을 분리시켜서 하나 이상의 channel로 보내는 것도 가능하도록 설계되었다.
Example 11.7: PPP
- PPP
- Flag-to-Flag
- Byte-oriented
- PPP가 동작하는 절차
- data link layer 세팅을 하고
- 인증을 하고
- network layer 세팅을 하고
- data transfer(교환)
- terminate(끊는)
- configure-request: data-link 어떻게 연결할지, 압축할 것인지, authentication 할 건지 와 관련된 option을 보낸다.
- 그거에 대한 답장이 온다.(한다/ 안 한다.)
시험에 PPP 관련된 것은 나오지 않을 것이다.
QnA 틀린 문제
- In the PPP frame, the control field is similar to that of the U-frame in HDLC.
- In PPP, the address field defines None of the choices are correct of the packet.
- point-to-point 형태라서 sender, receiver 주소를 필요로 하지 않는다.
- In PPP, the CHAP protocol uses 3 steps to authenticate the parties in communication.
- Three-way hand-shaking authentication protocol with greater security than PAP라고 위의 필기에 적혀있음
- Challenge
- Response
- Success of failure
- PAP는 두 단계임.
- Three-way hand-shaking authentication protocol with greater security than PAP라고 위의 필기에 적혀있음
'CS 지식 > 네트워크' 카테고리의 다른 글
[데이터 통신] 13. Wired LANs Ethernet(유선 LAN 이더넷) (0) | 2023.02.13 |
---|---|
[데이터 통신] 12. Multiple Access Control(MAC) (0) | 2023.02.13 |
[데이터 통신] 10. Error Detection and Correction (0) | 2023.02.13 |
[데이터 통신] 9. Introduction to Data-Link Layer (0) | 2023.02.13 |
[데이터 통신] 8. Switching (0) | 2023.02.13 |
소중한 공감 감사합니다