JAVA TCP/IP 개념설명

#SYSTEM_005 #네트워크 # 시스템
Jan 13, 2024
JAVA TCP/IP 개념설명

🍉 개요

인터넷이라는 거대한 정보의 환경속에서, 우리가 목적지까지 안전하고 신속하게 도착하는데 있어서 TCP/IP라는 두 가지 중요한 기술이 필요하다. 이는 단순한 기술적 개념이 아닌, 우리 디지털 생활 방식을 가능하게 하는 핵심요소라고 할 수 있으므로, 이 것을 이해하는 것은 디지털 세계를 더 잘 이해하는 데 있어서 필수적이다. 이 블로그에서 TCP/IP의 개념과 그 상호작용에 대해서 더 알아가보도록 하겠다.
 

🍑 TCP (Transmission Control Protocol)의 이해

TCP는 인터넷에서 데이터를 안정적으로 순서대로, 에러 없이 신뢰성 있게 통신하기 위하여 서로간에 연결을 설정한 후에 데이터를 주고받는 방식이다. 이는 전화와 비슷하다고 할 수 있는데, 상대방에게 전화를 걸어 연결이 되어야 대화를 할 수 있는 방식이 그런 것이다. 그리고 통화가 끝나면 연결이 종료된다. 즉 이런 방식으로 신뢰성있게 데이터를 보낼 수 있다. 상대방이 데이터를 받을 준비가 되어있는지 먼저 확인하고 상대방에게서 잘 받았다는 응답이 오며, 그 응답을 잘 받았다는 신호를 보내고 마무리 지음으로서 신뢰성이 보장된다.
 

🟠 TCP의 주요특징

  • 신뢰성 있는 데이터 전송 :
    • TCP는 데이터가 목적지에 정확하고 오류 없이 도달하는 것을 보장한다. 데이터 패킷이 손실되거나 오류가 발생한 경우, TCP는 해당 패킷의 재전송을 요청한다.
 
  • 순서 유지 :
    • 데이터가 여러 패킷으로 분할되어 전송될 때, TCP는 이 패킷들이 전송된 순서대로 도착하도록 한다. 따라서 수신자는 전송받은 패킷들을 올바른 순서로 재조립할 수 있게 된다.
       
  • 흐름과 혼잡 제어 :
    • TCP는 네트워크의 혼잡을 방지하기 위해 데이터 전송 속도를 조절한다. 이는 송신자와 수신자 사이의 데이터 처리 속도 차이를 고려하여 네트워크 오버로드를 제어하고 데이터 전송의 안정성을 유지한다.
       

🟠 TCP의 작동 방식

  • 3-Way HandShake :
    • TCP연결은 3-Way HandShake라는 과정을 통해 이루어진다. 이 과정은 다음 통해서 이루어진다.
    • SYN 패킷 전송
      • 클라이언트가 서버에 연결요청을 한다.
    • SYN - ACK 패킷
      • 서버는 클라이언트의 요청을 받고, 요청을 수락했다는 응답(SYN-ACK 패킷)을 보낸다.
    • ACK 패킷
      • 클라이언트는 이에 대한 최종 확인 응답 (ACK 패킷)을 보낸다.
notion image
 
  • 데이터 전송 :
    • 연결이 설정되면, TCP는 데이터를 세그먼트로 분할하여 전송한다. 여기서 각 세그먼트에는 순서 번호와 확인 응답번호가 헤더에 포함되어 있으므로, 각 데이터의 순서를 보장한다.
       
  • 에러 검출 및 재전송 :
    • 수신자는 받은 데이터 세그먼트에 대한 확인 응답을 보낸다. 만약 어떤 세그먼트가 도착하지 않거나 오류가 발생한 경우 송신자는 해당 세그먼트를 재전송한다.
       
데이터가 프로토콜을 통해 전송되는 과정
notion image
 

🖥️ IP(Internet Protocol)

IP(Internet Protocol)은 인터넷에서 컴퓨터들이 서로 통신하는 데 사용되는 주요 프로토콜이다. 이 프로토콜은 데이터를 송수신하는 데 필요한 고유 주소와 규칙을 제공하는 정보 규약이다. OSI 네트워크 계층에서 호스트의 주소 지정과 패킷 분할과 조립 기능을 담당한다.
 

🟠 IP의 특징

IP는 비신뢰성(Unreliable)과 비연결성(Connectionless) 특징이다. 이는 기본적인 설계 원칙인 단순성, 유연성, 확장성을 반영하고 있기 때문인데, 따라서 패킨 전송과 정확한 순서를 보장하려면 TCP 같은 상위 프로토콜을 이용해야 한다. 그래서 TCP덕분에 IP의 구조는 단순하게 유지될 수가 있다.
 

🟡 비신뢰성의 이유

  • 네트워크 장치의 복잡성을 줄여준다.
    • 각 패킷의 도착을 확인하고, 순서를 관리하는 기능을 제거함으로써 라우터와 다른 네트워크 장비가 더 간단해지고, 처리 속도가 빨라진다.
       
  • 유연한 동작성
    • 패킷 손실이나 순서 변경을 허용함으로써, 네트워크 변화나 혼잡 상태에 더 잘 적응할 수 있게 한다.
       
  • 네트워크를 효율적으로 사용
    • 네트워크 리소스를 효율적으로 사용하게 됨으로써, 각 패킷이 독립적으로 최적의 경로를 찾아간다. 따라서 혼잡한 네트워크 상태에서도 통신이 가능하다.
 

🟡 비연결성의 이유

  • 데이터 전송이 빨라진다.
    • 연결과정 없이 데이터를 즉시 전송하므로 속도가 빠르다. 특히 짧은 메시지를 보낼 때 유용하다.
 
  • 라우팅이 유연하다.
    • 각 패킷이 독립적으로 라우팅됨으로써, 네트워크 상황에 따라 다양한 경로를 이용할 수 있다. 이는 네트워크 혼잡이나 장애에 대한 적응력을 높여준다.
       
  • 단순한 구조를 유지하기 위해서
    • 연결 상태를 유지하고 관리할 필요가 없어서 프로토콜이 더 단순해 질 수 있다. 이는 구현과 유지 보수를 쉽게 만들어 준다.
 

🟠 IP의 체계 (IPv4 _ IPv6)

IPv4 표기법
notion image
오늘날 일반적으로 사용하는 IP주소는 IPv4로 구성되어있다. 이 주소의 범위는 32bit로 0~255사이의 십진수를 4부분으로 나누어 표기한다. 이론적으로는 42억9496만7296개의 IP주소를 할당할 수 있는데, 현대 사회에 많은 단말기들의 출현으로 IPv4주소는 고갈될 위험에 처해짐에 따라 IPv6가 그 부분을 대응하기 위해서 출현하게 되었다.
 
IPv6 표기법
IPv6와 IPv4의 가장 큰 차이점은 128비트로 확장되었다는 것이다. 그리고 긴 주소를 쉽게 읽을 수 있도록 16비트씩 [ : ] 콜론으로 나누어 각 필드를 16진수로 표현하는 방법을 사용한다.
notion image
  • 선행 0 생략 :
    • 각 16비트 값에서 선행하는 0은 생략할 수 있다. 예를 들어 ‘0db8’ → ‘db8’ 로, ‘085a’ → ‘85a’로 표기된다.
 
  • 0의 연속 :
    • 한 번에 하나의 연속된 0의 그룹을 :: 로 대체할 수 있다. 이 규칙은 주소내에서 한 번만 사용될 수 있다. 예를 들어,
      2001:0db8:0000:0000:0000:8a2e:0370:73342001:db8::8a2e:370:7334로 표기될 수 있다.
       
  • IPv4 포함 표기법 :
    • IPv4주소는 IPv6주소를 포함할 수 있으며, 이 경우 마지막 두 16비트 그룹이 IPv4주소로 표현된다. 예를들어,
      2001:db8::192.168.1.1 의 마지막 두 16비트 자리에 192.168.1.1 로 넣을 수 있다.
 
💡
내 IP주소를 확인하고 싶다면? 본인 윈도우 검색창에 cmd 로 명령프롬프트를 실행하고 ipconfig 명령어를 입력하면 확인할 수 있다.
notion image
 
 
 
Share article
RSSPowered by inblog