Computer Science/Network

[Network] TCP 에러제어

LeeJaeJun 2023. 12. 23. 00:09
728x90
반응형

- TCP 에러제어

CRC(Cyclic Redundancy Check)와 CheckSum을 사용하여 에러를 검출합니다. 에러가 검출(세그먼트의 손실 및 훼손, 순서가 어긋날 경우, 중복된 경우 등)되면 에러 정정(error correction)을 하는데 에러 정정은 ARQ(Automatic Repeat Request, 자동 재전송 요구) 방식을 사용합니다. TCP 에러제어를 통해 신뢰성 있는 데이터 전송을 보장합니다.

 

- CRC(Cyclic Redundancy Check)

CRC는 다항식 연산을 통해 작동합니다. 송신 측에서는 송신할 데이터를 이진 형태로 나타내고, 미리 정의된 생성 다항식을 사용하여 데이터에 CRC 비트열을 추가합니다. 이 CRC 비트열은 데이터 블록의 일부로 간주되며, 송신 측에서 전송됩니다.

수신 측에서는 전송된 데이터 블록을 수신하고, 동일한 생성 다항식을 사용하여 수신된 데이터에 CRC 연산을 수행합니다. 이 결과와 수신된 CRC 비트열을 비교하여 오류의 존재 여부를 확인합니다. 일치하지 않는 경우, 수신된 데이터에 오류가 있음을 나타냅니다.

 

- ARQ(Automatic Repeat Request)

1. Stop-and-wait

기다렸다가 보내기. Timeout시 ack를 받지 못한 패킷부터 기다렸다가 재전송합니다. 매번 전송한 패킷에 대한 확인 응답(ACK)을 받고, 그 다음 패킷을 전송하는 방식입니다. 식별을 위해 0과 1의 패킷(or ACK)을 번갈아가면서 전송합니다. stop-and-wait ARQ는 송신측 sliding window의 크기가 1인 Go-bakc-N ARQ라고 볼 수 있습니다. 확인 응답이 올 때까지 기다리는 방식이기 때문에 비효율적입니다.

 

Stop and wait

2. Go-Back-N

Timeout시 ack를 받지 못한 패킷부터 모두 다시 전송합니다. 어느 한 패킷이 돌아오지 않아 에러가 발생햇으면 그 번호의 패킷부터 다시 재전송하는 방식입니다. 즉, 에러지점으로 돌아가 다시 재전송합니다. 누적응답이기 때문에 ACK 응답번호에 의해 sliding window가 한번에 한 칸 이상 밀려갈 수 있습니다. 수신자가 오직 하나의 변수만 관리하며 순서가 뒤바뀌어 도달한 패킷들을 보관하는 버퍼가 없이 단순히 버려지기 때문에 잡음이 많은 채널에서는 비효율적입니다.(잡음이 있는 채널에서는 패킷이 손상될 확률이 높아지기에 다수의 패킷들이 다시 재전송되어 딜레이가 될 것입니다.)

ex) 패킷 0, 1, 2를 전송한 후 ACK3이 온다면 패킷 2까지 잘 전송된 것으로 판단하여 sliding window가 3칸 이동하여 패킷 3이 sliding window의 첫 프레임이 됩니다. 즉, ACK 3이 오면 ACK 1, 2가 오지 않아도 패킷 0, 1이 잘 전송되는 것으로 판단합니다.

Go-Back-N

* sliding window: 송신자와 수신자가 관심을 두고 있는 순서 번호의 영역을 정의하는 추상적인 개념. 송신자와 수신자는 가능한 수신 번호의 일부분만 사용해야 한다는 것입니다. sliding window의 크기가 파이프라인의 크기 입니다.

 

3. Selective Repeat

Ack를 받지 못한 패킷을 선택적으로 재전송합니다. 하나의 패킷이 손상되었을 때, 손상된 패킷만 다시 전송하는 것입니다. 순서가 뒤바뀌어 온 경우에도 패킷을 버리는 것이 아니라 버퍼에 저장합니다. 패킷이 도착하지 않아 타임아웃이 될었을 때, 선택적으로 재전송하고 버퍼에 저장하는 방식을 이용하는 것입니다.

Selective Repeat

* NAK(Negative Acknowledge): 해당 패킷(프레임)을 제대로 전송받지 못한 경우 송신측에 보내는 신호

728x90
반응형

'Computer Science > Network' 카테고리의 다른 글

[Network] FTP(File Transfer Protocol)  (0) 2023.12.23
[Network] OSI 7 Layer 계층별 장비  (1) 2023.12.23
[Network] VPN  (2) 2023.12.22
[Network] 부하 분산 시스템(Load Balancing System)  (2) 2023.12.22
[Network] UPnP  (2) 2023.12.22