네트워크

TLP(Transport Layer Protocol) - 2. TCP(Transmission Control Protocol)

뽀루피 2024. 7. 19. 00:16

IP의 단점

  • 데이터 전달이 제대로 안 이루어질 수 있다.
  • 데이터를 보내기만 하고 잘 전달됐는지 확인할 수 없다.
  • 라우팅 과정에 패킷이 버려질 수 있다.
  • framing이 제대로 안 이루어져 데이터가 손상될 수 있다.

이러한 단점들을 보안하기 위해 만들어진 프로토콜이 TCP이다.

 

 

TCP(Transmission Control Protocol)

TCP는 Connection-Oriented 커넥션 지향 프로토콜이다. 즉, 어플리케이션 소통이 끝날 때까지 커넥션이 꺼지지 않는다.

TCP는 데이터가 잘 전달됐는지 확인한다. 그리고 제대로 전달이 안됐을 시 다시 보낸다.

 

TCP는 IP 패킷 내부에 존재한다.

 

3 way 핸드쉐이크 과정 (TCP 연결 과정)

1. (클라이언트 → 서버)Flag가 SYN(Syncronize)인 TCP를 보낸다.(Sequence 번호는 임의의 숫자)

2. (서버 → 클라이언트) SYN TCP에 대한 응답으로 Acknowledgment 번호를 담은 ACK(Acknowledgment) TCP를 보내고, 받은 Sequence 번호와 같은 번호로 SYN TCP 요청을 보낸다.

    * ACK: TCP를 잘 전달 받았다는 의미의 TCP Flag이다.

    * Acknowledgment 번호: 이후 SYN TCP의 Sequence 번호를 해당 번호로 받겠다는 의미.

3. (클라이언트 → 서버) 받은 Acknowledgment 번호로 Sequence 번호를 설정하여 ACK TCP로 다시 클라이언트 측에서 서버 측으로 보낸다.

 

 

 

Data 전송하기

1. (서버 → 클라이언트) 연결과정에서 Acknowledgment 번호로 주어진 번호를 Sequence 번호로 서버측에서 클라이언트 측으로 데이터와 함께 보낸다. 

2. (클라이언트 → 서버) 클라이언트는 받았다는 응답을 ACK TCP로 (Sequence 번호 + data의  byte수)만큼의 Acknowledgment 번호를 담아 서버측으로 보낸다.

 

 

 

연결 종료하기

1. (서버 → 클라이언트) 이전에 ACK 에 담아 보냈던 Acknowledgment 번호를 Sequence 번호로 FIN Flag TCP를 보낸다.

2. (클라이언트 → 서버) FIN TCP를 받았으니 응답으로 ACK TCP를 보낸다(이 때 Acknowledgment 번호는 더 이상의 응답이 없을 것이므로 상관없다).

3. (클라이언트 → 서버) ACK TCP를 보냈으나 더 이상의 응답이 없으므로 FIN TCP를 보낸다. 아까 3 way 핸드쉐이크로 연결할 당시 클라이언트 측에서는 ACK TCP를 받았음에도 응답하지 않았으므로 Sequence 번호는 해당 Acknowledge 번호이다.

4. (서버 → 클라이언트) ACK TCP를 보내지만 서버 측에서 FIN TCP를 받았으므로 더 이상의 응답은 없다.

'네트워크' 카테고리의 다른 글

TLP(Transport Layer Protocol) - 1. 프로토콜과 포트  (0) 2024.07.18
DHCP(Dynamic Host Configuration Protocol)  (0) 2024.07.16
Private IP vs Public IP  (4) 2024.07.16
Internet Protocol - IPv4  (6) 2024.07.16
패킷과 라우팅  (0) 2024.07.12