• 카테고리

    질문 & 답변
  • 세부 분야

    네트워크

  • 해결 여부

    해결됨

17강. TCP 통신 장애 관련 질문드립니다.

24.04.23 23:05 작성 24.04.23 23:19 수정 조회수 65

0

강의에서 소개해주신 TCP 장애(Re-transmission, Out of order)에 관해서 질문 드리려고 합니다.

Server와 Client구조에서 Server는 Client에게 1~100을 송신한다고 하면 (TCP 통신)

통신 장애(Re-transmission, Out of order)가 발생한 경우 Client는 1, 2, 3 ... ,100을 순차적으로 받지 못하고 1, 2, 3, 3, 5, 4 ... 99, 98, 100이런 식으로 값을 받을 수 있다고 강의에서 설명해주셨습니다.
그리고 위와 같이 통신 장애가 발생하면 TCP, 즉 L4 layer에서 통신 장애가 발생한 부분을 자동으로 처리(후처리) 해준다고 말씀하셨는데,

그렇게 TCP layer에서 후처리 해주면 Client는 값을 정상적으로 받게 되는 건가요?

추가로 이런 보정 작업이 100%로 Client가 값을 정상적으로 받는 것을 보장해주는 것인지 궁금합니다

지식이 부족해서 명확하게 질문드리지 못한 점 정말 죄송합니다.

강의 잘 보고 있습니다. 감사합니다!

답변 2

·

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.23

안녕하세요, 인프런 AI 인턴입니다. 조현준님의 질문에 대해 도움이 될만한 정보를 찾았습니다.

TCP 통신 과정에서 발생할 수 있는 장애에 대한 질문인데, TCP 통신 과정에서의 후처리 방식, 특히 Re-transmission 및 Out of order 현상을 어떻게 처리하는지에 대한 질문으로 이해됩니다. 네트워크 통신 과정에서 이러한 문제들이 어떻게 해결되는지에 대해 다룬 유용한 답변을 찾았습니다.


TCP에서의 장애 처리 방식:

TCP/IP 프로토콜은 데이터 통신에서 발생할 수 있는 여러 문제들을 자동으로 해결하기 위한 메커니즘을 가지고 있습니다. 특히, Re-transmission(재전송)Out of Order(데이터 순서 혼란) 문제를 해결하기 위한 과정이 있습니다.

  1. Re-transmission: TCP는 데이터가 제대로 전송되지 않았을때 재전송을 시도합니다. 이는 TCP의 세그먼트에 포함된 시퀀스 번호를 통해 구현됩니다. 데이터 수신자는 받은 세그먼트의 시퀀스 번호를 검사하여 어떤 데이터가 누락되었는지 판단하고, 누락된 데이터에 대해 재전송을 요청할 수 있습니다.

  2. Out of Order: 데이터 패킷은 여러 경로를 통해 전송될 수 있기 때문에 순서가 뒤바뀌어 도착할 수 있습니다. TCP는 이러한 문제를 해결하기 위해 수신된 각 세그먼트의 시퀀스 번호를 통해 올바른 순서대로 다시 배열하며, 모든 데이터가 올바른 순서로 재정렬될 때까지 일부 데이터의 처리를 지연시킬 수 있습니다.

이러한 처리는 주로 L4 계층인 TCP 프로토콜에서 자동으로 이루어집니다. 따라서 클라이언트는 서버로부터 데이터를 순차적이고, 정확한 순서로 수신할 수 있게 됩니다.


이러한 TCP의 작동 원리에 대한 자세한 설명은 다음 답변에서 찾아볼 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

조현준님의 프로필

조현준

질문자

2024.04.23

답변 감사합니다.

글을 중간에 수정해서 답변을 못받은 것 같습니다.

설명해주신 TCP 프로토콜 보정은 Client가 100% 정상적인 값을 받도록 보장하는지 궁금합니다.

0

네, 그런 오류를 보정 받은 후 정상적으로 수신하게 됩니다. 그러나 간혹 끝내 보정이 불가능할 정도로 장애가 심각하다면 TCP 연결 자체가 비정상 종료 됩니다. 그러나 경우에 따라서는 연결이 끊긴 경우 자체를 인지 못할 수 있습니다. 가령 상대 서버가 정전 등의 이유로 물리적으로 종료된다면 이를 클라이언트가 인지하지는 못합니다. 이 때문에 계속 서버와 TCP 연결을 유지하고 있다고 판단 할 수 있습니다. 반대로 클라이언트가 그렇게 된다면 TCP 연결이 지속되고 있다고 서버는 판단합니다.

이런 이유로 연결이라는 말은 어떻게 보면 주관적인 착각에 불과한 것입니다. 참고하시기 바랍니다. 😄