일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 함바그
- 스프링부트
- 프레임워크
- 레퍼클래스
- Til
- 깃헙
- 깃
- 스터디카페
- optional
- Java
- 요시
- Framework
- static
- Spring
- 메모리구조
- til #데이터베이스 #sql
- 내일배움캠프
- springboot
- 사전캠프
- validation
- 스파르타코딩클럽 #사전캠프
- 자바
- 스파르타코딩클럽
- 키오스크
- 피드백
- Interface
- 스파르타코딩클럽 #개발자 #백엔드
- 스파르타사전캠프
- 캡슐화
- jvm
- Today
- Total
John's Code Journey
[TIL] 네트워크 본문
인터넷
전 세계의 컴퓨터와 기기들이 서로 연결되어 정보를 주고받을 수 있게 해주는 네트워크 시스템이에요. 인터넷을 통해 우리는 웹사이트를 방문하거나, 이메일을 주고받고, 소셜 미디어를 사용하거나, 동영상을 스트리밍하는 등 다양한 활동을 할 수 있다.
쉽게 말해, 인터넷은 사람들이 정보를 공유하고 소통할 수 있는 거대한 디지털 공간이라고 할 수 있다.
인터넷 프로토콜 IP(Internet Protocol)
인터넷에서 데이터가 올바르게 전달될 수 있도록 규칙을 정해놓은 통신 규약이다.
쉽게 말해, 컴퓨터나 기기가 서로 데이터를 주고받을 때, 그 데이터가 어디서 어디로 가는지, 어떻게 전달될지를 정의하는 일종의 "주소 체계"라고 할 수 있다.
Packet
패킷(Packet)은 소스 IP, 대상 IP를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있습니다.
Packet은 크게 헤더, 페이로드, 트레일러(수신여부 포함)로 구분됩니다. 데이터를 주기만 하는 것이 아닌 받고 응답한다.(중요)
IP 방식의 문제점
1. 주소 고갈 (IPv4 주소 고갈)
Pv4는 32비트 주소 체계를 사용하기 때문에, 최대 약 43억 개의 고유한 IP 주소만 제공할 수 있어요. 이는 인터넷의 확장성과 연결된 기기 수가 급격히 증가하면서 한계에 다다르게 되었습니다.
2. 주소 할당 및 관리의 복잡성
IP 주소를 효율적으로 할당하고 관리하는 일이 매우 복잡할 수 있습니다. 예를 들어, 동적으로 할당된 IP 주소를 추적하고, 네트워크의 크기가 커지면서 이를 관리하는 데 어려움이 있습니다.
3. 보안 문제
IP는 기본적으로 보안 기능이 부족합니다. 예를 들어, IP는 "출발지 IP 주소"를 쉽게 위조할 수 있는 취약점이 있어, IP 스푸핑(IP spoofing)이나 DoS(Denial of Service) 공격에 취약할 수 있습니다.
4. 라우팅 문제
인터넷은 여러 네트워크가 서로 연결되어 있는 거대한 시스템이기 때문에, IP 주소와 라우팅 테이블을 관리하는 데 복잡성이 존재합니다. 특히, 네트워크의 크기가 커지면서 라우팅 테이블이 방대해지고, 이를 효율적으로 관리하기가 어려워져 네트워크의 성능과 안정성에 영향을 줄 수 있습니다.
5. QoS(서비스 품질) 보장 어려움
IP는 데이터 패킷을 보내는 데 있어 **서비스 품질(QoS, Quality of Service)**을 보장하기 어려운 구조입니다. 예를 들어, 음성 통화나 비디오 스트리밍과 같은 실시간 데이터 전송에서는 일정한 지연 시간과 대역폭이 보장되어야 하는데, IP는 이러한 요구 사항을 만족시키는 데 한계가 있을 수 있습니다.
6. 패킷 손실과 지연
IP는 패킷 스위칭 방식으로 데이터를 전송하는데, 이 과정에서 패킷이 손실되거나 지연될 수 있습니다. 특히, 네트워크의 혼잡도가 높거나, 라우팅 경로에 문제가 있을 경우 패킷 손실이나 지연이 발생할 수 있습니다.
TCP(Transmission Control Protocol)
인터넷에서 데이터 전송의 신뢰성을 보장하는 프로토콜이다. 주로 IP(Internet Protocol)와 함께 사용되며, TCP/IP라는 이름으로 자주 함께 언급됩니다. TCP는 데이터를 안정적이고 순차적으로 전송할 수 있게 돕는 역할을 합니다.
TCP의 동작 과정
- 연결 설정:
- 3-way handshake 과정을 통해 송신자와 수신자가 연결을 설정합니다.
- 데이터 전송:
- 송신자는 데이터를 여러 개의 패킷으로 나누어 보내고, 수신자는 각 패킷에 대해 확인 응답(ACK)을 보냅니다.
- 송신자는 수신자로부터 응답을 받지 못하면 재전송을 시도합니다.
- 연결 종료:
- 데이터를 모두 전송한 후에는 연결을 종료하는 과정이 필요합니다. 이 과정은 4-way handshake로 이루어집니다.
- FIN: 송신자가 연결을 종료하고 싶을 때 보내는 신호.
- FIN-ACK: 수신자가 종료 요청을 확인한 후 보내는 응답.
- ACK: 송신자가 종료 요청을 받은 것을 확인하고 보내는 신호.
- 데이터를 모두 전송한 후에는 연결을 종료하는 과정이 필요합니다. 이 과정은 4-way handshake로 이루어집니다.
UDP(User Datagram Protocol)
UDP(User Datagram Protocol)는 TCP와 함께 인터넷에서 데이터 전송을 위한 주요 프로토콜 중 하나입니다. 하지만 TCP와는 달리, UDP는 비연결 지향적이고, 데이터 전송 시 신뢰성 보장을 하지 않는 특징을 가지고 있습니다. UDP는 빠르고 간단한 데이터 전송이 필요할 때 주로 사용됩니다.
현대에서는 UDP를 많이 사용하는 추세이다. HTTP3 에서 채택한 방식, HTTP에도 버전이 있다! ex) 실시간 스트리밍 서비스, 온라인 게임, 인터넷 전화 특징으로는 실시간성 보장이 중요하다.
- UDP의 특징
- IP 방식과 거의 비슷하다.
- 3 way handshake를 하지 않는다.
- 데이터 전송, 응답, 순서를 보장하지 않는다.(비신뢰성)
- 추가적인 기능이 거의 없다.
- 기능이 없고 연결을 하지 않는 대신 속도가 빠르다.
- IP와 차이점으로 PORT 가 존재한다.
- TCP에도 PORT가 존재한다.
- 데이터 무결성 검사 -> 체크섬(checksum)을 포함하고 있다.
- 잘못된 데이터가 전송되지 않도록 만들어준다.
- IP 방식과 거의 비슷하다.
PORT
같은 IP 내에서 프로세스 구분을 하기 위해서 사용한다.
네트워크 통신에서 데이터가 어떤 특정한 프로그램이나 서비스로 전달될지 결정하는 역할을 하는 논리적 주소입니다. 네트워크 상에서 통신하는 장치들은 IP 주소를 통해 서로 식별되며, 포트 번호를 사용하여 특정 애플리케이션이나 서비스를 식별합니다.
포트의 역할
포트는 IP 주소와 함께, 네트워크에서 특정 애플리케이션이나 서비스와 연결을 설정하는 데 사용됩니다. 이를 통해, 여러 개의 프로그램이 동일한 IP 주소를 공유하면서도 서로 다른 서비스를 제공할 수 있게 됩니다. 예를 들어, 웹 서버는 포트 80을 사용하여 HTTP 서비스를 제공하고, 포트 443을 사용하여 HTTPS 서비스를 제공합니다.
포트 번호의 범위
포트 번호는 0에서 65535까지의 숫자 범위를 가집니다. 이 포트 번호는 크게 세 가지 범주로 나눠집니다:
- Well-Known Ports (0-1023):
- 0에서 1023까지의 포트는 잘 알려진 포트로, 주요 서비스에 예약되어 있습니다.
- 예를 들어:
- 80: HTTP (웹 서비스)
- 443: HTTPS (보안 웹 서비스)
- 21: FTP (파일 전송)
- 25: SMTP (이메일 송신)
- 22: SSH (보안 원격 접속)
- Registered Ports (1024-49151):
- 1024에서 49151까지의 포트는 특정 애플리케이션이나 서비스가 등록하여 사용하는 포트입니다.
- 예를 들어:
- 3306: MySQL 데이터베이스
- 5432: PostgreSQL 데이터베이스
- 8080: 대체 HTTP 포트 (웹 서비스용으로 자주 사용)
- Dynamic/Private Ports (49152-65535):
- 49152에서 65535까지의 포트는 동적으로 할당되는 포트로, 클라이언트 애플리케이션이 임시로 사용할 때 주로 사용됩니다.
- 예를 들어, 웹 브라우저가 서버와의 연결을 할 때 사용하는 포트 번호는 대개 이 범위에 속합니다.
포트의 사용 예시
- 웹 브라우징 (HTTP/HTTPS):
- 웹사이트를 방문할 때, HTTP 프로토콜을 사용할 경우 포트 80을 사용하고, HTTPS(보안 웹사이트)에서는 포트 443을 사용합니다. 사용자가 웹 브라우저에서 www.example.com을 입력하면, 브라우저는 자동으로 해당 포트를 사용해 서버와 통신합니다.
- 파일 전송 (FTP):
- FTP를 사용하여 파일을 전송할 때는 포트 21을 사용합니다. FTP 서버와 클라이언트가 이 포트를 통해 데이터를 주고받습니다.
- 이메일 송수신 (SMTP, POP3, IMAP):
- SMTP(Simple Mail Transfer Protocol)는 이메일을 전송할 때 사용되며, 포트 25를 사용합니다.
- 이메일 수신은 POP3(포트 110) 또는 IMAP(포트 143) 프로토콜을 사용하여 이루어집니다.
- 원격 접속 (SSH, Telnet):
- SSH(Secure Shell)는 원격 서버에 보안 접속을 제공하며, 포트 22를 사용합니다.
- Telnet은 이전에 사용되었던 원격 접속 프로토콜로, 포트 23을 사용합니다.
포트의 중요성
포트는 네트워크 트래픽이 어떤 서비스나 애플리케이션으로 전달될지 구분하는 중요한 역할을 합니다. 같은 IP 주소를 가진 여러 장치나 애플리케이션이 있을 수 있기 때문에, 포트 번호를 통해 각 애플리케이션을 식별하고 해당 서비스에만 데이터를 전달할 수 있습니다.
포트 번호와 방화벽
많은 방화벽 시스템이나 네트워크 보안 장치들이 포트 번호를 기준으로 트래픽을 허용하거나 차단합니다. 예를 들어, 특정 포트를 차단하여 보안 위험을 줄이거나, 특정 서비스만 허용하는 방식으로 네트워크를 보호할 수 있습니다. 예를 들어, 웹 서버의 HTTP 서비스는 포트 80을 사용하지만, 이를 방화벽에서 차단하면 HTTP 요청을 차단할 수 있습니다.
포트 스캐닝 (Port Scanning)
포트 스캐닝은 네트워크 보안을 점검하기 위한 방법으로, 해커들이 사용하기도 하지만 네트워크 관리자가 서비스의 상태를 확인할 때도 사용됩니다. 포트 스캐닝은 특정 서버가 열린 포트가 무엇인지, 어떤 서비스가 실행 중인지 알아내는 과정입니다.
'Today I Learned > 스파르타 내일배움캠프' 카테고리의 다른 글
[TIL] 키오스크 과제 (0) | 2025.03.13 |
---|---|
[TIL] 계산기 과제 수정 (1) | 2025.03.11 |
[TIL] JAVA 컬렉션 프레임워크 (1) | 2025.03.10 |
[TIL] 250305 계산기 과제 리뷰 (1) | 2025.03.05 |
[TIL] 예외처리(Exception) (0) | 2025.02.26 |