CS ( Computer Science )/네트워크 (Networking)

[Net] 네트워크

JABHACK 2024. 11. 29. 09:18

인터넷(Internet)

📌 인터넷(Internet)은 인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신을 일컫는 말이다

  • 대표적으로 해저에 직접적으로 깔려있는 광케이블과 인공위성을 통해서 모든 인터넷은 연결되도록 설계했는데
  • 이렇게 전세계를 연결한 통신망을 World Wide Web(WWW)이라 한다.

 

 

인터넷 프로토콜 IP(Internet Protocol)

📌 인터넷 프로토콜은 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약()을 의미한다.

  • 우리가 흔히 알고 있는 192.168.0.1를 IP라고 부르지만 이는 IP주소라고 한다. 
  • IP는 인터넷 통신법, IP주소는 전화번호라고 생각하면 된다. 전화번호를 제대로 입력하고 통화를 연결하지 않으면 안되는 일종의 법칙으로 IP에 포함된다 할 수 있다.

[1]   IP 주소

  • IP 주소는 쉽게 말하면 각 기기 간의 통신을 식별할 수 있는 전화번호 입니다.
  • 앞서 설명한 최소한의 규칙을 지킬 수 있는 이유는 여러분들이 잘 아시는 IP 주소 덕분입니다.
  • 인터넷 통신 시에는 지정한 IP 주소에 데이터를 Packet 이라는 단위로 전달합니다

 

IP를 이용한 통신의 한계

  • 비연결성
    - 패킷을 받을 대상이 없거나 대상이 서비스 불능 상태여도 전송을 해버립니다.

  • 비신뢰성
    - 패킷소실 : 데이터 통신중 패킷이 사라질 가능성이 있습니다.


- 패킷 전달의 순서가 보장되지 않습니다.
ex) 클라이언트는 (Hellow) (world!)로 보냈으나 서버에는 (world!)(Hello)로 도착할 가능성이 있습니다.

  • 프로그램 구분이 어렵습니다
    - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분이 어렵습니다.

 

Packet

📌 패킷(Packet)은 소스 IP, 대상 IP를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있습니다.

  • Packet은 크게 헤더( 주소 라벨 ), 페이로드( 배달하려는 물건 ), 트레일러( 검증 및 확인용 정보 )로 구분됩니다.
  • 데이터를 주기만 하는 것이 아닌 받고 응답한다.(중요)
  • 패킷 = 배달 상자 라고 보면 편하다. 인터넷 통신은 크게보면 쿠팡과 같은 배달 산업과 유사하다. 앞으로의 이해도 배달을 기준으로 설명하도록 하겠습니다.

 

[1]  헤더(Header):

배달물의 주소 라벨이라고 볼 수 있습니다.

  • 보내는 사람과 받는 사람의 주소, 연락처 등 배송 정보를 포함합니다.
  • 배달원이 어디로 가야 할지, 누구에게 전달해야 할지를 알려주는 역할을 합니다.

💡 : 보내는 사람(발신지 IP), 받는 사람(목적지 IP), 패킷 번호(순서).

 

[2]  페이로드(Payload):

실제로 배달하려는 물건에 해당합니다.

  • 네트워크에서 이는 전송하려는 실제 데이터입니다.
  • 이메일 내용, 파일, 영상 스트림 등이 여기에 포함됩니다.

💡 : 이메일 본문, 이미지 데이터, 파일 조각.

 

[3]  트레일러(Trailer):

검증 및 확인용 정보로, 배달물이 제대로 도착했는지 확인하는 용도로 쓰입니다.

  • 데이터가 전송 중 손상되지 않았는지 확인하는 오류 검사 코드 등이 포함됩니다.
  • 배달 과정에서 문제가 있으면 다시 발송을 요청하거나, 오류를 수정할 수 있습니다.

💡 : 체크섬(오류 검출), 데이터의 종료 표시.

 

 

 

TCP(Transmission Control Protocol)

📌 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜.

  • IP방식에서는 패킷이 손실되거나 오류가 생겨도 데이터를 재전송 하지 않는 등의 문제가 있었습니다.
  • 다만 TCP는 3Way HandSake를 통해 이를 해결하였습니다.
  • IP의 문제점을 개선하기 위해 등장한 인터넷 프로토콜

 

  • Ethernet frame 안에 IP안에 TCP 안에 HTTP(메시지)가 있다.

 

 

TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)

 

• 연결지향 - TCP 3 way handshake (가상 연결) = 서버 연결 되었나 확인하고 데이터 전송

• 데이터 전달 보증

순서 보장

 

• 신뢰할 수 있는 프로토콜

• 현재는 대부분 TCP 사용

https://velog.io/@xx0hn/CS-Network-TCP-3-way-Handshake

 

3-Way Handshake 순서 (네트워크 관점):

  1. 송신자 → 수신자: SYN 패킷
    • 연결 요청.
  2. 수신자 → 송신자: SYN-ACK 패킷
    • 요청 수락 및 연결 준비 상태 알림.
  3. 송신자 → 수신자: ACK 패킷
    • 수락 확인 및 데이터 전송 준비 완료.

 

 

[1]  SYN (문 열기 요청)

  • **송신자(A)**가 **수신자(B)**에게 배달 준비가 되었는지 묻는 단계입니다.
  • 배달원(A)이 **“문 열어도 되겠습니까?”**라고 묻는 상황과 비슷합니다.
  • 네트워크에서는 송신자가 SYN 패킷( SYN 플래그가 설정된 패킷 )을 보냅니다.

💡 비유: 배달원이 "지금 물건을 전달할 준비가 되셨나요?"라고 묻는 메시지.

[2]  SYN-ACK (문 열기 확인)

  • **수신자(B)**는 SYN 요청을 확인하고, 동시에 자신의 준비 상태를 알립니다.
  • 수신자가 배달원에게 **“네, 문 열렸습니다. 물건 주시면 됩니다!”**라고 대답하는 단계입니다.
  • 네트워크에서는 수신자가 SYN-ACK 패킷을 보냅니다.

💡 비유: 수신자가 "알겠습니다. 저도 준비되었습니다!"라고 응답.

[3]  ACK (확인 완료)

  • **송신자(A)**는 수신자의 응답(SYN-ACK)을 확인하고 마지막으로 연결이 성립되었음을 알림니다.
  • 배달원이 **“좋습니다, 물건을 전달하겠습니다!”**라고 마지막 확인을 보내는 단계입니다.
  • 서버는 클라이언트의 SYN 요청을 수락하며, 자신도 연결을 시작하고 싶다는 뜻을 담아 SYN 플래그와 함께 ACK 플래그가 설정된 패킷을 클라이언트에게 전송합니다다.
  • 여기서 데이터를 같이 전송 가능하다.

💡 비유: 배달원이 "좋아요, 이제 물건을 전달하겠습니다!"라고 다시 확인.

 

+ 하나 착각하면 안되는게, 위에는 단순히 보기 편하라고 클라,서버만 통신을 하는 것 처럼 보이게 하였지만, 실제로는 클라-서버-서버-서버- *** - 목표 서버 로 이동하게 된다. 나만을 위한 전용 랜선이 된건 아니라는 

 

 

 

UDP(User Datagram Protocol)

📌 UDP는 비연결형, 신뢰성이 없는 전송 프로토콜이다. TCP의 신뢰성 보장 기능은 많은 애플리케이션에 유용했지만, 실시간 통신이나 스트리밍 애플리케이션에서는 빠른 전송이 중요했기 때문에 UDP는 이러한 요구를 충족하기 위해 개발되었다.

  • 현대에서는 UDP를 많이 사용하는 추세이다. HTTP3 에서 채택한 방식, HTTP에도 버전이 있다!
  • 특징 : 실시간성 보장 중요

 

[0] UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

 

• 하얀 도화지에 비유(기능이 거의 없음)

• 연결지향 X - TCP 3 way handshake X

• 데이터 전달 보증 X

• 순서 보장 X

 

• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

 

• 정리

• IP와 거의 같다. +PORT +체크섬 정도만 추가

• 애플리케이션에서 추가 작업 필요

 

[1]  UDP의 특징

  1. IP 방식과 거의 비슷하다.
    • 3 way handshake를 하지 않는다.
      • 데이터 전송, 응답, 순서를 보장하지 않는다.(비신뢰성)
  2. 추가적인 기능이 거의 없다.
    • 기능이 없고 연결을 하지 않는 대신 속도가 빠르다.
  3. IP와 차이점으로 PORT 가 존재한다
    • TCP에도 PORT가 존재한다.
  4. 데이터 무결성 검사 → **체크섬(Checksum)**을 포함하고 있다 .
    • 잘못된 데이터가 전송되지 않도록 만들어준다.
    • 암호화라고 생각하면 편하다. 배달 물건에 박스 안에 담긴 물건의 무게가 5kg이라고 기록, 받는 사람이 제대로 왔는지 한번 더 확인하는 것

 

PORT

📌 포트(Port)는 네트워크에서 특정 프로그램이나 서비스와 연결을 식별하는 숫자로, 마치 한 주소에서 여러 방(포트 번호)을 통해 특정 사람이나 부서에 연결하듯, 포트를 사용하면 하나의 컴퓨터(IP 주소)에서 여러 서비스를 구분하고 접근할 수 있습니다.

  • 현재 전송하고자 하는 패킷이 어떤 곳에 필요한 패킷인지 IP만으로는 해결이 되지 않습니다. 이때 프로그램을 구분하기 위해 사용되는 것이 바로 PORT입니다!
  • 이미 국제 도메인 관리기구에 의해 사용되는 포트가 있는데 이게 0~1023포트이다. (0~65535 포트까지 존재)
  • 이는 당연히 사용하지 않는게 좋다. 정부 소유 방에 들어가서 난장판을 칠건 아니니...
  • 그냥 같은 IP 내에서 프로세스를 구분하는 식별 코드다.

 

실제 패킷 정보

 

 

[1] 포트의 배달 비유:

  1. IP 주소 = 건물 주소
    • IP 주소는 배달을 보낼 목적지 건물에 해당합니다.
    • 그러나 건물에는 여러 세대나 방이 있을 수 있으므로, 단순히 IP 주소만으로는 정확한 대상을 특정하기 어렵습니다.
    💡 비유: 건물의 외부 주소(IP)만으로는 어느 세대(서비스)로 배달할지 알 수 없음.
  2. 포트 번호 = 방 번호
    • 포트 번호는 특정 서비스를 나타내는 "방 번호"라고 볼 수 있습니다.
    • 예를 들어, 이메일 서비스(SMTP)는 25번 포트, 웹 서버(HTTP)는 80번 포트를 사용합니다.
    • 배달원은 **주소(IP)와 방 번호(포트 번호)**를 모두 알아야 물건을 정확히 전달할 수 있습니다.
    💡 비유: 건물 101호는 웹 서비스(80번 포트), 102호는 파일 전송 서비스(21번 포트) 등으로 나눔.
  3. 패킷의 목적지 = 방 안 사람(서비스)
    • 포트 번호를 통해 데이터가 정확히 어떤 프로그램으로 전달될지 결정됩니다.
    • 예를 들어, IP 주소로 데이터를 보냈더라도 포트 번호가 없으면 잘못된 서비스로 전달될 가능성이 있습니다.
    💡 비유: 배달원이 "김철수 씨는 101호로 사는군요!"라고 확실히 알고 전달.

 

[2] 포트의 특징:

  • 범위: 0~65535 (16비트 숫자)
    • 0~1023: 잘 알려진 포트(예: HTTP 80, HTTPS 443, FTP 21).
    • 1024~49151: 등록된 포트(특정 앱에서 사용).
    • 49152~65535: 동적/임시 포트(일시적인 연결에 사용).
  • 역할: 하나의 IP 주소에서 다수의 서비스를 구분.

'CS ( Computer Science ) > 네트워크 (Networking)' 카테고리의 다른 글

[Net] HTTP Header  (0) 2024.12.01
[Net] HTTP Method  (2) 2024.11.30
[Net] HTTP  (0) 2024.11.29
[Net] JSON  (1) 2024.11.29
[Net] Web 기초  (1) 2024.11.29