목차
- Overview
- TCP 세그먼트 구조
- TCP 시퀀스 번호, ACK
- RTT(rount trip time), timeout
- TCP 신뢰성 있는 데이터 전송
- TCP fast retransmit
- TCP flow control
- TCP Connection Management
- Syn Flood Attack
1. Overview
2. TCP segment structure
3. TCP 시퀀스 번호, ACK
데이터 스트림의 첫 번째 바이트는 0
TCP가 데이터 스트림에서 500개의 세그먼트 구성
첫 번째 세그먼트에는 시퀀스 번호 0이 할당
두 번째 세그먼트에는 시퀀스 번호 1000이 할당
MMS, MTU:
MSS: Maximum Segment Size
MTU: Maximum Transmission Unit
시퀀스 번호:
첫 번째: 초기 시퀀스 번호
두 번째 ~: 초기 시퀀스 번호 + 전송 바이트 수
ACK:
다른 쪽에서의 다음 바이트 시퀀스 번호
누적 ACK:
호스트 A는 호스트 B로부터 바이트 0~535를 포함하는 세그먼트 하나와 바이트 900~1000을 포함하는 세그먼트 하나를 받았음
어떤 이유로 A는 바이트 536~899를 수신하지 못했음
호스트 A는 B의 데이터 스트림을 다시 생성하기 위해 바이트 536(그리고 그 이후)을 기다리고 있음
따라서 B의 다음 세그먼트에는 ack 번호 필드에 536이 포함됨
TCP는 스트림에서 첫 번째 누락된 바이트 전까지만 바이트를 승인(누적 ack)
Example
4. RTT(rount trip time), timeout
타임 아웃을 설정하기 위해 RTT를 측정해야 함
SampleRTT: 세그먼트 전송 후 ACK 수신까지의 측정 시간
EstimatedRTT: 샘플 RTT의 과거 누적 평균
safety margin: 예상 RTT의 편차에 비례
타임 아웃 간격: EstimatedRTT + safety margin
5. TCP 신뢰성 있는 데이터 전송
TCP는 IP의 신뢰할 수 없는 서비스 위에 rdt 서비스를 만듦
- 파이프라인 세그먼트
- 누적 ack
- 송신자는 돌아온 ACK에 맞추어 데이터를 보냄
- 수신자는 올바른 데이터를 받을 때마다 ACK를 누적해서 더함 - 단일 재전송 타이머
- 타임 아웃 발생
- 중복 ack
6. TCP fast retransmit
TCP fast retransmit 전략: 호스트 A가 중복 ack를 3개 이상 받을 경우 Timeout이 일어나기 전이라도 데이터를 재전송함
7. TCP flow control
상대방이 데이터를 받을 수 있는지 없는지를 판단하여 데이터를 보내는 전략
receive window 필드를 활용하여 flow control을 제공함
송신자가 큰 파일을 수신자에게 TCP 커넥션을 통해 보낸다고 가정
수신자는 RcvBuffer에 커넥션을 할당함
수신자는 데이터를 받을 때마다 RcvBuffer에 대한 상태를 송신자에게 알림
송신자는 수신자의 버퍼 상태에 맞추어 데이터를 보냄
8. TCP Connection Management
handshake: TCP를 시작하기 위한 통신
3-way handshake
- 클라이언트가 서버한테 커넥션 요청을 보냄
- 서버가 커넥션에 대한 ACK를 보냄
- 클라이언트가 다시 ACK를 보냄
FIN: 커넥션 종료
- 종료를 원하는 쪽에서 FIN을 보냄
- FIN을 받은 쪽에서 ACK로 응답
9. Syn Flood Attack
커넥션을 활용한 공격
- 공격자가 봇넷(공격자에 의해 좀비화된 디바이스)에게 서버와 커넥션을 맺으라는 요청을 보내도록 함
- 타겟 서버는 TCP 커넥션을 승인하기 위한 SYN-ACK을 보냄
- 봇넷에서는 서버가 보낸 SYN-ACK 패킷에 대한 ACK를 보내지 않음
- 서버는 반쯤 열린 커넥션이 계속 많아지고 리소스가 가득 차게 됨
- 실질적인 클라이언트가 서버를 이용하고자 할 때 서버는 리소스가 남지 않아서 클라이언트의 요청을 받아줄 수 없음
'전공 > 네트워크' 카테고리의 다른 글
[네트워크] #15 네트워크 계층 (Data plane, Control plane) (1) | 2023.12.05 |
---|---|
[네트워크] #14 혼잡 제어 공식, TCP 혼잡 제어 (2) | 2023.10.23 |
[네트워크] #12 RDT (신뢰성 있는 데이터 전송), RDT 오토마톤 표현, 파이프라인 전송 (1) | 2023.10.19 |
[네트워크] #11 UDP (특징, 세그먼트 구조), 전송 계층에 체크섬이 있는 이유 (0) | 2023.10.19 |
[네트워크] #10 전송 계층 서비스, 다중화&역다중화 (1) | 2023.10.19 |