네트워크를 4계층으로 나눌때 네트워크 인터페이스 계층, 인터넷 계층, 프랜스포트 계층, 어플리케이션 계층으로 나눈다. TCP, 트랜스 포트 계층의 가장 대표적은 프로토콜은 TCP, UDP중 하나이다. TCP는 웹이나 이메일과 같이 데이터가 정확하게 전달되어야 하는 통신에서 사용된다. 통신을 맺고 끊는 과정에서 클라이언트와 서버간 확인 절차를 거치는데, 이러한 특징으로 연결지향 프로톨이라고 한다. UDP는 VolIP나 동영상 스트리밍과 같이 전송 속도가 빨라야하는 통신에서 사용한다. TCP와 다르게 연결을 맺지 않고 한쪽에서 일방적으로 데이터를 보낸다. 이러한 특징을 비연결지향 프로토콜이라고 부른다.
tcp는 정확한 데이터 전달을 지향하기 때문에 전송에 신뢰성을 더하기 위해서 데이터를 세그먼트 단위로 분할하고, 전송 속도를 조절하며, 데이터가 제대로 전달되지 않았을 경우 재전송한다. 전송속도를 조절하고 데이터가 제대로 전달되지 않았을 경우 재전송한다.
TCP의 세그먼트는 데이터 본체에 TCP헤더가 붙은 형태로 구성이 된다. 헤더에 포트 번호와 일련번호 같은 정보와 전달이 됐는지 확인할 때 사용되는 정보들이 포함되어있다.
TCP 통신은 커넥션을 맺는 단계를 3단계로 전행하며 이를 3방향 핸드쉐이크라고 부른다. 커넥션이 이루어지면 데이터를 전송할 수 있는 상태가 되고 데이터 전송이 끝나면 커넥션을 끊게된다.
tcp 소켓으로 클라이언트와 서버가 연결되는 과정을 3 way handshake라고 한다.
1. client는 server에 접속요청 SYNC를 하고 client는 SYNC_SENT 상태가 된다.
2. server는 요청 수락 SYNC+ACK를 보내고 server는 SYNC_RECEIVED 상태가 된다.
3. client는 server에 수락확인 ACK를 보내고 server는 ESTABLISHED 상태가 된다.
3 Way가 연결을 초기화 하는것이라면 4-way는 연결된 세션을 종료하기 위해 수행되는 절차이다
이미지 출처