앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.15 - [Computer Science/네트워크] - [네트워크] Transport-Layer Protocols
2023.04.17 - [Computer Science/네트워크] - [네트워크] Principles of Reliable Data Transfer
1. TCP란?
- TCP(Transmission Control Protocol)은 Connection-Oriented 프로토콜이라고도 불리는데, 이는 프로세스가 데이터를 보내기 전에 두 개의 프로세스가 서로 handshaking이라는 작업을 해야 하기 때문입니다.
- 따라서 그들은 데이터가 아닌 예비의 세그먼트를 보내 데이터 전송을 보장하는 파라미터를 먼저 할당합니다.
- 또한 TCP는 하나의 논리적인 연결을 통해 두 개의 엔드 시스템을 연결합니다. 이를 point-to-point라고 하는데, 하나의 송신자와 하나의 수신자가 존재하기 때문입니다. 따라서 multicasting이라 불리는 하나의 전송에 하나의 송신자와 다수의 수신자에게 전송하는 것이 불가능합니다.
- TCP는 full-duplex service라고도 불리는데, 이는 호스트 A에서 호스트 B로 데이터의 전송과 호스트 B에서 호스트 A까지 데이터의 전송이 동시에 가능하기 때문입니다.
- 그 밖에도 reliable, in-order byte stream, MSS, cumulative ACK, pipelining, flow control, congestion control 등등 여러 특징이 있습니다.
2. Three-Way Handshaking
- 어떤 호스트에서 실행중인실행 중인 프로세스가 다른 호스트에서 실행 중인 프로세스와 연결을 원한다고 가정해 봅시다.
- 이때 연결을 요청하는 프로세스를 클라이언트라 하고, 요청을 받는 프로세스를 서버라 합시다.
- 클라이언트는 특수한 TCP 세그먼트를 서버에게 전송합니다.
- 서버도 이 세그먼트를 받으면 특수한 TCP 세그먼트를 다시 클라이언트에게 응답합니다.
- 최종적으로 클라이언트가 다시 응답하면 연결이 완료됩니다.
- 첫 번째와 두 번째 세그먼트에는 payload가 존재하지 않지만, 세 번째 세그먼트에는 payload가 적재될 수 있습니다.
3. After HandShaking
- 연결이 된 후, 두 개의 프로세스는 서로에게 데이터를 전송할 수 있습니다.
- 이때 TCP가 최대로 잡아서 세그먼트에 넣을 수 있는 데이터의 크기는 maximum segment size(MMS)에 의해 제한됩니다.
- MSS는 일반적으로 동일한 호스트에 전송할 수 있는 link-layer의 frame의 크기에 의해 결정됩니다.
- TCP/IP header length는 일반적으로 40 바이트이므로, 이에 맞게 적절히 크기를 정해야 합니다.
- TCP 상위 계층에서 데이터를 받으면 전처리를 거친 후, send buffer로 보냅니다. 그리고 해당 데이터는 시간이 흘러 네트워크 계층으로 가게 됩니다.
- 이러한 과정으로 도착지에 도착한 데이터는 TCP receive buffer에 저장되고, 어플리케이션이 해당 버퍼에서 데이터를 읽어옵니다.
- 따라서 연결의 양측은 자신만의 send buffer와 receive buffer를 소유하고 있습니다.
참고
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업
Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년
Chat GPT, Bing AI
다음 글에서는 TCP - Segment Structure에 대해 알아보겠습니다.
2023.04.17 - [Computer Science/네트워크] - [네트워크] TCP - Segment Structure
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] TCP - RTT Estimation and Timeout (0) | 2023.05.03 |
---|---|
[네트워크] TCP - Segment Structure (0) | 2023.04.17 |
[네트워크] Selective Repeat (SR) (0) | 2023.04.17 |
[네트워크] Go-Back-N (GBN) (0) | 2023.04.17 |
[네트워크] Pipelined Reliable Data Transfer Protocols (0) | 2023.04.17 |