2019. 7. 15. 00:06ㆍNetwork
TCP segment
source port#, dest port #
socket에 전달 위함
sequence number, acknowledgement number
reliable transfer 위함
TCP flow control
Sender로부터의 segment 전달 속도가 Receiver의 application으로 전달되는 속도보다 빠르면
Socket buffer에서 data drop 발생 가능하다.
이런 Data drop을 막기 위해 receiver는 남은 버퍼 공간을 TCP header를 통해 sender에게 전달하고,
sender는 전송 속도를 제한한다. 이러한 작업을 TCP flow control이라고 한다.
TCP congestion control
네트워크 트래픽이 높은 상황을(패킷의 유실 또는 긴 대기시간) 탐지하고 sender에서 데이터 보내는 속도 조절
3가지 단계
1) slow start
네트워크 병목현상이 발생하는 전송속도를 알지 못하기에 천천히 시작
첫 loss 발생할 때까지 exponential하게 속도 증가
2) additive increase
임계점 지나면 linear하게 속도 증가
3) multiplicative decrease
유실 발생시 속도 반으로 감소
TCP connection management ("handshake")
연결 성립 (Three-way handshake)
TCP sender와 receiver는 data segment를 교환하기 전에 연결 성립을 진행한다.
Step 1. 클라이언트가 TCP SYN segment 전송
Step 2. 서버에서 SYNACK 전송
클라이언트에서 서버가 통신 가능 상태임을 확인
Step 3. 클라이언트에서 SYNACK 받은 이후, SYNACK에 대한 ACK 메시지 응답 + 데이터 전송
서버에서 클라이언트가 통신 가능 상태임을 확인
Three-way인 이유
TCP 통신은 양방향성 통신이다.
클라이언트와 서버가 각각 서로에게 패킷을 보낼 수 있는 상태인 것을 확인하고 (SYN / SYNACK) 통신을 시작한다.
연결 해제 (Four-way handshake)
Step 1. 클라이언트가 TCP FIN segment 전송
Step 2. 서버에서 ACK 전송. 데이터를 모두 보낸 이후, 연결 해제 이후 FIN 전송
Step 3. 클라이언트에서 FIN 수신, ACK 응답
Timed wait: ACK 메시지 유실될 경우 서버 종료되지 못하고 무한 대기할 수 있기 때문
Step 4. 서버에서 ACK 수신. 연결 종료
SYN: Synchronize sequence number
ACK: Acknowledgement
'Network' 카테고리의 다른 글
[네트워크] Link layer (0) | 2019.07.16 |
---|---|
[네트워크] Network layer (0) | 2019.07.15 |
[네트워크] Transport layer (1) (0) | 2019.07.14 |
[네트워크] Application layer (1) (0) | 2019.07.11 |
[네트워크] Introduction (0) | 2019.07.10 |