민프

[TCP] TCP란 무엇일까? (feat. OSI 7계층) 본문

[네트워크]

[TCP] TCP란 무엇일까? (feat. OSI 7계층)

민프야 2023. 8. 3. 15:07

TCP는 OSI 7계층들 중 TCP/IP의 전송 계층에서 사용되는 프로토콜이다. 

같은 계층에 UDP라는 것이 있는데 이 UDP가 무엇인지, TCP와의 차이점은 무엇인지에 대해서 나중에 다뤄보도록 해보자

 

TCP란 무엇일까?

네이버 IT용어사전에 의하면

https://terms.naver.com/entry.naver?docId=2271913&cid=51207&categoryId=51207 

 

TCP

TCP(Transmission Control Protocol)는 IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜로, 인터넷 환경에서 기본으로 사용한다. TCP에서 제공하는 주요 기능은 다음과 같다. • 연결형 서

terms.naver.com

TCP(Transmission Control Protocol) IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜로, 인터넷 환경에서 기본으로 사용한다

이라고 나와있다. 연결형 서비스? 음 왜 연결형 서비스가 필요해서 이 TCP가 만들어진걸까? 만들어진 이유를 좀 알아봐야겠다.

TCP의 기원이 어떻게 되는걸까?

위키백과에 의하면

https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

 

전송 제어 프로토콜 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 전송 제어 프로토콜(Transmission Control Protocol, TCP, 문화어: 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로

ko.wikipedia.org

1974년 5월 전기 전자 기술자 협회(IEEE)는 “A Protocol for Packet Network Intercommunication.라는 제목의 논문을 발표했고, 이 모델의 핵심 제어 요소는 연결 지향 링크(connection-oriented links)와 호스트 간의 데이터그램 서비스를 모두 포함하는 전송 제어 프로그램(Transmission Control Program) 이라고 하였다. 

 

즉, TCP는 연결 지향적 인 것을 중점으로 만들어진 프로토콜 이라는 것을 알 수 있다. 

(여기에서 연결 지향적 프로토콜은 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미한다.)

 

 

TCP의 특징

  • 연결형 서비스로 연결이 성공해야 통신이 가능하다.
  • 세그먼트에 순번을 지정하여 데이터의 순서를 유지한다.
  • 3-Way Handshake을 통해 연결하고 4-Way Handshake을 통해 연결을 종료한다.
  • 전이중(Full-Duplex), 점대점(Point to Point) 서비스 ...

위 특징들이 있는데 3-Way Handshake, 4-Way Handshake이란 무엇일까? 일단 Handshake 부터 알아보자

Handshake 은 '악수'란 뜻으로 IT용어로는 '주고받기'라고 쓰이고 있다.

IT용어 해석으로는 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정이라고 나와있는데

쉽게 말해서 양쪽 모두 데이터를 전송할 준비가 되어있다는 것을 보장한다는 것이다. 

 

TCP 프로토콜의 작동은 크게 세 가지 흐름으로 구분된다.

  1. 연결 생성 (Connection establishment) - 3-way-handshaking
  2. 자료 전송 (Data transfer)
  3. 연결 종료 (Connection termination) - 4-way-handshaking

신뢰성 있는 연결이 생성되어야 하며, 그 후 자료를 전송하고, 마지막으로 연결을 종료하면서 할당된 자원을 반납한다.

그럼 정상적으로 TCP연결이 생성 될 때 3-Way Handshake가 동작하는 과정을 알아보자

 

3-Way Handshake 동작과정

3-way-handshaking

  1. SYN(synchronize sequence numbers): 클라이언트가 서버에게 SYN 메시지를 보낸다. 이 메시지에 포함된 시퀀스 번호는 클라이언트가 임의로 설정한 값 A.
    (클라이언트 : SYN-SENT 상태, 서버 : SYN-RECEIVED 상태)
  2. SYN-ACK(synchronize sequence numbers - acknowledgment): 서버가 클라이언트에게 SYN-ACK 메시지로 응답한다. 이 메시지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A + 1)  
    (클라이언트 : ESTABLISHED 상태,
     서버 : SYN-RECEIVED 상태)
  3. ACK(acknowledgment): 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 (B + 1).
    (클라이언트 : ESTABLISHED 상태, 서버 : ESTABLISHED 상태)

이렇게 위 3-way Handshake으로 연결을 맺는다. 

 

그럼 연결 해제할 때 사용되는 4-way Handshake는 뭘까?

 

4-way Handshake 동작과정

https://sjlim5092.tistory.com/37 - 4-way handshake

위 블로그에서 잘 설명하고 있는 그림이 있는 것 같아서 가져와봤다. 

  1. FIN : 클라이언트가 서버에게 연결을 종료하겠다는 FIN 플래그를 전송한다. 
    (클라이언트 : FIN_WAIT_1 상태)
  2. ACK : FIN 플래그를 받은 Server는 확인메세지인 ACK를 Client에게 보내준다. 그 후 CLOSE-WAIT상태로 변한다. Client도 마찬가지로 Server에서 종료될 준비가 됐다는 FIN을 받기위해  FIN-WAIT-2 상태가 된다.
    (클라이언트 : FIN-WAIT-2 상태, 서버 : CLOSE-WAIT)
  3. FIN : Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송한다.
    (서버 : LAST-ACK 상태)
  4. ACK : Client는 해지 준비가 되었다는 정상응답인 ACK를 Server에게 보내준다. 이 때, Client는 TIME-WAIT 상태로 변경된다.
    여기서 TIME-WAIT 상태는 의도치않은 에러로 인해 연결이 데드락으로 빠지는 것을 방지하기 위해 변경 되는 것인데, 만약 에러로 인해 종료가 지연되다가 타임이 초과되면 CLOSED 상태로 변경된다.
    (클라이언트 : TIME-WAIT 상태, 서버 : CLOSED)

 

이렇게 TCP가 어떻게 연결이 되고, 해제가 되는지 알아보았다.

 

 


참고 링크

https://ko.wikipedia.org/wiki/%ED%95%B8%EB%93%9C%EC%85%B0%EC%9D%B4%ED%82%B9

 

핸드셰이킹 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 핸드셰이크는 본래 악수를 뜻합니다. 핸드셰이킹(handshaking), 주고받기[1]는 정보기술과 전기통신 및 관련 분야에서 채널에 대한 정상적인 통신이 시작되기 전에

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

 

전송 제어 프로토콜 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 전송 제어 프로토콜(Transmission Control Protocol, TCP, 문화어: 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로

ko.wikipedia.org

https://itwiki.kr/w/TCP

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

https://jeongkyun-it.tistory.com/180

 

TCP와 3-Way, 4-Way Handshake란? (개념/ 동작 방식)

서론 이번 글에서는 TCP의 신뢰성있는 통신 연결과 종료를 위해 3Way, 4Way Handshake의 개념과 통신 동작 방식에 대해 알아보려한다. 이 내용을 이해하기 위해선 TCP의 개념도 알아야해서 간단히 TCP의

jeongkyun-it.tistory.com

https://datatracker.ietf.org/doc/html/rfc793#page-30

 

RFC 793: Transmission Control Protocol

 

datatracker.ietf.org

 

Comments