TCP(Transmission Control Protocol)에 대해서 TCP 는 네트워크 프로토콜의 국제표준기준 OSI 7 계층(Open System Interconnect)의 4 계층 (Transport) 속하며, 3 계층(Network)의 IP 프로토콜과 같이 사용되기 때문에, “TCP/IP” 라고도 불 린다. TCP 의 사용의 가장 큰 목적은 컴퓨터에서 실행되는 프로그램 간 데이터 유실 없이 안정적으로 전송하는 것이다.
데이터 유실을 최소화 하기 위하여 현재 가장 대표적으로 사용중인 전송 프로토콜이다.
TCP는 신뢰성있는 연결을 추구하기 때문에 연결을 생성하고 종료하는 순간에도 나름의 신뢰성 확보를 위해 핸드쉐이크(Handshake)라고 하는 특별한 과정을 거치게 된다. TCP를 사용하여 통신을 하는 각 종단은 핸드쉐이크 과정을 통해 어떤 TCP 옵션들을 사용할 지, 패킷의 순서 번호 동기화와 같이 통신에 필요한 몇 가지 정보를 주고 받는다.
TCP는 전화를 거는 것처럼 상대와 연결을 설정하고 통신을 시작한다. 절차는 아래와 같다.
Three Way Handshake
1) 클라이언트가 TCP 연결을 위하여 SYN패킷을 보내어 연결 요청 =
상대에게 통신을 하고 싶다는 메시지를 보낸다. (SYN)
2) 서버가 SYN 패킷을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 전송 해 준다.
상대는 그 메시지에 대한 응답 + 나도 통신 준비가 되었다는 메시지를 보낸다. (SYN-ACK)
3)클라이언트는 SYN + ACK 신호를 받았다는 의미로 ACK 패킷을 서버에 다시 보내어준다.
2번에서 받은 메시지에 응답을 보낸다. (ACK)
이와 같은 과정을 통해 나와 상대가 통신준비를 마쳤고, 현재 통신이 연결되어 있음을 보장하게 된다. 기존의 회선교환 방식과 유사하지만 단순히 서로 연결되어 있다는 것만 보장한다.
TCP 연결 해제 4-way Handshaking 사용
1)클라이언트는 서버에게 TCP 연결 종료를 위하여 TCP 헤더 flag에 있는 FIN을 보낸다.
통신종료 요청
2)서버는 FIN을 받고, 남은 데이터 저장을 위한 ACK를 클라이언트에게 보낸다.
종료요청을 받고 남은데이터를 발신자에게 보냄
3)그 이후, FIN을 클라이언트에게 보내어 연결 해제를 확인 했다는 신호를 보내어준다.
2번을 거친 후 연결해제 완료 신호를 발신자에게 보냄
4)클라이언트는 FIN을 받고, ACK를 보냄으로써 연결 해제가 된다.
발신자는 종료메세지를 수신자에게 받고 연결 해제
'CS > 네트워크' 카테고리의 다른 글
GET과 POST (0) | 2023.02.03 |
---|---|
우리가 구글 페이지를 어떻게 들어갈까? (0) | 2023.01.10 |
인증과 인가 ( 쿠키/세션/토큰/JWT) (0) | 2023.01.06 |
IPv4와 IPv6 (0) | 2023.01.05 |
도메인과 DNS (0) | 2023.01.05 |