본문 바로가기

네트워크

전송 계층 : 신뢰할 수 있는 데이터 전송하기 - 1

728x90
반응형
SMALL

목표

전송 계층의 역할을 이해한다.

연결형 통신과 비연결형 통신을 이해한다.

TCP를 이해한다.

UDP를 이해한다.

전송 계층

전송 계층(Transport Layer)은 컴퓨터 네트워크에서 데이터를 보낼 때, 송신 측과 수신 측 간의 신뢰성 있는 데이터 전송을 보장하기 위한 계층입니다.

- 오류를 점검하는 기능

- 전송된 데이터의 목적지가 어떤 어플리케이션인지 식별하는 기능

 

데이터를 세그먼트(Segment)라는 단위로 나누고, 수신 측에서 이를 재조립하여 상위 계층에 전달하며, 대표적인 프로토콜로 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 있습니다

 

연결형 통신과 비연결형 통신은 네트워크 통신에서 사용되는 두 가지 기본적인 통신 방식입니다.

연결형 통신

데이터 전송 전에 먼저 두 대의 장치가 연결을 설정하고, 데이터를 안정적으로 전송하기 위해 연결을 유지합니다. 이 방식은 데이터 전송 중 손실이나 오류가 발생하면 재전송을 요청하고, 최종적으로 수신측에서 데이터를 확인한 후에 연결을 종료합니다. (TCP, Transmission Control Protocol))

비연결형 통신

데이터 전송 전에 연결을 설정하지 않고, 데이터를 바로 전송합니다. 이 방식은 데이터 전송 중 손실이나 오류가 발생하면 복구할 수 없습니다. 따라서 간단하고 빠른 데이터 전송이 필요한 경우에 사용됩니다. (UDP, User Datagram Protocol)

 

TCP사용하는 경우: HTTP, 이메일에서 사용되는 SMTP, 파일 전송, 웹 페이지 로딩 등

UDP사용하는 경우: 실시간 영상 스트리밍, 게임 등

 

이외의 프로토콜

ICMP(Internet Control Message Protocol): 네트워크 관리 및 진단 목적 프로토콜

IGMP(Internet Group Management Protocol): 멀티캐스트 그룹 관리 프로토콜

SCTP(Stream Control Transmission Protocol): TCP와 유사하지만 멀티 스트림 전송 및 오류 제어 기능 등이 추가된 프로토콜

 

연결(Connection)

TCP에서 연결(Connection)은 소켓(Socket)을 통해 이루어지는 입니다. 클라이언트와 서버 사이에서 Connection을 맺기 위해서는 3-way Handshake 과정이 이루어집니다. 클라이언트는 서버에게 SYN(Synchronize) 패킷을 보내고, 서버는 이에 대한 ACK(Acknowledge) 패킷을 보내면서 SYN 패킷을 보냅니다. 마지막으로 클라이언트는 ACK 패킷을 보내면서 Connection을 완료합니다. 이렇게 Connection을 맺은 후에는 데이터를 전송하고, 전송이 끝나면 Connection을 종료하는 과정이 이루어집니다.

 

TCP헤더의 코드비트

https://www.juniper.net/documentation/us/en/software/junos/transport-ip/topics/topic-map/tcp-configure-features.html

 

TCP | Junos OS | Juniper Networks

During session connection establishment, two peers agree in negotiations to determine the IP segment size of packets that they will exchange during their communication. The TCP MSS (maximum segment size) value in TCP SYN packets specifies the maximum numbe

www.juniper.net

TCP 헤더의 코드비트는 6개로 구성되어 있습니다.

  1. URG (URGent) : 긴급한 데이터가 포함된 패킷을 나타냅니다.
  2. ACK (ACKnowledgment) : 수신 확인 응답을 요청하거나 응답을 나타냅니다.
  3. PSH (PuSH) : 송신 측에서 데이터를 즉시 수신 측으로 전송하라는 신호를 나타냅니다.
  4. RST (ReSeT) : 연결 해제를 요청하거나 에러 발생 시 재설정을 나타냅니다.
  5. SYN (SYNchronization) : 연결 설정을 요청하는데 사용됩니다.
  6. FIN (FINish) : 연결 해제를 나타냅니다.

 

일련번호, 확인 응답 번호

TCP에서 일련번호(Sequence Number)

전송되는 데이터의 순서를 식별하는데 사용됩니다. 각 세그먼트는 일련번호를 가지고 있으며, 이는 다음에 전송될 데이터의 시작점을 가리킵니다. 일련번호는 32비트로 구성되어 있으며, 세그먼트의 첫 번째 바이트를 기준으로 증가합니다.

확인 응답 번호(Acknowledgment Number)

수신측이 받은 데이터의 마지막 바이트 번호에 1을 더한 값입니다. 이는 송신측이 다음에 전송할 데이터의 시작점을 알려주기 위해 사용됩니다.

(예를 들어, 수신측이 1바이트에서 100바이트까지의 데이터를 받았다면, 확인 응답 번호는 101이 됩니다. 확인 응답 번호는 일련번호와 마찬가지로 32비트로 구성되어 있습니다.)

 

재전송 제어 (일련번호, 확인 응답 번호를 통해 데이터 손상, 유실할 경우 재전송하는 것)

TCP 프로토콜에서는 재전송 제어 기능을 제공하여 데이터 전송 중 손실된 패킷을 감지하고 다시 전송하는 것을 지원합니다. 이를 위해 TCP는 각 패킷에 일련번호를 부여하고, 수신측에서는 이 일련번호를 사용하여 중복되거나 손실된 패킷을 식별할 수 있습니다.

또한, TCP는 수신측에서 데이터 패킷을 받았음을 확인하기 위해 ACK 패킷을 송신측으로 보내며, 송신측은 일정 시간동안 ACK 패킷을 기다렸다가 받지 못하면 해당 패킷을 다시 전송합니다. 이를 통해 전송 중 손실된 패킷을 식별하고 재전송을 수행함으로써 데이터 전송의 신뢰성을 확보합니다.

 

윈도우 크기(Window Size)

TCP는 데이터를 여러 개의 세그먼트로 분할하여 전송합니다. 이 때, 세그먼트의 크기는 MTU(Maximum Transmission Unit)라는 네트워크 장비에서 전송 가능한 최대 데이터 크기를 고려하여 결정됩니다.

송신자는 각 세그먼트를 전송하기 전에 세그먼트를 저장하기 위한 버퍼를 사용합니다. 이 버퍼의 크기는 윈도우 크기라는 매개변수를 통해 조절할 수 있습니다. 

따라서 윈도우의 크기, 수신측이전송측에게자신이받을수있는데이터의양을알려주는값입니다 값을 통해 전송측은 수신측이 처리할 수 있는 데이터의 양을 파악하고이에 따라 패킷을 전송하는 속도를 조절합니다윈도우 크기는 TCP 세그먼트 헤더의 윈도우 필드(Window field)에 저장되며 값은 수신측에서 전송측으로 ACK 패킷을 보낼 때 함께 전송됩니다윈도우 크기는 네트워크 상황에 따라 동적으로 조정  있습니다.

 

오버플로(Overflow)

송신자는 수신자로부터 확인 응답을 받지 못한 경우에는 세그먼트를 다시 전송합니다. 이 때, 세그먼트의 복사본을 버퍼에 저장하여 재전송에 사용합니다. 하지만, 버퍼의 크기가 작을 경우에는 재전송된 세그먼트가 기존 세그먼트와 함께 버퍼에 쌓이게 되어 오버플로(overflow)가 발생할 수 있습니다. 따라서 윈도우 크기를 적절히 설정하여 이러한 문제를 예방해야 합니다.

 

포트번호(Port Number)

포트 번호는 컴퓨터 네트워크에서 프로세스(프로그램)가 통신하기 위해 할당받은 번호를 의미합니다. 포트 번호는 0부터 65535까지의 범위를 가지며, 0~1023은 잘 알려진 포트(Well-known port)로 이미 정해진 용도가 있습니다. 예를 들어 HTTP는 80번 포트, HTTPS는 443번 포트를 사용합니다. 1024번 이상의 포트는 동적 포트로, 클라이언트가 서버에 접속할 때 자동으로 할당되어 사용됩니다. 포트 번호는 IP 주소와 함께 사용되어 송수신 데이터를 목적지 프로세스에 전달합니다.

 

728x90
반응형
LIST