Chapter3.5 TCP 연결관리
- TCP 연결
- TCP 연결 설정
- TCP 연결 해제
- TCP 상태 변화
TCP 연결
- 1:1 소켓 연결
- 연결 설정 과정(handshaking) 필요
- 서버 연결 소켓: 서버 IP 주소와 서버 Port 번호 공유 가능
→ 하지만, 클라이언트 IP 주소, Port 번호가 다르므로
같은 호스트의 IP 주소와 Port 번호를 가졌더라도, 각각의 소켓이 구분 가능하다! - 멀티캐스팅(multicasting) 지원 불가
* 소켓주소: IP 주소 + Port 번호


- Full-duplex(전이중) 통신
- 양방향 동시 세그먼트 전송
- MSS(Maximum Segment Size): 세그먼트의 데이터 필드 최대 크기 (보통 1460 바이트)
- 송신 버퍼에서 MSS 단위로 송신
- 바이트 스트림(Byte Stream) 전송
- 송신 프로세스가 소켓의 송신 버퍼에 전달(write)한 바이트 스트림을 수신
소켓의 수신 버퍼에 순서대로 전송 - 송신 프로세스는 송신 버퍼에 임의의 크기의 바이트열을 씀(write),
TCP는 세그먼트 단위(MSS)로 수신 버퍼에 전달,
수신 프로세스는 수신 버퍼에서 원하는 크기의 바이트열을 읽음(read)
TCP 연결 설정
- 3-way Handshake
- 클라이언트와 서버 간에 동기(synchronization)를 맞추는 과정
- 동기 정보: 소켓 주소, 시작 순서 번호(Initial Sequence Number), 수신 윈도우 크기(버퍼의 크기)
- SYN 세그먼트
- 연결 설정을 위해 클라이언트 TCP가 서버 TCP에 전송
- SYN 비트 1 설정
- 시작 순서 번호(ISN) 설정
- ACK를 위해 순서번호 1 소비
(가상의 1 바이트 데이터 전송)
* ACK: SN + 1
- SYN+ACK 세그먼트
- SYN 세그먼트를 수신한 서버 TCP가 클라이언트 TCP에 전송
- SYN 비트와 ACK 비트 1 설정
- 시작 순서 번호(ISN) 설정
- 확인 번호(ACK) 설정
- 수신 윈도우 크기 설정
- ACK를 위해 순서번호 1 소비
(가상의 1 바이트 데이터 전송) - 이후 DATA 세그먼트 전송
- ACK 세그먼트
- SYN+ACK 세그먼트를 수신한 클라이언트 TCP가 서버 TCP에 전송
- ACK 비트 1 설정
- 확인번호 (ACK) 설정
- 수신 윈도우 크기 설정
- 데이터 포함 가능
- 데이터 미포함 시에는 순서 번호 소비하지 않음
- 이후 DATA 세그먼트 전송
TCP 연결 해제
- 4-way Handshake
*ACK와 FIN 세그먼트를 하나로 합쳐서 보낼 수도 있다.
- 3-way Handshake
- Full-close: 서버 ACK 세그먼트와 FIN 세그먼트 통합
- Half-close: 4-way handshake
- FIN 세그먼트
- ACK를 위해 순서 번호 1 소비
- ACK 세그먼트
- 데이터가 없으면 순서 번호 소비 없음
- 클라이언트 시간 대기(Time-Wait)
- 마지막 ACK 세그먼트 손실 시에 재전송되는 FIN 세그먼트 처리
- 일반적으로 30초
TCP 상태 변화
- 클라이언트 상태 변화
'CS > 네트워크' 카테고리의 다른 글
[컴퓨터네트워크] Chapter3.6 TCP 신뢰 전송과 흐름 제어 (0) | 2023.12.14 |
---|---|
[컴퓨터네트워크] Chapter3.5 TCP 세그먼트 구조와 재전송 타이머 (0) | 2023.12.12 |
[컴퓨터네트워크] Chapter3.4 오류복구3_Selective_Repeat ARQ (1) | 2023.12.03 |
[컴퓨터네트워크] Chapter3.4 오류복구2_Go-Back_N ARQ (0) | 2023.12.02 |
[컴퓨터네트워크] Chapter3.4 오류복구1_Stop-and-Wait ARQ (1) | 2023.12.01 |