• TCP 프로토콜이 제공하는 다양한 서비스
    1. 연결 지향 서비스 : TCP는 데이터 전송 전에 송신자와 수신자 사이에 논리적인 연결을 설정합니다. 이 연결을 통해 데이터가 전송되며, 데이터 전송이 완료되면 연결이 해제됩니다.
    2. 신뢰성 있는 전송 : TCP는 패킷 손실, 중복, 지연 등의 문제를 처리하여 신뢰성 있는 데이터 전송을 보장합니다. 이는 시퀀스 번호, 확인 응답(ACK), 재전송 등의 메커니즘을 통해 이루어집니다.
    3. 흐름 제어 : TCP는 송신자와 수신자 사이의 데이터 전송 속도를 조절하여 수신자의 버퍼 오버플로우를 방지합니다.
    4. 혼잡 제어 : TCP는 네트워크의 혼잡 상태를 관리하고 혼잡 붕괴를 방지하기 위한 메커니즘을 제공합니다. 이는 네트워크 내의 모든 호스트가 데이터를 효율적으로 전송하도록 돕습니다.
    5. 순서대로 배달 : TCP는 데이터의 순서를 보장합니다. 데이터는 송신자에서 수신자로 순서대로 전송되며, 수신자는 순서대로 데이터를 수신합니다.
    6. 전이중 통신 : TCP는 전이중 통신을 지원합니다. 이는 송신자와 수신자가 동시에 데이터를 전송하고 수신할 수 있다는 것을 의미합니다.
  • TCP의 연결지향성 → UDP는 비연결형 서비스
    • TCP 통신의 커넥션을 맺는 단계는 3단계로 진행되며 이를 3방향 핸드셰이크라고 부른다.
    • 커넥션이 맺어지면 데이터를 전송할 수 있는 상태가 되고, 데이터 전송이 끝나면 커넥션을 끊는다.
    • TCP가 연결을 맺는 과정(3 way hand shake)
      1. 클라이언트는 서버에 접속요청(sync)을 하고 클라이언트를 sync_sent 상태가 됨
      2. 서버는 요청수락(sync+ack) 하고 서버는 sync_received 상태가 됨
      3. 클라이언트는 서버에 수락확인(ack)를 보내고 서버는 established 상태가 됨
    • TCP가 연결을 끊는 과정(4 way hand shake)
      1. 클라이언트가 서버에 연결을 종료(fin) 플래그를 전송, 클라이언트는 종료신호를기다리는 상태 fin_wait1
      2. 서버는 일단 확인(ack) 했다는 메시지를 보내고 자신의 통신이 끝날 때 까지 기다리게 함. 서버는 close wait 상태, 클라이언트는 종료 신호를 기다리겠다는 fin_wait2 상태 전환
      3. 서버가 통신이 끝나면 이제 종료해도 된다는 (fin) 플래그를 클라이언트에 전달. 서버는 last_ack 상태로 전환, 클라이언트는 time_wait 상태 전환
      4. 클라이언트는 연결 종료를 확인했다는 응답(ack) 플래그를 보냄. 서버 상태(closed)
  • TCP 세그먼트의 형식
    • TCP/IP의 트랜스포트 계층에는 연결형 서비스를 제공하는 TCP프로토콜과 비연결형 서비스를 제공하는 UDP 프로토콜이있다.
    • 연결형 서비스인 TCP는 트랜스포트 계층에서 종점 간의 연결 개설, 오류 발생 시 데이터 재전송, 패킷 전달순서 확인, 중복 패킷제거, 흐름제어, 네트워크 오동작 시 보고 등을 제공하는 서비스다.
    • 비연결 서비스인 UDP는 위의 연결형 서비스를 제공하지 않고 단순히 패킷을 하나씩 목적지 주소로 전송만 한다. 따라서 UDP를 안정적으로 사용하려면 응용프로그램에서 데이터의 분실, 흐름제어, 오류 등을 처리해야 한다.
  • TCP 윈도우의 개념과 동작원리
    • 윈도우 사이즈는 한번에 받을 수 있는 데이터의 크기이다. 이는 TCP의 흐름 제어와 관련이 있다.
    • 송신측과 수신측 사이에 데이터 처리 속도 차이(흐름)을 제어하기 위한 기법으로 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지한다
      • 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.
      • 만약, 송신측의 전송량 > 수신측의 수신량 일 경우 전송된 패킷은 수신측의 큐 를 넘어서 손실 될 수 있기 때문에 송신측의 패킷 전송량을 제어하게 된다.
      1. Stop and Wait(정지 - 대기)
      2. - 매번 전송한 패킷에 대한 **확인 응답**을 받아야 그 다음 패킷을 전송할 수 있다. 이러한 구조로 인해 비효율적이란느 단점이 있다.
      3. Sliding Window(슬라이딩 윈도우)
      4. - 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 기법이다. 따라서 송신측에서는 ACK 프레임을 수신하지 않더라도 여러 개의 프레임을 연속적으로 전송할 수 있다. - 송신측에서 0,1,2,3,4,5,6,을 보낼 수 있는 프레임을 가지고 있고 수신자가 설정한 윈도우의 크기가 2라고 가정할 때, 데이터 0,1을 전송하면 슬라이딩 윈도우 구조는 2,3,4,5,6 처럼 변한다. 이때 만약 수신측으로부터 `ACK`라는 프레임을 받게 된다면 송신측은 이전에 보낸 데이터 0,1을 수신측에서 정상적으로 받았음을 알게 되고 송신측의 슬라이딩 윈도우는 ACK 프레임의 수만큼 오른쪽으로 경계가 확장된다. - Stop and Wait의 비효율성을 개선했다. - 페이징과 비슷한 개념 → 데이터를 일정 수로 나누어서 보낸다.

용어 정리


참고 자료

[네트워크] TCP란 무엇인가??(3way handshake/4way handshake)

  • TCP 프로토콜이 제공하는 다양한 서비스
    1. 연결 지향 서비스 : TCP는 데이터 전송 전에 송신자와 수신자 사이에 논리적인 연결을 설정합니다. 이 연결을 통해 데이터가 전송되며, 데이터 전송이 완료되면 연결이 해제됩니다.
    2. 신뢰성 있는 전송 : TCP는 패킷 손실, 중복, 지연 등의 문제를 처리하여 신뢰성 있는 데이터 전송을 보장합니다. 이는 시퀀스 번호, 확인 응답(ACK), 재전송 등의 메커니즘을 통해 이루어집니다.
    3. 흐름 제어 : TCP는 송신자와 수신자 사이의 데이터 전송 속도를 조절하여 수신자의 버퍼 오버플로우를 방지합니다.
    4. 혼잡 제어 : TCP는 네트워크의 혼잡 상태를 관리하고 혼잡 붕괴를 방지하기 위한 메커니즘을 제공합니다. 이는 네트워크 내의 모든 호스트가 데이터를 효율적으로 전송하도록 돕습니다.
    5. 순서대로 배달 : TCP는 데이터의 순서를 보장합니다. 데이터는 송신자에서 수신자로 순서대로 전송되며, 수신자는 순서대로 데이터를 수신합니다.
    6. 전이중 통신 : TCP는 전이중 통신을 지원합니다. 이는 송신자와 수신자가 동시에 데이터를 전송하고 수신할 수 있다는 것을 의미합니다.
  • TCP의 연결지향성 → UDP는 비연결형 서비스
    • TCP 통신의 커넥션을 맺는 단계는 3단계로 진행되며 이를 3방향 핸드셰이크라고 부른다.
    • 커넥션이 맺어지면 데이터를 전송할 수 있는 상태가 되고, 데이터 전송이 끝나면 커넥션을 끊는다.
    • TCP가 연결을 맺는 과정(3 way hand shake)
      1. 클라이언트는 서버에 접속요청(sync)을 하고 클라이언트를 sync_sent 상태가 됨
      2. 서버는 요청수락(sync+ack) 하고 서버는 sync_received 상태가 됨
      3. 클라이언트는 서버에 수락확인(ack)를 보내고 서버는 established 상태가 됨
    • TCP가 연결을 끊는 과정(4 way hand shake)
      1. 클라이언트가 서버에 연결을 종료(fin) 플래그를 전송, 클라이언트는 종료신호를기다리는 상태 fin_wait1
      2. 서버는 일단 확인(ack) 했다는 메시지를 보내고 자신의 통신이 끝날 때 까지 기다리게 함. 서버는 close wait 상태, 클라이언트는 종료 신호를 기다리겠다는 fin_wait2 상태 전환
      3. 서버가 통신이 끝나면 이제 종료해도 된다는 (fin) 플래그를 클라이언트에 전달. 서버는 last_ack 상태로 전환, 클라이언트는 time_wait 상태 전환
      4. 클라이언트는 연결 종료를 확인했다는 응답(ack) 플래그를 보냄. 서버 상태(closed)
  • TCP 세그먼트의 형식
    • TCP/IP의 트랜스포트 계층에는 연결형 서비스를 제공하는 TCP프로토콜과 비연결형 서비스를 제공하는 UDP 프로토콜이있다.
    • 연결형 서비스인 TCP는 트랜스포트 계층에서 종점 간의 연결 개설, 오류 발생 시 데이터 재전송, 패킷 전달순서 확인, 중복 패킷제거, 흐름제어, 네트워크 오동작 시 보고 등을 제공하는 서비스다.
    • 비연결 서비스인 UDP는 위의 연결형 서비스를 제공하지 않고 단순히 패킷을 하나씩 목적지 주소로 전송만 한다. 따라서 UDP를 안정적으로 사용하려면 응용프로그램에서 데이터의 분실, 흐름제어, 오류 등을 처리해야 한다.
  • TCP 윈도우의 개념과 동작원리
    • 윈도우 사이즈는 한번에 받을 수 있는 데이터의 크기이다. 이는 TCP의 흐름 제어와 관련이 있다.
    • 송신측과 수신측 사이에 데이터 처리 속도 차이(흐름)을 제어하기 위한 기법으로 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지한다
      • 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.
      • 만약, 송신측의 전송량 > 수신측의 수신량 일 경우 전송된 패킷은 수신측의 큐 를 넘어서 손실 될 수 있기 때문에 송신측의 패킷 전송량을 제어하게 된다.
      1. Stop and Wait(정지 - 대기)
      2. - 매번 전송한 패킷에 대한 **확인 응답**을 받아야 그 다음 패킷을 전송할 수 있다. 이러한 구조로 인해 비효율적이란느 단점이 있다.
      3. Sliding Window(슬라이딩 윈도우)
      4. - 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 기법이다. 따라서 송신측에서는 ACK 프레임을 수신하지 않더라도 여러 개의 프레임을 연속적으로 전송할 수 있다. - 송신측에서 0,1,2,3,4,5,6,을 보낼 수 있는 프레임을 가지고 있고 수신자가 설정한 윈도우의 크기가 2라고 가정할 때, 데이터 0,1을 전송하면 슬라이딩 윈도우 구조는 2,3,4,5,6 처럼 변한다. 이때 만약 수신측으로부터 `ACK`라는 프레임을 받게 된다면 송신측은 이전에 보낸 데이터 0,1을 수신측에서 정상적으로 받았음을 알게 되고 송신측의 슬라이딩 윈도우는 ACK 프레임의 수만큼 오른쪽으로 경계가 확장된다. - Stop and Wait의 비효율성을 개선했다. - 페이징과 비슷한 개념 → 데이터를 일정 수로 나누어서 보낸다.

용어 정리


참고 자료

[네트워크] TCP란 무엇인가??(3way handshake/4way handshake)

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

TCP 프로토콜 II & UDP  (0) 2023.07.22
라우팅 프로토콜  (0) 2023.07.22
ICMPv4 & IGMPv2  (0) 2023.07.22
ARP & RARP  (0) 2023.07.22
인터넷 프로토콜  (0) 2023.07.22

+ Recent posts