TCP/IP
- Internet Protocol Suite의 핵심 프로토콜로서 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 제어 프로토콜인 TCP로 구성되어 있습니다. (Protocol : 원활한 데이터 통신을 위한 통신 프로토콜)
- IPOSI 7계층 중 3계층(네트워크계층)에 해당하며 한 종점이 다른 종점으로 가고자 할 때 경로와 목적지를 찾는 역할을 한다. (이를 라우팅이라고 합니다.)
- IP는 패킷 전달을 보장하지 않으며 패킷을 보내고 받는 순서가 다를 수 있습니다.
- TCPOSI의 7계층 중 4계층(전송계층)에 해당하며 발신자와 수신자 사이의 논리적 연결을 담당하고 안정적인 연결을 유지하는데 도움을 줍니다. 즉, 엔드포인트(사용자) 간의 연결을 설정하고 얼마나 많은 데이터를 보냈는지, 얼마나 받았는지, 제대로 수신되었는지 확인합니다.
- TCP는 IP 위에서 실행되는 프로토콜이며 데이터가 전송된 순서대로 전달되고 수신되도록 합니다.
- TCP/IP를 사용한다는 것은 IP 주소 체계를 따르고, IP 라우팅을 사용하여 목적지에 도달하고, TCP의 속성을 활용하고 신뢰성을 유지하여 발신자와 수신자 사이에 논리적 연결을 설정하는 것을 의미합니다.
흐름 제어
- 흐름 제어는 데이터가 전송될 때 송신측과 수신측 사이의 데이터 흐름을 조정하는 기능입니다.
- TCP 프로토콜에서 사용하는 것으로, 수신측은 수신할 수 있는 데이터의 양을 송신측에 알려주고 송신측은 그에 따라 데이터를 전송합니다.
- 수신측이 송신측보다 데이터 처리 속도가 빠르면 문제가 없지만 송신측이 빠르면 문제가 있습니다. 수신측의 제한된 저장 용량을 초과하여 도착한 패킷은 유실될 위험이 있으며, 유실될 경우 불필요한 추가 패킷 전송이 발생합니다.
- 이를 통해 수신 측에서 버퍼 오버플로를 방지하고 데이터 손실을 최소화할 수 있습니다.
- 즉, 송신측과 수신측 사이의 패킷 수를 조절하는 기능으로 볼 수 있다.
- 멈추고 기다려: 전송된 각 패킷에 대한 ACK(Acknowledgement)가 수신되면 다음 패킷을 전송하는 방식입니다. 그러나 패킷이 한 번에 하나씩 전송되기 때문에 비효율적입니다.
- 슬라이딩 윈도우: 수신측에서 수신할 수 있는 데이터의 최대량을 알려주기 위해 설정한 윈도우의 크기만큼 세그먼트에 담아 송신측으로 전송하고, 송신측에서는 이를 수신하여 결정한다. 전송할 수 있는 데이터의 양. 윈도우 크기는 수신측에서 송신측으로 승인을 보낼 때 TCP 헤더(윈도우 크기)에 포함됩니다.
혼잡 제어
- 이 기능은 과도한 데이터 전송 속도로 인해 발생할 수 있는 혼잡을 피하기 위해 사용됩니다.
- TCP 프로토콜에서 사용되며 발신자와 네트워크 간의 혼잡을 감지하여 전송 속도를 조정합니다.
- TCP는 데이터를 일정한 크기의 세그먼트로 나누어 전송하고 혼잡 제어는 세그먼트의 전송 속도를 조절하여 네트워크 혼잡을 방지합니다.
- 즉, 네트워크의 패킷 수를 조절하여 네트워크 오버플로를 방지하는 기능입니다.
- AIMD(가산증가/멀티케이브감소)
- 느린 시작
- 빠른 재전송
- 빠른 회복
3방향 핸드셰이크
- TCP를 통한 모든 통신은 3방향 핸드셰이크를 통해 시작되어야 합니다.
- 데이터를 전송하기 전에 TCP를 사용하는 송신자와 수신자는 서로 통신이 가능한지 묻고 다음과 같은 정보를 확인합니다. B. 동시에 받을 수 있는 금액.
- 이를 통해 양측이 데이터를 송수신할 준비가 되었으며 실제 데이터 전송이 시작되기 전에 한쪽이 다른 쪽이 준비되었음을 알 수 있습니다.
- 양쪽이 다른 쪽의 초기 시퀀스 번호를 얻을 수 있습니다.
3방향 핸드셰이크는 TCP 프로토콜을 사용하여 컴퓨터 간에 연결을 설정합니다. 이 과정은 TCP/IP 프로토콜에서 가장 기본적인 연결 설정 방법으로 다음 세 단계로 구성됩니다.
- SYN(동기화): 클라이언트는 서버에 연결을 요청하는 메시지를 보내고 SYN 플래그를 설정합니다. 이를 통해 클라이언트는 서버에서 연결을 요청할 수 있으며 서버는 클라이언트의 요청을 수신했음을 확인합니다.
- 동기화 승인(SYN-ACK): 클라이언트의 요청을 받은 후 서버는 연결을 수락할 준비가 되었음을 알리는 메시지를 보냅니다. 이 시점에서 SYN 및 ACK 플래그를 모두 설정하여 클라이언트가 연결을 수락하는지 확인합니다.
- 승인(ACK): 클라이언트는 서버로부터 응답 메시지를 받은 후 연결이 수락되었다는 메시지를 보냅니다. 이 시점에서 서버가 클라이언트의 연결 요청에 응답했음을 확인하기 위해 ACK 플래그가 설정됩니다.
이 3방향 핸드셰이크 프로세스를 거친 후 클라이언트와 서버는 안정적인 연결을 설정하고 데이터 전송을 시작할 수 있습니다. 연결 설정 및 응답에 대한 정보는 TCP가 안정적이고 신뢰할 수 있는 데이터 전송을 보장하는 플래그를 통해 교환됩니다.
4방향 핸드셰이크
- 3-way 핸드셰이크가 TCP 연결을 초기화하는 데 사용되는 경우 4-way 핸드셰이크는 세션을 종료하기 위한 연결 해제 작업입니다.
- 여기서 우리는 세션을 종료할 때 사용되는 FIN 플래그를 사용하고 있습니다.
4방향 핸드셰이크는 TCP 프로토콜을 사용하는 컴퓨터 간의 연결을 종료합니다. 이는 TCP/IP 프로토콜의 기본 연결 해제 방법이며 다음 네 단계로 구성됩니다.
- VIN(종료): 클라이언트는 서버에 연결을 종료하라는 메시지를 보냅니다. 이 시점에서 FIN 플래그를 설정하면 클라이언트에게 연결을 종료할 것임을 알립니다.
- 승인(ACK): 클라이언트의 연결 종료 요청을 받은 서버는 요청을 수락했다는 메시지를 보냅니다. 이때 클라이언트가 보낸 FIN 메시지가 수신되었음을 나타내기 위해 ACK 플래그가 설정됩니다.
- VIN(종료): 서버는 클라이언트에게 연결을 종료하라는 메시지를 보냅니다. 이 시점에서 FIN 플래그를 설정함으로써 서버는 연결을 종료할 것임을 알립니다.
- 승인(ACK): 클라이언트는 서버의 연결 종료 요청을 받은 후 요청을 수락했다는 메시지를 보냅니다. 이때 ACK 플래그는 서버가 보낸 FIN 메시지가 수신되었음을 나타내기 위해 설정됩니다.
이 4방향 핸드셰이크 과정을 거친 후 클라이언트와 서버는 안전하게 연결을 종료할 수 있습니다. 이 과정에서 클라이언트와 서버는 연결 종료에 대한 정보를 교환하고 TCP는 이 정보를 사용하여 안정적인 연결 종료를 보장합니다.
TCP(전송 제어 프로토콜)
- 메시지 형식으로 인터넷을 통해 데이터를 전송하기 위해 IP와 함께 사용되는 프로토콜입니다.
- TCP는 연결 지향 프로토콜입니다. 안정적인 데이터 전송을 위해 설계
- TCP는 3방향 핸드셰이크를 통해 안정적인 연결을 설정하고 데이터 전송 중 오류를 감지하고 수정합니다. 이를 위해 패킷의 순서를 관리하고 재전송 및 흐름 제어를 수행하여 안정적이고 신뢰할 수 있는 프로토콜 역할을 한다.
- 주로 웹, 이메일 및 파일 전송과 같은 응용 프로그램에서 사용됩니다.
UDP(사용자 데이터그램 프로토콜)
- 비연결형 프로토콜로서 데이터 전송 중에 오류를 감지하거나 수정하지 않습니다.
- 논리적 경로가 지정되지 않고 각 패킷이 서로 다른 경로를 통해 전송되며 각 패킷에는 독립적인 경로가 있습니다. 즉, 서로 다른 경로에서 독립적으로 데이터를 처리하는 프로토콜을 의미합니다.
- 패킷은 서로 다른 경로를 통해 독립적으로 처리되지만 패킷 순서에 따라 재조립되지 않거나 흐름 제어 또는 혼잡 제어가 수행되지 않습니다. 고속 및 낮은 네트워크 부하장점이 있다 데이터 전송의 신뢰성이 낮습니다.
- 주로 연속성이 중요한 실시간 애플리케이션(비디오 스트리밍, 온라인 게임 등)에 사용됩니다.
TCP 대 UDP
TCP(Transmission Control Protocol) 및 UDP(User Datagram Protocol)는 모두 데이터 전송에 사용되는 프로토콜인 IP Suite(Internet Protocol Suite)의 일부입니다. 둘의 차이점은 다음과 같습니다.
- 연결지향 TCP는 3방향 핸드셰이크를 통해 안정적인 연결을 설정하고 데이터 전송 중 오류를 감지하고 복구하는 연결지향 프로토콜입니다. 반면 UDP는 비연결형 프로토콜이므로 연결 설정이 필요하지 않으며 오류 감지 및 복구 기능이 없습니다.
- 신뢰성 TCP는 데이터 전송 중 오류를 감지하고 복구하는 기능을 가지고 있기 때문에 데이터 전송 신뢰성이 높다. UDP는 데이터 전송의 확인 및 복구가 없기 때문에 신뢰할 수 없습니다.
- 흐름 제어 및 혼잡 제어 TCP에는 흐름 제어 및 혼잡 제어를 통해 데이터 전송 효율성을 높이는 기능이 있습니다. 반면 UDP에는 이 기능이 없으므로 네트워크 정체 시 데이터 손실이 발생할 수 있습니다.
- 전송 속도 UDP는 TCP보다 전송 속도가 빠릅니다. 이는 흐름 제어 및 혼잡 제어와 같은 기능으로 인해 TCP가 느리게 전송될 수 있음을 의미합니다.
따라서 TCP와 UDP는 각각 장단점이 있으며 사용하는 응용의 특성에 따라 선택적으로 사용한다. TCP는 웹, 이메일, 파일 전송과 같은 애플리케이션에 사용되는 반면 UDP는 일반적으로 실시간 애플리케이션(예: 비디오 스트리밍, 온라인 게임 등)에 사용됩니다.
1. TCP와 UDP의 차이점 설명
TCP는 연결 지향적이고 매우 안정적이며 오류 감지 및 재전송을 제공합니다. UDP는 연결이 없고 전송 속도가 빠르고 패킷 오버헤드가 적지만 안정적인 데이터 전송을 보장하지는 않습니다.
1. 연결 지향 vs. 비연결
- TCP는 연결이 설정된 후 3방향 핸드셰이크를 사용하여 데이터를 전송하는 연결 지향 프로토콜입니다. 오류 검사 및 혼잡 제어와 같은 다양한 기능은 안정적인 데이터 전송을 보장하기 위해 연결 설정 중에 수행됩니다.
- UDP는 연결 없는 프로토콜입니다. 즉, 연결을 설정하지 않고 데이터를 전송합니다. 이로 인해 전송 속도가 빨라지고 패킷 오버헤드가 낮아지지만 안정적인 데이터 전송이 보장되지는 않습니다.
2. 신뢰성
- TCP는 오류 감지 및 재전송 기능을 수행하여 데이터 전송 신뢰성을 보장합니다. 이로 인해 전송 속도가 느려질 수 있지만 데이터 손실은 최소화됩니다.
- UDP는 신뢰성 검사나 재전송을 제공하지 않기 때문에 데이터 손실이나 이중 전송과 같은 문제가 발생할 수 있습니다.
3. 패킷 크기 제한
- TCP는 패킷 크기에 제한이 없으며 대용량 파일이나 데이터를 전송하는 데 적합합니다.
- UDP는 제한된 패킷 크기를 가지며 적은 양의 데이터를 빠르게 전송하는 데 적합합니다.
4속
- TCP는 연결 설정 및 오류 확인과 같은 다양한 기능을 수행하기 때문에 UDP보다 느립니다.
- UDP는 최소한의 데이터 전송 오버헤드가 있기 때문에 TCP보다 빠릅니다.
5. 사용
- TCP는 데이터 신뢰성이 중요한 애플리케이션에 적합합니다. 예를 들어 파일 전송, 이메일, 웹 브라우저 등이 있습니다.
- UDP는 실시간이 중요한 애플리케이션에 적합합니다. 예를 들어 스트리밍 서비스, 온라인 게임 등
이러한 차이 때문에 용도와 상황에 따라 TCP와 UDP를 선택하여 사용해야 합니다.
2. IP 주소와 포트 번호의 차이점
IP 주소는 네트워크에서 컴퓨터를 식별하는 데 사용되는 숫자로 고유한 주소를 가집니다.
포트 번호는 컴퓨터 내에서 프로세스를 식별하는 데 사용되는 번호입니다. 범위는 0에서 65535까지이며 특정 프로세스에 할당됩니다.
![[컴프실] 4일차 [컴프실] 4일차](https://weve.icover.kr/1680241766297/wp-content/plugins/contextual-related-posts/default.png)