반응형
TCP(Transmission Control Protocol)**는 인터넷에서 데이터를 안정적이고 신뢰성 있게 전송하기 위한 프로토콜입니다. TCP는 애플리케이션 계층과 인터넷 계층 사이에서 작동하며, 네트워크 통신을 위한 연결 지향형 프로토콜로 데이터를 syn, syn+ack, ack 처럼 패킷 단위로 나누어 전송합니다.
TCP의 주요 특징(위에 내용에서 이거 까지 말하기
- 연결 지향형 프로토콜: 데이터 전송 전에 송신자와 수신자가 서로 연결을 설정합니다. 이 연결을 통해 안정적인 데이터 전송이 가능해집니다.
- 신뢰성 보장: 데이터가 손실되거나 손상된 경우, TCP는 해당 데이터를 재전송하여 신뢰성을 보장합니다. 이를 위해 오류 검출 및 데이터 순서 복구 기능을 제공합니다.
- 흐름 제어 및 혼잡 제어: 송신자가 수신자의 처리 속도에 맞춰 데이터를 전송하도록 하여 네트워크의 과부하를 방지합니다.
꼬리질문) TCP의 동작 과정이 어떻게 돼?
- 연결 설정 (3-way handshake)
- SYN: 클라이언트가 서버에게 연결 요청(SYN 패킷)을 보냅니다.
- SYN-ACK: 서버가 연결 요청을 승인하고 응답(SYN-ACK 패킷)을 보냅니다.
- ACK: 클라이언트가 연결 승인(ACK 패킷)을 보내면 연결이 설정됩니다.
- 데이터 전송
- 데이터는 작은 패킷으로 나누어 전송됩니다. 각 패킷에는 순서 번호가 있어, 수신 측에서 원래의 순서대로 재조립할 수 있습니다.
- 수신 확인(ACK): 수신자는 각 패킷을 받을 때마다 송신자에게 확인 응답을 보냅니다. 이로써 송신자는 패킷이 제대로 전송되었는지 알 수 있습니다.
- 재전송: 만약 수신 확인(ACK)이 일정 시간 내에 도착하지 않으면, 송신자는 해당 패킷을 다시 전송합니다.
- 연결 종료 (4-way handshake)
- FIN: 클라이언트가 연결 종료 요청(FIN 패킷)을 보냅니다.
- ACK: 서버가 요청을 수락하고 확인 응답(ACK 패킷)을 보냅니다.
- FIN: 서버도 연결 종료 요청을 보냅니다.
- ACK: 클라이언트가 마지막 확인 응답을 보내고 연결이 종료됩니다.
TCP의 장점
- 신뢰성: 오류 검출, 재전송, 순서 제어 등을 통해 데이터가 안전하게 전송됩니다.
- 데이터 흐름 제어: 네트워크 상태에 맞춰 전송 속도를 조절하여 혼잡을 방지합니다.
- 윈도우 크기(Window Size): TCP는 수신자가 자신의 버퍼 크기에 맞춰 윈도우 크기를 설정합니다. 이 크기는 송신자가 한 번에 전송할 수 있는 데이터의 양을 결정합니다
- 슬라이딩 윈도우 기법: 데이터가 성공적으로 전송되면 윈도우가 이동(slide)하면서 새로운 데이터 전송을 허용합니다. 이 방식으로 송신자는 수신자의 처리 능력에 맞춰 점진적으로 데이터를 전송합니다.
-윈도우 크기 조정: 수신자가 자신의 처리 상태에 따라 윈도우 크기를 조정할 수 있습니다. 만약 수신자가 데이터를 처리할 여유가 있다면 윈도우 크기를 늘리고, 그렇지 않으면 줄입니다. - 데이터 순서 보장: 전송된 데이터가 순서대로 도착하도록 보장합니다.
TCP의 단점
- 오버헤드: 연결 설정 및 흐름 제어 등으로 인한 오버헤드가 발생합니다.
- 속도 저하: 신뢰성을 보장하기 위해 추가적인 절차가 필요하므로 UDP와 같은 비연결형 프로토콜보다 속도가 느릴 수 있습니다.
TCP와 다른 프로토콜의 비교
- **UDP(User Datagram Protocol)**와 달리, TCP는 연결을 설정하고 신뢰성을 보장하지만, UDP는 연결 없이 빠른 전송을 목표로 합니다.
- TCP는 파일 전송, 이메일, 웹 페이지 로딩 등 신뢰성이 중요한 애플리케이션에 적합합니다.
반응형
'전공살리기 > CS' 카테고리의 다른 글
[CS 면접 기본 - 웹의 시작 ] 6. REST API는 뭘까? 설계시 고려사항은? (3) | 2024.10.27 |
---|---|
[CS 기본 - 웹의 시작 ] 5. http통신에서 동기와 비동기의 차이는 뭘까? (0) | 2024.10.27 |
[CS 기본 - 웹의 시작 ] 4. https는 왜 쓸까? (2) | 2024.10.27 |
[CS 기본 - 웹의 시작 ] 2. DNS에 대해서 설명해봐 (0) | 2024.10.26 |
[CS 기본 - 웹의 시작 ] 1. 브라우저에서 도메인을 입력하고 웹사이트에 접속하는 과정 (0) | 2024.10.26 |