OSI 7계층 자세히 알아보기 - 전송 계층

2024. 9. 23. 22:31[Node.js_6기] 스탠다드반

▶ 전송 계층이란?

이미지 출처:  https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/

 

 

OSI 7계층 중 4계층으로, 데이터 패킷이 손실이나 오류 없이 올바른 순서로 도착하는 것이 주 목적인 계층이다. 이를 위해 연결 속도가 빠른 송신자가 연결 속도가 느린 수신자를 압도하지 않도록 최적의 전송 속도를 제어하는 등, 흐름 제어 및 오류 제어 기능의 역할을 수행하기도 한다. 필요한 경우 데이터 패킷을 원활하게 복구하기도 한다. 전송 제어 프로토콜(TCP) 및 사용자 데이터그램 프로토콜(UDP)을 예로 들 수 있다. 세션 계층에서 가져온 데이터를 세그먼트라고 하는 조각으로 분할하고, 세그먼트를 다시 세션 계층에서 사용할 수 있는 데이터로 재조립하는 일도 이 계층에서 수행된다.

 

  • 전송 제어 프로토콜(TCP) : 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
  • 사용자 데이터그램 프로토콜(UDP) : 데이터를 데이터그램 단위로 처리하는 프로토콜

 

전송 제어 프로토콜(Transmission Control Protocol) 의 개념

이미지 출처: https://mangkyu.tistory.com/15

 

전송 제어 프로토콜(Transmission Control Protocol, TCP)은 이메일, 파일 전송과 같이 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 연결 지향적 프로토콜이다. 3 way handshaking 과정을 통해 발신지와 수신지를 확인 후 논리적인 경로를 배정하여 데이터, 세그먼트 등을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다. 이 과정에서 데이터의 흐름 제어나 혼잡 제어 등의 기능도 수행하는데, CPU를 사용하는 만큼 UDP에 비해 속도가 느린 편이다.

 

  • 연결 지향적 프로토콜
  • 3 way handshaking 과정을 통해 연결을 설정하고, 4 way handshaking을 통해 해제한다
  • 흐름 제어, 혼잡 제어
  • 높은 신뢰성 보장
  • UDP에 비해 속도가 느리다
  • Full-Duplex, Point to Point 방식

 

3 way handshaking란?

 

정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다. 발신지와 수신지에 해당하는 양측 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터가 전달되기 전에 상대방이 준비되었는지 확인할 수 있도록 한다. 

 

Step1 [Client -> SYN -> Server]

Client가 Server에게 접속을 요청하는 SYN플래그를 보낸다.

 

Step2. [Server -> SYN + ACK -> Client ]

Server는 Listen상태에서 SYN이 들어온 것을 확인하고 SYN_RECV상태로 바뀌어 SYN + ACK플래그를 Client에게 전송한다. 그 후 Server는 다시 ACK 플래그를 받기 위해 대기상태로 변경된다.

 

Step3. [Client -> ACK -> Server]

SYN + ACK 상태를 확인한 Client는 서버에게 ACK를 보내고 연결 성립(Established)이 된다. 

 

 

4 way handshaking란?

 

3 way handshake가 연결 확립을 위해 진행했다면, 4 way handshake는 세션을 종료하기 위해 수행되는 절차라고 할 수 있다. 

 

Step1 [Client -> FIN -> Server]

Client가 연결을 종료하겠다는 FIN플래그를 전송한다. 보낸 후에 FIN-WAIT-1 상태로 변한다.

 

Step2 [Server-> ACK -> Client]

FIN 플래그를 받은 Server는 확인메세지인 ACK를 Client에게 보내준다. 그 후 CLOSE-WAIT상태로 변한다. Client도 마찬가지로 Server에서 종료될 준비가 됐다는 FIN을 받기위해  FIN-WAIT-2 상태가 된다.

 

Step3 [Server -> FIN -> Client]

Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송한다.

 

Step4 [Client -> ACK-> Server]

Client는 해지 준비가 되었다는 정상응답인 ACK를 Server에게 보내준다. 이 때, Client는 TIME-WAIT 상태로 변경된다.

 

 

사용자 데이터그램 프로토콜 (User Datagram Protocol) 의 개념

이미지 출처: https://mangkyu.tistory.com/15

 

사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 데이터를 데이터그램 단위로 처리하는 비연결형 프로토콜이다. 연결을 위해 할당되는 논리적인 경로가 없기 때문에, 각각의 패킷이 다른 경로로 전송 및 처리된다. TCP와 달리 연결을 설정하고 해제하는 과정이 존재하지 않고, 데이터 흐름 제어나 혼잡 제어와 같은 기능을 처리하지 않기에 속도가 빠르며 네트워크 부하가 적다는 장점이 있다. 다만 이러한 특징으로 인해 신뢰성있는 데이터의 전송을 보장하기는 어렵다. 주로 신뢰성보다 연속성이 중요한 스트리밍(streaming) 서비스에 사용된다.

 

  • 서버 소켓과 클라이언트 소켓의 구분이 없다
  • IP와 PORT를 기반으로 데이터를 전송한다
  • 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다
  • 데이터그램 단위(65535바이트)로 전송되며, 크기가 초과될 경우 잘라서 보낸다
  • 흐름 제어 기능을 하지 않기 때문에, 전송 오류 검증이 어렵다
  • 신뢰성보다 연속성 등의 성능이 중요시 되는 경우에 사용된다

 

포트(Port)란?

포트는 논리적인 접속장소를 뜻하며, 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용한다.

보통 하나의 IP에서 여러 애플리케이션을 실행할 경우, 컴퓨터에는 여러 개의 서버가 실행하게 된다. 이때 포트번호를 통해 대상 IP 기기의 특정 애플리케이션의 서버에 접속할 수 있도록 알려주어야 한다.

이미지 출처: https://ittrue.tistory.com/185

 

하나의 서버 인스턴스에서 여러가지 서버를 동시에 실행하고 있을 때, 위의 그림과 같이 열려있는 포트 번호를 특정하여 데이터가 도착할 위치를 지정할 수 있다. 짜장면을 먹고 싶으면 영업중인 중국집에 주문을 넣어야 하는 것처럼, 이메일 발송 req를 보냈을 때 발송 완료 res를 받으려면 25번 포트로 데이터를 보내야 하는 것이다.

 

포트 번호는 0 ~ 65,535까지 사용할 수 있다. 이 중에서 0 ~ 1023번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있는 포트이다.

이미지 출처: https://ittrue.tistory.com/185

번호 프로토콜 통신 프로토콜 설명
80 HTTP TCP 웹 서버 접속
443 HTTPS TCP 웹 서버 접속(SSL)
110 POP3 TCP 메일 읽기
25 SMTP TCP 메일 서버간 메일 전송
22 SSH TCP 컴퓨터 원격 로그인
53 DNS UDP DNS 질의
123 NTP TCP 시간 동기화
20 FTP TCP 데이터 전송
21 FTP TCP FTP 제어

출처: https://ittrue.tistory.com/185 [IT is True:티스토리]

 

 

 

참고 자료:

https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake 

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

https://mangkyu.tistory.com/15

https://ittrue.tistory.com/185