OSI 7계층에서 전송 계층(Transport Layer)

함승완·2024년 10월 6일

앞서 전송 계층은 데이터의 전송을 담당한다.
보낼 데이터의 용량과 속도, 목적지를 처리한다.
대표적인 프로토콜은 TCP, UDP가 있다.

TCP란? (Transmission Control Protocol)

인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다.

특징

  • 연결 지향 방식으로 패킷 교환 방식을 사용
  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
  • 흐름 제어 및 혼잡 제어.
  • 높은 신뢰성 보장
  • UDP보다 속도가 느리다.
  • 전이중(Full-Duplex), 점대점(Point to Point)방식.

TCP 서버의 특징

  • 서버소켓은 연결만을 담당.
  • 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다.
  • 서버와 클라이언트는 1대1로 연결된다.
  • 스트림 전송으로 전송 데이터의 크기가 무제한이다.
  • 패킷에대한 응답을 해야하기 때문에 성능이 낮다.
  • Streaming 서비스에 불리하다.
  • 웹 페이지 로딩이나 파일전송 즉 데이터의 무결성이 중요한 프로그램에 적합하다.

3way handshake란?

3way handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

  1. 클라이언트가 SYN 패킷을 서버에 보내어 접속 요청을 한다.

  2. 서버가 클라이언트의 SYN 패킷을 수락하고 SYN-ACK 패킷을 클라이언트에 전송한다.

  3. 클라이언트가 서버의 SYN-ACK 패킷을 수신한 후 ACK 패킷을 서버에 보내면, 클라이언트와 서버 간의 연결이 수립되고 데이터 전송이 가능해진다.

    여기서 SYN과 SYN-ACK

    • SYN: 클라이언트가 서버에 연결을 요청하는 패킷.
    • SYN-ACK: 서버가 클라이언트의 요청을 수락하고 응답하는 패킷.

4way handshake란?

4 way handshake는 세션을 종료하기 위해 수행되는 절차이다.

  1. 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송
  2. 서버는 확인메세지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAIT상태
  3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
  4. 클라이언트는 확인했다는 메세지를 보낸다.

UDP란? (User Datagram Protocol)

데이터를 데이터그램 단위로 처리하는 프로토콜이다.

특징

  • 비연결형서비스로 데이터그램 방식을 제공한다.
  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않음
  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다
  • 신뢰성이 낮다
  • TCP보다 속도가 빠르다
  • 실시간 게임이나 동영상 스트리밍같이 데이터 전송 속도가 빨라야하는 서비스에 적합하다.

UDP 서버의 특징

  • UDP에는 연결 자체가없어서 서버 소켓과 클라이언트 소켓의 구분이 없다.
  • 소켓을 활용해 IP와 PORT를 기반으로 데이터를 전송한다.
  • 서버와 클라이언트는 1대1 1대N N대N등으로 연결될 수 있다.
  • 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로 크기가 초과하면 잘라서 보낸다
  • 흐름제어가 없어서 패킷이 제대로 전송되었는지 오류가 없는지 확인할 수 없다.
  • 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용됨.

비교

프로토콜 종류TCPUDP
연결 방식연결형 서비스비연결형 서비스
전송 순서전송 순서 보장전송 순서가 바뀔 수 있음
수신 여부 확인수신 여부를 확인수신 여부를 확인하지 않음
통신 방식1:1 통신1:1 OR 1:N OR N:N 통신
신뢰성높음낮음
속도느림빠름

결론

  • 데이터의 신뢰성과 정확성이 좋아야하는 서비스는 TCP가 적합.
  • 속도가 빨라야 하는 서비스라면 UDP가 적합.
profile
좋은 개발자 좋은 코딩 좋은 컴퓨터

0개의 댓글