TCP의 특징
TCP는 아래와 같은 특징을 가지고 있습니다.
1. TCP: Transmission Control Protocol의 약자입니다.
2. Layer 4 protocol
3. Controls the transmission
4. Connection
5. Require handshake
6. 20bytes headers Segment (can go to 60)
7. Stateful
TCP의 Use case
1. Reliable Communication (e.g. chat 기능)
2. Remote shell
3. Database connections
4. Web communications
5. Any bidirectional communications.
TCP Connection
- Connection은 Layer 5입니다. (Session)
- Connection은 Client와 Server 사이의 합의라고 볼 수 있습니다.
- 데이터를 보내기 위해서는 Connection을 만들어야합니다.
- Connection은 4가지 속성으로 정의됩니다.
- Source IP - Source Port
- Destination IP - Destination Port
- Conection 밖으로는 데이터를 보낼 수 없습니다.
- 종종 Socket 혹은 file descriptor로 불립니다.
- 3-way TCP handshake가 필요합니다.
- Segments는 연속적이고 순서가 있습니다.
- Segments는 Acknowledged 되어야 합니다.
- Lost Segments는 재전송됩니다.
TCP Connection Establishment (3-way handshake)
App1 (10.0.0.1)이 AppX (10.0.0.2) 에 데이터를 보내고 싶다고 가정합니다.
1. App1이 SYN 메세지를 AppX에 전달합니다.
2. AppX가 SYN/ACK을 되돌려줍니다.
3. App1이 ACK을 보냅니다.
왓츠앱은 300만 tcp connection을 서버에 연결할 수있다고합니다.
TCP Sending Data
1. App1이 데이터는 segment에 포함시키고 보냅니다.
2. AppX가 Segment를 Acknowledge 합니다.
그러면 여러개의 Segment를 보내면 순서가 어떻게 되는걸까요?
TCP Acknowledgement
여러 개의 데이터(seq1, seq2, seq3)를 받고 난 후 마지막에만 ACK을 보내도 괜찮습니다.
TCP Lost data
3번 데이터를 잃는 경우
받는 서버는 ACK2까지만 보내고
보내는 서버가 다시 요청을 보내서 (Seq3) 다시 ACK3을 보냅니다.
TCP Closing Connection (4-way handshake)
1. App1이 FIN을 보내고
2. AppX가 ACK을 보냅니다.
3. AppX가 FIN을 보내고
4. App1이 ACK을 보냅니다.
TCP Connection State
TCP는 Stateful Protocol 입니다.
따라서, Client와 Server는 State를 유지 하고 있습니다.
아래와 같은 상태들을 유지합니다.
왼쪽이 Client, 오른쪽이 Server 입니다.
Established state 이후에 client가 FIN을 보낸 순간부터 각 state가 정의되어 있습니다.
'CS 지식 > 네트워크 기본 다지기' 카테고리의 다른 글
TCP Flow Control & Congestion Control (0) | 2024.09.23 |
---|---|
TCP Segment 구조 (0) | 2024.09.23 |
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.