이전글 : [TCP] 연결수립 과정
TCP의 연결 준비
연결의 식별자
TCP는 많은 연결을 동시에 처리할 수 있어야 합니다. 각 연결을 유일 하도로 식별하기 위해서
연결이 이루어지는 두 장비의 소켓 식별자(IP 주소 및 포트번호)를 연결의 식별자로 사용합니다.
연결의 데이터 저장 : TCB(전송 제어 블록)
각 연결에 대한 독립적인 데이터를 유지 하기 위해서 TCB(transmission control block)라는
데이터 구조를 사용합니다.
TCB에는 연결를 식별하기 위한 정보, 송수신되는 데이터를 가리키는 버퍼, 승인처리와 관련된 데이터
등등...이 저장됩니다.
일반적으로 TCP는 서버/클라이언트를 구조를 가지게 되는데 클라이언트 입장에서는 서버의 접속 정보를
알고 있기 때문에 TCB정보를 바로 생성할 수 있습니다.
하지만 서버의 경우 어떠한 클라이언트가 접속 할지 모르기 때문에 우선 클라이언트의 정보를 지정하지 않고
생성한 다음에 연결이 들어 올 때 클라이언트 정보를 TCB에 연결시킵니다.
TCP 연결 수립 과정 : 쓰리 웨이 핸드 셰이크
연결 수립 기능
TCP는 연결 수립시 첫 번째 통신에서 사용 할 초기 순서번호를 지정하고 상대방에게 알립니다.
TCP 연결 수립에 사용 되는 메시지
메 시 지 | 설명 |
SYN(synchronize) | 동기화 메시지. 연결을 초기화하고 수립한다. 이 메시지는 장비간의 순서 번호를 동기화 시킨다. |
ACK(acknowledgment) | 승인 메지시. 이 메시지는 SYN나 FIN의 메시지 대해서 잘 받았다는 응답을 처리한다. |
#TCP가 해당 메시지를 전달하는 방법은 TCP 헤더의 제어 비트의 플레그를 통해서 제어합니다.
연결 수립에서 사용되는 FSM
상 태 | 설 명 |
CLOSE | 연결 수립을 시작하기전의 기본 상태(연결 없음) |
LISTEN | 클라이언트의 SYN(연결 초기화 요청)메시지를 기다리는 상태 |
SYN-SENT | 자신의 SYN 메시지를 보내고 상대방의 응답 SYN를 기다리는 상태 |
SYN-RECEIVED | 상대방의 SYN 메시지를 전달받고 자신의 SYN 메시지를 보내고 ACK를 기다리는 상태 |
쓰리 웨이 핸드 셰이크 연결 수립 과정
위 그림과 같이 3번의 통신을 통해서 TCP연결이 수립되기 때문에 "쓰리 웨이 핸드 셰이크" 라고 불립니다.
연결 수립시에는 서버에서 클라이언트의 SYN 메시지를 받고 곧바로 SYN와 ACK를 보낼 수 있기 때문에
3회에 메시지로 연결이 가능 합니다.
연결 종료시에는 서버에서 클라이언트의 FIN 메시지를 받고 곧바로 FIN메시지를 보낼 수 없습니다.
이 내용은 연결 종료 글에서 설명드리겠습니다.
TCP 연결 수립 순서 번호 동기화와 인자 교환
TCP는 패킷의 순서를 보장을 위해서 TCP연결 수립시 순서번호에 대한 동기화 작업을 진행합니다.
ISN(초기 순서 번호)은 예전에는 4 마이크로초(1/1,000,000 초)마다 증가하는 카운터를 사용해서 32비트의 숫자를
사용 했었는데 이런 경우 이전의 ISN을 보고 ISN을 예측 할 수 있어서 이런 문제를 보완하기 위해서
무작위를 사용한다.
TCP연결 수립 SYN 메시지에 새로 생성 된 ISN을 TCP의 헤더의 순서번호 필드에 입력해서 보내고 받은 쪽에서는
그 ISN에 +1을 한 값을 ACK 메시지의 승인번호 필드에 입력해서 보내는 형식으로 동기화 작업을 진행합니다.
위의 예제는 클라이언트의 ISN은 100이고 서버의 ISN은 2080으로 지정된 예제입니다.
ESTABLISHED상태에서 데이터를 주고 받을 때 마다 ISN으로 지정된 순서번호가 증가해서
데이터를 얼마나 전송되었는지 확인하며 승인번호를 기준으로 상대방이 데이터를 받았는지 확인합니다.
자세한 내용은 TCP 데이터 송수신 부분에서 설명을 드리겠습니다.
'네트워크 > TCP' 카테고리의 다른 글
[TCP] 슬라이딩 윈도우 데이터 송신 및 승인2 (0) | 2019.10.02 |
---|---|
[TCP] 슬라이딩 윈도우 데이터 송신 및 승인 (0) | 2019.10.01 |
[TCP] 메시지(세그먼트) 구조 (0) | 2019.09.30 |
[TCP] 연결 종료 과정 (0) | 2019.09.29 |
[TCP] 연결 수립 과정 1(TCP FSM) (0) | 2019.09.22 |