[Network] TCP

HyunDong Lee·2021년 4월 26일
0

Network

목록 보기
4/10
post-thumbnail

TCP

네트워크를 4계층으로 나눌때 네트워크 인터페이스 계층, 인터넷 계층, 프랜스포트 계층, 어플리케이션 계층으로 나눈다. TCP, 트랜스 포트 계층의 가장 대표적은 프로토콜은 TCP, UDP중 하나이다. TCP는 웹이나 이메일과 같이 데이터가 정확하게 전달되어야 하는 통신에서 사용된다. 통신을 맺고 끊는 과정에서 클라이언트와 서버간 확인 절차를 거치는데, 이러한 특징으로 연결지향 프로톨이라고 한다. UDP는 VolIP나 동영상 스트리밍과 같이 전송 속도가 빨라야하는 통신에서 사용한다. TCP와 다르게 연결을 맺지 않고 한쪽에서 일방적으로 데이터를 보낸다. 이러한 특징을 비연결지향 프로토콜이라고 부른다.
tcp는 정확한 데이터 전달을 지향하기 때문에 전송에 신뢰성을 더하기 위해서 데이터를 세그먼트 단위로 분할하고, 전송 속도를 조절하며, 데이터가 제대로 전달되지 않았을 경우 재전송한다. 전송속도를 조절하고 데이터가 제대로 전달되지 않았을 경우 재전송한다.

TCP 헤더

이미지 출처

TCP의 세그먼트는 데이터 본체에 TCP헤더가 붙은 형태로 구성이 된다. 헤더에 포트 번호와 일련번호 같은 정보와 전달이 됐는지 확인할 때 사용되는 정보들이 포함되어있다.

TCP 통신은 커넥션을 맺는 단계를 3단계로 전행하며 이를 3방향 핸드쉐이크라고 부른다. 커넥션이 이루어지면 데이터를 전송할 수 있는 상태가 되고 데이터 전송이 끝나면 커넥션을 끊게된다.

3 way handshake

이미지 출처

tcp 소켓으로 클라이언트와 서버가 연결되는 과정을 3 way handshake라고 한다.
1. client는 server에 접속요청 SYNC를 하고 client는 SYNC_SENT 상태가 된다.
2. server는 요청 수락 SYNC+ACK를 보내고 server는 SYNC_RECEIVED 상태가 된다.
3. client는 server에 수락확인 ACK를 보내고 server는 ESTABLISHED 상태가 된다.

4 way handshake

3 Way가 연결을 초기화 하는것이라면 4-way는 연결된 세션을 종료하기 위해 수행되는 절차이다
이미지 출처

  1. client가 server에 연결을 종료 FIN 플래그를 전송한다. client는 종료신호를 기다리는 상태 FIN_WAIT1
  2. sever는 확인 메시지 ACK를 보내고 자신의 통신이 끝날 때까지 기다리게 한다. server는 CLOSE WAIT 상태 client는 종료 신호를 기다리겠다는 FIN_WAIT2 상태로 전환한다.
  3. server가 통신이 끝나면 이제 종료해도 된다는 FIN 플래그를 client에 전달. server는 LAST_ACK 상태로 전환, client는 TIME_WAIT 상태 전환한다.
  4. client는 연결 종료를 확인했다는 응답 ACK 플래그를 server로 보낸다. server 상태 CLOSED

참고
참고 1
참고 2

0개의 댓글