1. TCP 연결의 특징
ㅇ 가상의 논리적 연결 => 세션
- 종단 호스트 내 프로세스 간에 만 존재하는 연결
. 다만, 중간 네트워크 요소인 라우터는,
.. 이 연결을 감지못하고, 단지 데이터그램 덩어리 만을 보게됨
ㅇ 느슨한 연결 (Loosly Connected) => 연결지향적 (Connection-oriented)
- 같은 전송계층의 UDP가 비연결성(connectionless)인 것과는 달리, TCP는 연결지향적 임
. TCP의 경우, 다소 느슨한 연결(Loosly Connected)을 갖음
.. 강한 연결을 의미하는 `가상회선` 보다는, 오히려 `연결지향적`이라고 말함
.. 이는, 논리적으로 연결되어 있지만, 데이터 패킷이 다양한 경로를 통해 전달됨을 뜻함
ㅇ 멀티캐스트 불가능 => 단대단 전송 방식 (1:1) 만 가능
- 단일 송신자와 단일 수신자 간에 단일 경로 연결이 설정됨
. 한편, 차세대 전송계층 프로토콜로써, ☞ MPTCP (다중 세션 지원) 참고
ㅇ 동시 송수신 가능 => 양방향 연결 (Full-Duplex)
- 연결에 대한 데이터 전송 방향은 양방향성 임
ㅇ 연속적인 바이트 흐름 => 스트림 기반 (Stream-oriented)
- 패킷을 개별 처리 않고, 바이트 스트림으로 데이터를 주고받음
. 데이터의 순서와 무결성을 보장
※ TCP 연결의 상태를 쉽게 확인하는 명령어 : netstat
- 연결 상태 (ESTABLISHED, CLOSED, LISTEN, TIME_WAIT, SYN_SENT 등)
- 프로토콜 (TCP, UDP 등)
- 연결에 사용된 IP 주소 (IPv4 주소, IPv6 주소)
- 포트번호 (로컬 및 상대방)
- 통계 등
2. TCP 연결의 식별
ㅇ 연결의 식별 : 4 Tuple이 (4개 요소가) 하나의 연결을 식별
- 2개의 IP 주소 및 2개의 포트 번호에 의한 4개 요소가 하나의 연결을 식별함
. 양 끝점(endpoint)에서의 (송신/수신 IP 주소, 포트번호)에 의해 식별됨
- 즉, 아래 4 값에 의해 연결(커넥션) 및 그 방향(연결 요청/허락)도 식별이 가능
. (발신지 IP 주소, 발신지 포트 번호, 수신지 IP 주소, 수신지 포트 번호)
ㅇ 응용과의 연결점 식별 ☞ 포트 번호 참조
- TCP는 포트 번호에 의해 어플리케이션(응용)과의 연결점을 식별
3. TCP 연결의 설정,해제,강제종료
ㅇ TCP 연결의 설정 및 해제 ☞ TCP 상태 참조
- 연결설정 ☞ TCP 3-way Handshaking
- 연결해제 ☞ TCP 4-way Handshaking
. `FIN 세그먼트 및 그에대한 FIN-ACK`의 2 쌍(4개 세그먼트)으로
즉, 4-way 핸드세이크로써 종료함
* 3번의 Handshaking으로 연결을 설정하고, 3번 또는 4번의 패킷 교환으로 연결을 끊음
ㅇ TCP 연결의 강제 종료 : TCP Reset 요구(RESET 세그먼트) 기능
- 존재하지 않는 포트로의 연결 요구시, 비정상적인 상황에 의한 연결 중단 요구,
상대측의 긴 휴지 상태를 확인한 후 강제 연결 종료