728x90
1 : 1 소켓 연결
- 연결 설정 과정(Handshaking) 필요
- 서버 연결 소켓: 서버 IP 주소와 서버 Port 번호 공유 가능
- 멀티캐스팅(multicasting) 지원 불가
- 멀티캐스팅은 UDP에서 지원된다. TCP에서는 불가능하다.
Full-duplex(전이중) 통신
- 양방향 동시 세그먼트 전송
- MSS(Maximum Segment Size): 세그먼트의 데이터 필드 최대 크기(보통 1460 바이트이다.)
- 송신 버퍼에서 MSS 단위로 송신
바이트 스트림(Byte Stream) 전송
- 송신 프로세스가 소켓의 송신 버퍼에 전달(write)한 바이트 스트림을 수신 소켓의 수신 버퍼에 순서대로 전송한다.
- 송신 프로세스는 송신 버퍼에 임의의 크기의 바이트열을 쓴다.(write)
- TCP는 세그먼트 단위(MSS)로 수신 버퍼에 전달한다.
- 수신 프로세스는 수신 버퍼에서 원하는 크기의 바이트열을 읽는다.(read)
3 - way Handshake
- 클라이언트와 서버 간에 동기(synchronization)를 맞추는 과정
- 동기 정보: 소켓 주소, 시작 순서 번호(Initial Sequence Number), 수신 윈도우 크기
- 시작 순서 번호는 재전송, 오류복구를 위해 필요하다.
- 시작 순서 번호는 SYN 세그먼트 확인번호를 보낼 때 (SN + 1)로 보내진다.
- 수신 윈도우는 수신자가 받을 수 있는 크기로, 처음 연결 설정할 때는 버퍼의 크기랑 같다.
- Client가 Server에게 SYN 세그먼트를 보낸다.
- Server는 SYN 세그먼트를 받았다는 것을 Client에 알린다. 이때 SYN 세그먼트와 ACK 세그먼트를 합쳐 보낸다.
- Client에서 보면, 자신이 보낸 세그먼트에 대한 ACK도 왔고 Server로부터 온 SYN 세그먼트를 잘 받았다고 Server에게 알린다.
SYN 세그먼트
- 연결 설정을 위해 클라이언트 TCP가 서버 TCP에 전송
- SYN 비트 1 설정
- 시작 순서 번호(ISN) 설정
- ACK를 위해 순서번호 1 소비(가상의 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
3 - way Handshake
- Full - close: 서버 ACK 세그먼트와 FIN 세그먼트 통합
- Half - close: 4 - way handshake
FIN 세그먼트
- ACK를 위해 순서 번호 1 소비
ACK 세그먼트
- 데이터가 없으면 순서 번호가 소비되지 않는다.
클라이언트 대기시간(Time-Wait)
- 마지막 ACK 세그먼트 손실 시에 재전송되는 FIN 세그먼트를 처리
클라이언트 / 서버 상태 변화
728x90
'Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] TCP 신뢰 전송과 흐름 제어 (1) | 2022.10.31 |
---|---|
[컴퓨터 네트워크] TCP 세그먼트 구조와 재전송 타이머(TCP Segment & Retransmission Timer) (0) | 2022.10.13 |
[컴퓨터 네트워크] 오류 복구3: Selective_Repeat ARQ (0) | 2022.10.09 |
[컴퓨터 네트워크] 오류 복구2: Go-back-N ARQ (0) | 2022.10.09 |
[컴퓨터 네트워크] 오류 복구1: Stop-and-wait ARQ (0) | 2022.10.05 |
댓글