Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- factory
- builder
- spring security
- Spring
- synchronized
- OAuth 2.0
- Google OAuth
- java
- Volatile
- 일급 컬렉션
- 일급 객체
- Dependency Injection
- lombok
Archives
- Today
- Total
HJW's IT Blog
TCP: Transmission Control Protocol 본문
TCP란 전송된 데이터를 신뢰성 있게 receiver 측에 전송을 보장하는 프로토콜이다.
TCP 특징
- Point to Point
- one sender one receiver
- Connection-Oriented
- 신뢰성이 높다
- Handshaking 과정 필요
- Pipelined
- Flow/Congestion Control을 위해
- Maximum Segment Size
- Full Duplex Daa
- 양방향 통신이 가능

TCP는 다음으로 이루어져 있다.
- Pipelined Segments
- Cumulative ACK
- Single Retransmission Timer
- Triggered by
- Timeout
- Duplicate ACK
- Triggered by
TCP Retransmission Scenario

- ACK가 손실되었을 때 이다.
- Host A 가 보낸 데이터를 Host B가 잘 받았지만 ACK 100 이 손실
- Timeout 이 걸리고 재전송

- 이 경우는 time의 timeout 시간을 너무 짧게 설정하여 발생한다

- Host A가 seq 92와 seq 100을 보낸 후 Host B는 이에대한 ACK 100, 120을 보내지만 ACK 100이 유실된다.
- 이때 Host A는 ACK 100 이 오지 않았지만 ACK 120 을 받았으므로 ACK 100 또한 잘 전송되었다는 것을 알 수 있다.
다음은 receiver의 event와 action 에 대해 살펴보자
| EVENT AT RCV | RCV ACTION |
| 예상 순서 번호와 함께 도착한 순서대로 세그먼트의 도착. 예상 순서 번호까지의 모든 데이터는 이미 ACK(수신 확인)을 받음 | 지연된 ACK. 다음 세그먼트를 기다리며 최대 500ms까지 대기합니다. 다음 세그먼트가 없다면 ACK를 전송함 |
| 예상 순서 번호와 함께 도착한 순서대로 세그먼트의 도착. 하나의 다른 세그먼트는 아직 ACK 대기 중 | 즉시 단일 누적 ACK를 보내서, 예상 순서대로 도착한 두 세그먼트를 모두 ACK |
| 예상한 순서 번호보다 높은 순서 번호를 가진 순서와 다른 세그먼트의 도착. 갭이 발견 | 즉시 중복 ACK를 보내서, 다음에 예상되는 바이트의 순서 번호를 나타냅니다 |
| 갭을 부분적으로나 완전히 채우는 세그먼트의 도착 | 갭의 하위 끝에서 세그먼트가 시작된다면, 즉시 ACK를 전송합니다 |
TCP 는 fast retransmit 이 가능하다
- Timeout 을 기다리는것은 비 효율적
- 중복 ACK를 사용하여 유실을 감지

Timeout
Timeout 이 너무 짧을 경우, 불필요한 retransmission이 발생
너무 길 경우 너무 느린 응답 발생
SampleRTT: segment 전송에서 ACK 수신까지 걸린 시간
EstimatedRTT = (1- a)*EstimatedRTT + a*SampleRTT
a = 0.125
TimeoutInterval : EstimatedRTT + 4DevRTT
safety margin
- DevRTT = (1-b)DevRTT +b|SampleRTT - EstimatedRTT|
- b = 0.25
- RTT 계산 예제

'컴퓨터 네트워크' 카테고리의 다른 글
| Chapter 4.5: Routing Algorithm (0) | 2023.05.16 |
|---|---|
| Connection Oriented Transport: TCP (0) | 2023.04.17 |
| Pipelined Protocol (0) | 2023.04.06 |
| UDP: User Datagram Protocol/Principles of Reliable Data Transfer (0) | 2023.04.05 |
| Transport-Layer Services & Multiplexing (0) | 2023.04.05 |